- Wymagane materiały:
- Koncepcje popychacza liniowego
- Schemat obwodu i wyjaśnienie:
- Programowanie mikrokontrolera PIC:
- Obserwator linii PIC w akcji:
Robot Line Follower to prosty, ale fascynujący robot do zbudowania dla większości studentów / hobbystów. W tym samouczku dowiemy się, jak działa robot podążający za linią i jak możemy go zbudować za pomocą mikrokontrolera PIC PIC16F877A. PIC16F877A to 40-pinowy uniwersalny MCU firmy Microchip, użyliśmy tego układu scalonego w naszej pełnej serii samouczków PIC. Jeśli jesteś nowy, możesz rzucić okiem na te samouczki PIC, aby poznać podstawy tego układu scalonego i jak przesyłać programy do mikrokontrolera. Ponieważ omówiliśmy już te informacje w naszych samouczkach, pominiemy je w poniższym wyjaśnieniu.
Jeśli interesujesz się robotyką, powinieneś dobrze znać nazwę „ Line Follower Robot ”. Ten robot jest w stanie podążać za linią, używając tylko pary czujników i silników. Ten robot daje ci miejsce na nieskończony rozwój, a roboty takie jak Kiva (robot magazynowy Amazon) są tego przykładem. Możesz również sprawdzić nasze inne roboty Line Follower:
- Robot Line Follower wykorzystujący mikrokontroler 8051
- Robot Line Follower wykorzystujący Arduino
- Robot Line Follower korzystający z Raspberry Pi
Wymagane materiały:
- PIC16F877A
- Czujnik podczerwieni (2 szt.)
- Silnik z przekładnią DC (2 szt.)
- Sterownik silnika L293D
- Szezlongi (możesz również zbudować własne za pomocą tektur)
- Power bank (dowolne dostępne źródło zasilania)
Koncepcje popychacza liniowego
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 PIC, 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 PIC 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.
Schemat obwodu i wyjaśnienie:
Pełny schemat obwodu tego robota popychacza liniowego opartego na układzie PIC pokazano poniżej
Obwód wykorzystuje dwa czujniki IR i parę motoreduktorów prądu stałego wraz z modułem sterownika silnika, jak pokazano powyżej. Moduł sterownika silnika użyty w tym projekcie to L293D, będziemy potrzebować sterownika silnika, ponieważ pin wyjściowy mikrokontrolera PIC nie może dostarczyć wystarczającego prądu do napędzania silników. Moduł ten będzie zasilany bezpośrednio ze źródła zasilania (5 V), jak pokazano na obwodzie. Moduł ma cztery piny (po dwa na każdy silnik), które są podłączone do PIC w celu sterowania kierunkiem silników. Mamy również dwa czujniki podczerwieni, które działają jako wejście do mikrokontrolera PIC. Te czujniki staną się wysokie (1), jeśli znajdują się na białej powierzchni, i staną niskie (0), gdy znajdą się na czarnej powierzchni. Pełne połączenia pinów są przedstawione w poniższej tabeli.
S.Nr |
Połączony z |
Połączony z |
1 |
Czujnik podczerwieni Pozostawiony styk |
RD2 (styk 21) |
2 |
Czujnik podczerwieni Wyprostowany pin |
RD3 (styk 22) |
4 |
Styk A silnika 1, kanał |
RC4 (pin 23) |
5 |
Styk B silnika 1, kanał |
RC5 (pin 25) |
6 |
Styk A silnika 2 - kanał |
RC6 (pin 26) |
7 |
Styk B silnika 2 kanału |
RC7 (pin 27) |
W rzeczywistym sprzęcie użyłem banku mocy, który da wyjście + 5V bezpośrednio przez port USB; stąd ominąłem regulator napięcia 7805 i zasiliłem PIC, czujniki i silniki używając tego samego. Możesz zrobić to samo, używając akumulatora 12 V wraz z regulatorem, jak pokazano na obwodzie.
Programowanie mikrokontrolera PIC:
Gdy jesteś gotowy ze sprzętem, czas rozpocząć programowanie. Kompletny program ten PIC linia Follower Robot Projektu jest podany na końcu tej strony. Jednak ważne fragmenty są wyjaśnione poniżej.
Zainicjuj piny I / O zgodnie z następującymi liniami. 2 piny czujnika podczerwieni działają jako wejście, a cztery piny silnika działają jako styki wyjściowe.
TRISD2 = 1; TRISD3 = 1; // Kąpiel piny czujnika podczerwieni są zadeklarowane jako wejście TRISC4 = 0; TRISC5 = 0; // Piny silnika 1 zadeklarowane jako wyjście TRISC6 = 0; TRISC7 = 0; // Piny silnika 2 zadeklarowane jako wyjście
Teraz musimy odczytać stan obu czujników podczerwieni i odpowiednio sterować silnikiem. Na przykład, jeśli oba czujniki są wysokie (nie znajduje się pod czarną linią), to przesuwamy oba silniki do przodu, jak pokazano w poniższym programie.
if (RD2 == 1 && RD3 == 1) // Oba czujniki nie przekroczyły czarnej linii {RC4 = 0; RC5 = 1; // Silnik 1 do przodu RC6 = 1; RC7 = 0; // Silnik 2 do przodu}
Jeśli lewy czujnik znajdzie się nad czarną linią, wówczas wykonujemy skręt w prawo, trzymając silnik 1 nieruchomo i obracając silnik 2 w kierunku do przodu. Ten rodzaj toczenia nazywany jest toczeniem różnicowym.
else if (RD2 == 0 && RD3 == 1) // Lewy czujnik znajduje się nad czarną linią {RC4 = 1; RC5 = 1; // Zatrzymanie silnika 1 RC6 = 1; RC7 = 0; // Silnik 2 do przodu}
Podobnie, jeśli prawy czujnik znajdzie się nad czarną linią, robot wykonuje skręt w lewo, trzymając drugi silnik nieruchomo i obracając pierwszy silnik samodzielnie w kierunku do przodu, jak pokazano poniżej.
else if (RD2 == 1 && RD3 == 0) // Prawy czujnik jest nad czarną linią {RC4 = 0; RC5 = 1; // Silnik 1 do przodu RC6 = 1; RC7 = 1; // Zatrzymanie silnika 2}
Wreszcie, jeśli oba czujniki znajdą się pod czarną linią, czas zatrzymać bota. Można to zrobić, ustawiając wszystkie szpilki obu silników wysoko. Kod umożliwiający to samo pokazano poniżej
else // Oba czujniki nad czarną linią {RC4 = 1; RC5 = 1; // Zatrzymanie silnika 1 RC6 = 1; RC7 = 1; // Zatrzymanie silnika 2}
Oznacza to, że program jest gotowy i można go przesłać do PIC za pomocą dowolnego programatora, takiego jak PicKit.
Obserwator linii PIC w akcji:
Gdy sprzęt i kod są gotowe, czas na jakąś akcję. Jak powiedziałem wcześniej, użyłem banku mocy do zasilania bota, więc wszystko, co muszę zrobić, to po prostu podłączyć bank mocy do bota, który ma skonfigurowany sprzęt i kod już załadowany.
Płyta PIC Perf została stworzona na potrzeby naszej serii samouczków PIC, w których nauczyliśmy się obsługi mikrokontrolera PIC. Możesz wrócić do samouczków mikrokontrolera PIC przy użyciu MPLABX i XC8, jeśli nie wiesz, jak nagrać program za pomocą Pickit 3, ponieważ pominę te wszystkie podstawowe informacje.
Teraz po prostu uruchom bota nad czarną linią i powinieneś obserwować, jak podąża za linią.
Na początku możesz napotkać pewne trudności, w takim przypadku przeczytaj dalej. Jeśli koła obracają się w przeciwnym kierunku, po prostu zamień polaryzację silnika, który obraca się w przeciwnym kierunku. Jeśli bot odbiega od linii, zamień czujnik IR i wszystko powinno być dobrze.
Pełne działanie bota można znaleźć na poniższym filmie. Mam nadzieję, że podoba Ci się ten projekt i podobało Ci się budowanie czegoś podobnego. Jeśli masz problem z uruchomieniem tego, możesz opublikować je w sekcji komentarzy poniżej, aby go rozwiązać, lub skorzystać z naszych forów w celu omówienia treści technicznych.