Kurs budowy robotów – #2 – sterownik robota, czujniki

Kurs budowy robotów – #2 – sterownik robota, czujniki

Podczas budowy robotów mobilnych lepiej unikać plątaniny przewodów i płytek stykowych. Drgania, które pojawiają się podczas jazdy mogą prowadzić do błędów w działaniu konstrukcji.

Właśnie dlatego zaczniemy od zapoznania się z shieldem Arduino, który został zaprojektowany specjalnie na potrzeby tego kursu!

Nakładka pasująca do złącz Arduino (shield) została zaprojektowana i złożona przez polską firmę MSX, która zajmuje się między innymi produkcją uniwersalnych modułów. Dzięki współpracy z tak doświadczonym partnerem udało się przygotować płytkę idealną, która zawiera praktycznie wszystko, co może przydać się w prostych robotach mobilnych!

Kurs budowy robotów (tak, jak wszystkie inne) kierowany jest głównie do początkujących. Dlatego w tym odcinku skupimy się na dokładnym poznaniu całego shielda.

Zestaw elementów do kursu

 999+ pozytywnych opinii  Gwarancja pomocy  Wysyłka w 24h

Części pozwalające wykonać ćwiczenia z kursu budowy robotów dostępne są w formie gotowych zestawów! W komplecie znajdują się elementy mechaniczne (w tym koła i silniki), baterie oraz shield!

Zamów w Botland.com.pl »

Zasilanie robota

Podczas budowy robotów należy pamiętać, że z jednego źródła zasilania musimy "ożywić" część elektroniczną (m.in. Arduino) oraz silniki. Niestety napędy potrafią wprowadzić bardzo dużo złego na liniach zasilania.

W przypadku tego robota musimy zasilać minimum dwa silniki z przekładniami. Każdy silnik podczas startu pobiera stosunkowo wysoki prąd (wyższy od tego, który pobierany jest podczas normalnej pracy napędu).

Aby uniknąć takich problemów konieczne jest odpowiednie zaprojektowanie części zasilającej. W naszym wypadku w jej skład wchodzi kilka elementów:

Złącze zasilania

Idąc od lewej strony, na płytce znajdziemy zielone złącze zasilania. To właśnie w to miejsce trzeba podłączyć baterię. W naszym przypadku będzie to 6 połączonych szeregowo baterii AA. takie połączenie da nam około 9V.

forbot_shield_robot_zasilanie_zlacze_zasilania

Dlaczego właśnie tak? Nie można było podłączyć 1 baterii 9V? Nie można. Baterie 9V mają bardzo małą pojemność i nie nadają się do zasilania "prądożernych układów". W najlepszym przypadku nasz robot działałby na niej kilkanaście minut. W przypadku niektórych konfiguracji może się zdarzyć, że robot nie da rady nawet ruszyć, gdy będzie zasilany z małej baterii 9V. Baterie AA wytrzymają w takim robocie znacznie dłużej.

Podczas podłączania zasilania należy pamiętać o odpowiedniej polaryzacji. Symbole "+" oraz "-" można znaleźć na płytce. W razie pomyłki nie powinno się jednak nic stać, ponieważ shield ma wbudowane zabezpieczenie przed odwrotnym zasilaniem.

Bezpiecznik

Kolejnym elementem czuwającym nad bezpieczeństwem elektroniki jest bezpiecznik polimerowy. Od innych bezpieczników odróżnia go możliwość wielokrotnego użycia. W momencie, gdy prąd płynący przez bezpiecznik osiągnie krytyczną wartość, bezpiecznik zaczyna się nagrzewać, aż następuje rozwarcie obwodu.

forbot_shield_robot_zasilanie_bezpiecznik

Włącznik suwakowy

Zasilanie konstrukcji (Arduino, shield, napędy) można włączać i wyłączać za pomocą włącznika suwakowego, który znalazł się na pokładzie naszej nakładki. Oczywiście ma on wpływ na zasilanie doprowadzane z naszego shielda przez złącze zasilania.

forbot_shield_robot_zasilanie_wlacznik

Osobne zasilanie dla serwomechanizmów

O możliwości sterowania napędami będzie jeszcze za chwilę. Już teraz widać jednak, że nasza płytka pozwala dodatkowo na podłączenie serwomechanizmu modelarskiego. Tak jak było to już mówione podczas kursu podstaw programowania Arduino #6, nie wolno zasilać z tego samego stabilizatora elementów elektronicznych oraz prądożernego serwa. W związku z tym wbudowaliśmy stabilizator, który poradzi sobie idealnie z zasilaniem małych serwomechanizmów.

forbot_shield_robot_zasilanie_osobne_zasilanie_serwomechanizmu

Filtrowanie zakłóceń - kondensatory

W celu eliminacji zakłóceń na płytce znajduje się kilka kondensatorów ceramicznych. Ważną rolę odgrywają tutaj również dwa duże kondensatory elektrolityczne - czyli te srebrne, małe puszki. Z wyglądu odbiegają od kondensatorów elektrolitycznych znanych nam z kursu podstaw elektroniki, jednak nie ma się czego obawiać. Po prostu kondensatory, które przeznaczone są do montażu powierzchniowego (bez długich nóżek) są produkowane właśnie w takich obudowach.

