Jak kontrolować silnik serwo za pomocą Arduino

Jak kontrolować silnik serwo za pomocą Arduino
Servo Motors jest rodzajem urządzenia elektrycznego, które może zmienić lub obracać pozycję obiektu z wielką precyzją. Począwszy od nich do kontrolowania skrzydeł płaskich RC chwilę później, udali się do robotyki, robotów humanoidalnych i wielu projektów automatyki. W przeciwieństwie do silników Stepper ich ruch jest ograniczony między 0o do 180o.

Zwykle silniki serwo mają ramiona, które można kontrolować za pomocą Arduino. Silniki serwo składają się z systemu sterowania, który zapewnia informacja zwrotna O bieżącej pozycji wału silnikowego To sprzężenie zwrotne pozwala poruszać się z doskonałą precyzją.

Servo Motor Pinout

Zazwyczaj większość silników serwo ma trzy szpilki:

  • Pin VCC (zwykle czerwony 5 V)
  • Pin GND (zwykle czarny 0v)
  • Pin sygnałowy (Odbierz sygnał PWM z Arduino)

Działanie silnika serwo

Możemy kontrolować silnik serwosowy, podłączając pin VCC do 5 V i GND Pin do 0 V. Na terminalu żółtym kolorów zapewniamy PWM sygnał, który kontroluje kąt obrotowy silnika serwosła. Szerokość sygnału PWM daje nam kąt, pod którym silnik obróci ramię.

Jeśli spojrzymy na arkusz danych silników serwo, otrzymujemy następujące parametry:

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

Wszystkie te parametry są wstępnie zdefiniowane w bibliotece serwomechanizmu Arduino.

Servo Motors z Arduino

Servo Motors są bardzo łatwe do kontrolowania z Arduino, dzięki Biblioteka serwomena co pomaga nam dostosować nasz kod zgodnie z potrzebą i pozwala nam obrócić ramię serwos pod naszym pożądanym kątem.

Wszystkie trzy parametry wymienione powyżej są ustalone w bibliotece serwomechanizmu. Korzystając z tych parametrów, możemy kontrolować kąt silnika serwo w następujący sposób:

  • Jeśli szerokość sygnału PWM = szerokość_max, serwo będzie obrócić się do 180o
  • Jeśli szerokość sygnału PWM = szerokość_miin, serwo będzie obrócić się na 0o
  • Jeśli szerokość sygnału PWM leży pomiędzy Szerokość_max i szerokość_min, Silnik serwo obróci się między 0o a 180o

Możemy wygenerować pożądany sygnał PWM na niektórych szpilkach Arduino. Sygnał PWM zostanie podany na styku sygnału wejściowego silnika serwa. Łączenie pozostałych dwóch pinów serwomechanizmu do 5 V i GND Arduino.

Jak kontrolować silnik serwo za pomocą Arduino

Tutaj wyjaśnię, w jaki sposób możemy podłączyć i zaprogramować nasz silnik serwo za pomocą Arduino. Wszystko czego potrzebujesz to:

  • Arduino Uno
  • Kabel USB B
  • Siłownik
  • Przewody zworki

Jak programować serwo z Arduino

Poniżej przedstawiono kilka prostych kroków:

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

#włączać

Krok 2: Utwórz obiekt serwo:

Servo Myservo;

Wskazówka: W przypadku, gdy kontrolujesz więcej niż jeden silniki serwomechanizmu, musisz utworzyć więcej obiektów serwomechanizmu:

Servo Myservo1;
Servo Myservo2;

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

Myservo.dołączyć (9);

Krok 4: Obróć kąt silnika serwomechanizmu do pożądanej wartości, na przykład 90o:

Myservo.Napisz (POS);

Kod Arduino

Otwórz przykładowy program silnikowy od serwomechanizmu od Plik> Przykład> Servo> Sweep, Nowe okno otworzy się, pokazując nam nasz szkic serwo:

#włączać
Servo Myservo; // obiekt serwomechanizmu jest tworzony do kontrolowania silnika serwomechanizmu
int pos = 0; // Aby przechowywać pozycję serwomechanizmu, tworzona jest nowa zmienna
void setup ()
Myservo.dołączyć (9); // To ustawi pin Arduino 9 dla wyjścia PWM

