Arduino i serwomechanizm - Kurs Arduino cz. 5

Arduino i serwomechanizm - Kurs Arduino cz. 5

Serwomechanizmy są bardzo popularne w świecie modeli sterowanych radiem i świetnie nadają się do poruszania klapami modeli samolotów lub sterami łodzi, jak również do sterowania robotami i modelami samochodów. Są powszechnie dostępne u wielu
dostawców.

Serwomechanizm to silnik z przekładnią obracającą się o zadany kąt, zazwyczaj w zakresie od 0 do 180 stopni, zasilany najczęściej napięciem 4,8 V. Dzięki swojemu niskiemu kosztowi i łatwości sterowania idealnie nadaje się do wszelkiego rodzaju projektów
wymagających precyzyjnego sterowania. Wcześniej użyliśmy serwomechanizmu do skanującego modułu ultradźwiękowego, lokalizującego przedmioty po obu stronach trasy przemierzanej przez małego robota. Rysunek 5.23 przedstawia typowy serwomechanizm. Popatrzmy, jak sterowany jest serwomechanizm.

serwomechanizm arduino
Rysunek 5.23. Typowy mały serwomechanizm

 

Sterowanie serwomechanizmem - Kurs Arduino

Serwomechanizm posiada trzy końcówki: masę, zasilanie i sterowanie lub końcówkę sygnałową. W większości współczesnych serwomechanizmów do zasilania służy środkowa końcówka.

Przez wysłanie impulsu na końcówkę sterującą lub sygnałową wywołuje się obrót serwomechanizmu o określony kąt. Szerokość impulsu powoduje obrót serwomechanizmu o zadany kąt w zakresie od 0 do 180 stopni. Impuls musi być powtarzany co 20 milisekund, w przeciwnym wypadku silnik powróci do położenia spoczynkowego. Rysunek 5.24 przedstawia zależność pomiędzy szerokością impulsu a kątem obrotu serwomechanizmu.

serwomechanizm arduino

Rysunek 5.24. Zależność pomiędzy szerokością impulsu a kątem obrotu serwomechanizmu 

Jak widać na rysunku 5.24, neutralną pozycją serwomechanizmu jest kąt 90 stopni, uzyskiwany za pomocą impulsu o szerokości 1,5 ms. Szerokość impulsu waha się od ok. 1 ms do 2 ms, powodując obrót serwomechanizmu odpowiednio do pozycji 0 stopni
i 180 stopni.

Teraz, kiedy wiesz już, co jest potrzebne do zasilenia serwomechanizmu i zadania kąta obrotu, spójrzmy, co w tym temacie oferuje środowisko Arduino IDE.

 

Funkcje i metody sterujące serwomechanizmem - Arduino

Podobnie jak w przypadku silników krokowych, środowisko Arduino IDE zawiera bibliotekę Servo, ułatwiającą sterowanie serwomechanizmem. W rzeczywistości ta biblioteka umożliwia sterowanie 12 serwomechanizmami za pomocą standardowej płyty
Arduino lub niesamowitą liczbą 48 serwomechanizmów w przypadku płyty Arduino Mega.

Funkcje i metody oferowane w bibliotece Servo są wymienione w tabeli 5.7.

UWAGA: Biblioteka Servo uniemożliwia użycie funkcji analogWrite z pinami nr 9 i 10 w standardowej płycie Arduino. W przypadku zastosowania płyty Mega z więcej niż 12 serwomechanizmami funkcja analogWrite nie może korzystać z pinów nr 11 i 12.
Przyjrzyjmy się szkicowi do sterowania serwomechanizmem. 

Tabela 5.7. Funkcje biblioteki Servo

Nazwa funkcji Użycie Opis
Servo Servo myServo Tworzy obiekt Servo do sterowania
serwomechanizmem.
attach() attach(pin)
attach(pin, min, max)
Argument pin oznacza pin Arduino, do którego
dołączony jest serwomechanizm; argumenty
min i max to minimalne i maksymalne szerokości
impulsu wyrażone w mikrosekundach. Domyślna
minimalna wartość jest równa 544,
maksymalna — 2400.
write() write(kąt) Określa kąt w stopniach, o jaki ma się obrócić
serwomechanizm.
writeMicroseconds() writeMicroseconds
(szerokość_impulsu)
Określa szerokość impulsu serwomechanizmu,
wyrażoną w mikrosekundach.
read() read() Zwraca ostatnio zapisaną szerokość impulsu
zamienioną na kąt w stopniach w zakresie
od 0 do 180.
readMicroseconds() readMicroseconds() Zwraca ostatnio zapisaną szerokość impulsu
wyrażoną w mikrosekundach.
attached() attached() Zwraca wartość true, jeżeli do płyty jest
dołączony serwomechanizm.
detach() detach() Wyłącza wysyłanie impulsów
do serwomechanizmu dołączonego do płyty

 