forbot_shield_robot_zasilanie_filtrowanie_zaklocen

Zworka odcinająca dopływ zasilania do napędów

Ta niepozorna zworka to jeden z moich ulubionych "gadżetów" umieszczonych na płytce. Podczas konstruowanie robotów często konieczna jest zmiana oprogramowania. Mało kto ma czas, aby za każdym razem wyciągać Arduino. Najwygodniej postawić robota obok komputera, wpiąć kabel USB i wgrać nowy algorytm.

Często wygodnie jest również przetestować pewne fragmenty programu (np. działanie czujników), gdy robot stoi w miejscu. Każdorazowe odłączanie silników nie jest zbyt wygodne - stąd pomysł na jeszcze prostsze rozwiązanie.

Zworki to małe elementy, które (jak nazwa wskazuje) zwierają sygnał, czyli łączą dwa piny złącza. Przykład takich elementów widoczny jest na zdjęciu (często mają różne kształty i kolory).

Przykłady zworek.

Przykłady zworek.

Dioda sygnalizacyjna

Nie zabrakło również diody, która sygnalizuje poprawne zasilanie i uruchomienie modułu.

forbot_shield_robot_zasilanie_sygnalizacja_wlaczenia

Sterowanie napędami

Żaden robot nie będzie mógł się poruszać bez odpowiednich napędów. W naszym przypadku są to dwa silniki DC z przekładniami. Oczywiście elementami takimi nie można sterować bezpośrednio z Arduino (szczegóły w kursie Arduino - poziom I). Niezbędny jest mostek-h, tym razem będziemy korzystać z małego DRV8835, który pozwala na wysterowanie dwóch silników.

forbot_shield_robot_silniki_mostek_h_drv8835_zlacza

Drugim ważnym elementem jest 3-pinowe złącze, które służy do podłączenia serwomechanizmu. Podczas tego kursu nie będziemy go wykorzystywać, ale jeśli ktoś ma taki napęd po I poziomie kursu programowania Arduino, to będzie mógł podłączyć go właśnie tutaj.

forbot_shield_robot_silniki_serwomechanizm

Tak samo, jak przy zasilaniu części elektronicznej, tutaj również znajdziemy osobną diodę, która będzie sygnalizowała dopływ zasilania do napędów.

forbot_shield_robot_silniki_sygnalizacja_zasilania_napedow

Dodatkowe funkcje shieldu

Oprócz naprawdę podstawowych dla robotów funkcji nasz shield wyposażony jest w całą gamę ciekawych dodatków.

Złącza dedykowane do czujników

Blisko lewej i prawej krawędzi płytki znajdują się 3-pinowe złącza. Każde z nich, to wyprowadzenie zasilania (Vcc, masa) oraz jednego wejścia analogowego. Za każdym razem będziemy podłączać tam czujniki (linii, światła, przeszkód itd).

forbot_shield_robot_logika_zlacza_czujnikow_lewe_prawe

Odbiornik podczerwieni

W jednym z narożników płytki umieszczony został odbiornik podczerwieni TSOP. Za jego pomocą możliwe będzie zdalne sterowanie robota. W tym celu wykorzystamy dołączony do zestawu pilot IR, który generuje kody w standardzie RC5.

forbot_shield_robot_logika_odbiornik_ir_poczerwieni

Ekspander portów

Zdarza się, że ilość wejść/wyjść dostępnych w Arduino nas ogranicza. Wtedy bardzo wygodnym rozwiązaniem okazuje się ekspander portów. Czyli układ, który komunikuje się z Arduino wyłącznie za pomocą 2 pinów, a w zamian oferuje nam dodatkowe 8 cyfrowych wejść/wyjść!

forbot_shield_robot_logika_ekspander_portow

Przycisk, dioda, buzzer

W celu łatwiejszego testowania, na shieldzie znalazło się jeszcze kilka użytecznych drobiazgów. Po pierwsze pojawiła się dioda podłączona do pinu 13. Dzięki temu nie trzeba zerkać pod shield, aby sprawdzić diodę, która jest domyślnie łączona z tym wyprowadzeniem już na płytce Arduino.

forbot_shield_robot_logika_buzzer_dioda_przycisk

Dioda świecąca jest wygodna podczas testowania układów "statycznych". Jednak, gdy zajmujemy się jeżdżącymi robotami, to ciężko biegać za naszym pojazdem i obserwować świecenie małego punktu. Dlatego dodatkowo na płytce znalazło się również miejsce dla buzzera z generatorem.

Na płytce znalazł się również przycisk podłączony do Arduino z wykorzystaniem filtra RC. Dzięki temu nie trzeba przejmować się drganiami styków!

UART

