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:
#zawieraSerwo 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:
#zawieraSerwo 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.