Řízení servomotoru: Úplný průvodce
Klíčové znalosti:
Definice řízení servomotoru: Řízení servomotoru umožňuje přesné ovládání polohy, rychlosti a zrychlení motoru prostřednictvím elektronických signálů.
Mechanizmus zpětné vazby: Systém zpětné vazby, často potenciometr nebo kódér, zajistí, aby výstup motoru přesně odpovídal vstupnímu ovládání.
PWM Signál: Puls-width modulace (PWM) je klíčová pro nastavení pozice serva změnou délky elektrických pulsů.
Arduino a servomotory: Použití desky Arduino je oblíbený a efektivní způsob, jak programovat a ovládat servomotory s minimální náročností na hardware.
Aplikace servomotorů: Servomotory jsou nezbytné pro projekty, které vyžadují přesné polohové ovládání, jako jsou robotika a automatizované systémy.
Servomotor je motor navržený pro vysokou přesnost a přesnost v otáčení. Lze ho odlišit od typického DC motoru jeho schopností udržet konkrétní polohu místo toho, aby se neustále točil. Tato vlastnost dělá servomotory ideálními pro robotiku, automatizaci a hobbijistické projekty.
Tento článek vysvětluje, jak funguje řízení servomotoru, různé typy servomotorů a různé metody a zařízení pro jejich ovládání. Poskytuje také příklady aplikací a projektů s servomotory.
Co je servomotor?
Servomotor je definován jako aktuator, který umožňuje přesné ovládání polohy (úhlu), rychlosti a zrychlení. Typický servomotor se skládá ze tří hlavních komponent: DC motoru, ovládací obvodu a zařízení pro zpětnou vazbu.
DC motor pohání servomotor a spojuje se s ozubením, které snižuje rychlost a zvyšuje točivý moment na výstupním hřídeli.

Výstupní hřídel je ta část servomotoru, která se otáčí a pohybuje nákladem.
Ovládací obvod je zodpovědný za přijímání a zpracování vstupních signálů od externího ovladače. Tyto signály říkají servu, do jaké polohy, rychlosti nebo směru se má pohybovat. Ovládací obvod také posílá energii do DC motoru, aby ho poháněl.
Zařízení pro zpětnou vazbu je obvykle potenciometr nebo kódér, který měří aktuální polohu výstupního hřídele.

Zařízení pro zpětnou vazbu předává data o poloze zpět do ovládacího obvodu, který pak upraví energii DC motoru, aby skutečná poloha odpovídala požadované poloze z vstupního signálu.
Zpětná vazba mezi ovládacím obvodem a zařízením pro zpětnou vazbu zajišťuje, že servomotor může přesně pohybovat a udržovat jakoukoli polohu v rámci svého rozsahu pohybu.
Jak ovládat servomotor?
Servomotory se ovládají posíláním PWM (puls-width modulace) signálu na signální linku servomotoru. PWM je technika, která rychle přepíná signál, aby vytvořila pulsy různých šířek. Šířka pulsů určuje polohu výstupního hřídele.
Například, když pošlete PWM signál s šířkou pulsu 1,5 milisekundy (ms), servomotor se pohne do neutrální polohy (90 stupňů).

