Kontrola servomotora: Potpuna vodiljica
Ključna učenja:
Definicija kontrole servomotora: Kontrola servomotora omogućuje preciznu manipulaciju položajem, brzinom i akceleracijom motora putem elektroničkih signala.
Mehanizam povratne informacije: Sustav povratne informacije, često potenciometar ili enkoder, osigurava da izlaz motora točno odgovara ulaznom kontrolnom signalu.
PWM Signal: Pulse-width modulation (PWM) je ključan za postavljanje položaja servomotora variranjem trajanja električnih impulsa.
Arduino i servomotori: Korištenje Arduino ploče je popularan i učinkovit način programiranja i kontrole servomotora s minimalnim hardverskim postavljanjem.
Primjene servomotora: Servomotori su neophodni za projekte koji zahtijevaju točnu kontrolu položaja, poput robotike i automatiziranih sustava.
Servomotor je motor dizajniran za visoku preciznost i točnost u rotaciji. Razlikuje se od tipičnog DC motora svojom sposobnošću održavanja specifičnog položaja umjesto neprekidnog vrtnja. Ova značajka čini servomotore idealnim za robotiku, automatizaciju i hobi projekte.
Ovaj članak objašnjava kako funkcioniše kontrola servomotora, različite vrste servomotora te razne metode i uređaje za kontrolu. Također pruža primjere primjena i projekata sa servomotorima.
Što je servomotor?
Servomotor definira se kao aktuator koji omogućuje preciznu kontrolu položaja (kuta), brzine i akceleracije. Tipični servomotor sastoji se od tri glavna komponenta: DC motora, kontrolnog kruga i uređaja povratne informacije.
DC motor snaga servomotor i povezuje se s zupcima koji smanjuju brzinu i povećavaju moment na izlaznom valjku.

Izlazni valjak je dio servomotora koji rotira i pomiče opterećenje.
Kontrolni krug odgovoran je za prihvat i obradu ulaznih signala s vanjskog kontrolera. Ti signali govore servomotoru koji položaj, brzinu ili smjer treba premjestiti. Kontrolni krug također šalje struju DC motoru kako bi ga pokrenuo.
Uređaj povratne informacije obično je potenciometar ili enkoder koji mjeri trenutni položaj izlaznog valjka.

Uređaj povratne informacije prenosi podatke o položaju natrag na kontrolni krug, koji tada prilagođava snagu DC motora kako bi poravnati stvarni položaj s željenim položajem iz ulaznog signala.
Petlja povratne informacije između kontrolnog kruga i uređaja povratne informacije osigurava da servomotor točno može premjestiti i održavati bilo koji položaj unutar svog raspona gibanja.
Kako kontrolirati servomotor?
Servomotori se kontroliraju slanjem PWM (pulse-width modulation) signala na signaalnu liniju servomotora. PWM je tehnika koja brzo uključuje i isključuje signal kako bi stvorila impulse različitih širina. Širina impulsa određuje položaj izlaznog valjka.
Na primjer, kada pošaljete PWM signal s širinom impulsa od 1,5 milisekunde (ms), servomotor će se pomaknuti u neutralni položaj (90 stupnjeva).

