John Lim

micromouse to robot, który wykorzystuje algorytm rozwiązywania labiryntu do autonomicznego rozwiązania problemu labiryntu. W tym poście podzielę się tym, jak mój zespół i ja udało się to zrobić z bardzo potrzebnymi wskazówkami od bardzo pomocnych ludzi.

podczas mojego semestru jesiennego na UC Berkeley, wziąłem zajęcia prowadzone przez studentów, aby stworzyć robota, który samodzielnie rozwiązuje problem labiryntu. Myślę, że jeśli jesteś w UC Berkeley, interesujesz się projektami elektronicznymi i szukasz wysoce kierowanego programu z niesamowitymi instruktorami,jest to świetne miejsce! Dla mnie ten kurs jest wyjątkowy, ponieważ jest to miejsce, w którym rozpocząłem swoją podróż w kierunku robotyki, majsterkowania i tworzenia i jest tym, co bardzo mi się podobało. Ten kurs dał mi świetne podstawy i nauczyłem się więcej, gdy zacząłem podejmować nowe projekty.

ja, mój zespół i nasza Myszka
nasza Myszka w labiryncie
ja i mój kolega z zespołu oraz moi instruktorzy kursu

oto szorstki zestaw instrukcji, jak rozpocząć swój projekt Micromouse jako początkujący:

  1. Lista części
  2. składanie części sprzętowych
    1. Konfigurowanie mikrokontrolera Teensy & Arduino IDE
    2. teensy pinOut wprowadzenie
    3. Korzystanie z czujników
    4. Regulacja napięcia
    5. mostek H sterownik silnika do sterowania silnikiem
    6. za pomocą enkodera rotacyjnego efektu Halla
    7. łącząc to wszystko razem
  3. kodowanie
    1. jak sterować sprzętem za pomocą kodu
    2. wykrywanie
    3. Kontrola PID
    4. algorytm rozwiązywania labiryntu
    5. dostrajanie
  4. jak rozwiązać problem

Lista części

  • części mechaniczne
    • Podwozie
    • koła
    • dużo taśmy klejącej, chyba że zamierzasz wydrukować części wykonane na zamówienie lub wydać pieniądze na zakup niestandardowych uchwytów
  • części elektryczne
    • Breadboard, przewody
    • dwa 5-woltowe Silniki mini DC
    • mała bateria 7 do 9 V
    • 7805 Regulator Napięcia
    • Czujnik Halla rotorary enkoder
    • H-Bridge
    • Teensy (lub każdy mały mikrokontroler. Arduino też działa!)
    • dwa czujniki odległości (użyłem czujnika Podczerwieni)

składanie sprzętu

2.1 Konfigurowanie mikrokontrolera Teensy & Arduino IDE

Teensy to mikrokontroler, który działa jak Arduino. Ogromną zaletą jest jego rozmiar. Jak sama nazwa wskazuje, Teenst jest mały i kompaktowy, co jest świetne!

zaczynamy od umieszczenia Teensy na niektórych kołkach nagłówkowych, a następnie lutowania kołków nagłówkowych na Teensy, a następnie mocowania go mocno na naszej płycie Chlebowej.

umieść kołki nagłówka na końcu deski do chleba
umieść Teensy na szpilkach
przylutuj Szpilki nagłówka do Teensy
Połącz się z komputerem za pomocą kabla MicroUSB

Jeśli jeszcze tego nie zrobiłeś, zainstaluj Arduino IDE na swoim komputerze. https://www.arduino.cc/en/Main/Software

bardzo ważne: jeśli używasz Teensy 3.1, upewnij się, że zainstalowałeś wersję Arduino zgodną z Teensy. Oto link do instalacji Teensyduino, aby Twój Teensy mógł pracować z Arduino IDE: https://www.pjrc.com/teensy/td_download.html

2.2 Obwód

2.21) Zasilanie bateryjne: zasilanie musi wynosić 7,2 V i więcej. Przez Konwencję obwodową możemy to nazwać Vcc2.

2.22) Zasilacz Regulowany 5V: elementy układów elektronicznych często potrzebują stabilnego napięcia zasilania, aby działać poprawnie. Problem polega na tym, że w przypadku urządzeń takich jak silniki, które mogą pobierać duże, różne ilości prądu, powoduje to spadek napięcia zasilania. Dlatego potrzebujemy regulatora napięcia, aby dostarczyć stabilne 5V do innych komponentów elektronicznych.

VoltageReg

2.23) mikrokontroler: to mózg każdego robota, który wydaje się mieć pozory inteligentnego myślenia. Mikrokontroler może wydawać się skomplikowany na początku, ale na początek, to naprawdę nie jest takie trudne. Oto podstawy: proste, ale bardzo ważne.

mikrokontrolery

