Niniejszy robot jest w stanie podążać za wyklejoną lub narysowaną na podłodze linią dzięki wykorzystaniu czujnika odbiciowego na podczerwień. Ważne aby linia wyznaczająca tor jazdy cechowała się kontrastowym kolorem względem reszty podłoża (np czarna linia na białym tle).
Robot posiada dwa czujniki odbiciowe skierowane w kierunku podłoża (możliwie jak najbliżej, najlepiej w odległości nie przekraczającej 5mm) i ustawione w takim rozstawie aby tor po którym jedzie robot znajdował się pomiędzy czujnikami, dzięki temu za każdym razem kiedy robot będzie zbaczał z wyznaczonego toru któryś z czujników to zarejestruje i umożliwi skorygowanie toru jazdy tak aby robot nie zgubił określonej trasy.
Co potrzebujesz do zbudowania podstawowego robota podążającego za linią:
- Komplet części drewnianych + śrubki i nakrętki do zbudowania ramy pojazdu
- Dwa komplety części drewnianych do skonstruowania koła + odwa ringi 90mm
- Dwa ODBLOKOWANE serwomotory, zdolne do pełnego obrotu o 360 stopni
- Płytka prototypowa + kabelki
- Arduino
- Czujniki odbiciowe – np. CNY70
- Obrotowe kółko do mebli
- Dwa oporniki 10kOhm
Poniższa instrukcja przedstawia przykład konstrukcji małego pojazdu w oparciu o napęd bazujący na odblokowanych serwomotorach. Istotą działania line followera jest użycie czujników odbiciowych i właściwie każdy pojazd można przerobić tak by jeżdził po linii, równie dobrze możesz więc wykorzystać konstrukcję opartą o silniki DC. Tak samo opisaną tutaj konstrukcję możesz przerobić na dowolne inne sterowanie (np. przy pomocy czujnika odległości).
Konstrukcja mechaniczna
-
Komplet części mechanicznych do montażu line followera. -
Zamontuj serwomotory w uchwytach ścianek bocznych. Pamiętaj, że aby wykorzystać serwomotor jako napęd koła musi on być ODBLOKOWANY do możliwości pełnego obrotu o 360 stopni. Przedstawione na zdęciu serwomotory HK15139 fabrycznie są przystosowane do standardowego ruchu w zakresie 180 stopni, konieczne więc było ich przerobienie. Przeczytaj więcej o serwomotorach i ich odblokowywaniu. -
Przy pomocy trzech klocków z wypustkami połącz ścianki boczne ze sobą. -
Do przedniego panelu zamontuj uchwyty czujników odbiciowych. -
Do podstawki pod arduino i płytkę prototypową przymocuj kwadratowy klocek służący jako podstawa pod kółko obrotowe. Jako dystansy między podstawkami użyj sklejkowych kółek (po sześć sztuk na stronę). -
Podstawkę płytki prototypowej i Arduino przymocuj (stroną płytki prototypowej do przodu) do górnej części korpusu pojazdu. Zamontuj koła na serwomotorach.
Gotowy line follower po zamontowaniu czujników, Arduino i płytki prototypowej wygląda następująco:
Elektronika
Jak widzisz na powyższym zdjęciu czujniki odbiciowe (to te zawinięte w żółto-zieloną taśmę) umieszczone są jak najniżej i skierowane w stronę podłoża, po którym jedzie robot. Istotą działania czujnika odbiciowego jest proste zestawienie diody podczerwieni, która działa jako nadajnik, świecąc w kierunku podłoża, oraz fototranzystora, do którego wpadają promienie podczerwieni odbite od podłoża.
Obudowa fototranzystora jest tak skonstruowana, że przpuszcza tylko promienie podczerwone i jest on nieczuły na światło widzialne. Zależnie od koloru podłoża będzie ono odbijało różną ilość podczerwieni, biała podłoga lub arkusz papieru bardzo dobrze odbija podczerwień, natomiast czarna taśma izolacyjna, z której wyklejamy tor jazdy odbija podczerwień zdecydowanie gorzej, bardzo łatwo więc zmierzyć zmiany napięcia na fototranzystorze zależnie od tego czy czujnik odbiciowy znajduje się nad jasną podłogą czy ciemną linią.
Wykorzystujemy najprostszy układ złożony z dwóch czujników odbiciowych umieszczonych z przodu pojazdu, na środku w rozstawie ok. 4cm. Podczas jazdy linia wyznaczająca tor, za którym podążać ma pojazd znajduje się pomiędzy czujnikami, w momencie gdy linia skręca jeden z czujników odbiciowych najeżdża na nią co powoduje spadek napięcia na fototranzystorze (który mierzymy przy pomocy odczytu analogowego na Arduino), dzięki temu pomiarowi wiemy, w którą stronę skręca linia i korygując odpowiednio prędkość jednego z silników (jeśli lewy czujnik najechał na linię zwalniamy obroty lewego silnika i odwrotnie), korygujemy w ten sposób kierunek poruszania pojazdu, tak że cały czas trzyma się on linii.
Oprogramowanie
#include <Servo.h> Servo myservo; Servo myservo2; int val1; int val2; int pos = 0; void setup() { myservo.attach(9); myservo2.attach(10); Serial.begin(9600); } void loop() { val1 = analogRead(0); val2 = analogRead(1); Serial.print(val1); Serial.print("---"); Serial.println(val2); if (val1 > 400) { myservo.write(82); //zero = 75 } else { // myservo.write(100); myservo.write(70); } if (val2 > 400) { myservo2.write(63); //zero = 70 } else { myservo2.write(75); } }