Kontrola servomotora: Potpuna uputstva
Ključni nauk:
Definicija kontrole servomotora: Kontrola servomotora omogućava precizno manipulisanje pozicijom, brzinom i akceleracijom motora putem elektronskih signala.
Mehanizam povratne informacije: Sistem povratne informacije, često potenciometar ili enkoder, osigurava da izlaz motora tačno odgovara kontrolnom ulazu.
PWM signal: Pulse-width modulation (PWM) je ključna za postavljanje pozicije servomotora promenom trajanja električnih impulsa.
Arduino i servomotori: Korišćenje Arduina je popularan i efikasan način programiranja i kontrole servomotora sa minimalnim hardverskim postavljanjem.
Primene servomotora: Servomotori su neophodni za projekte koji zahtevaju tačnu kontrolu pozicije, kao što su robotika i automatizovani sistemi.
Servomotor je motor dizajniran za visoku preciznost i tačnost u rotaciji. Razlikuje se od tipičnog DC motora svojom sposobnošću održavanja specifične pozicije umesto neprekidnog vrtnja. Ova osobina čini servomotore idealnim za robotiku, automatizaciju i hobi projekte.
Ovaj članak objašnjava kako funkcioniše kontrola servomotora, različite vrste servomotora, kao i razne metode i uređaje za kontrolu. Takođe pruža primere primena i projekata sa servomotorima.
Šta je servomotor?
Servomotor se definiše kao aktuator koji omogućava preciznu kontrolu pozicije (ugla), brzine i akceleracije. Tipičan servomotor sastoji se od tri glavna komponenta: DC motor, kontrolni kolaž i uredjaj za povratnu informaciju.
DC motor napaja servomotor i povezan je sa zupcanicama koje smanjuju brzinu i povećavaju moment na izlaznom vratu.

Izlazni vrat je deo servomotora koji se vrati i pomera opterećenje.
Kontrolni kolaž je odgovoran za prijem i obradu ulaznih signala sa eksternog kontrolera. Ovi signali navode servomotoru koju poziciju, brzinu ili smer treba da pređe. Kontrolni kolaž takođe šalje snagu DC motoru da bi ga pokrenuo.
Uređaj za povratnu informaciju obično je potenciometar ili enkoder koji meri trenutnu poziciju izlaznog vrata.

Uređaj za povratnu informaciju prenosi podatke o poziciji nazad kontrolnom kolažu, koji onda prilagođava snagu DC motoru kako bi se stvarna pozicija poravnala sa željenom pozicijom iz ulaznog signala.
Petlja povratne informacije između kontrolnog kolaža i uredjaja za povratnu informaciju osigurava da servomotor može tačno premestiti i održati bilo koju poziciju unutar svog opsega kretanja.
Kako kontrolisati servomotor?
Servomotori se kontrolišu slanjem PWM (pulse-width modulation) signala na signalnu liniju servomotora. PWM je tehnika koja brzo uključuje i isključuje signal kako bi se kreirali impulsi različitih širina. Širina impulsa određuje poziciju izlaznog vrata.
Na primer, kada pošaljete PWM signal sa širinom impulsa od 1.5 milisekundi (ms), servomotor će se pomeriti u neutralnu poziciju (90 stepeni).

