Przedstawiam opis robota który posłużył jako prototyp przy budowie innego robota.
Moją konstrukcją jest line follower oparty o µC-attiny2313 i mostek-L293D. Cały robot ma budowę łatwo rozbieralną, wszystko można wyjąć, zmienić. Robot teoretycznie jest stworzony na potrzeby konkursu "elektronicznego" Miał wystartować w ubiegłym roku, lecz nie był w stanie. Chciałbym podziękować sponsorowi za oddanie w moje ręce silników, pozdrawiam, przydadzą się jeszcze nie raz
Obudowa:
Opakowanie od dyskietek komputerowych. poprzewiercane w paru miejscach. Zdjęcia brak, a szkoda mi go teraz rozebrać żeby pokazać mocowanie silników i tylnego ślizgu.
Sterowanie robota:
Mózgiem jest zdecydowanie attiny2313 - odbiera sygnały z czujników, i wysyła odpowiednie do mostka H. Układ sterujący(klik-powiększenie):
Za przetworzenie informacji z czujników i wysłanie ich do µC odpowiada LM324
Tyle co do elektroniki.
Napęd:
Napęd stanowią 2 silniki Faulhaber'a (3050L012S) z wbudowanymi przekładniami. Na ich końcach zamontowane są przejściówki do których mocuje się dowolne koła LEGO typu technic. Zdjęcia:
-cały zestaw
-Dość spora i mała przekładnia
-przekładnia
Zasilanie: Akumulator żelowy 10V od modelu RC Doskonale się do tego nadaje. Fakt jest ciężki - co widać po prędkości robota, ale trzyma ładnie.
I teraz trochę zdjęć:
-cały robot może nie jest zbyt piękny :|
-widać element "trący" - klocek lego do tego przeznaczony (śłizg od łódki) - spoczywa na nim niewielki opór - wszystko idzie na koła, ale ma za zadanie utrzymać równo robota a przede wszystkim jego czujniki na odpowiedniej wysokości.
Poniżej film i trochę zdjęć.:
Schemat:
Robiłem robota ze schematów dostępnych w necie lecz w końcu stworzyłem swój na bazie innych:
Co do kosztów to:
Attiny2313 - 8zł
L293d - 15 zł
LM324 - 1.5 zł
reszta ok. 5zł
To z elektroniki.
Koszt silników były kwestią rozwiązaną przez sponsora
robot w stanie do wyciągnięcia baterii
Mocowania.
PS. Postaram się odpowiedzieć na jakiekolwiek pytania.
w robocie jest bo początkowy był inny procesor (at89c2051) kwarcu na schemacie nie ma bo jest tam attiny2313 (ma wewnętrzny oscylator). program do robota uwzględnia kwarc bo uwzględniać musi (i tu również wewnętrzny oscylator). Akumulator jest standardowym akku RC masa, około 7V - niebieski i 10V czerwony. Nigdy nie używam niebieskiego, głupota itp bo sie akumulator nierówno zużywa wtedy. Ładowanie- prostownikiem.
Projekt był dobrą bazą to innych robotów co widać na ostatnim filmie
Witam. niby wszystko ok. ale przy stanach logicznych:
Możliwe stany logiczne to:
001 – Przesuwanie od linii na lewo
010 – Centralnie na linii
011 – Lekko na lewo od środka linii
100 – Przesuwanie od linii na prawo
101 – Nieużywany
110 – Lekko na prawo od środka linii
111 – Nieużywany
brakuje 000 - a te pojawia się gdy robot właśnie wyjedzie czujnikami za linę podczas pokonywania zakrętu. Aby robot uniknął "przestrzelenia" wystarczy aby właśnie podczas stanu 000 wykonywał ostatnio robioną czynność. To przestrzelenie występuje w przypadku gdy robot musi pokonać zakręt mniejszy niż jego promień skrętu przy zatrzymaniu jednego koła.
Tutaj w praktyce, 3 czujniki są na przedzie robota i w momencie gdy przód wyjedzie nawet poza line dalej kreci ten sam zakręt :
http://www.youtube.com/watch?v=BFg77e-fl7U
Co do 5 czujników to chyba tylko po to by nie było efektu wyjeżdżania robota, wtedy jak już zadziała krańcowy czujnik, można drugim kołem zakręcić do tyłu. Sporo robotów (3czujniki) kręci kołami przeciwnie co skutkuje szarpaniem robota.
Stany można opisać bardzo czytelnie w ten sposób:
Stan1:
W tym przypadku robot powinien jechać prosto więc mikrokontroler podaje sygnał do sterownika tak aby dwa silniki (prawy i lewy) kręciły kołami do przodu.
stan2
Jeżeli robot wyjedzie za linię czujniki pokażą stan jak na rysunku obok. Robot aby wrócić na linię musi skręcić w prawo więc zatrzymuje prawy silnik. Stan 3 jest analogiczny do stanu drugiego z tym że linia jest na przeciwnym czujniku – robot skręca w lewo.
To może przykleić temat ? , Film już jest. Jak dotąd nie ma konkretnych informacji dla początkujących.. To jest pierwsza tego typu chwała ci za to Treker Pozdrawiam.
ps. Bez problemu możesz użyć mój film jak będziesz robił coś większego.
Witam. Zbudowałem właśnie prototyp płyty głównej dla robota typu line follower. Prototyp ma na celu sprawdzenie czy wszystko ok przed produkcją około 10 płytek - kitów dla nie-elektroników.
((Nie wiem czy to odpowiedni dział? - to jest moduł wiec chyba tak))
Płytka posiada:
-komparator lm324,
-uc-attiny2313,
-sterownik silników l293d,
-4 pinowe wyjście bezpośrednio na silniki,
-wejście zasilania: +5V, +max25, masa,
-wyjście na 3 czujniki linii (5pinów - 3 to kanały fototranzystorów, a 2 zasilanie 5v na diody ir nadawcze i zasilanie fototranzystorów.
-Dodatkowo wyjście pokazujące stan wejść uC - 5 pinów na 3 diody LED.
Jest to to moja pierwsza płytka którą sam zaprojektowałem - użyłem EAGLE'a. Popełniłem aż 9 zwór, starałem się zrobić jak najmniej, jeżeli ktoś może, niech mnie oświeci jak zrobić mniej. Jak wspominałem płytka jest dla nie-elektroników, uc będzie już zaprogramowany. Priorytetem były jak największe pola lutownicze, smd więc odpada. Płytkę wykonałem mazakiem odpornym na trawienie -ręczna robota (co niestety widać). pozostałe 10 płytek wykonam metodą termotransferu. Proszę o krytyczne opinie. Co zawczasu można zmienić itp.
Witam, było trochę problemów z płytką, zostały rozwiązane na innym forum, miedzy innymi z kondensatorem. Jak będę miał troche czasu wrzucę poprawioną wersję. Pozdrawiam.
Witam. Zrobiłem do line followera czujnnik optyczny - zderzeniowy. Jest na przedzie robota.
Sam problem dotyczy programu. zrobiłem wszystko na if'ach i mam problem w momencie gdy robot wyjdzie poza linie wszystkimi czujnikami dolnymi (1,1,1) i w tym momencie zobaczy przeszkodę, to po usunięciu jej już nie kontynuuje poprzednio wykonywanego manewru. W programie powinno być raczej coś w stylu jeżeli czujnik 1 to cały program narazie stop. jak 1 to wraca do programu. U mnie tylko z pozoru tak jest. Proszę o pomoc. Pozdrawiam.
to robot stoi dalej w miejscu bo nie widzi czarnej linii... normalnie poradzi sobie z trzema jedynkami bo nie ma takiej definicji i kontynuuje poprzedni manewr...
Witam. Chciałbym zaprosić wszystkich robotyków do uczestnictwa w pierwszych zawodach robotów jeżdżących po linii organizowanych w Zespole Szkół Elektronicznych i Telekomunikacyjnych w Olsztynie.
Więcej informacji na stronie www.followtheline.pl Termin - 1 dzień wiosny
Użyj po prostu pary: fotodiody nad.IR i fototranzystora o tym samym rozmiarze (np, 5mm, obudowa typu led) Są też gotowe pary fototranzystor + fotodioda zamknięte w obudowie optymalnie względem siebie to są właśnie wspomniane "gotowe czujniki" (mają 4 wyprowadzenia, dwa to fotodioda i dwa fototranzystor).
dla przykładu: TCRT 1000
Pytałeś jeszcze jak mikrokontroler ma widzieć 0 i 1 Decado odpowiedział ci elegancko, ja dodam jeszcze definicje z wiki:
Kod:
Komparator jest układem kombinacyjnym służącym do porównywania dwóch liczb
dwójkowych (kod binarny)(wykonanie cyfrowe) albo dwóch napięć (wykonanie analogowe).
Lm386 może obsłużyć cztery czujniki (Low Power Quad Operational Amplifier, pracujący jako komparator), należy go podłączyć wtedy według tego schematu:
Proponuję ograniczyć ilość czujników linii do 3... 4 czujniki nic nie dadzą, w dodatku to nieparzysta liczba wiec nie ma czujnika po środku który odpowiada za jazdę na wprost, 3 w zupełności wystarczą, a 4-ty można wykorzystać jako zderzeniowy. Tak jak to ja zrobiłem:
- pewnie zaraz będziemy się kłócić o logice sterowania LF
Witam, po czasochłonnym szukaniu oprogramowania i lekkim zmodyfikowaniu kitu znalezionego w piwnicy (bariera optoelektroniczna)
Wszystko przedstawia się i działa w następujący sposób:
Schemat odbiornika:
Nadajnika:
Program to Xnote Stopwach (w załączniku), steruje się stoperem łącząc odpowiednie piny w porcie com-9, lub com-25. I teraz pytanko, jak wydłużyć świecenie czerwonej diody (czyli załączenie przekaźnika, ten "zastąpiony" transoptorem - w zasadzie podłączony w szereg z diodą pokazującą stan załączenia przekaźnika, ale przekaźnik do tego celu sie nie nadaje) Standardowo w układzie "alarm" - czerwona dioda i przekaźnik włączają się gdy tylko na chwilkę zgaśnie zielona (a ta pali się tylko wtedy gdy jest wycelowany w nią nadajnik) czerwona gaśnie dopiero gdy zresetujemy ją "resetem", można to połączyć na stałe ale wtedy jest problem gdy przejadą przednie koła robota i zaraz po nich tylne - stoper sie zatrzyma. Jak zrobić żeby dioda czerwona czyli stan uaktywnienia trzymał wartość co najmniej z 3 sekundy? Bo często podczas testów zdarzało mi się zapomnieć zresetować układ, a przy ciągłym resecie (taki jak na filmie) może pojawiać się wyżej określony problem. Z racji faktu że układ ten ma zostać zastosowany na zawodach, musiał by być w miarę bez obsługowy. Generalnie zrobię prostszy układ ale święta to nie było czasu na robienie czegoś tylko wziąłem gotowca przerobiłem.
Zaletą jest to że bardzo trudno układ zakłócić (regulowana częstotliwość pracy nadajnika) a na zawodach może być to przydatne.
Co do samego programu może on oczywiście mierzyć też międzyczasy.
Witam, Przymierzam się do pewnego projektu i mam pytanie w czym projektować układy mechaniczne, natknąłem się na Autocad Inventor, ale czy są jakieś odpowiedniki? (na linuxa mile widziane). Konkretnie chodzi mi o projektowanie typu stworzenie czegoś w 3d a następnie możliwość rozłożenia na części - wydrukowania, tak aby każdą część można było wydrukować (konstrukcja ma być na laminacie)
JStan dla mnie jesteś wzorem do naśladowania - mistrz. Program działa elegancko na tym kicie. Jednak na serwach dalej widać troszkę nierównomierne ruchy - nie wiem czy to wina serwa czy programu (serwa sg 5010) mam ten sam problem co autor tematu, ale chyba tez napisze własny program bo widzę że się da
No co do tego przycinania się serw, to mam dwa mikro serwa i te chodzą dobrze na twoim programie w przeciwieństwie do tych sg5010, ale na oryginalnym programie serwa chodzą bez przycięć, tyle że z v-max.
Pomysł z joystickiem bardzo trafny. jeżeli byś mógł to ja prosiłbym o bardziej rozbudowany program, brakuje tylko nagrywania ruchu, no i wspomnianego sterowanie joyem. Nawet w obecnej wersji programu da się sterować joyem - program "joy to key".
** Dodano: 2008-05-14, 23:56 **
Co do przycinania to faktycznie wady serw chyba, bo tylko 2 z ośmiu wykazują jakieś nierównomierne prace - jedno potrafi się zaciąć w pewnym momencie i drgać, im dłużej sie bawię to u mnie pracują lepiej. Nierozruszane serwa?
Pozdrawiam
A da się jakoś zmniejszyć prędkość "na stałe" w oryginalnym programie? (z maxymalnej na np 20%)
** Dodano: 2008-05-26, 15:10 **
pidpawel pisałeś żeby pokazać filmik, nie wiem czy to do mnie czy do autora tematu, tak czy siak mój sprawuje sie tak: (brakuje jeszcze tylko chwytaka)
Zastosowałem wcześniej wspomniane sterowanie joyem, program jest dalej JStan'a. Brakuje jeszcze nagrywania ruchów
Najfajniej działa sterowanie padem od xboxa 360 (bezprzewodowy) za pomocą modułu na blue.
Witam, przedstawiam mocno spóźniony film z zawodów które odbyły się 04.04.08. (Matury w szkole, brak dostępu do sali RTV)
Więcej o zawodach na www.followtheline.pl
(Dział "w mediach" zawiera również inne artykuły i filmy o zawodach)
Wortal www.dioda.com.pl jest patronem medialnym zawodów.
Po pierwsze w pierwszym poście schemat nie pasuje do programu.
Po drugie, mój film i mój schemat, program też pisałem ja
Po trzecie z powyższym programem musisz jeżeli robisz według tego schematu (standardowe fusy attiny2313 musisz wpisać że $crystal = 1000000
Po czwarte dokładnie przeanalizuj który czujnik jest który i uwzględnij to w w schemacie i w programie bo z tego co podałeś jest trochę namieszane. Ja to wpisywałem dla swoich połączeń i z jednym czujnikiem z przodu a trzema na dole.
Po piąte, zaraz zapodam jakiś poukładany schemat i program.
'Stan początkowy portów
Config Portb = Output
Config Portd = Input
Portb = &B00000000
Portd = &B00000000
'Określenie wyjść"
Motor_pp Alias Portb.2 'prawy silnik do przodu
Motor_pt Alias Portb.3 'prawy silnik do tyłu
Motor_lp Alias Portb.4 'lewy silnik do przodu
Motor_lt Alias Portb.5 'lewy silnik do tyłu
Sensor_p Alias Pind.3 'czujnik prawy
Sensor_s Alias Pind.4 'czujnik środkowy
Sensor_l Alias Pind.5 'czujnik lewy
'Polecenia wydawane na podstawie stanów wejściowych:
Do
If Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 1 Then
Gosub Go
Elseif Sensor_l = 0 And Sensor_s = 1 And Sensor_p = 1 Then 'Skręć w lewo
Gosub Lewt
Elseif Sensor_l = 0 And Sensor_s = 0 And Sensor_p = 1 Then 'Skręć w lewo
Gosub Lewt
Elseif Sensor_l = 1 And Sensor_s = 0 And Sensor_p = 0 Then 'Skręć w prawo
Gosub Righ
Elseif Sensor_l = 1 And Sensor_s = 1 And Sensor_p = 0 Then 'Skręć w prawo
Gosub Righ
End If
Loop
'Tryby pracy silników dla poszczególnych ruchów:
Go: 'Przód
Motor_lt = 1
Motor_pt = 1
Return 'Lewo
Lewt:
Motor_lt = 0
Motor_pt = 1
Return
Righ: 'Prawo
Motor_lt = 1
Motor_pt = 0
Return
//daniel93
Poprawiłem błąd: attiny2313 ma 1Mhz na standardowych fusach, a nie 10Mhz.
Wydaje mi się że problem tkwi w czujnikach, brakuje układu komparatora (pierwszy post jest na schemacie), przy tym programie i schemacie podstawą działania jest to żeby mikrokontroler dostawał idealne zera i jedynki, a nie analizował wartość napięcia na fototranzystorze . Słowem: zrób komprator.
W pony prog:
CKDIV8 - zaznaczony
SUTO - zaznaczony
CKSEL3 - zaznaczony
CKSEL1 - zaznaczony
CKSEL0 - zaznaczony
reszta odznaczona, w programie dajesz $crystal = 1000000 (załaduj i podłącz tak jak pokazałem na schemacie w moim poprzednim poście)
Widzę że nie chciało ci się nawet czytać/analizować programu który podałeś. Przecież to dokładnie tak działa, z tym że jeden silnik zatrzymuje się w miejscu (l293d łączy jego bieguny). Zrób po prostu układ według schematu i zaprogramuj go tak jak ci podałem.
Pozdro.
Ogólnie robot mi się podoba, mam tylko pytanie:
-dlaczego taki długi? Krótszy - w zasadzie same koła znacznie zwiększyły by mobilność (nie zahaczał by tyłem)
Witam, mam pytanie. W jaki sposób odbywa się komunikacja pomiędzy czujnikiem a "cegłą" w lego NXT
Konkretnie chodzi mi o to:
http://www.robonet.pl/?shop&p=nxt_color
Mam zamiar podłączyć to do AVR, ale nigdzie nic nie moge znaleść na temat standardu transmisji sygnału w lego NXT.
Generalnie ma być to do tego projektu: