Sterowanie silnikiem serwomechanicznym: kompleksowy przewodnik
Najważniejsze nauki:
Definicja sterowania silnikiem serwomechanicznym: Sterowanie silnikiem serwomechanicznym umożliwia precyzyjne manipulowanie pozycją, prędkością i przyspieszeniem silnika za pomocą sygnałów elektronicznych.
Mechanizm sprzężenia zwrotnego: System sprzężenia zwrotnego, często potencjometr lub enkoder, zapewnia, że wyjście silnika dokładnie odpowiada sygnałowi sterującemu.
Sygnał PWM: Modulacja szerokości impulsu (PWM) jest kluczowa do ustawiania pozycji serwa poprzez zmianę czasu trwania impulsów elektrycznych.
Arduino i silniki serwomechaniczne: Użycie płytki Arduino to popularny i skuteczny sposób programowania i sterowania silnikami serwomechanicznymi z minimalnym zestawem sprzętu.
Zastosowania silników serwomechanicznych: Silniki serwomechaniczne są niezbędne w projektach wymagających dokładnej kontroli położenia, takich jak robotyka i systemy automatyczne.
Silnik serwomechaniczny to silnik zaprojektowany do wysokiej precyzji i dokładności obrotowej. Różni się od typowego silnika prądu stałego możliwością utrzymania określonej pozycji, a nie ciągłego obrotu. Ta cecha sprawia, że silniki serwomechaniczne są idealne dla robotyki, automatyki i projektów hobistycznych.
W tym artykule wyjaśniono, jak działa sterowanie silnikiem serwomechanicznym, różne typy silników serwomechanicznych oraz różne metody i urządzenia sterujące. Artykuł zawiera również przykłady zastosowań i projektów z użyciem silników serwomechanicznych.
Co to jest silnik serwomechaniczny?
Silnik serwomechaniczny definiuje się jako napęd, który umożliwia precyzyjną kontrolę pozycji (kąta), prędkości i przyspieszenia. Typowy silnik serwomechaniczny składa się z trzech głównych komponentów: silnika prądu stałego, obwodu sterującego i urządzenia sprzężenia zwrotnego.
Silnik prądu stałego napędza serwo i jest połączony z trybikami, które redukują prędkość i zwiększają moment obrotowy na wałku wyjściowym.

Wałek wyjściowy to część serwa, która obraca się i porusza obciążeniem.
Obwód sterujący odpowiada za odbiór i przetwarzanie sygnałów wejściowych z zewnętrznego sterownika. Te sygnały informują serwo, jakie pozycje, prędkości lub kierunki ma przyjąć. Obwód sterujący wysyła również energię do silnika prądu stałego, aby go napędzać.
Urządzenie sprzężenia zwrotnego zazwyczaj jest potencjometrem lub enkoderem, który mierzy bieżącą pozycję wałka wyjściowego.

Urządzenie sprzężenia zwrotnego przekazuje dane o pozycji z powrotem do obwodu sterującego, który następnie dostosowuje moc silnika prądu stałego, aby wyrównać rzeczywistą pozycję z żądaną pozycją z sygnału wejściowego.
Pętla sprzężenia zwrotnego między obwodem sterującym a urządzeniem sprzężenia zwrotnego zapewnia, że serwo może precyzyjnie przesunąć się do i utrzymać dowolną pozycję w zakresie swojego ruchu.
Jak sterować silnikiem serwomechanicznym?
Silniki serwomechaniczne są sterowane przez wysyłanie sygnału PWM (modulacji szerokości impulsu) do linii sygnałowej serwa. PWM to technika, która szybko przełącza sygnał w celu stworzenia impulsów o różnej szerokości. Szerokość impulsów określa pozycję wałka wyjściowego.
Na przykład, gdy wyślesz sygnał PWM o szerokości impulsu 1,5 milisekundy (ms), serwo przesunie się do neutralnej pozycji (90 stopni).