Kada pošaljete PWM signal sa širinom impulsa od 1 ms, servomotor će se pomeriti u minimalnu poziciju (0 stepeni). Kada pošaljete PWM signal sa širinom impulsa od 2 ms, servomotor će se pomeriti u maksimalnu poziciju (180 stepeni).
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 ovog perioda.
Postoji mnogo načina generisanja i slanja PWM signala servomotorima. Neki od najčešćih metoda su:
Korišćenje Arduina ili drugog mikrokontrolera
Korišćenje potenciometra ili drugog analognog senzora
Korišćenje džojstika ili drugog digitalnog ulaznog uredjaja
Korišćenje posvećenog kontrolera ili vozača za servomotor
U narednim odeljcima detaljnije ćemo istražiti svaku od ovih metoda i videti nekoliko primera kako one rade.
Kontrola servomotora sa Arduino
Arduino je jedna od najpopularnijih platforma za kontrolu servomotora. Arduino table imaju ugrađene PWM izlaze koji se mogu koristiti za slanje signala servomotorima. Arduino takođe ima biblioteku Servo koja olakšava pisanje koda za kontrolu servomotora.
Da biste kontrolisali servomotor sa Arduino, potrebno vam je:
Arduino tabla (kao što je Arduino UNO)
Standardni servomotor (kao što je SG90)
Skokovi
Breadboard (opciono)
Crveni žic od servomotora povezuje se na 5V na Arduino tabeli. Crni žic od servomotora povezuje se na GND na Arduino tabeli. Beli žic od servomotora povezuje se na pin 9 na Arduino tabeli.
Da biste programirali Arduino tabelu, morate koristiti Arduino IDE (online ili offline). Možete koristiti jedan od primera iz biblioteke Servo ili napisati sopstveni kod.
Navedeni kod pokazuje kako nacrtati servomotor unazad i naprijed preko 180 stepeni korišćenjem for petlje:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Kreiraj objekat Servo
int pos = 0; // Promenljiva za poziciju
void setup() {
myservo.attach(9); // Poveži objekat Servo na pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Petlja od 0 do 180 stepeni
myservo.write(pos); // Zapiši poziciju u objekat Servo
delay(15); // Čekaj 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Petlja od 180 do 0 stepeni
myservo.write(pos); // Zapiši poziciju u objekat Servo
delay(15); // Čekaj 15 ms
}
}
Ovaj kod koristi dve petlje da inkrementira i dekrementira promenljivu pozicije od 0 do 180 stepeni i obrnuto. Zatim zapiše ovu vrednost u objekat Servo korišćenjem myservo.write(pos). Takođe dodaje kašnjenje od 15 ms između svakog koraka kako bi usporio kretanje.
Prenesite ovaj kod na vašu Arduino tablu korišćenjem dugmeta Upload u IDE-u, i posmatrajte kako se vaš servomotor glatko kreće unazad i naprijed.
Kontrola servomotora sa potenciometrom
Potenciometar je analogni senzor koji može menjati svoju otpornost u zavisnosti od toga koliko okrenete njegovu klipu. Možete koristiti potenciometar kao ulazni uredjaj za kontrolu servomotora.
Da biste kontrolisali servomotor sa potenciometrom, potrebno vam je:
Arduino tabla (kao što je Arduino UNO)
Standardni servomotor (kao što je SG90)
Potenciometar (10k Ohmi)
Skokovi
Breadboard
Dijagram vezivanja za povezivanje potenciometra i servomotora na Arduino tablu prikazan je ispod:
Crveni žic od potenciometra povezuje se na 5V na Arduino tabeli. Crni žic od potenciometra povezuje se na GND na Arduino tabeli. Zeleni žic od potenciometra povezuje se na pin A0 na Arduino tabeli.
Crveni žic od servomotora povezuje se na 5V na drugom redu breadboard-a. Crni žic od servomotora povezuje se na GND na drugom redu breadboard-a. Beli žic od servomotora povezuje se na pin D9 na drugom redu breadboard-a.
Da biste programirali vašu Arduino tabelu, morate koristiti isti kod kao u prethodnom primeru, ali promeniti nekoliko redova:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Kreiraj objekat Servo
int potpin = A0; // Pin povezan sa potenciometrom
int val = 0; // Promenljiva za čitanje vrednosti potenciometra
void setup() {
myservo.attach(9); // Poveži objekat Servo na pin D9
}
void loop() {
val = analogRead(potpin); // Čitaj vrednost sa potenciometra (0 -1023)
val = map(val,0,1023,0,180); // Mapiraj opseg vrednosti (0 -180)
myservo.write(val); // Zapiši mapiranu vrednost u objekat Servo
delay(15); // Čekaj 15 ms
}
Ovaj kod koristi funkciju analogRead(potpin) da procita vrednost sa potenciometra povezanog na pin A0. Zatim koristi funkciju map(val,0,1023,0,180) da mapira opseg vrednosti sa 0 -1023 na 0 -180 stepeni. Zatim zapiše mapiranu vrednost u objekat Servo koristeći funkciju myservo.write(val). Takođe dodaje kašnjenje, kao u prethodnom primeru.
Možete preneti ovaj kod na vašu Arduino tablu korišćenjem dugmeta Upload u IDE-u. Trebalo bi da vidite da se vaš servomotor kreće u skladu sa položajem klipa potenciometra.
Kontrola servomotora sa džojstkijem
Džojstik je digitalni ulazni uredjaj koji može detektovati smer i intenzitet kretanja duž dve ose. Možete koristiti džojstik za kontrolu servomotora mapiranjem x-ose džojstika na ugao servomotora.
Da biste kontrolisali servomotor sa džojstkijem, potrebno vam je sledeće:
Arduino tabla (kao što je Arduino UNO)
Standardni servomotor (kao što je SG90)
Modul džojstika (kao što je KY-023)
Skokovi
Breadboard
Dijagram vezivanja za povezivanje modula džojstika i servomotora na Arduino tablu prikazan je ispod:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Crveni žic od modula džojstika povezuje se na 5V na Arduino tabeli. Crni žic od modula džojstika povezuje se na GND na Arduino tabeli. Zeleni žic od modula džojstika povezuje se na pin A0 na Arduino tabeli.
Crveni žic od servomotora povezuje se na 5V na drugom redu breadboard-a. Crni žic od servomotora povezuje se na GND na drugom redu breadboard-a. Beli žic od servomotora povezuje se na pin D9 na drugom redu breadboard-a.
Da biste programirali vašu Arduino tabelu, morate koristiti isti kod kao u prethodnom primeru, ali promeniti nekoliko redova:
#include <Servo.h> // Uključi biblioteku Servo
Servo myservo; // Kreiraj objekat Servo
int joyX = A0; // Pin povezan sa x-osom džojstika
int val = 0; // Promenljiva za čitanje vrednosti džojstika
void setup() {
myservo.attach(9); // Poveži objekat Servo na pin 9