Opis działania robota
Po zasileniu robota robot podąża wzdłuż wyznaczonej linii rozstawiając klocki co
określoną odległość. Po opróżnieniu magazynu z klockami robot uruchamia alarm
dźwiękowy oraz zaświeca diodę LED i zatrzymuje się, w celu uzupełnienia magazynu
przez operatora. W przypadku, gdy robot napotka przeszkodę uruchomi się alarm a robot
się zatrzyma.
Układ mechaniczny
Projekt robota oparty jest o koncept robota czterokołowego, z napędem tylnej osi.
Napęd zrealizowano za pomocą dwóch osobnych silników, z czego każdy z nich jest
sterowany osobno co pozwala na ustalanie innej prędkości na każdym z kół znajdujących się z tyłu robota. Przełożenie przekładni znajdującej się na tylnej osi wynosi 1:1. Odczyt prędkości kół zrealizowano za pomocą enkoderów umieszczonych na kołach osi tylnej. Zamianę
ruchu zrealizowano za pomocą przekładni oznaczonej strzałką na rysunku nr 1. Przednie koła służą do stabilizacji robota. Model robota zamodelowanego w programie Fusion pokazują rysunki 1, 2, 3.
Rys.1. Widok robota z przodu
Rys.2. Widok robota z tyłu
Części ścian magazynu zaprojektowano i wydrukowano na drukarce 3D ukazane na ryskunku 4 oraz 5.
Rys.4. Widok z góry
Rys.5. Widok z dołu
Układ elektroniczny
Do sterowania robotem wykorzystano mikrokontroler Arduino Mega 2560. Schemat układu wykonany w programie Eagle ukazany jest na rysunku 6. Zaprojektowana płytka sterująca PCB pokazana jest na rysunku 7. Robot ma wbudowany moduł line follower zrealizowany za pomocą płytki PCB z umieszczonymi na niej pięcioma fotorezystorami i pięcioma diodami (rysunek 8). Posiada on także czujnik odbiciowy obecności klocków w magazynie oraz czujnik ultradzwiękowy, który ma na celu wykrywanie przeszkód znajdujących się na drodze robota.
Rys. 6. Schemat układu
Rys. 7. Płytka sterująca
Rys. 8. Płytka odbicia światła
Software
W projekcie wykorzystano 5 fotorezystorów do kontrolowania kierunku ruchu
pojazdu oraz dwa silniki prądu stałego do napędzania oraz obracania pojazdem.
Założono, że linia wzdłuż której przemieszcza się pojazd jest czarna, a powierzchnia (tło)
jest biała. Wobec tych założeń, w momencie wykrycia czarnej linii przez konkretny
fotorezystor wartość napięcia na połączonym z nim wejściu analogowym mikrokontrolera
Arduino Mega będzie znacznie niższa niż w przypadku fotorezystorów wykrywających
białą powierzchnię (tło). Mikrokontroler posiada wbudowany 10-bitowy przetwornik
analogowo cyfrowy, który umożliwia zapis wartości analogowej w postaci wartości cyfrowej
w zakresie od 0 do 1023. W kodzie wykorzystano poniższą funkcję do wyświetlenia
wartości wyjściowych przetwornika:
Serial.println(analogRead(left_far));
Porównując cyfrowe wartości wyjściowe przetwornika z średnią arytmetyczną
dwóch wartości (wartości odpowiadających dla wykrycia czarnego koloru i białego)
możemy zadać odpowiedni kierunek obrotu silników. W kolejnych pętlach if badane są
cyfrowe wartości wyjściowe z przetwornika ADC dla odpowiadających im czujników.
Rozmieszczono po dwa fotorezystory na stronę oraz jeden środkowy, który
informuje o tym że pojazd porusza się w dobrym kierunku, zgodnie z linią. Zastosowanie
większej liczby czujników umożliwia dokładniejszą kontrolę nad pojazdem oraz dostarcza
informacji na temat przybliżonej pozycji pojazdu względem czarnej linii. Rozmieszczenie czujników przedstawiono na rysunku 9.
Rys. 9. Rozmieszczenie fotorezystorów, widok z góry
Każdy silnik sterowany jest osobno zatem prędkości mogą się różnić. Algorytm opiera się na odometrii robota jezdnego, dzięki której w każdej chwili możemy poznać aktualne położenie i orientację pojazdu. Robot porusza się o okręgu zależnym zarówno od prędkości silnika prawego jak i lewego. Gdy obydwie prędkości są równe, pojazd jedzie do przodu.
Rys. 10. Układ sterowania silnikami krokowymi
Wysuw klocków z magazynu odbywa się za pomocą zamiany ruchu obrotowego silnika sterowanego sygnałem PWM (obroty silnika rejestrowane są za pomocą enkodera) na ruch posuwisty.
Układ wykrywania klocków w magazynie jest wyposażony w czujnik odbicia, zatem gdy odczyt z czujnika nie wykrywa odpowiedniego współczynnika odbicia wyłącza silniki, włącza sygnał dźwiękowy i zapala diodę awaryjną. Po uzupełnieniu klocków układ wznawia działanie silników.
Podczas jazdy po linii możemy napotkać przeszkodę. W naszym układzie wartość odległości granicznej od przedmiotu wynosi 20. Gdy jest ona mniejsza silniki wyłączają się oraz włącza się sygnał alarmowy. Po przesunięciu robota lub oddaleniu przeszkody układ wznawia działanie.
Użyliśmy również modułu bluetooth, z którym łączymy się z telefonu. Na aplikacji dostajemy informacje dotyczące o braku klocków. Możemy również wznowić nasz program, gdy się zatrzyma.
Aplikacja jest widoczna na rysunku 11.
Rys. 11. Aplikacja umożliwiająca przesłanie danych
Fizyczny układ Lego
Z klocków Lego Mindstorms EV3 stworzono dwa prototypy układu:
-jezdny z 3 czujnikami odbicia koloru oraz czujnikiem odległości rys. 12
Rys. 12. Robot zbudowany z klocków Lego
-napęd wysuwania klocka rys. 13
Rys. 13. Napęd wysuwania klocka
Schemat ideowy układu przedstawiony jest na rysunku 14.
Rys. 14. Schemat ideowy