Dlaczego mamy łączyć silniki z Arduino? Jakimi silnikami konkretnie się zajmiemy? Dlaczego nie możemy podłączyć silnika do Arduino?

Podobne dokumenty
Sygnał PWM, serwomechanizmy i biblioteki. 1. Czym jest sygnał PWM? Strona 1

Czym jest sygnał PWM?

Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Krótki wstęp o wyświetlaczach. Jak zmusić wyświetlacz do pracy?

MCAR Robot mobilny z procesorem AVR Atmega32

SDD287 - wysokoprądowy, podwójny driver silnika DC

Kurs Arduino #2 podstawy programowania, porty I/O. 2 //Zawartość programu. 1 int main() { void setup() { //Instrukcje, które wykonają się jeden raz

SDD287 - wysokoprądowy, podwójny driver silnika DC

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Lekcja : Tablice + pętle

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

DWUKIERUNKOWY REGULATOR SILNIKA DC VDC 20A

Systemy Wbudowane. Arduino dołączanie urządzeń Wersja Arduino więcej portów I/O. Układy serii 74. Układy serii 74xx a seria 40xx

Zespół Szkół Technicznych w Skarżysku - Kamiennej. Projekt budowy Zasilacza regulowanego. Opracował: Krzysztof Gałka kl. 2Te

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

7. Pętle for. Przykłady

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Podstawy elektroniki: praktyka

Silnik prądu stałego. Sterowanie silnika prądu stałego

Instrukcja obsługi. SQCA244 instrukcja obsługi

Raport z budowy robota typu Linefollower Mały. Marcin Węgrzyn

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

Spis treści. 1. Rozdział Rozdział Rozdział Rozdział Koniec spisu treści -

Lekcja 6. Metody pracy: pogadanka, wykład, pokaz z instruktarzem, ćwiczenia praktyczne

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

2.1 Porównanie procesorów

LOW ENERGY TIMER, BURTC

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Instrukcja obsługi SDC106

Sygnały, czyli pogadajmy z Arduino

sygnałów cyfrowych przetwornikiem analogowo-cyfrowym Krótki wstęp teoretyczny Wysokim niskim chcielibyśmy poznać dokładną odległość od przeszkody

UNO R3 Starter Kit do nauki programowania mikroprocesorów AVR

Instrukcja obsługi Poczwórny sterownik silników krokowych SQCA244 Bipolarny sterownik dla 4 silników krokowych do 4A z wejściem LPT,

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

lider projektu: finansowanie:

Instrukcja obsługi lampka LivingColors Iris

Zestaw Startowy EvB. Więcej informacji na stronie:

Arduino jako wyłącznik z opóźnieniem

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

CSMIO IP. Wyjścia różnicowe Dodatek. copyright 2012 CS-Lab s.c.

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

