- Koncepcja robota popychacza liniowego
- Wymagane składniki
- Schemat obwodu
- Programowanie Atmega16 dla robota Line Follower
Tutaj będziemy budować kolejny projekt z mikrokontrolerem AVR Atmega16. Jeśli nie znasz mikrokontrolerów AVR, możesz zapoznać się z wcześniejszymi projektami AVR i samouczkami.
Budowa robota zawsze jest ekscytująca dla wszystkich hobbystów elektroniki. Ten dreszczyk emocji można zmaksymalizować, jeśli robot może automatycznie wykonać pewne czynności bez żadnych zewnętrznych instrukcji. Jednym z najczęściej budowanych robotów przez początkujących elektroników jest Line Follower Robot. Jak nazwa sugeruje robot będzie podążał za linią narysowaną na powierzchni. Linia nie musi być linią prostą. Ponadto linie mogą mieć dowolne kolory.
Wcześniej budowaliśmy projekty Line Follower Robot przy użyciu różnych kontrolerów:
- Robot Line Follower wykorzystujący mikrokontroler 8051
- Robot Line Follower za pomocą mikrokontrolera PIC
- Robot Line Follower wykorzystujący Arduino
- Robot Line Follower korzystający z Raspberry Pi
- Robot popychający linię za pomocą wyrzutni MSP430
Dzisiaj użyjemy mikrokontrolera AVR do zbudowania robota śledzącego linię.
Do wykrywania linii używane są głównie czujniki podczerwieni. Czujniki podczerwieni dobrze wykrywają białe lub czarne powierzchnie. Chociaż możesz użyć innych wyrafinowanych czujników, które będą w stanie wykryć wszystkie kolory i mogą stworzyć robota, który będzie mógł śledzić wszystkie linie kolorów. Robot powinien być w stanie wykryć linię, nawet jeśli ścieżka zostanie zmieniona przez zmianę kąta i podążać za linią. Powinien również zatrzymywać się wszędzie tam, gdzie na linii pojawi się strefa zatrzymania.
Roboty śledzące linię są obecnie szeroko stosowane w przemyśle wytwórczym, medycynie, zastosowaniach domowych i magazynach towarów. Roboty nie ograniczają się tylko do tych aplikacji i mogą rozszerzyć swoje zastosowania w wielu przyszłych aplikacjach.
Koncepcja robota popychacza liniowego
Czujniki podczerwieni odgrywają kluczową rolę w tym projekcie. Czujniki podczerwieni są umieszczone z przodu robota, aby śledzić narysowaną czarną linię i powierzchnię. Robot jest umieszczony pomiędzy linią i za pomocą czujników IR robot śledzi linię. Czujniki podczerwieni przekazują odczyt do mikrokontrolera i za pomocą odczytu IR mikrokontroler przesuwa silniki w lewą lub prawą stronę i ponownie przenosi robota na ścieżkę.
Line Follower Robot jest w stanie śledzić linię za pomocą czujnika podczerwieni. Ten czujnik ma nadajnik i odbiornik podczerwieni. Nadajnik podczerwieni (dioda podczerwieni) przesyła światło, a odbiornik (fotodioda) czeka na powrót przechodzącego światła. Światło podczerwone powróci tylko wtedy, gdy odbije się od powierzchni. Podczas gdy wszystkie powierzchnie nie odbijają światła podczerwonego, tylko biała powierzchnia kolorowa może je całkowicie odbijać, a czarna powierzchnia całkowicie je obserwuje, jak pokazano na poniższym rysunku. Dowiedz się więcej o module czujnika podczerwieni tutaj.
Teraz użyjemy dwóch czujników podczerwieni, aby sprawdzić, czy robot porusza się po linii, i dwóch silników, aby skorygować robota, jeśli wyjdzie z toru. Silniki te wymagają dużego prądu i powinny być dwukierunkowe; dlatego używamy modułu sterownika silnika, takiego jak L293D. Będziemy również potrzebować mikrokontrolera, takiego jak ATmega16, aby instruować silniki na podstawie wartości z czujnika podczerwieni. Uproszczony schemat blokowy tego samego pokazano poniżej.
Te dwa czujniki podczerwieni zostaną umieszczone po jednym z każdej strony linii. Jeśli żaden z czujników nie wykrywa czarnej linii, mikrokontroler AVR nakazuje silnikom ruch do przodu, jak pokazano poniżej
Jeśli lewy czujnik pojawi się na czarnej linii, mikrokontroler nakazuje robotowi skręcić w lewo, obracając samo prawe koło.
Jeśli prawy czujnik znajdzie się na czarnej linii, mikrokontroler nakazuje robotowi skręcić w prawo, obracając tylko lewe koło.
Jeśli oba czujniki pojawią się na czarnej linii, robot zatrzymuje się.
W ten sposób Robot będzie mógł podążać za linią bez wychodzenia z toru. Zobaczmy teraz, jak wygląda obwód i kod.
Wymagane składniki
- Motoreduktory DC (2 szt.)
- Moduł czujnika podczerwieni (2 szt.)
- Moduł L293D
- Bezprzewodowe źródło zasilania (np. Bateria, power bank)
- Leżanki robotów
- Układ scalony mikrokontrolera Atmega16
- Oscylator kwarcowy 16 MHz
- Dwa kondensatory 100nF
- Dwa kondensatory 22pF
- Naciśnij przycisk
- Przewody połączeniowe
- Płytka prototypowa
- USBASP v2.0 (do programowania Atmega16)
Schemat obwodu
Podłącz wszystkie komponenty, jak pokazano poniżej na schemacie obwodu
Programowanie Atmega16 dla robota Line Follower
Tutaj Atmega16 jest programowany za pomocą USBASP i Atmel Studio7.0. Jeśli nie wiesz, jak zaprogramować Atmega16 za pomocą USBASP, odwiedź link. Kompletny program jest podany na końcu projektu, wystarczy załadować program do Atmega16 za pomocą programatora JTAG i Atmel Studio 7.0, jak wyjaśniono w poprzednim tutorialu.
Staraliśmy się, aby kod był tak krótki i prosty, jak to tylko możliwe. Dlatego w tym kodzie używamy makr i rejestrów funkcji specjalnych.
if (bit_is_clear (PINA , leftSen)) { // sprawdź, czy lewy czujnik jest wyłączony
Ta instrukcja sprawdza, czy PA0, do którego podłączony jest lewy czujnik, jest NISKI czy WYSOKI.
Jeśli chcesz dowiedzieć się więcej o tej instrukcji i innych makrach, przejdź do tego łącza
Istnieją cztery warunki, które przestrzegamy, aby odczytywać przez czujniki podczerwieni. Nazwy czujników IR są określane na podstawie ich umieszczenia z przodu robota. Lewy IR to lewy czujnik, a prawy IR to prawy czujnik. Następujące warunki będą decydować o ruchu robota.
Kod napisaliśmy zgodnie z powyższymi warunkami. Jedyną zmianą jest to, że używamy tylko dwóch pinów wejściowych L293D do napędzania obu silników.
Pełny kod wraz z filmem demonstracyjnym znajduje się poniżej.