Serwisy partnerskie:
Close icon
Serwisy partnerskie

Używanie serwomotoru SG90 z Arduino

Article Image
Elmax
Ten projekt jest przeznaczony dla początkujących, ponieważ jest łatwy i daje podstawy do budowania ciekawych projektów, takich jak roboty, w których serwomechanizmy są powszechnie stosowane.

Serwomotory są silnikami o wysokim momencie obrotowym, które są powszechnie stosowane w robotyce i kilku innych aplikacjach ze względu na to, że łatwo jest kontrolować ich obroty. Serwomotory posiadają wał wyjściowy z przekładnią, który może być sterowany elektrycznie, aby obracać się o jeden (1) stopień na raz. Ze względu na kontrolę, w przeciwieństwie do zwykłych silników DC, serwomotory mają zazwyczaj dodatkowy pin oprócz dwóch pinów zasilania (Vcc i GND), którym jest pin sygnałowy. Pin sygnałowy służy do sterowania serwomotorem, obracając jego wał o dowolny kąt.

W tym tutorialu użyjemy popularnego serwomechanizmu SG90, a naszym celem będzie obracanie serwomechanizmu z jednego końca na drugi.

Serwomechanizmy mają duże zapotrzebowanie na prąd, więc gdy używamy więcej niż jednego serwomechanizmu z Arduino, ważne jest, aby podłączyć je do zewnętrznego źródła zasilania, ponieważ Arduino może nie być w stanie dostarczyć prądu potrzebnego dla serwomechanizmu. W tym projekcie będziemy używać tylko jednego serwomechanizmu, wystarczy więc zasilić go z Arduino.

Schemat

Schemat dla tego projektu jest dość prosty, ponieważ będziemy podłączać tylko serwomotor do Arduino.

Serwomotory zazwyczaj posiadają trzy piny/przewody, są to VCC, GND oraz Signal. Piny Signal służą do przekazywania sygnału sterującego z mikrokontrolera do serwomechanizmu, aby serwomechanizm obracał się o określony kąt.

Podłącz serwomechanizm do Arduino, jak pokazano na poniższym schemacie.

Schemat podłączenia serwomechanizmu do Arduino Uno

Dla uniknięcia pomyłek, połączeni są  dokładniej opisane poniżej.

Połączenie serwomechanizmu z Arduino Uno
SG90 Servo
Arduino
VCC (czerwony przewód)
5V
SIG (żółty/pomarańczowy przewód)
D8
GND (czarny/brązowy przewód)
GND

Pin sygnałowy został podłączony do pinu cyfrowego 8 Arduino, ponieważ jest to pin PWM. Kierunki pracy serwomechanizmu są wysyłane z mikrokontrolera do serwomotoru w postaci impulsów PWM.

Po wykonaniu wszystkich połączeń, możemy przystąpić do pisania kodu projektu.

Kod

Kod tego projektu jest dość prosty dzięki bardzo obszernej i zwięzłej bibliotece servo.h stworzonej przez zespół Arduino w celu ułatwienia użycia serwomechanizmów w projektach Arduino. Biblioteka ta ułatwia obracanie serwomechanizmów o różne kąty za pomocą jednej komendy. Biblioteka jest preinstalowana w Arduino IDE, dzięki czemu nie musimy jej pobierać i instalować.

Kod projektu rozpoczynamy od dołączenia bibliotek, z których będziemy korzystać, w tym przypadku jest to biblioteka servo.h.

#include <Servo.h>

Następnie tworzymy obiekt biblioteki, który posłuży nam jako referencja do sterowania naszym serwomechanizmem w całym kodzie.

Servo servo;

Po wykonaniu tych czynności przechodzimy do funkcji void setup(). Funkcję rozpoczynamy od podpięcia utworzonego obiektu servo do pinu D8 mikrokontrolera, po czym centrujemy serwo, obracając je o zero stopni.

void setup() {
  servo.attach(8);
  servo.write(angle);
}

Po wykonaniu tych czynności, jesteśmy gotowi do poruszania serwomechanizmem w dowolnym kierunku, a będziemy to robić w ramach funkcji void loop. Dzięki bibliotece servo.h wszystko co musimy zrobić, aby obrócić serwomechanizm o pożądany przez nas kąt, to przekazać pożądany kąt jako argument do funkcji servo.write(). Aby to zademonstrować, użyto pętli for do obrócenia serwomechanizmu o kilka kątów w jedną stronę, a następnie użyto innej pętli do obrócenia serwomechanizmu z powrotem do miejsca, w którym się rozpoczął.

void loop() 
{ 
 // scan from 0 to 180 degrees
  for(angle = 10; angle < 180; angle++)  
  {                                  
    servo.write(angle);               
    delay(15);                   
  } 
  // now scan back from 180 to 0 degrees
  for(angle = 180; angle > 10; angle--)    
  {                                
    servo.write(angle);           
    delay(15);       
  } 
}

Kompletny kod projektu jest dostępny poniżej i można go pobrać z sekcji download na końcu projektu.

#include <Servo.h>

Servo servo;
int angle = 10;

void setup() {
  servo.attach(8);
  servo.write(angle);
}


void loop() 
{ 
 // scan from 0 to 180 degrees
  for(angle = 10; angle < 180; angle++)  
  {                                  
    servo.write(angle);               
    delay(15);                   
  } 
  // now scan back from 180 to 0 degrees
  for(angle = 180; angle > 10; angle--)    
  {                                
    servo.write(angle);           
    delay(15);       
  } 
}

Demo

Skopiuj powyższy kod i załaduj do swojego Arduino i konfiguracji serwomechanizmu, po kilku chwilach powinieneś zobaczyć, że serwomechanizm zaczyna się obracać, jak pokazano na poniższym filmie.

To tyle jeśli chodzi o ten projektl, powyższy kod może być rozszerzony na kilka sposobów do wykorzystania w różnych projektach wykorzystujących serwomotory.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
Wideo
Do pobrania
Download icon Program serwomotoru do Arduino

Artykuł USING THE SG90 SERVO MOTOR WITH AN ARDUINO opracowano w wersji polskiej na podstawie współpracy z portalem www.electronics-lab.com.

Firma:
AUTOR
Źródło
www.electronics-lab.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"