2.23 a) Cyfrowe piny wejściowe: możliwość odczytu i zapisu sygnałów binarnych. Różne mikrokontrolery mają różne poziomy logiczne, ale większość mikrokontrolerów ma poziom logiczny 3.3 V lub 5V. na przykład Arduino jest mikrokontrolerem o poziomie logicznym 5V. podczas odczytu napięcie gdzieś w pobliżu 5V rejestruje jako wysokie, podczas gdy napięcie gdzieś w pobliżu 0V rejestruje jako niskie.

2.23 b) piny modulowane szerokości impulsu (PWM): są to Cyfrowe piny wejściowe ze specjalną możliwością wyprowadzania sygnału modulowanego szerokości impulsu. Jest to sygnał cyfrowy, który jest wysoki przez pewien procent czasu i niski przez inny procent czasu. Jest to znane jako cykl pracy. Sygnał PWM z cyklem pracy 60% to poziom logiczny wysoki 60% czasu, podczas gdy poziom logiczny niski 40% czasu. Dowiedz się więcej o PWM tutaj.

2.23 c) piny analogowe: piny te są w stanie odczytać napięcie analogowe w dowolnym miejscu od 0 do wspomnianej ilości woltów. W przypadku Arduino, jego 0-5V. mogą go odczytać z różnym stopniem rozdzielczości, w zależności od tego, ile bitowy przetwornik analogowo-cyfrowy jest używany. 8-bitowy konwerter analogowo-cyfrowy może odczytać rozdzielczość 2^8 = 256. Dla poziomu logicznego 5V może odczytywać z dokładnością 5V / 256 = 19,5 mV.

2.23 d) przerwania Cyfrowe: Niektóre piny cyfrowe mikrokontrolerów mogą być skonfigurowane jako sygnały przerwania. Przerywanie jest bardzo fajne. Gdy pin jest skonfigurowany jako pin przerwania, wykrywa (1) wznoszącą się krawędź sygnału (2) opadającą krawędź sygnału lub (3) zmianę poziomu logiki. Każda z nich uruchomi coś, co nazywamy procedurą przerwania (ISR). ISR to krótka funkcja w kodzie, która jest uruchamiana po wykryciu przerwania.

2.26) silniki: silniki są urządzeniami, które obracają się po podaniu napięcia. W tym przypadku używamy Szczotkowanego Silnika PRĄDU STAŁEGO. Jest tak nazwany, ponieważ w środku znajduje się komutatorowa Szczotka DC, która pomaga jej prawidłowo obrócić się po podaniu napięcia. Silniki zwykle pobierają duży prąd, a wszystkie silniki mają pewną moc znamionową napięcia. Kiedy silniki się obracają, wytwarzają pole elektromagnetyczne. Może to wydawać się sprzeczne z intuicją, ale silnik, który obraca się z maksymalną prędkością, pobiera najmniejszą ilość prądu z powodu tylnego pola elektromagnetycznego. Przeciwnie, silnik, który jest zablokowany (tzn. chce się poruszać, ale nie może z powodu sił zewnętrznych) pobiera najwięcej prądu.

 Silnik

2.25) Sterownik silnika: jest to potrzebne do kontrolowania prędkości/kierunku silnika za pomocą mikrokontrolera. Dzieje się tak dlatego, że mikrokontroler nie może dostarczyć wystarczającej ilości napięcia lub prądu do napędzania silnika. Ponadto, gdy silniki wirują, generowany tylny emf może łatwo uszkodzić mikrokontroler. Potrzebny jest interfejs między nimi, aby kontrolować prędkość i kierunek silnika. Zastosowanym sterownikiem silnika był czterołopatowy sterownik Half-H SN754410. Kontroler silnika pobiera sygnał pochodzący z mikrokontrolera (zwykle sygnał modulowany szerokością impulsu), a następnie aktywuje „cyfrowy przełącznik” z akumulatora do silnika. To, co robi, to bardzo szybko włącza cyfrowy przełącznik z akumulatora na silnik. Jeśli ten przełącznik cyfrowy jest włączony przez 100% czasu (lub 100% cyklu pracy), silnik pracuje z pełną mocą. Jeśli przełącznik cyfrowy jest włączony tylko przez 50% czasu, silnik pracuje z mocą 50%.

motordriver

2.26) Enkodery: Enkodery to sprytne urządzenia wykrywające ruch. Na przykład niektóre Enkodery wykrywają, ile razy koło się obróciło, inne są jeszcze dokładniejsze, aby powiedzieć dokładnie, pod jakim kątem obróciło się ramię robota itp. Dla Micromouse używamy enkoderów, które wykrywają, ile razy koło się obróciło. Istnieją Enkodery Halla lub Enkodery optyczne. Dwa rodzaje enkoderów, ale zasadniczo robią to samo. Uruchamiają cyfrowy impuls, gdy tylko koło się obróci! Jak działa enkoder efektu Halla, jest to, że wewnątrz czegoś, co jest przymocowane do wału silnika, znajduje się mały magnes trwały. Gdy silnik się obraca, magnes również się obraca. Istnieją czujniki, które wykrywają, kiedy magnes minął. Gdy to zrobi, wysyła impuls, który może być odczytany przez mikrokontroler. Zazwyczaj wysyłamy ten sygnał na pin skonfigurowany jako cyfrowy PIN przerwania.

