Arduino – Serwo SG90 jak sterować

Piszę ten samouczek, aby pokazać, jak kontrolować kierunek, pozycję i prędkość silnika SG90 Micro przy wykorzystaniu Arduino UNO. Wiem, że jeśli jesteś hobbistą z pewnym doświadczeniem w robotyce, wiesz jak łatwo jest kontrolować ten serwo motor.

Silnikami serwo mamy możliwość precyzyjnie kontrolować połażenie kątowe, prędkości obrotową jak i przyspieszenie. Mówiąc krótko to jak prowadzenie samochodu gdzie decydujesz dokładnie o prędkość jak i kierunku. Często pojawiające się pytanie – dlaczego potrzebujemy serw ? Serwa są niezbędnymi częściami, jeśli potrzebujemy kontrolować położenie obiektów, obracać czujniki, poruszać rękami i nogami robotów itp.

Serwomotor Tower Pro SG90 jest jednym z najtańszych, które można zdobyć na rynku. Nawet jeśli jest to mniej, niż 10 zł, nie zalecam ręcznie obracać serwomotoru, gdyż może to uszkodzić wasz silnik.

Specyfikacja SG90.

Parametry dla napięcia 4,8 V bez obciążenia
Moment: 1,8 kg*cm (0,18 Nm)
Prędkość: 0,1 s/60°
Napięcie zasilania: 3.0-7.2 V
Wymiary: 22 x 11,5 x 27 mm
Masa: 9 g

Przejdźmy zatem do potrzebnych nam rzeczy:
– Serwo TowerPro SG90
– Arduino Uno lub odpowiednik
– przewody do połączenia wszystkiego.

Tabela połączeń:

Pin SG90 Pin Arduino
VCC 5V
GND GND
Data Pin 2

Schemat:

serwo mechanizm SG90 przykłądowy program

Kod programu:

// pobrano z www.tranzystor.pl

#include <Servo.h>

int servoPin = 2; // pin sterujący Arduino

Servo servo;

int servoAngle = 0; // pozycja startowa serwa w stopniach

void setup()
{
Serial.begin(9600);
servo.attach(servoPin);
}

void loop()
{
// kontrola kierunku serwomechanizmu i pozycję

servo.write(90); // Przekrec serwo SG90 w lewo do 90 stopni
delay(1000); // czekaj 1 sek
servo.write(70); // Cofnij serwo SG90 na 70 stopni
delay(1000); // czekaj 1 sek
servo.write(40); // Przekrec serwo SG90 40 stopni
delay(1000); // czekaj 1 sek
servo.write(120); // Przekrec serwo SG9 na 120 stopni
delay(1000); // czekaj 1 sek

//end

// kontrola predkosc serwomechanizmu

// jeśli zmienisz wartość opóźnienia (z przykładowej wartości 100 na 50), prędkość serwomechanizmu się zmieni na wybraną wartosc
for(servoAngle = 0; servoAngle < 180; servoAngle++) //przekręć serwo od 0 stopni do 180 stopni
{
servo.write(servoAngle);
delay(100);
}

for(servoAngle = 180; servoAngle > 0; servoAngle–) //teraz cofnij mikro serwo od 0 stopni do 180 stopni
{
servo.write(servoAngle);
delay(50);
}
//koniec
}

Film ukazujący działanie kodu:


Post Author: swistak

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Potwierdz, że nie jesteś botem. *

This site uses Akismet to reduce spam. Learn how your comment data is processed.