Dla większej wygody wyprowadzono również osobne złącza z sygnałami od UARTa. Mogą one w przyszłości posłużyć do podłączenia dodatkowych modułów m.in. komunikacji bezprzewodowej przez WiFi lub Bluetooth. Na ten moment jednak nie będziemy z nich korzystać - można je więc traktować jak zwykłe piny I/O.

forbot_shield_robot_logika_uart

Pozostałe porty I/O, wejścia analogowe

Wszystkie wolne porty Arduino (w tym wejścia analogowe) zostały wyprowadzone na złącza, więc bez problemu można jeszcze dalej rozbudowywać naszego robota o kolejne podzespoły.

forbot_shield_robot_logika_pozostale_io

Czujniki uniwersalne

Budując roboty mobilne można podłączać do nich naprawdę wiele różnych czujników. Kurs budowy robotów z założenia ma być uniwersalny, więc nie chcieliśmy stosować tutaj wyszukanych i drogich czujników. Postawiliśmy na proste rozwiążania. W związku z tym w zestawie znalazły się dwa typy sensorów (po 2 szt. każdego z nich, łącznie 4).

Czujniki mechaniczne

Najprostsze, skuteczne i często stosowane czujniki przeszkód to najzwyklejsze przełączniki. Po uderzeniu robota w przeszkodę następuje zwarcie sygnału wewnątrz czujnika. W naszym robocie korzystamy z krańcówek, które mają wyjątkowo długie blaszki.

Podstawowe, mechaniczne czujniki przeszkód.

Podstawowe, mechaniczne czujniki.

Oczywiście czasami nawet takie wyprowadzenia mogą okazać się za małe. Dlatego wykorzystamy popularny sposób na ich przedłużenie. Kawałki opasek zaciskowych oraz rurki termokurczliwe sprawdzą się tutaj idealnie!

Przedłużone i zamontowane w robocie czujniki (zrobimy to w kolejnej części kursu).

Przedłużone i zamontowane w robocie czujniki (zrobimy to w kolejnej części kursu).

Czujniki optyczne

Drugi typ czujników, to połączenie fotorezystora i niebieskiej diody świecącej. Czujniki te pozwolą nam na zbudowanie Światłoluba, czyli robota poruszającego się w kierunku najsilniejszego źródła światła. Po ich obróceniu, założeniu zworki i odpowiednim ustawieniu, całość posłuży do budowy robota, który jeździ po torze wyklejonym z czarnej taśmy izolacyjnej (LineFollower).

Uniwersalne czujniki optyczne.

Uniwersalne czujniki optyczne.

Pierwszy test shieldu

Na tym etapie możliwe jest już przetestowanie najprostszych funkcji modułu. Zacznijmy od kodu, który po wciśnięciu przycisku umieszczonego na płytce wyda dźwięk (buzzerem) i zamiga diodą.

Zacznijmy od podłączenia zasilania. W tym celu wyciągamy pustą wtyczkę włożoną w gniazdo i odkręcamy śrubokrętem mocowanie.

Wyciągamy wtyczkę z gniazda zasilania.

Wyciągamy wtyczkę z gniazda zasilania.

Następnie wkładamy do środka przewód i skręcamy całość. Ważne jest, aby przewód umieścić w górnej części złącza, zgodnie z ilustracją:

 

Poprawne umiejscowienie przewodu w złączu.

Poprawne umiejscowienie przewodu w złączu.

Do środka złącza wkładamy jedynie odizolowaną część przewodu.

Do środka złącza wkładamy jedynie odizolowaną część przewodu.

Odpowiednie podłączenie przewodów z koszyka.

Podłączenie przewodów z koszyka.

Do tak przygotowanego koszyka wkładamy 6 baterii, a następnie całość łączymy z shieldem. Jeśli wszystko zostało zrobione poprawnie, to zmieniając pozycję przełącznika powinniśmy włączać lub wyłączać cały układ (położenie zworki zasilania napędów nie ma w tej chwili znaczenia).

Włączone zasilanie Arduino i shielda.

Włączone zasilanie Arduino i shielda.

Następnie można już wgrać prosty program. Sam proces wgrywania przebiega identycznie, jak w kursie podstaw Arduino dlatego nie będę go tutaj opisywał. Mam nadzieję, że program również nie wymaga szerszego opisu. W razie kłopotów polecam lekturę kursu podstaw programowania.

Działanie programu w praktyce widoczne jest na poniższym, krótkim wideo:

Podsumowanie

Po dokładnym zapoznaniu się z elektroniką, którą dysponujemy można teraz spokojnie przejść do złożenia części mechanicznej. Właśnie tym zajmiemy się w kolejnej części, będzie to już ostatni krok przed uruchomieniem robota!

Czy artykuł był pomocny? Oceń go:

Średnia ocena 5 / 5. Głosów łącznie: 32

Nawigacja kursu

Autor kursu: Damian (Treker) Szymański
Grafiki, ilustracje: Piotr Adamczyk

arduino, kurs, kursBudowyRobotow, shield, silniki

Trwa ładowanie komentarzy...