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

                                                         Rys.3.  Widok robota z boku

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