Gdy wyślesz sygnał PWM o szerokości impulsu 1 ms, serwo przesunie się do minimalnej pozycji (0 stopni). Gdy wyślesz sygnał PWM o szerokości impulsu 2 ms, serwo przesunie się do maksymalnej pozycji (180 stopni).
Sygnał PWM ma częstotliwość 50 Hz, co oznacza, że powtarza się co 20 ms. Szerokość impulsu może się zmieniać od 1 ms do 2 ms w tym okresie.
Istnieje wiele sposobów generowania i wysyłania sygnałów PWM do silników serwomechanicznych. Niektóre z najbardziej popularnych metod to:
Użycie płytki Arduino lub innego mikrokontrolera
Użycie potencjometru lub innego czujnika analogowego
Użycie dżojstika lub innego cyfrowego urządzenia wejściowego
Użycie dedykowanego sterownika lub sterownika serwomechanicznego
W kolejnych sekcjach przeanalizujemy każdą z tych metod bardziej szczegółowo i zobaczymy niektóre przykłady ich działania.
Sterowanie silnikiem serwomechanicznym za pomocą Arduino
Arduino to jedna z najpopularniejszych platform do sterowania silnikami serwomechanicznymi. Płytki Arduino mają wbudowane wyjścia PWM, które mogą być używane do wysyłania sygnałów do serw. Arduino posiada również bibliotekę Servo, która ułatwia pisanie kodu do sterowania serwami.
Aby sterować silnikiem serwomechanicznym za pomocą Arduino, będziesz potrzebował:
Płytki Arduino (np. Arduino UNO)
Standardowego silnika serwomechanicznego (np. SG90)
Przewodów skokowych
Płytki do montażu (opcjonalnie)
Czerwony przewód od serwa podłącz do 5V na płytce Arduino. Czarny przewód od serwa podłącz do GND na płytce Arduino. Biały przewód od serwa podłącz do pinu 9 na płytce Arduino.
Aby programować płytę Arduino, musisz użyć Arduino IDE (online lub offline). Możesz użyć jednego z przykładów z biblioteki Servo lub napisać własny kod.
Poniższy kod pokazuje, jak przesunąć silnik serwomechaniczny w przód i w tył przez 180 stopni za pomocą pętli for:
#include <Servo.h> // Dołącz bibliotekę Servo
Servo myservo; // Utwórz obiekt Servo
int pos = 0; // Zmienna dla pozycji
void setup() {
myservo.attach(9); // Przypisz obiekt Servo do pinu 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Pętla od 0 do 180 stopni
myservo.write(pos); // Zapisz pozycję do obiektu Servo
delay(15); // Poczekaj 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Pętla od 180 do 0 stopni
myservo.write(pos); // Zapisz pozycję do obiektu Servo
delay(15); // Poczekaj 15 ms
}
}
Ten kod używa dwóch pętli, aby zwiększać i zmniejszać zmienną pozycji od 0 do 180 stopni i odwrotnie. Następnie zapisuje tę wartość do obiektu Servo za pomocą myservo.write(pos). Dodaje również opóźnienie 15 ms między każdym krokiem, aby spowolnić ruch.
Prześlij ten kod do swojej płytki Arduino za pomocą przycisku Upload w IDE i obserwuj, jak twój silnik serwomechaniczny płynnie przesuwa się w przód i w tył.
Sterowanie silnikiem serwomechanicznym za pomocą potencjometru
Potencjometr to czujnik analogowy, który może zmieniać swoją rezystancję w zależności od tego, jak bardzo przekręcisz jego gałkę. Możesz użyć potencjometru jako urządzenia wejściowego do sterowania silnikiem serwomechanicznym.
Aby sterować silnikiem serwomechanicznym za pomocą potencjometru, będziesz potrzebował:
Płytki Arduino (np. Arduino UNO)
Standardowego silnika serwomechanicznego (np. SG90)
Potencjometru (10k Ohm)
Przewodów skokowych
Płytki do montażu
Schemat połączeń potencjometru i silnika serwomechanicznego z płytą Arduino przedstawiony jest poniżej:
Czerwony przewód od potencjometru podłącz do 5V na płytce Arduino. Czarny przewód od potencjometru podłącz do GND na płytce Arduino. Zielony przewód od potencjometru podłącz do pinu A0 na płytce Arduino.
Czerwony przewód od serwa podłącz do 5V na innej linii na płytce do montażu. Czarny przewód od serwa podłącz do GND na innej linii na płytce do montażu. Biały przewód od serwa podłącz do pinu D9 na innej linii na płytce do montażu.
Aby programować swoją płytę Arduino, musisz użyć tego samego kodu co w poprzednim przykładzie, ale zmienić kilka linii:
#include <Servo.h> // Dołącz bibliotekę Servo
Servo myservo; // Utwórz obiekt Servo
int potpin = A0; // Pin podłączony do potencjometru
int val = 0; // Zmienna do odczytu wartości potencjometru
void setup() {
myservo.attach(9); // Przypisz obiekt Servo do pinu D9
}
void loop() {
val = analogRead(potpin); // Odczytaj wartość z potencjometru (0 -1023)
val = map(val,0,1023,0,180); // Przetłumacz zakres wartości (0 -180)
myservo.write(val); // Zapisz przetłumaczoną wartość do obiektu Servo
delay(15); // Poczekaj 15 ms
}
Ten kod używa funkcji analogRead(potpin) do odczytania wartości z potencjometru podłączonego do pinu A0. Następnie używa funkcji map(val,0,1023,0,180) do przetłumaczenia zakresu wartości z 0 -1023 na 0 -180 stopni. Następnie zapisuje przetłumaczoną wartość do obiektu Servo za pomocą funkcji myservo.write(val). Dodaje również opóźnienie, tak jak w poprzednim przykładzie.
Możesz przesłać ten kod do swojej płytki Arduino za pomocą przycisku Upload w IDE. Powinieneś zobaczyć, jak twój silnik serwomechaniczny porusza się w zależności od pozycji gałki potencjometru.
Sterowanie silnikiem serwomechanicznym za pomocą dżojstika
Dżojstik to cyfrowe urządzenie wejściowe, które może wykrywać kierunek i wielkość ruchu wzdłuż dwóch osi. Możesz użyć dżojstika do sterowania silnikiem serwomechanicznym, mapując oś x dżojstika na kąt serwa.
Aby sterować silnikiem serwomechanicznym za pomocą dżojstika, będziesz potrzebował następujących elementów:
Płytki Arduino (np. Arduino UNO)
Standardowego silnika serwomechanicznego (np. SG90)
Modułu dżojstika (np. KY-023)
Przewodów skokowych
Płytki do montażu
Schemat połączeń modułu dżojstika i silnika serwomechanicznego z płytą Arduino przedstawiony jest poniżej:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Czerwony przewód od modułu dżojstika podłącz do 5V na płytce Arduino. Czarny przewód od modułu dżojstika podłącz do GND na płytce Arduino. Zielony przewód od modułu dżojstika podłącz do pinu A0 na płytce Arduino.
Czerwony przewód od serwa podłącz do 5V na innej linii na płytce do montażu. Czarny przewód od serwa podłącz do GND na innej linii na płytce do montażu. Biały przewód od serwa podłącz do pinu D9 na innej linii na płytce do montażu.
Aby programować swoją płytę Arduino, musisz użyć tego samego kodu co w poprzednim przykładzie, ale zmienić kilka linii:
#include <Servo.h> // Dołącz bibliotekę Servo
Servo myservo; // Utwórz obiekt Servo