Szkic sterujący serwomechanizmem

Szkic, którego użyjesz, jest jednym z przykładów dostarczanych razem ze środowiskiem Arduino IDE, demonstrującym zakres ruchu serwomechanizmu. Szkic przedstawiony na listingu 5.5 nazywa się Sweep i można go znaleźć w menu Plik/Przykłady/Servo.

Listing 5.5. Szkic obracający serwomechanizm w zakresie od 0 do 180 stopni

#include
Servo myservo;
int pos = 0;
void setup()
{
    myservo.attach(9);
}
void loop()
{
    for(pos = 0; pos < 180; pos += 1)
    {
        myservo.write(pos); delay(15); }
    for(pos = 180; pos>=1; pos-=1)
    {
        myservo.write(pos); delay(15); }
}

Najpierw musi być dołączona biblioteka Servo, ponieważ mimo że jest dostarczana razem ze środowiskiem Arduino IDE, nie wchodzi w skład głównych funkcji. Następnie tworzony jest obiekt Servo. W funkcji setup obiekt ten jest przypisywany do pinu nr 9 Arduino.

Kod w funkcji loop obraca serwomechanizm w zakresie od 0 do 180 stopni z 15-milisekundowymi przerwami pomiędzy kolejnymi pozycjami, aby dać serwomechanizmowi czas na obrócenie się o kolejny kąt. Później serwomechanizm obraca się w drugą
stronę od pozycji 180 do 0 stopni, również z 15-milisekundowymi przerwami pomiędzy kolejnymi ruchami. Następnie pętla powtarza cały proces. Przejdźmy do połączenia Arduino z serwomechanizmem, aby zobaczyć szkic w działaniu.

 

Łączenie komponentów

Będą Ci potrzebne następujące komponenty:

  • serwomechanizm,
  • zewnętrzny zasilacz,
  • płyta montażowa,
  • przewody montażowe,
  • łączówka z rozstawem styków 0,1 cala.

Serwomechanizm zazwyczaj ma trzy końcówki, z których środkowa służy do zasilania. Pozostałe dwie stanowią masę i sygnalizację. Końcówki masy oznaczone są najczęściej kolorem czarnym lub brązowym, aczkolwiek oznaczenie może się różnić w zależności
od producenta. Ponieważ użyjesz jednego serwomechanizmu, możesz wykorzystać zasilanie 5 V na płycie Arduino, aczkolwiek zalecamy zasilenie płyty za pomocą zewnętrznego zasilacza, a nie łącza USB. 

Rysunek 5.25 przedstawia 0,1-calową łączówkę, którą umieściliśmy na płycie montażowej, aby ułatwić podłączenie serwomechanizmu.  Rysunek 5.26 przedstawia gotowy układ. Po podłączeniu serwomechanizmu do Arduino nadszedł czas na wypróbowanie szkicu.

 

Załadowanie i test szkicu

Sprawdź połączenia i załaduj do Arduino szkic z listingu 5.5. Powinieneś zauważyć, jak serwomechanizm płynnie obraca się w zakresie od 0 do 180 stopni i z powrotem od 180 do 0 stopni. Jeżeli silnik nie obraca się, sprawdź połączenia z masą i zasilaniem
i spróbuj ponownie.

serwomechanizm arduino
Rysunek 5.25. Jednorzędowa łączówka z rozstawem styków 0,1 cala do połączenia serwomechanizmu z płytą montażową

 

serwomechanizm arduino
Rysunek 5.26. Połączenia pomiędzy serwomechanizmem i Arduino

Arduino w akcji Autorzy: Martin Evans, Joshua Noble, Jordan Hochenbaum Wydawnictwo: Helion

Podobne artykuły

Podziel się ze znajomymi tym artykułem - udostępnij na FB lub wyślij e-maila korzystając z poniższych opcji:

wszystkie oferty