Jak sterować serwomotorem za pomocą Arduino?

Jak Sterowac Serwomotorem Za Pomoca Arduino



Serwosilniki to rodzaj urządzenia elektrycznego, które może z dużą precyzją zmieniać lub obracać położenie przedmiotu. Początkowo były używane do sterowania skrzydłami samolotów RC, a chwilę później trafiły do ​​robotyki, robotów humanoidalnych i wielu projektów automatyzacji. W przeciwieństwie do silników krokowych ich ruch jest ograniczony od 0o do 180o.

Zazwyczaj serwosilniki mają ramiona, którymi można sterować za pomocą Arduino. Silniki serwo składają się z systemu sterowania, który zapewnia: informacja zwrotna o aktualnej pozycji wału silnika to sprzężenie zwrotne pozwala poruszać się z dużą precyzją.

Pinout silnika serwo

Zazwyczaj większość serwosilników ma trzy piny:







  • Pin Vcc (normalnie czerwony 5 V)
  • Pin GND (normalnie czarny 0 V)
  • Pin sygnału wejściowego (odbiera sygnał PWM z Arduino)



Praca silnika serwo

Możemy sterować serwosilnikiem, podłączając pin Vcc do 5V i pin GND do 0V. Na terminalu w kolorze żółtym zapewniamy PWM sygnał sterujący kątem obrotu serwomotoru. Szerokość sygnału PWM daje nam kąt, pod jakim silnik będzie obracał ramieniem.



Jeśli zajrzymy do arkusza danych serwonapędów, otrzymamy następujące parametry:





  • Okres czasu sygnału PWM
  • Minimalna szerokość dla PWM
  • Maksymalna szerokość dla PWM

Wszystkie te parametry są predefiniowane w bibliotece Arduino Servo.

Serwonapędy z Arduino

Silniki serwo są bardzo łatwe do kontrolowania za pomocą Arduino, dzięki Biblioteka serwo co pomaga nam dostosować nasz kod do potrzeb i umożliwia obracanie ramienia serwomechanizmu pod żądanym kątem.



Wszystkie trzy wymienione powyżej parametry są naprawione w bibliotece Servo. Wykorzystując te parametry możemy sterować kątem silnika serwo w następujący sposób:

  • Jeśli szerokość sygnału PWM = WIDTH_MAX, serwo obróci się o 180o
  • Jeśli szerokość sygnału PWM = WIDTH_MIIN, serwo obróci się do 0o
  • Jeśli szerokość sygnału PWM znajduje się pomiędzy WIDTH_MAX i WIDTH_MIN , serwomotor będzie się obracał w zakresie od 0o do 180o

Możemy wygenerować pożądany sygnał PWM na niektórych pinach Arduino. Sygnał PWM zostanie podany na pin sygnału wejściowego serwomotoru. Podłączenie pozostałych dwóch pinów serwa do 5v i GND Arduino.

Jak sterować serwomotorem za pomocą Arduino?

Tutaj wyjaśnię, jak możemy podłączyć i zaprogramować nasz serwomotor za pomocą Arduino. Wszystko czego potrzebujesz to:

  • Arduino UNO
  • Kabel USB B
  • Siłownik
  • Przewody połączeniowe

Jak zaprogramować serwo za pomocą Arduino

Oto kilka prostych kroków:

Krok 1: Dołącz predefiniowaną bibliotekę serwo:

# włączać < Serwo.h >

Krok 2: Utwórz obiekt serwo:

Serwo myservo;

Wskazówka: W przypadku, gdy kontrolujesz więcej niż jeden serwomotor, musisz stworzyć więcej serwoobiektów:

Serwo myservo1;
Serwo myservo2;

Krok 3: Ustaw pin kontrolny (9) na Arduino Uno, który wysyła sygnał PWM do portu sygnału wejściowego serwomechanizmu:

myservo.attach ( 9 ) ;

Krok 4: Obróć kąt serwonapędu do żądanej wartości np. 90o:

myservo.write ( pozycja ) ;

Kod Arduino

Otwórz przykładowy program serwomotoru z Plik>Przykład>Serwo>Sweep , otworzy się nowe okno z naszym szkicem serwa:

#zawiera

Serwo myservo; // tworzony jest obiekt serwo dla sterowanie silnikiem serwo
wew poz = 0 ; // do przechowywania pozycji serwa tworzona jest nowa zmienna
pusta konfiguracja ( ) {
myservo.attach ( 9 ) ; // to będzie ustawić Pin Arduino 9 dla Wyjście PWM
}
pusta pętla ( ) {
dla ( poz = 0 ; poz = 0 ; poz -= 1 ) { // idzie z 180 do 0 stopni
myservo.write ( pozycja ) ; // powiedz serwo, aby przeszło do pozycji „pos”
opóźnienie ( 5 ) ; // czeka! dla 5 ms, aby serwo mogło dotrzeć do pozycji
}
}