Kada pošaljete PWM signal s širinom impulsa od 1 ms, servomotor će se pomaknuti u minimalni položaj (0 stupnjeva). Kada pošaljete PWM signal s širinom impulsa od 2 ms, servomotor će se pomaknuti u maksimalni položaj (180 stupnjeva).
PWM signal ima frekvenciju od 50 Hz, što znači da se ponavlja svakih 20 ms. Širina impulsa može varirati od 1 ms do 2 ms unutar tog perioda.
Postoji mnogo načina generiranja i slanja PWM signala servomotorima. Neki od najčešćih metoda su:
Korištenje Arduino ploče ili drugog mikrokontrolera
Korištenje potenciometra ili drugog analognog senzora
Korištenje džojstika ili drugog digitalnog ulaznog uređaja
Korištenje posvećenog kontrolera ili vođača servomotora
U sljedećim odjeljcima detaljnije ćemo istražiti svaku od ovih metoda i vidjeti nekoliko primjera kako one funkcioniraju.
Kontrola servomotora s Arduino
Arduino je jedna od najpopularnijih platforma za kontrolu servomotora. Arduino ploče imaju ugrađene PWM izlaze koje se mogu koristiti za slanje signala servomotorima. Arduino također ima biblioteku Servo koja olakšava pisanje koda za kontrolu servomotora.
Za kontrolu servomotora s Arduino trebat ćete:
Arduino ploču (poput Arduino UNO)
Standardni servomotor (poput SG90)
Prijasne žice
Breadboard (opcionalno)
Crvena žica s servomotora spaja se na 5V na Arduino ploči. Crna žica s servomotora spaja se na GND na Arduino ploči. Bijela žica s servomotora spaja se na pin 9 na Arduino ploči.
Za programiranje Arduino ploče trebat ćete koristiti Arduino IDE (online ili offline). Možete koristiti jedan od primjera iz biblioteke Servo ili napisati vlastiti kod.
Sljedeći kod pokazuje kako provesti servomotor naprijed i nazad preko 180 stupnjeva koristeći for petlju:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Stvori objekt Servo
int pos = 0; // Varijabla za položaj
void setup() {
myservo.attach(9); // Pridruži objekt Servo na pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Petlja od 0 do 180 stupnjeva
myservo.write(pos); // Zapiši položaj u objekt Servo
delay(15); // Čekaj 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Petlja od 180 do 0 stupnjeva
myservo.write(pos); // Zapiši položaj u objekt Servo
delay(15); // Čekaj 15 ms
}
}
Ovaj kod koristi dvije petlje za inkrementiranje i dekrementiranje varijable položaja od 0 do 180 stupnjeva i obrnuto. Zatim zapiše tu vrijednost u objekt Servo koristeći myservo.write(pos). Dodaje i kašnjenje od 15 ms između svakog koraka kako bi usporio gibanje.
Prebacite ovaj kod na svoju Arduino ploču koristeći gumb Upload u IDE-u, i promatrajte kako se vaš servomotor gladko pomiče naprijed i nazad.
Kontrola servomotora s potenciometrom
Potenciometar je analogni senzor koji može varirati svoju otpornost ovisno o tome koliko okrenete njegovu klipu. Možete koristiti potenciometar kao ulazni uređaj za kontrolu servomotora.
Za kontrolu servomotora s potenciometrom trebat ćete:
Arduino ploču (poput Arduino UNO)
Standardni servomotor (poput SG90)
Potenciometar (10k Ohm)
Prijasne žice
Breadboard
Shema vezivanja za povezivanje potenciometra i servomotora s Arduino pločom prikazana je ispod:
Crvena žica s potenciometra spaja se na 5V na Arduino ploči. Crna žica s potenciometra spaja se na GND na Arduino ploči. Zelena žica s potenciometra spaja se na pin A0 na Arduino ploči.
Crvena žica s servomotora spaja se na 5V na drugom redu na breadboardu. Crna žica s servomotora spaja se na GND na drugom redu na breadboardu. Bijela žica s servomotora spaja se na pin D9 na drugom redu na breadboardu.
Za programiranje vaše Arduino ploče trebat ćete koristiti isti kod kao u prethodnom primjeru, ali promijeniti nekoliko redova:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Stvori objekt Servo
int potpin = A0; // Pin povezan s potenciometrom
int val = 0; // Varijabla za čitanje vrijednosti potenciometra
void setup() {
myservo.attach(9); // Pridruži objekt Servo pin D9
}
void loop() {
val = analogRead(potpin); // Čitaj vrijednost s potenciometra (0 -1023)
val = map(val,0,1023,0,180); // Mapiraj opseg vrijednosti (0 -180)
myservo.write(val); // Zapiši mapiranu vrijednost u objekt Servo
delay(15); // Čekaj 15 ms
}
Ovaj kod koristi funkciju analogRead(potpin) za čitanje vrijednosti s potenciometra povezanog na pin A0. Zatim koristi funkciju map(val,0,1023,0,180) za mapiranje opsega vrijednosti od 0 -1023 stupnjeva. Zatim zapiše mapiranu vrijednost u objekt Servo koristeći funkciju myservo.write(val). Također dodaje kašnjenje, kao u prethodnom primjeru.
Možete prebaciti ovaj kod na svoju Arduino ploču koristeći gumb Upload u IDE-u. Trebali biste vidjeti kako se vaš servomotor pomiče prema položaju klipa potenciometra.
Kontrola servomotora s džojstkikom
Džojstik je digitalni ulazni uređaj koji može detektirati smjer i magnitudu gibanja duž dvije osi. Možete koristiti džojstik za kontrolu servomotora mapiranjem x-ose džojstika na kut servomotora.
Za kontrolu servomotora s džojstkikom trebat ćete sljedeće:
Arduino ploču (poput Arduino UNO)
Standardni servomotor (poput SG90)
Modul džojstika (poput KY-023)
Prijasne žice
Breadboard
Shema vezivanja za povezivanje modula džojstika i servomotora s Arduino pločom prikazana je ispod:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Crvena žica s modula džojstika spaja se na 5V na Arduino ploči. Crna žica s modula džojstika spaja se na GND na Arduino ploči. Zelena žica s modula džojstika spaja se na pin A0 na Arduino ploči.
Crvena žica s servomotora spaja se na 5V na drugom redu na breadboardu. Crna žica s servomotora spaja se na GND na drugom redu na breadboardu. Bijela žica s servomotora spaja se na pin D9 na drugom redu na breadboardu.
Za programiranje vaše Arduino ploče trebat ćete koristiti isti kod kao u prethodnom primjeru, ali promijeniti nekoliko redova:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Stvori objekt Servo
int joyX = A0; // Pin povezan s x-osom džojstika
int val = 0; // Varijabla za čitanje vrijednosti džojstika
void setup() {
myservo.attach(9); // Pridruži objekt Servo na pin 9