Serwo – obsługa serwomechnizmów i zasada działania

Czym jest serwomechanizm? To silnik z wbudowaną przekładnią i sterownikiem oraz potencjometrem. Dzięki tej przekładni serwomechanizm posiada odpowiednio duży moment co za tym idzie sporą siłę uciągu. Dzięki sterownikowi ruch serwa jest precyzyjny, a potencjometr pozwala ustalić aktualną pozycję. Sterownik przetwarza odbierany sygnał cyfrowy i odpowiednio kontroluje ruch silnika wewnątrz.

Jako popularne zastosowanie serwomechanizmów można wymienić modele samochodów czy samolotów. W modelarstwie odpowiadają one za skręt kołami w samochodach i wychylenie łopat w samolotach.

budowa serwa

Serwa można dzielić za względu na to czy są cyfrowe lub analogowe, na ich rozmiar i siłę oraz na to z jakich materiałów są zbudowane.

Przy wyborze serwa należy zwrócić uwagę:

  • na jego udźwig i moment obrotowy dla konkretnego napięcia
  • kąt obrotu – zazwyczaj jest to 180° ale bywają serwa mogące obracać się o 360°
  • szybkość serwa
  • materiał z jakiego wykonana jest przekładnia
  • masa (ważne w modelach latających)

Co więc oznacza moment 3 kg/cm?

Gdy wyczytamy w specyfikacji serwa oznaczenie np. 3kg/cm oznacza to, że dźwignia serwa o długości 1cm pokona opór lub ciężar 3kg. Moment jest iloczynem siły i długości ramienia M = F * r. Aby równanie zostało zachowane jeżeli coś 2-krotnie zwiększymy inne składowe muszą zmaleć. Wydłużając ramię do 2cm opór jaki pokona zmniejszy się 2-krotnie – w naszym przypadku do 1.5kg

Jak sterować serwem?

Serwomechanizmy sterowane są sygnałem PWM, co jest skrótem od Pulse Width Modulation – modulacja szerokości impulsu. W mikrokontrolerze Arduino wyjścia sygnału PWM zostały oznaczone ~

kanały PWM w Arduino

Sterownik serwa otrzymując odpowiednio wypełniony sygnał PWM z naszego kontrolera ustawia je w odpowiedniej pozycji.

Sygnał podzielony jest na równe okresy zazwyczaj o długości 20ms, sygnał wypełniający mieści się z zakresie od 1ms dla skrajnie lewej pozycji do 2ms dla skrajnie prawej pozycji. Wypełnienie 1.5ms pozwala ustawić serwo idealnie na środku.

Poniższa animacja pokazuje jak wypełnienie sygnału PWM wpływa na ruch serwa.

Jeżeli chcesz dowiedzieć się więcej o sygnale PWM przeczytaj nasz dedykowany artykuł klikając TUTAJ!

Podpięcie serwa pod mikrokontroler

Serwa wyposażone są zazwyczaj w 3 przewody. 2 przewody są zasilające, 1 przewód sygnałowy. Pamiętajmy aby najlepiej NIE zasilać serwa bezpośrednio z mikrokontrolera, ponieważ chwilowy pobór prądu będzie na tyle duży, że spalimy nasze arduino! 

Arduino IDE i kod programu

W tym akapicie napiszemy program, który pozwoli nam ustawić wybrany kąt o jaki ruszymy serwomechanizm.

Uruchamiamy środowisko Arduino IDE, aby ułatwić sterowanie naszym serwem wspomożemy się gotową biblioteką Servo, która jest preinstalowana w używanym przez nas środowisku. Aby zobaczyć jakie funkcje oferuje biblioteka odsyłam na stronę specyfikacji:

https://www.arduino.cc/en/reference/servo

#include <Servo.h>  // dołączamy bibliotekę odpowiedzialną za obsługę serva

Servo mojeServo; //tworzymy obiekt dzięki, któremu odwołamy się do naszej biblioteki
int kat = 0; //tworzymy zmienną przechowującą aktualny kąt ruchu 

void setup() 
{ 
  mojeServo.attach(9);  //wskazujemy, że serwo podpielismy do 9 pinu
} 
 
void loop() 
{  
mojeServo.write(kat); //poruszamy serwo o wskazany kat

if(kat<180){. //sprawdzamy zakres
delay(2000); //czekamy 2 sekundy
kat=kat+5; //zwiększamy kąt o 5 stopni
}else
kat=0; //wracamy do pozycji 0

}

Kod programu został wyjaśniony w komentarzach. Nastawia on nasze serwo do pozycji 0 i co 2 sekundy zwiększa kąt o 5 stopni. Główna część programy zawiera pętle, która sprawdza warunek kat<180, dzięki temu jeżeli nasze serwo wyjdzie poza zakres swojej pracy, ustawiamy kat=0 i wraca do pozycji początkowej.

Zarówno arduino jak i serwomechanizmy można nabyć w atrakcyjnych cenach w naszym sklepie internetowym: https://elektroweb.pl

pytania można zadawać w komentarzach pod wpisem, zapraszamy wszystkich na nasz kanał YouTube: Kanał Elektroweb

Linki do polecanych serw:

Odpowiedz

Twój adres e-mail nie zostanie opublikowany