Když pošlete PWM signál s šířkou pulsu 1 ms, servomotor se pohne do minimální polohy (0 stupňů). Když pošlete PWM signál s šířkou pulsu 2 ms, servomotor se pohne do maximální polohy (180 stupňů).
PWM signál má frekvenci 50 Hz, což znamená, že se opakuje každých 20 ms. Šířka pulsu může být v tomto období od 1 ms do 2 ms.
Existuje mnoho způsobů, jak generovat a posílat PWM signály do servomotorů. Některé z nejčastějších metod jsou:
Použití desky Arduino nebo jiného mikrokontroleru
Použití potenciometru nebo jiného analogového snímače
Použití joysticku nebo jiného digitálního vstupního zařízení
Použití speciálního ovladače nebo řidiče servomotorů
V následujících částech si podrobněji probereme každou z těchto metod a ukážeme několik příkladů, jak fungují.
Řízení servomotoru pomocí Arduina
Arduino je jednou z nejoblíbenějších platform pro ovládání servomotorů. Desky Arduino mají vestavěné PWM výstupy, které lze použít k posílání signálů do servomotorů. Arduino také disponuje knihovnou Servo, která usnadňuje psaní kódu pro ovládání servomotorů.
Pro ovládání servomotoru pomocí Arduina budete potřebovat:
Desku Arduino (např. Arduino UNO)
Standardní servomotor (např. SG90)
Skočicí drátky
Breadboard (volitelně)
Červený drát z servomotoru se připojuje k 5V na desce Arduino. Černý drát z servomotoru se připojuje k GND na desce Arduino. Bílý drát z servomotoru se připojuje k pinu 9 na desce Arduino.
Pro programování desky Arduino budete potřebovat použít Arduino IDE (online nebo offline). Můžete použít jeden z příkladů z knihovny Servo nebo napsat vlastní kód.
Následující kód ukazuje, jak pohybovat servomotorem tam a zpět po 180 stupních pomocí cyklu for:
#include <Servo.h> // Zahrnutí knihovny Servo
Servo myservo; // Vytvoření objektu Servo
int pos = 0; // Proměnná pro polohu
void setup() {
myservo.attach(9); // Připojení objektu Servo k pinu 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Cyklus od 0 do 180 stupňů
myservo.write(pos); // Zápis polohy do objektu Servo
delay(15); // Počkejte 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Cyklus od 180 do 0 stupňů
myservo.write(pos); // Zápis polohy do objektu Servo
delay(15); // Počkejte 15 ms
}
}
Tento kód používá dva cykly pro inkrement a dekrement proměnné polohy od 0 do 180 stupňů a naopak. Pak zapisuje tuto hodnotu do objektu Servo pomocí myservo.write(pos). Přidává také prodlevu 15 ms mezi každým krokem, aby zpomalil pohyb.
Nahrajte tento kód do vaší desky Arduino pomocí tlačítka Upload v IDE a sledujte, jak se váš servomotor pohybuje tam a zpět hladce.
Řízení servomotoru pomocí potenciometru
Potenciometr je analogový snímač, který může měnit svůj odpor v závislosti na tom, jak moc otočíte jeho klikou. Potenciometr můžete použít jako vstupní zařízení pro ovládání servomotoru.
Pro ovládání servomotoru pomocí potenciometru budete potřebovat:
Desku Arduino (např. Arduino UNO)
Standardní servomotor (např. SG90)
Potenciometr (10k Ohmů)
Skočicí drátky
Breadboard
Schéma zapojení pro připojení potenciometru a servomotoru k desce Arduino je zobrazeno níže:
Červený drát z potenciometru se připojuje k 5V na desce Arduino. Černý drát z potenciometru se připojuje k GND na desce Arduino. Zelený drát z potenciometru se připojuje k pinu A0 na desce Arduino.
Červený drát z servomotoru se připojuje k 5V na jiném řádku breadboardu. Černý drát z servomotoru se připojuje k GND na jiném řádku breadboardu. Bílý drát z servomotoru se připojuje k pinu D9 na jiném řádku breadboardu.
Pro programování vaší desky Arduino budete potřebovat použít stejný kód jako v předchozím příkladu, ale změnit několik řádků:
#include <Servo.h> // Zahrnutí knihovny Servo
Servo myservo; // Vytvoření objektu Servo
int potpin = A0; // Pin připojený k potenciometru
int val = 0; // Proměnná pro čtení hodnoty potenciometru
void setup() {
myservo.attach(9); // Připojení objektu Servo k pinu D9
}
void loop() {
val = analogRead(potpin); // Čtení hodnoty z potenciometru (0 -1023)
val = map(val,0,1023,0,180); // Mapování rozsahu hodnot (0 -180)
myservo.write(val); // Zápis mapované hodnoty do objektu Servo
delay(15); // Počkejte 15 ms
}
Tento kód používá funkci analogRead(potpin) pro čtení hodnoty z potenciometru připojeného k pinu A0. Poté používá funkci map(val,0,1023,0,180) pro mapování rozsahu hodnot z 0 -1023 na 0 -180 stupňů. Pak zapisuje mapovanou hodnotu do objektu Servo pomocí funkce myservo.write(val). Přidává také prodlevu, stejně jako v předchozím příkladu.
Můžete nahrát tento kód do vaší desky Arduino pomocí tlačítka Upload v IDE. Měli byste vidět, jak se váš servomotor pohybuje podle polohy kliky potenciometru.
Řízení servomotoru pomocí joysticku
Joystick je digitální vstupní zařízení, které může detekovat směr a velikost pohybu podél dvou os. Joystick můžete použít k ovládání servomotoru mapováním x-ové osy joysticku na úhel servomotoru.
Pro ovládání servomotoru pomocí joysticku budete potřebovat následující:
Desku Arduino (např. Arduino UNO)
Standardní servomotor (např. SG90)
Modul joysticku (např. KY-023)
Skočicí drátky
Breadboard
Schéma zapojení pro připojení modulu joysticku a servomotoru k desce Arduino je zobrazeno níže:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Červený drát z modulu joysticku se připojuje k 5V na desce Arduino. Černý drát z modulu joysticku se připojuje k GND na desce Arduino. Zelený drát z modulu joysticku se připojuje k pinu A0 na desce Arduino.
Červený drát z servomotoru se připojuje k 5V na jiném řádku breadboardu. Černý drát z servomotoru se připojuje k GND na jiném řádku breadboardu. Bílý drát z servomotoru se připojuje k pinu D9 na jiném řádku breadboardu.
Pro programování vaší desky Arduino budete potřebovat použít stejný kód jako v předchozím příkladu, ale změnit několik