void Loop ()
dla (pos = 0; pos = 0; pos -= 1) // przechodzi od 180 do 0 stopni
Myservo.Napisz (POS); // Powiedz serwo, aby poszedł na pozycję „POS”
opóźnienie (5); // czeka na 5 ms, więc serwo może dotrzeć do pozycji

Po skompilowaniu i przesłaniu programu silnik serwo zacznie obracać się powoli od pozycji wyjściowej 0 stopni do 180 stopni, o jeden stopień na raz, podobnie jak kroki. Po zakończeniu rotacji silnika o 180 stopni rozpocznie obrót w przeciwnym kierunku w kierunku punktu początkowego I.mi., 0 stopnia.

Schematy

Jak kontrolować silnik serwo za pomocą potencjometru

Możemy również ręcznie kontrolować pozycję silnika serwo. Aby to zrobić, potrzebujemy Potencjometr. Potencjometr ma trzy szpilki. Podłącz dwa zewnętrzne szpilki do 5 V VCC i GND Arduino i środkowego do pinu A0 na tablicy Arduino.

Jak programować serwo z potencjometrem

Większość szkicu do potencjometru jest taka sama jak poprzedni przykład. Jedyną różnicą jest nowa zmienna val I potpin jest zdefiniowane przed sekcją konfiguracji i pętli kodu.

int potpin = a0;
int val;

W sekcji pętli analogowy pin A0 służy do odczytu wartości potencjometru z funkcją analogread (). Tablice Arduino zawierają 10-bitowe ADC (analog do cyfrowego konwertera), dając nam wartości między 0 a 1023 w zależności od potencjometru położenia:

val = analogread (potpin);

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

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

Kod Arduino

Otwórz szkic pokrętła dostępny w Arduino IDE, idź do Pliki> Przykłady> serwo> pokrętło. Otworzy się nowe okno, które pokazuje nam nasz szkic gałki dla serwomechanizmu:

#włączać
Servo Myservo; // Tworzenie nazwy obiektu serwomechanizmu myServo
int potpin = a0; // definiowanie analogowego szpilki do potencjometru
int val; // Zmienna, która odczytuje analogowe wartości pinów dla potencjometru
void setup ()
Myservo.dołączyć (9); // zdefiniowany pin 9 dla sygnału wejściowego PWM serwomechanizmu na Arduino

void Loop ()
val = analogread (potpin); // odczytuje wartość z potencjometru (wartość od 0 do 1023)
val = mapa (val, 0, 1023, 0, 180); // skal wartość do użycia z serwozytorą (wartość od 0 do 180)
Myservo.napisz (val); // ustawia pozycję serwomechanizmu o skalowanej wartości
opóźnienie (15); // czeka, aż serwo dostanie się do pozycji

Powyższy kod pomoże nam kontrolować wał silnikowy za pomocą potencjometru, wałk obróci się od 0 do 180 stopni. Możemy również utrzymać prędkość wraz z kierunkiem serwomechanizmu.

Schemat obwodu

Ile silników serwo mogę połączyć się z Arduino?

Maksymalna liczba silników serwo Arduino Uno może obsłużyć do 12 z biblioteką Arduino dla serwomenalnego i maksymalnie 48 Servos można połączyć z płytami takimi jak Mega.

Wskazówka: Możemy bezpośrednio uruchamiać serwo za pomocą prądu Arduino, ale pamiętaj, czy silniki serwomotów rysują więcej niż 500MA Wtedy płyta Arduino może automatycznie zresetować i stracić energię. Zaleca się, aby zawsze używać dedykowanego zasilania dla silników serwo.

Wniosek

W tym samouczku omówiliśmy mechanizm kontrolujący silniki serwo za pomocą Arduino. Podstawy kontrolowania pozycji i prędkości serwomechanizmu za pomocą potencjometru. Teraz masz pomysł na serwo i możliwości dla swojej robotyki, projektów RC i automatyzacji za pomocą serwomechanizmu są nieograniczone.