- Wymagane materiały
- Koncepcje popychacza liniowego
- Objaśnienie obwodu
- Praca robota podążającego za pomocą MSP430
- Schemat obwodu
- Objaśnienie programowania
Robot Line follower jest jednym z popularnych projektów robotyki wśród studentów i początkujących ze względu na swoją prostotę. Wynika z linii, czarnej lub białej, w zależności od tego, jak zaprogramujesz mikrokontroler. Tutaj tworzymy robota śledzącego linię za pomocą startera MSP430 firmy Texas Instruments, który podąża za czarną linią. Jeśli nie znasz jeszcze startera MSP430, przeczytaj nasz samouczek „Pierwsze kroki z MSP430”.
Wymagane materiały
- MSP430G2 LaunchPad firmy Texas Instruments
- Moduł sterownika silnika L298D
- Przewody łączące
- Moduły czujników podczerwieni
- Podwozie, koło, kolejka górska
- Energia IDE
- Zasilanie (3,3 V) i 5 V-12 V.
Koncepcje popychacza liniowego
Koncepcja popychacza liniowego jest związana ze światłem. Wykorzystaliśmy zachowanie światła na czarno-białej powierzchni. Kiedy światło padnie na białą powierzchnię, będzie prawie całkowicie odbijać, aw przypadku czarnej powierzchni jest absorbowane przez czarną powierzchnię. To wyjaśnione zachowanie światła jest używane w tym robocie śledzącym linię.
W tym robocie śledzącym linię opartym na MSP430 zastosowaliśmy nadajniki i odbiorniki podczerwieni, zwane także fotodiodami. Służą do wysyłania i odbierania światła. Podczerwień przesyła światło podczerwone. Kiedy promienie podczerwone padają na białą powierzchnię, są odbijane i wychwytywane przez fotodiody, które generują pewne zmiany napięcia. Kiedy światło podczerwone pada na czarną powierzchnię, jest ono pochłaniane przez czarną powierzchnię i żadne promienie nie są odbijane, dzięki czemu fotodioda nie otrzymuje żadnego światła ani promieni. Aby dowiedzieć się więcej o czujnikach podczerwieni, kliknij łącze.
Tutaj, w tym robocie podążającym za linią opartym na MSP430, gdy czujnik wykryje białą powierzchnię, MSP otrzymuje 1 jako wejście, a kiedy wyczuwa czarną linię, MSP otrzymuje 0 jako wejście.
Objaśnienie obwodu
Możemy podzielić robota śledzącego całą linię na różne sekcje, takie jak sekcja czujnika, sekcja sterowania i sekcja kierowcy.
Sekcja czujnika: ta sekcja zawiera diody IR, potencjometr, komparator (wzmacniacz operacyjny) i diody LED. Potencjometr służy do zadawania napięcia odniesienia na jednym zacisku komparatora, a czujniki IR wykrywają linię i zapewniają zmianę napięcia na drugim zacisku komparatora. Następnie komparator porównuje oba napięcia i generuje sygnał cyfrowy na wyjściu. Tutaj w tym obwodzie zastosowaliśmy dwa komparatory dla dwóch czujników. LM358 jest używany jako komparator. LM358 ma wbudowane dwa niskoszumowe wzmacniacze operacyjne.
Sekcja sterowania: MSP430 Launchpad służy do sterowania całym procesem robota śledzącego linię. Wyjścia komparatorów są podłączone do cyfrowych pinów P1_3 i P1_4 Launchpada MPS430. MSP430 Launchpad odczytuje te sygnały i wysyła polecenia do obwodu sterownika do popychacza linii napędowej.
Sekcja sterownika: Sekcja sterownika składa się ze sterownika silnika i dwóch silników prądu stałego. Sterownik silnika jest używany do sterowania silnikami, ponieważ MSP430 Launchpad nie dostarcza wystarczającego napięcia i prądu do silnika. Więc dodaliśmy obwód sterownika silnika, aby uzyskać wystarczające napięcie i prąd dla silnika. Tutaj użyliśmy sterownika L298d do napędu silników prądu stałego. MSP430 Launchpad wysyła polecenia do tego sterownika silnika, a następnie steruje silnikami.
Opracowaliśmy roboty Line Follower z różnymi mikrokontrolerami:
- Robot Line Follower wykorzystujący mikrokontroler 8051
- Robot Line Follower wykorzystujący Arduino
- Robot Line Follower korzystający z Raspberry Pi
- Robot Line Follower za pomocą mikrokontrolera PIC
Praca robota podążającego za pomocą MSP430
Praca line follower jest bardzo ciekawa. Robot śledzący linię wykrywa czarną linię za pomocą czujnika, a następnie wysyła sygnał do MSP430 Launchpad. Następnie MSP430 Launchpad napędza silnik zgodnie z wyjściem czujników.
W tym projekcie używamy dwóch modułów czujnika podczerwieni, a mianowicie lewego czujnika i prawego czujnika. Gdy zarówno lewy, jak i prawy czujnik wykryją biel, robot rusza do przodu.
Jeśli lewy czujnik znajdzie się na czarnej linii, robot skręca w lewo.
Jeśli prawy czujnik wykryje czarną linię, robot obróci się w prawo, aż oba czujniki znajdą się na białej powierzchni. Gdy pojawi się biała powierzchnia, robot ponownie rusza do przodu.
Jeśli oba czujniki pojawią się na czarnej linii, robot zatrzymuje się.
Schemat obwodu
Obwód tego robota popychacza liniowego MSP430 jest bardzo prosty. Wyjście komparatorów jest bezpośrednio podłączone do cyfrowych pinów p1_3 i P1_4 w MSP430 Launchpad. A styki wejściowe IN1, IN2, IN3 i IN4 sterownika silnika są podłączone odpowiednio do cyfrowych pinów P1_5, P2_0, P2_1, P2_2 MSP430 Launchpad. Jeden silnik jest podłączony do styku wyjściowego sterownika silnika OUT1 i OUT2, a drugi silnik jest podłączony do OUT3 i OUT4. Tutaj użyliśmy zasilania 3,3 V do zasilania całego obwodu z wyjątkiem modułu sterownika silnika. Dostarczyliśmy 8 v do modułu sterownika silnika. Użytkownik może użyć 5 v-12 v.
Możesz także zbudować własny moduł IR, tak jak ja zbudowałem na płycie Perf Board. Poniżej znajduje się obwód modułu IR:
Objaśnienie programowania
Kompletny program i wideo można znaleźć na końcu tego artykułu.
W programie przede wszystkim definiujemy pin wejściowy i wyjściowy dla czujnika i silników. Następnie zdefiniuj kilka makr dla kierunku popychacza linii, a następnie napisz dyrektywę, aby wybrać wyjście czujnika
Uwaga: Czujnik może być aktywny jako niski lub aktywny w stanie wysokim, więc najpierw sprawdź, jakie jest wyjście czujnika, a następnie wybierz dyrektywę, komentując lub odkomentowując activeLowMode . Dla aktywnego HIGH skomentujmakro activeLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 int pins = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {forward, left, right, stop}; #else int res = {stop, prawo, lewo, przód}; #endif
Następnie w funkcji ustawień podajemy kierunek czujnika i pin silnika. Następnie w funkcji pętli sprawdzamy wejścia i wysyłamy dane wyjściowe do modułu sterownika silnika, aby uruchomić silniki.
void setup () { for (int i = 0; i <4; i ++) pinMode (piny, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); for (int i = 0; i <4; i ++) digitalWrite (piny, (res >> i) & 0x01); }
Istnieją cztery warunki w tym obserwatorze linii, które czytamy za pomocą MSP430 Launchpad. Użyliśmy dwóch czujników, a mianowicie lewego i prawego.
Warunki: Aktywne wyjście HIGH
Wejście |
Wynik |
Ruch Robota |
||||
Lewy czujnik |
Prawy czujnik |
Lewy silnik |
Właściwy silnik |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Zatrzymać |
0 |
1 |
1 |
0 |
0 |
0 |
Skręć w prawo |
1 |
0 |
0 |
0 |
1 |
0 |
Skręć w lewo |
1 |
1 |
1 |
0 |
1 |
0 |
Naprzód |
Program jest napisany zgodnie z powyższymi warunkami tabeli. Sprawdź poniżej pełny kod i film demonstracyjny.