PRZEDWZMACNIACZ PASYWNY Z SELEKTOREM WEJŚĆ. dokumentacja. (wersja 1.1

Podstawy budowy robotów

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Pełna indywidualizacja twojego PC!

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Przed instalacją należy zainstalować dostarczone sterowniki USB, następnie zainstalować oprogramowanie PC z dostarczonego nośnika.

Ćwiczenie 1. Sprawdzanie podstawowych praw w obwodach elektrycznych przy wymuszeniu stałym

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Badanie diod półprzewodnikowych

Miernik elementów elektronicznych LCR MK-168

AP3.8.4 Adapter portu LPT

płytka montażowa z tranzystorami i rezystorami, pokazana na rysunku 1. płytka montażowa do badania przerzutnika astabilnego U CC T 2 masa

Klawiatura matrycowa

Instrukcja obsługi AP3.8.4 Adapter portu LPT

Linefollower Torpeda. Magdalena Kaczorowska

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

Arduino Power Shield. Moduł Arduino do sterowania silnikami dużej mocy i pomiaru prądu

Programowanie mikrokontrolerów 2.0

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

lider projektu: finansowanie:

SERIA D STABILIZATOR PRĄDU DEDYKOWANY DO UKŁADÓW LED

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Temat 20. Techniki algorytmiczne

Programowanie i techniki algorytmiczne

Zapoznanie się z podstawowymi strukturami funktorów logicznych realizowanymi w technice RTL (Resistor Transistor Logic) oraz zasadą ich działania.

Immobilizer samochodowy otwierający dostęp poprzez kod czteroznakowy.

Krótka informacja o bateriach polimerowych.

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Konstrukcja mostka mocy typu "H" opartego o układ HIP4081A Robert Szlawski

6. Pętle while. Przykłady

System zdalnego sterowania

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Uniwersalny sterownik silnika krokowego z portem szeregowym RS232 z procesorem AT90S2313 na płycie E200. Zestaw do samodzielnego montażu.

POWER MODULE 325VDC/2000VA

Podstawy Elektroniki dla Informatyki. Diody półprzewodnikowe

Instrukcja obsługi SMC108 Wysokonapięciowy sterownik silnika krokowego o prądzie do 8A

Warunek wielokrotnego wyboru switch... case

lider projektu: finansowanie:

Test powtórzeniowy. Prąd elektryczny

z ćwiczenia nr Temat ćwiczenia: BADANIE UKŁADÓW FUNKCJI LOGICZNYCH (SYMULACJA)

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

StrK Sterownik bipolarnego silnika krokowego

Kompensacja temperaturowa kontrastu wyświetlacza graficznego LCD

MOBOT RoboSnake. Moduł wieloczłonowego robota

Spis treści. 1. Rozdział Koniec spisu treści - Realitynet.pl - przystępnie o komputerach

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

STEROWNIKI ROBOTÓW ( PROJEKT ) ROBOT KLASY LINEFOLLOWER

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Laboratorium Metrologii

Nowy MULTIMETR z czujnikiem Halla

STEROWNIK MIKROPROCESOROWY PWM EC-10. Dla oświetlenia LED RGB. wersja oprogramowania: 1.7

Mikrokontroler w roli generatora PWM. Wpisany przez Administrator piątek, 06 lipca :51 -

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Transkrypt:

Kurs Arduino # Sterowanie silnikami DC, pętla for W tej części naszego kursu Arduino zajmiemy się obsługą małych silników. Pokażę w jaki sposób podłączyć je do mikrokontroelra oraz sterować ich kierunkiem obrotów oraz prędkością. Zagadnieniu temu poświęciłem osobny artykuł, ponieważ złe podłączenie tego pozornie prostego elementu najczęściej uszkadza Arduino. Zanim zaczniemy zajmować się poszczególnymi aspektami pracy z małymi silnikami DC musisz opanować najważniejsze dwie zasady: po pierwsze nigdy nie podłączaj silnika bezpośrednio do Arduino. Po drugie najlepiej nic nie podłączaj przed przeczytaniem poniższych informacji! Inaczej możesz szykować się na zakup drugiego Arduino! Dlaczego mamy łączyć silniki z Arduino? Sterowanie kierunkiem obrotów oraz prędkością silnika, daje bardzo dużo możliwości. Z takimi nowymi umiejętnościami możemy zbudować chociażby prostego robota mobilnego, który będzie mógł jeździć po mieszkaniu i omijać przeszkody. Równie dobrze można też zrobić pojazd zdalnie sterowany z naszym telefonem możliwości jest naprawdę dużo. Sterowanie dwoma silnikami wystarczy praktycznie do zbudowania większości robotów, które zostały dodane do katalogu przez naszych czytelników-konstruktorów! Jakimi silnikami konkretnie się zajmiemy? W tym artykule omówimy zasadę sterowanie najpopularniejszymi silnikami szczotkowymi DC. Są one najczęściej wykorzystywane przez majsterkowiczów do napędzania swoich konstrukcji. Dość łatwo można takie napędy kupić lub wymontować ze starych zabawek. Przykładowy silnik DC firmy Pololu. Należy jeszcze określić czym są małe silniki DC. Oczywiście nie chodzi o ich wymiar, a o zapotrzebowanie na prąd. Na potrzeby artykułu założyłem, że omówię silniki pobierające średnio poniżej A, przy zasilaniu z -V. Ograniczenia te trochę uwarunkowane są kontrolerem silników, który wykorzystamy, jednak o tym później. Zasada sterowania silnikami jest uniwersalna. To znaczy, że wybierając odpowiednio mocniejszy sterownik możemy sterować większym silnikiem. W części tej nie zajmiemy się serwomechanizmami, ponieważ zostały omówione już wcześniej. Pamiętaj, że w ich wnętrzu znajduje się kontroler, który chroni Arduino przed uszkodzeniem, dlatego zasady omówione w tym artykule nie mają związku z serwami. Dlaczego nie możemy podłączyć silnika do Arduino? Arduino, a konkretnie mikrokontroler na jego pokładzie, z założenia ma sterować sygnałami. Wydajność każdej linii wyjściowej jest stosunkowo mała, można przyjąć, że około 0mA. Spokojnie można założyć, że,% silników jakie spotkasz będzie pobierało zdecydowanie więcej prądu. Dokładniej mówiąc mogą to być wielkości setki lub tysiące razy większe. Przepływ tak dużego prądu przez nieprzystosowany układ powoduje jego natychmiastowe i nieodwracalne uszkodzenie! Dlaczego w zestawie nie ma silników? Tak, jak w każdym innym przypadku, aby zacząć sterować silnikami, ważne będą praktyczne testy. Jak widzisz, w naszych zestawach, jest Arduino, bateria, sterownik silników (układ LD), kondensatory, ale czegoś brakuje Nie ma tam żadnego silnika (oprócz serwa). Komplet sensownych, uniwersalnych napędów to wydatek minimum 0zł! Dlaczego? Otóż wkładanie do zestawu silników byłoby marnowaniem Twoich pieniędzy. Dopiero się uczysz, jeszcze nie wiesz jakie projekty będziesz później budował, a bez tego nie można wybrać odpowiednich silników. Po co więc inwestować w sprzęt, którego nigdy nie wykorzystasz?

Elementy wykorzystywane w tej części. W tym odcinku silnik zastąpimy diodami świecącymi. Będziesz mógł zaobserwować, jak zmienia się kierunek obrotów (która dioda zaświeci) oraz jak zmieni się ich prędkość (jasność diod). Dla lepszej demonstracji w ćwiczeniach zamieściłem również filmy z podłączonym silnikiem. osób, które kupią poniższy zestaw!

Teraz możesz kupić zestaw ponad 0 elementów niezbędnych do przeprowadzenia ćwiczeń z kursu u naszych dystrybutorów! Scalone mostki-h w pigułce Między Arduino, a silnikami potrzebne są elementy pośrednie. Najczęściej nazywamy je mostkami typu H, mostkami H lub z angielskiego h-bridge. Sterowniki takie można zbudować samodzielnie z kilku tranzystorów lub można wykorzystać scalony mostek H (czyli układ będący mostkiem). Jako początkujący możesz zacząć od korzystania z gotowych układów. Samodzielna budowa mostka H konieczna jest przy bardzo dużych prądach. Jest to jednak zadanie trudne. Na początku nie musisz się tym zajmować. Głównym zadaniem mostków H jest niejako odczytanie i przekształcenie sygnałów dostarczanych przez mikrokontorler, na wielkości, które są odpowiednie do sterowania silnikami. Przykładowo Arduino, którego linie sygnałowe mogą pracować maksymalnie na V i 0mA po zastosowaniu mostka H bez problemu może sterować silnikiem, który do pracy wymaga V i A. Jeśli jesteś zainteresowany szerzej tym tematem, to możesz zapoznać się artykułem dostępnym na forum: Mostek H (Hbridge) kompendium dla robotyka. Jednak wiedza tam zawarta nie jest konieczna do zrozumienia materiału tego kursu! Twój pierwszy mostek H W kursie zajmiemy się dość starym, ale tanim i nadal popularnym układem LD. Jego główną zaletą w naszym przypadku jest to, że mostek ten występuje w obudowie przewlekanej (THT) i możemy zamocować go w płytce stykowej: Co ważne w jednym układzie scalonym znajdziemy dwa mostki, więc nadaje się on idealnie do sterowanie napędem robotów (lewa/prawa strona) itd.

Układ LD. Układ ten ma wyprowadzeń, a ich opis znajdziemy w nocie katalogowej. Poniżej najważniejszy wycinek. Polecam jednak zajrzeć do całego dokumentu. Warto przyzwyczajać się do czytania not. Nota katalogowa (ang. datasheet) do dokument dostarczany przez producenta, w którym znaleźć można wszystkie informacje dotyczącego danego układu. Jedną z głównych informacji, jaką należy sprawdzić w przypadku każdego mostka H jest jego wydajność. Konkretnie mowa o tym, jaki prąd może pobrać silnik do niego podłączony. Jeśli używamy LD, to średni prąd na kanał może wynosić 0,A, a maksymalny,a. Co to oznacza? Optymalnie podczas pracy nasze silniki powinny pobierać do 0,A, jeśli jednak zdarzy się, że na chwilę prąd podskoczy do,a, to nic złego się nie stanie. Pod warunkiem, że będzie to trwało tylko krótki czas! Pamiętaj, że silnik pracujący pod obciążeniem pobiera prąd znacznie większy od tego, który pobierany jest podczas swobodnych obrotów! Zawsze trzeba sprawdzić maksymalny prąd, jaki może pobierać dany silnik! Na początku omówię wszystkie z nich. Następnie przejdziemy do podłączenia układu na płytce stykowej i do programowania. Na początku piny dotyczące zasilania:,,, łączymy razem do masy (GND) zasilanie Vcc części logicznej (V) zasilanie Vc silników (do V) Do układu można doprowadzić dwa oddzielne źródła zasilania. Jedno do części logicznej, a drugie dla silników. Koniecznie należy jednak połączyć masy obu źródeł (baterii)! Warto pamiętać, że każdy mostek ma spadek napięcia. To oznacza, że przykładowo podłączając V do zasilania dla silników w LD dopłynie do nich maksymalnie V. Układ ten jest dość stary, więc ma duży spadek napięcia, nowsze (np.: TB) charakteryzują się mniejszym spadkiem. Piny dotyczące sterowania silnikami:, wejścia określające kierunek obrotów pierwszego silnika, wejścia określające kierunek obrotów drugiego silnika wejście ENABLE określające prędkość pierwszego silnika wejście ENABLE określające prędkość drugiego silnika W celu zatrzymania silnika lub zmiany kierunku należy ustawić sygnały zgodnie z poniższą rozpiską, która nazywa się tabelą prawdy:

Jak widzisz, mamy dwie kombinacje, które powoduje zatrzymanie silnika. Niektóre sterowniki przy podaniu dwóch jedynek wykonują hamowanie przeciwprądem. Czasami może być one szkodliwe dla całego układu jednak powoduje natychmiastowe zatrzymanie silnika. Podanie dwóch stanów niskich powoduje najczęściej zatrzymanie swobodne (aż silnik wytraci pęd). Informacji na ten temat należy szukać w notach katalogowych mostka. Piny dotyczące silników:, wyjścia do pierwszego silnika, wyjścia do drugiego silnika Wykorzystanie mostka H w praktyce Trochę tego dużo, jednak zaraz wszystko się wyjaśni! Na początku zasilanie, nie wiem dlaczego, ale sprawia ono początkującym wiele problemów. Zasada jednak jest prosta układ możemy zasilić jednym lub dwoma napięciami. Jeśli wybierzemy wariant pierwszy, to zarówno część logiczne, jak i silniki będą zasilane z tego samego źródła zdecydowanie odradzam tej konfiguracji. Szczególnie, jeśli chcielibyście zasilać silniki z V dostępnego na płytce Arduino. Jest to możliwe, jednak wymaga odpowiednio wydajnego źródła zasilania oraz dobrego filtrowania. Zasilanie silników i Arduino z tego samego źródła zasilania może prowadzić to zawieszania się programu i częstych resetów. Najlepiej jednak odseparować te dwa zasilania np.: silniki prosto z baterii, a mikrokontroler przez stabilizator oraz odpowiednie kondensatory. Dlatego zdecydowanie bezpieczniej wybrać rozwiązanie drugie, w którym Arduino będzie zasilane z osobnego źródła. W naszym przypadku wykorzystamy zasilanie z USB oraz baterii V, z której zasilimy bezpośrednio nasze silniki (Arduino również będzie mogło być z niej zasilane, ale poprzez wbudowany stabilizator, więc nie musimy bardzo obawiać się zakłóceń). Uwaga! W kursie zajmujemy się jedynie nauką i demonstracją pewnych mechanizmów. Bateria V ma zbyt małą wydajność prądową, aby zasilić robota. Zdecydowanie lepiej sprawdzą się tu akumulatory LiPo. Układ powinien wyglądać jak poniżej, zwróć uwagę, że do płytki doprowadziliśmy V, a nie V! Pamiętaj o tym, aby niczego nie uszkodzić! W miejscu, gdzie wyprowadzone są pomarańczowe przewody należy podłączyć silnik. Przeczytaj jednak dalszą część artykułu, zanim coś podłączysz! Pamiętaj koniecznie o kondensatorach na płytce stykowej. Filtrują one napięcie dostarczane prosto z baterii. Ograniczamy nimi możliwość zakłóceń w Arduino! Układ jest stosunkowo skomplikowany. Na początku warto połączyć masy mostka LD. Można to zrobić za pomocą nóżek odciętych od rezystorów. Pozwoli to na zaoszczędzenie miejsca:

Następnie po kolei: Połączenie mas w mostku. Podłączenie masy. Podłączenie V (zasilanie silników)

Podłączenie V (zasilanie logiki) Podłączenie sygnałów sterujących. Teraz pora na podłączenie silnika (na początku jednego). Tak jak wspomniałem, w kursie, będziemy symulować silniki, aby nie kupować ich niepotrzebnie. Jak to zrobimy? W bardzo prosty sposób. Symulacja silnika Jak wiesz, dioda świecąca jest elementem półprzewodnikowym, który świeci się, gdy prąd przepływa przez niego w odpowiednim kierunku. W związku z tym, jeśli połączymy równolegle dwie diody w taki sposób, aby były połączone przeciwnie, to będziemy mogli sprawdzić w którą stronę płynie prąd raz zaświeci się jedna dioda, a raz druga. Z kolei prędkość silnika będziemy mogli sprawdzać poprzez obserwowanie jasności diody. Więc w miejsce silnika dołączamy układ jak poniższy (rezystor k): I całość:

Kompletny schemat montażowy do ćwiczenia z mostkiem H. Arduino proste sterowanie silnikiem Pora na pierwszy program, w którym wykorzystamy powyższy, całkiem zawiły, układ. Na początku zajmiemy się sterowaniem kierunkiem obrotów silnika. Regulację prędkości zostawmy na później. Tak jak zostało wspomniane, w tej chwili za jeden z silników odpowiadają następujące piny Arduino: (PWM) regulacja prędkości, sterowanie kierunkiem obrotów Zwróć uwagę, że mowa jest tutaj o numerach pinów Arduino, a nie wyprowadzeń mostka LD! Jeśli nie chcemy sterować prędkością silników, to na pinie (PWM) musimy ustawić stan wysoki. Równie dobrze moglibyśmy przewód połączyć bezpośrednio do V. Jednak skoro mamy już gotowe podłączenie, to skorzystajmy z void setup() { pinmode(, OUTPUT); //Sygnał PWM silnika nr digitalwrite(, HIGH); //Ustawiamy (na stałe) stan wysoki na pinie pinmode(, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr pinmode(, OUTPUT); void loop() { //Tu będzie dalsza część programu Jeśli układ został podłączony poprawnie, to po wgraniu poniższego programu nie powinno się nic wydarzyć! Teraz pora na dodanie brakującego kawałka w pętli loop. Załóżmy, że chcielibyśmy teraz kręcić silnikiem sekundy w jedną stronę oraz w przeciwną (prędkość maksymalna). W tym celu musimy dopisać banalnie prosty fragment programu: void setup() { pinmode(, OUTPUT); //Sygnał PWM silnika nr digitalwrite(, HIGH); //Ustawiamy (na stałe) stan wysoki na pinie pinmode(, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr pinmode(, OUTPUT); void loop() { digitalwrite(, LOW); //Silnik nr - obroty w lewo digitalwrite(, HIGH); delay(000); digitalwrite(, HIGH); //Silnik nr - obroty w prawo digitalwrite(, LOW); delay(000); Zgodnie z wcześniej przedstawioną tablicą prawdy wiemy, że silnik będzie się kręcił, jeśli na jedno z wejść podanym stan niski 0, a na drugi stan wysoki. Kierunek obrotów zależy natomiast od tego, na które wejście podamy jaki sygnał. Po wgraniu programu do Arduino dwie diody powinny zacząć migać. Skup się jednak dokładnie i zrozum dlaczego tak się dzieje. Nie jest to takie samo miganie diodami jak w pierwszych częściach kursu. Diody świecą na przemian, ponieważ raz prąd płynie od wyjścia do, a raz odwrotnie. Miganie jest możliwe, ponieważ diody wstawione są odwrotnie. Dla łatwiejszego zrozumienia spójrz na poniższe zdjęcia, gdzie w miejsce diod wpiąłem dodatkowo woltomierz:

Silnik w lewo. Silnik w prawo. Raz wynik jest dodatni, a raz ujemny. W tym wypadku minus pokazuje nam, że prąd płynie w stronę przeciwną od tej, która była na początku. Teraz pora na eksperyment tylko w moim wykonaniu, czyli podłączenie silnika. Wykorzystam mały silnik wyposażony w przekładnie DC oraz czerwone koło (aby lepiej widoczne były obroty). Jeśli dysponujesz małym silnikiem i chcesz podłączyć go do układu, tak jak ja, to upewnij się, że pobiera on odpowiednio małą ilość prądu (<A) i może być zasilany z około -V. Informacje o mierzeniu prądu znajdziesz w kursie elektroniki. Skoro potrafimy już sterować kierunkiem obrotów silnika pora na prędkość. Przedtem sprawdź, co stanie się, gdy podczas pracy powyższego programu wyciągniesz przewód idący do pinu Arduino i podłączysz go do masy? Silnik przestał się kręcić (diody przestały świecić). Czyli gdybyśmy bardzo szybko podawali na to wejścia 0 lub, to moglibyśmy sterować prędkością silnika (jasnością diod). Czy przypominasz sobie, w której części kursu pojawiła się już taka analogia? Zadanie domowe. Dodaj do układu kolejne dwie diody i symuluj nimi drugi silnik. Napisz program, który będzie wykonywał sekwencję: oba do przodu, oba w przeciwne strony, oba w tył i tak w koło. Oczywiście między zmianą kierunku zachowaj odstęp np.: sekundy. Wersja z PWM sterujemy prędkością Do dalszych testów konieczna jest wiedza z artykułu PWM i Arduino. Tak jak się pewnie domyślasz wystarczy podać sygnał PWM na pin ENABLE (układu LD), aby sterować prędkością silnika! Nie ma nad czym się rozpisywać. Pora napisać prosty program, który będzie na zmianę kręcił silnikami wolniej lub szybciej. Pamiętaj, że świecenie diody widoczne jest dopiero powyżej pewnego progu wypełnienia sygnału PWM, tak samo będzie z silnikami. Każdy będzie się kręcił od trochę innej wartości. Do tego wrócimy jeszcze później. void setup() { pinmode(, OUTPUT); //Sygnał PWM silnika nr pinmode(, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr pinmode(, OUTPUT); void loop() { analogwrite(, 0); //Niska prędkość obrotów digitalwrite(, LOW); //Silnik nr - obroty w lewo digitalwrite(, HIGH); delay(000); //Odczekaj sekundy analogwrite(, ); //Maksymalna prędkość obrotów digitalwrite(, LOW); //Silnik nr - obroty w lewo digitalwrite(, HIGH);

delay(000); //Odczekaj sekundy Powinieneś zaobserwować, że jedna dioda zmienia wyraźnie swoją jasność jednak robi to skowo! Teraz pora na płynną zmianę prędkości silnika, jednak zanim do tego przejdziemy pora na małe wtrącenie Pętla for w Arduino Pora na omówienie niezwykle użytecznej pętli dostępnej w języku Arduino (oraz wielu innych). Na myśli mam pętlę FOR, która pozwala nam wykonać pewne instrukcje określoną ilość razy Skorzystamy z niej, jeśli będziemy przykładowo chcieli wypisać kolejnych liczb naturalnych, zamigać diodą razy itd. Zanim jednak przejdziemy do przykładu pora na przedstawienie składni: for (zmienna licznikowa; warunek kończący; operacja na liczniku) { //Fragment, który ma być wykonany kilka razy Wygląda zawile, jednak na szczęście jest to bardzo proste. Po słowie kluczowymfor otwieramy nawias i podajemy tam trzy bardzo ważne rzeczy. Pierwszą z nich jest zmienna licznikowa. Skoro zawartość pętli ma być wykonywana określoną ilość razy, to skądś program musi czerpać wiedzą ile obiegów pętli zostało już wykonanych. Następnie, po średniku podajemy warunek. Pętla wykonuje się tak długo, jak długo warunek ten będzie spełniony. Po kolejnym średniku musimy wpisać operację, która ma być wykonywana na zmiennej licznikowej podczas każdego obiegu pętli. Na koniec zamykamy okrągły nawias. Pętla for w praktyce Wykorzystajmy pętlęfor do wypisania za pomocą UARTu powitania np.: razy. void setup() { Serial.begin(00); //Start komunikacji for (int i = 0; i < ; i++) { //Wykonaj razy Serial.println("Witaj na Forbot.pl"); //Wypisz tekst w nowej linii delay(00); //Odczekaj chwilkę void loop() { Efekt widoczny w terminalu: Efekt działania pętli for Arduino. Czyli dokładnie tak, jak się spodziewaliśmy. Już tłumaczę, co oznacza poniższy zapis: for (int i = 0; i < ; i++) { //Wykonaj razy Zmienna licznikowa, tutaj pojawił się prosty zapis int i = 0, mam nadzieję, że go rozumiesz. W skrócie deklarujemy nową zmienną lokalną i, która jest typu int, a jej wartość początkowa, to 0. Jeśli masz problemy ze zrozumieniem tego fragmentu wróć do artykułu o zmiennych. Warunek pętli, to w tym przypadku zapis i <. Czyli pętla będzie wykonywała się tak długo, jak wartość zmienneji będzie mniejsza od. Ostatni element, czylii++ jest inkrementacją zmiennej licznikowej (czyli, co obieg pętli wartość zmiennej zwiększana jest o jeden). Równie dobrze można ten zapis zamienić na i = i + w wolnej chwili możesz to sprawdzić.

Dla łatwiejszego zrozumienia warunku możesz uruchomić program w zmodyfikowanej wersji: void setup() { Serial.begin(00); //Start komunikacji for (int i = 0; i < ; i++) { //Wykonaj razy Serial.print("Wartosc zmiennej i: "); Serial.print(i); //Wyświetl wartość licznika Serial.print("\n"); //Przejdź do nowej linii delay(00); //Odczekaj chwilkę void loop() { Teraz można łatwo podejrzeć jakie wartości przyjmuje zmienna licznikowa (0-). Oczywiście pętla wykona się również razy, jeśli zamiast: for (int i = 0; i < ; i++) { //Wykonaj razy napiszemy: for (int i = 0; i <= ; i++) { //Wykonaj razy lub: for (int i = ; i <= ; i++) { //Wykonaj razy lub: for (int i = ; i < ; i++) { //Wykonaj razy lub: for (int i = 0; i < 0; i = i + ) { //Wykonaj razy a nawet: for (int i = ; i > 0; i--) { //Wykonaj razy Jak widzicie, możliwości jest wiele! Oczywiście najczęściej wykorzystywana jest ta pierwsza. Warto jednak poświęcić chwilę na poćwiczenie takich dziwnych warunków, czasami mogą sporo ułatwić! Teraz możemy wrócić do kwestii silników, a konkretnie płynnej regulacji prędkości. Zadanie domowe. Napisz program, który za pomocą pętlifor będzie migał diodą razy. Spróbuj napisać również to samo z wykorzystaniem pętliwhile. Zadanie domowe. Napisz program, który odczyta liczbę z zakresu 0- wysłaną prze UART, a następnie wyświetli na ekranie tyle samo znaków gwiazdki*. Płynne rozpędzanie silnika Skoro znamy już pętlęfor, to możemy wykorzystać ją do płynnego rozpędzania silnika. Wystarczy, że wypełnienie sygnału PWM będziemy zmieniać płynnie, na przykład co ms. Kod jest prosty i prezentuje się następująco, jako za poziom wypełnienia sygnału PWM odpowiada zmienna licznikowai: void setup() { pinmode(, OUTPUT); //Sygnał PWM silnika nr pinmode(, OUTPUT); //Sygnały sterujące kierunkiem obrotów silnika nr pinmode(, OUTPUT); digitalwrite(, LOW); //Silnik nr - obroty w lewo digitalwrite(, HIGH); void loop() {

for (int i = 0; i <= ; i++) { analogwrite(, i); //Spokojne rozpędzanie silnika delay(); Tutaj warto pamiętać, że rozruch silnika jest dla niego stosunkowo trudny. Musi się rozpędzić i pokonać tarcie panujące w jego wnętrzu. Dodatkowo zanim zacznie się kręcić będzie wydawał piski. Możecie to usłyszeć na poniższym filmie: Warto zapamiętać ten fakt. Często początkujący mają problemy, bo ich robot nie chce jeździć. Najczęściej okazuje się, że albo zastosowane zasilanie jest zbyt słabe, albo sygnał PWM ma jeszcze zbyt małe wypełnienie. Zadanie domowe. Napisz program, który za pomocą pętlifor będzie płynnie rozpędzał oraz hamował silnik. Podsumowanie Na tym zakończymy część o sterowaniu silnikami DC, która na początku miała być stosunkowo krótka. Wyszło jednak trochę więcej, jednak chciałem przekazać Wam więcej informacji, abyście nie mieli problemów z wykorzystywaniem silników we własnych konstrukcjach. W związku z brakiem silnika część ta była dla Was trochę teoretyczna. Jednak, jeśli będzie potrzeba to w kontynuacji kursu wrócimy do tych zagadnień wyposażeni w odpowiednie napędy!