Gdy program zostanie skompilowany i przesłany, serwomotor zacznie się powoli obracać od pozycji początkowej 0 stopni do 180 stopni, po jednym stopniu, tak jak kroki. Gdy silnik zakończy obrót o 180 stopni, rozpocznie obrót w kierunku przeciwnym do punktu początkowego, tj. 0 stopni.

Schematy

Jak sterować serwomotorem za pomocą potencjometru?

Możemy również ręcznie sterować położeniem serwomotoru. Aby to zrobić, potrzebujemy Potencjometr . Potencjometr posiada trzy piny. Podłącz dwa zewnętrzne piny do 5 V Vcc i GND Arduino, a środkowy do pinu A0 na płycie Arduino.

Jak zaprogramować serwo za pomocą potencjometru?

Większość szkicu potencjometru jest taka sama jak w poprzednim przykładzie. Jedyna różnica to nowa zmienna wartość oraz podpinać jest zdefiniowany przed sekcją konfiguracji i pętli kodu.

int szpilka = A0;
wewn wart;

W sekcji pętli analogowy pin A0 służy do odczytu wartości potencjometru z funkcją analogowyOdczyt() . Płytki Arduino zawierają 10-bitowy przetwornik ADC (przetwornik analogowo-cyfrowy) dający nam wartości od 0 do 1023 w zależności od pozycji potencjometru:

val = analogowyOdczyt ( podpinać ) ;

Wreszcie użyliśmy mapa() funkcja ponownego mapowania liczb od 0 do 1023 zgodnie z kątem serwomechanizmu, jak wiemy, silniki serwo mogą obracać się tylko między 00 a 1800.

val = mapa ( val, 0 , 1023 , 0 , 180 ) ;

Kod Arduino

Szkic otwartego pokrętła dostępny w Arduino IDE, przejdź do Pliki>Przykłady>Serwo>Gałka . Otworzy się nowe okno, które pokazuje nam szkic naszego pokrętła dla serwa:

#zawiera
Serwo myservo; // Tworzenie nazwy obiektu servo myservo
int szpilka = A0; // definiowanie pinu analogowego dla potencjometr
wewn wart; // zmienny który będzie czytać analogowe wartości pinów dla potencjometr

pusta konfiguracja ( ) {
myservo.attach ( 9 ) ; // zdefiniowany pin 9 dla Sygnał wejściowy PWM serwomechanizmu na Arduino
}
pusta pętla ( ) {
val = analogowyOdczyt ( podpinać ) ; // odczytuje wartość z potencjometru ( wartość pomiędzy 0 oraz 1023 )
val = mapa ( val, 0 , 1023 , 0 , 180 ) ; // przeskalować wartość do użycia z serwo ( wartość pomiędzy 0 oraz 180 )
myservo.write ( wartość ) ; // ustawia pozycję serwa ze skalowaną wartością
opóźnienie ( piętnaście ) ; // czeka! dla serwo, aby dostać się na pozycję
}

Powyższy kod pomoże nam sterować wałem serwomechanizmu za pomocą potencjometru, wałek będzie się obracał od 0 do 180 stopni. Możemy również utrzymywać prędkość wraz z kierunkiem serwomechanizmu za jej pomocą.

Schemat obwodu

Ile serwomotorów mogę połączyć z Arduino?

Maksymalna liczba serwonapędów, które Arduino UNO może obsłużyć to do 12 z biblioteką Arduino dla serwomechanizmu i maksymalnie 48 serw można łączyć z płytami typu Mega.

Wskazówka: Możemy bezpośrednio uruchomić serwo za pomocą prądu Arduino, ale pamiętaj, jeśli serwosilniki pobierają więcej niż 500mA wtedy twoja płyta Arduino może automatycznie zresetować i stracić moc. Zaleca się, aby zawsze używać dedykowanego zasilacza dla serwomotorów.

Wniosek

W tym samouczku omówiliśmy mechanizm sterowania serwonapędami za pomocą Arduino. Omówiliśmy podstawy sterowania położeniem i prędkością serwomechanizmu za pomocą potencjometru. Teraz masz pomysł na serwo i możliwości dla twojej robotyki, projekty RC i automatyzacja za pomocą serwo są nieograniczone.