koder

2.27) Czujniki odległości Na Podczerwień: wykrywa odległość za pomocą podczerwieni. Wystrzeliwuje sygnał podczerwieni i czeka na jego odbicie, aby określić odległość obiektu od niego. Możesz eksperymentować, ale jeśli odchylisz sygnał od skośnej powierzchni, możesz nie uzyskać odczytu z czujnika Podczerwieni. To sprawia, że nie jest tak idealny. Ten czujnik podczerwieni ma również ograniczony zasięg, który może wykrywać odległości. Czerwony przewód służy do zasilania 5V, czarny przewód do GND, żółty przewód do sygnału. W przypadku tego konkretnego czujnika podczerwieni, w zależności od tego, jak daleko czujnik podczerwieni wyczuwa obiekt, podaje inne napięcie analogowe. To, co można zrobić, to odczytać to napięcie analogowe za pomocą mikrokontrolera. Przeczytaj Arkusz danych tutaj, aby dowiedzieć się więcej o czujniku podczerwieni.

2.3 schematy obwodów & okablowanie

oto szorstki schemat obwodu. Uwaga nie określiłem dokładnie, do których pinów należy podłączyć przewody. Dzieje się tak dlatego, że numery pinów różnią się w zależności od tego, którego mikrokontrolera używasz, ale tutaj podaję nadrzędne zasady:

wiringdiagram

sygnały z enkodera powinny być podłączone do cyfrowego Pinu przerwania. W ten sposób, gdy sygnał jest wysyłany, mikrokontroler może wiedzieć, że koło obróciło się o 1 okrążenie.

sygnały Z Czujnika Podczerwieni powinny być podłączone do analogowego Pinu wejściowego.

sygnały podawane do sterownika silnika powinny wychodzić z Pinu PWM.

*Wstaw schemat obwodu

3.0 Kod & sterowanie:

Nie będę zamieszczał kodu, ale oto kilka ogólnych pojęć:

3.1 jak sprawić, aby mysz poruszała się prosto lub skręcała:

ta mysz jest kontrolowana różnie. Istnieją dwa koła, z dwoma silnikami na każdym kole. Jeśli oba koła obracają się z tą samą prędkością, mysz jedzie prosto. Jeśli lewe koło przyspiesza, a prawe spowalnia, mysz skręca w prawo. Jest to znane jako kontrola różnicowa.

3.2 kontrole & korekcja błędów

ale trzeba pomyśleć o tym, jak sterować myszką. Jak sprawić, by poruszał się w labiryncie bez uderzenia o ścianę? Możemy pomyśleć, że wysyłamy dwa równe sygnały do lewego i prawego silnika, aby powiedzieć myszy, aby iść prosto. Więc mysz powinna iść prosto w prawo? Źle! Różne przyczyny mogą spowodować, że silniki nie reagują w sposób, w jaki je mówimy. Zasadniczo każdy silnik jest zbudowany prawie tak samo, ale nie dokładnie tak samo. Sprzęt nigdy nie jest zbudowany perfekcyjnie i zawsze występuje jakiś skończony błąd.

jak upewnić się, że mysz rzeczywiście porusza się w kierunku, do którego ją kierujemy? Potrzebujemy tego, co nazywa się kontrolą W pętli zamkniętej. Oznacza to, że podłączamy czujniki do pomiaru wyjścia, a następnie przekazujemy wynik z powrotem do wejścia, aby wykonać korekcję błędów. Więcej o tym później. Potrzebujemy tego, co nazywamy regulatorem PID (proporcjonalna Pochodna Całkowa).

w tym przypadku możemy chcieć, aby mysz utrzymywała ścisłą odległość od ściany. Powiedzmy, 5 cm od ściany po prawej. Nazywamy to punktem zadanym. Każde odchylenie od punktu zadanego jest tym, co nazywamy błędem. Gdy zostanie wykryty błąd, chcemy, aby mysz się poprawiła. Gdy błąd jest duży, chcemy dużej akcji korygującej. Gdy błąd jest mały, chcemy małej akcji korygującej.

czujniki z boku myszy określają odległość myszy od ściany. Powiedzmy, że mysz jest zbyt daleko od ściany po prawej stronie. Chcemy, aby lewe koło obracało się szybciej, podczas gdy prawe obraca się wolniej, aby mysz mogła poruszać się w prawo w celu skorygowania błędu. Jeśli mysz znajduje się bardzo daleko od punktu ustawiania 5 cm, na przykład 10 cm od ściany, chcemy, aby lewe koło obracało się bardzo szybko, podczas gdy prawe koło zwolniło o wiele. Jeśli mysz znajduje się zaledwie 6 cm od ściany, chcemy, aby lewe koło zwiększyło prędkość, a prawe koło zmniejszyło prędkość, ale tylko nieznacznie.

Leave a Reply

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.