Krmiljenje servomotorja: Kompleten vodnik
Osnovni učinki:
Definicija krmiljenja servomotorja: Krmiljenje servomotorja omogoča točno manipulacijo položaja, hitrosti in pospeška motorja preko elektronskih signalov.
Sistem povratne zveze: Sistem povratne zveze, pogosto potenciometer ali šifrirnik, zagotavlja, da se izhod motorja točno ujema z vhodnim krmiljenjem.
PWM Signal: Širinsko moduliranje impulzov (PWM) je ključno za določanje položaja servomotorja s spreminjanjem trajanja električnih impulzov.
Arduino in servomotorji: Uporaba Arduino plošče je priljubljen in učinkovit način programiranja in krmiljenja servomotorjev z minimalno opremo.
Uporabe servomotorjev: Servomotorji so ključni za projekte, ki zahtevajo točno krmiljenje položaja, kot so robotika in avtomatizirani sistemi.
Servomotor je motor, zasnovan za visoko natančnost in točnost vrtenja. Razlikuje se od tipičnega DC motorja z mojo, da lahko zadrži določen položaj namesto neprekinjenega vrtenja. Ta značilnost servomotorjev jih čini idealnimi za robotiko, avtomatizacijo in hobi projekte.
Ta članek razloži, kako deluje krmiljenje servomotorja, različne vrste servomotorjev in različne metode ter naprave za krmiljenje. Prinaša tudi primere uporab in projektov servomotorjev.
Kaj je servomotor?
Servomotor je definiran kot aktuator, ki omogoča točno krmiljenje položaja (kota), hitrosti in pospeška. Tipični servomotor sestoji iz treh glavnih komponent: DC motor, krmilni krog in naprava za povratno zvezo.
DC motor poganja servomotor in se poveže s prestavljivimi ozubeniki, ki zmanjšajo hitrost in povečajo torzijsko moč na izhodni valjk.

Izhodni valjk je del servomotorja, ki se vrti in premakne breme.
Krmilni krog je odgovoren za sprejemanje in obdelavo vhodnih signalov od zunanjega krmilnika. Ti signali servomotorju povedo, kateri položaj, hitrost ali smer naj doseže. Krmilni krog tudi pošilja energijo na DC motor, da ga poganja.
Naprava za povratno zvezo je običajno potenciometer ali šifrirnik, ki meri trenutni položaj izhodnega valjka.

Naprava za povratno zvezo prenaša podatke o položaju nazaj v krmilni krog, ki nato prilagodi moč DC motorja, da dejanski položaj ustreza želenemu položaju iz vhodnega signala.
Povratna zanka med krmilnim krogom in napravo za povratno zvezo zagotavlja, da servomotor točno premakne in vzdržuje katerikoli položaj znotraj svojega obsega gibanja.
Kako krmiliti servomotor?
Servomotorje krmilimo z oddajanjem PWM (širinsko moduliranega impulza) signala na signalni vod servomotorja. PWM je tehnika, ki hitro vklopa in izklopa signal, da ustvari impulze različnih širin. Širina impulzov določa položaj izhodnega valjka.
Na primer, ko pošljete PWM signal s širino impulza 1,5 milisekund (ms), bo servomotor premaknil v neutralni položaj (90 stopinj).

Ko pošljete PWM signal s širino impulza 1 ms, bo servomotor premaknil v minimalni položaj (0 stopinj). Ko pošljete PWM signal s širino impulza 2 ms, bo servomotor premaknil v maksimalni položaj (180 stopinj).
PWM signal ima frekvenco 50 Hz, kar pomeni, da se ponavlja vsakih 20 ms. Širina impulza se lahko spreminja od 1 ms do 2 ms v tem obdobju.
Obstaja veliko načinov generiranja in oddajanja PWM signalov servomotorjem. Nekateri od najpogostejših metod so:
Uporaba Arduino plošče ali druge mikrokrmilnice
Uporaba potenciometra ali druge analogni senzorke
Uporaba joysticka ali druge digitalne vhodne naprave
Uporaba posebnega krmilnika ali pogona servomotorjev
V naslednjih odsekih bomo podrobneje raziskali vsako od teh metod in videli nekaj primerov, kako delujejo.
Krmiljenje servomotorja z Arduino
Arduino je eden najbolj priljubljenih platform za krmiljenje servomotorjev. Arduino plošče imajo vgrajene izhode PWM, ki se lahko uporabljajo za pošiljanje signalov servomotorjem. Arduino tudi ima knjižnico Servo, ki olajša pisanje kode za krmiljenje servomotorjev.
Za krmiljenje servomotorja z Arduino boste potrebovali:
Arduino ploščo (npr. Arduino UNO)
Standardni servomotor (npr. SG90)
Pripomočke skokovnih vodnic
Breadboard (po volji)
Rdeča vodnica servomotorja se poveže na 5V na Arduino plošči. Črna vodnica servomotorja se poveže na GND na Arduino plošči. Bela vodnica servomotorja se poveže na pin 9 na Arduino plošči.
Za programiranje Arduino plošče boste potrebovali Arduino IDE (spletno ali lokano). Lahko uporabite eno od primerov iz knjižnice Servo ali pišete svojo kodo.
Naslednja koda prikazuje, kako premikati servomotor nazaj in naprej skozi 180 stopinj z uporabo for zanke:
#include <Servo.h> // Vključi knjižnico Servo
Servo myservo; // Ustvari objekt Servo
int pos = 0; // Spremenljivka za položaj
void setup() {
myservo.attach(9); // Pripni objekt Servo na pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Zanka od 0 do 180 stopinj
myservo.write(pos); // Zapiši položaj v objekt Servo
delay(15); // Počakaj 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Zanka od 180 do 0 stopinj
myservo.write(pos); // Zapiši položaj v objekt Servo
delay(15); // Počakaj 15 ms
}
}
Ta koda uporablja dve zanki, da povečuje in zmanjšuje spremenljivko položaja od 0 do 180 stopinj in obratno. Nato zapiše to vrednost v objekt Servo z uporabo myservo.write(pos). Tudi dodaja zamud 15 ms med vsako korakom, da uspori gibanje.
Naložite to kodo na vašo Arduino ploščo z uporabo gumbe Upload v IDE in opazujte, kako se vaš servomotor gladko premika nazaj in naprej.
Krmiljenje servomotorja s potenciometrom
Potenciometer je analogni senzor, ki lahko spreminja svojo upornost glede na to, kako zavrtite njegov gumbo. Potenciometer lahko uporabite kot vhodno napravo za krmiljenje servomotorja.
Za krmiljenje servomotorja s potenciometrom boste potrebovali:
Arduino ploščo (npr. Arduino UNO)
Standardni servomotor (npr. SG90)
Potenciometer (10k Ohm)
Pripomočke skokovnih vodnic
Breadboard
Shema povezovanja potenciometra in servomotorja na Arduino ploščo je prikazana spodaj:
Rdeča vodnica potenciometra se poveže na 5V na Arduino plošči. Črna vodnica potenciometra se poveže na GND na Arduino plošči. Zelena vodnica potenciometra se poveže na pin A0 na Arduino plošči.
Rdeča vodnica servomotorja se poveže na 5V na drugem vrstu breadboarda. Črna vodnica servomotorja se poveže na GND na drugem vrstu breadboarda. Bела проводка сервомотора подключается к пину D9 на другом ряду бредборда.
Для программирования вашей платы Arduino вам нужно будет использовать тот же код, что и в предыдущем примере, но изменить несколько строк:
#include <Servo.h> // Включите библиотеку Servo
Servo myservo; // Создайте объект Servo
int potpin = A0; // Пин, подключенный к потенциометру
int val = 0; // Переменная для чтения значения потенциометра
void setup() {
myservo.attach(9); // Привяжите объект Servo к пину D9
}
void loop() {
val = analogRead(potpin); // Считайте значение с потенциометра (0 -1023)
val = map(val,0,1023,0,180); // Преобразуйте диапазон значений (0 -180)
myservo.write(val); // Запишите преобразованное значение в объект Servo
delay(15); // Подождите 15 мс
}
Этот код использует функцию analogRead(potpin) для считывания значения с потенциометра, подключенного к пину A0. Затем он использует функцию map(val,0,1023,0,180) для преобразования диапазона значений от 0 до 1023 градусов. Затем он записывает преобразованное значение в объект Servo с помощью функции myservo.write(val). Также добавляет задержку, как в предыдущем примере.
Вы можете загрузить этот код на свою плату Arduino, используя кнопку Upload в IDE. Вы должны увидеть, как ваш сервомотор движется в соответствии с положением ручки потенциометра.
Krmiljenje servomotorja z joystickom
Joystick je digitalna vhodna naprava, ki lahko zazna smer in amplitudo gibanja vzdolž dveh osi. Joysticka lahko uporabite za krmiljenje servomotorja tako, da preslikate x-os joysticka v kot servomotorja.
Za krmiljenje servomotorja z joystickom boste potrebovali naslednje:
Arduino ploščo (npr. Arduino UNO)
Standardni servomotor (npr. SG90)
Joystick modul (npr. KY-023)
Pripomočke skokovnih vodnic
Breadboard
Shema povezovanja joystick modula in servomotorja na Arduino ploščo je prikazana spodaj:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Rdeča vodnica joystick modula se poveže na 5V na Arduino plošči. Črna vodnica joystick modula se poveže na GND na Arduino plošči. Zelena vodnica joystick modula se poveže na pin A0 na Arduino plošči.
Rdeča vodnica servomotorja se poveže na 5V na drugem vrstu breadboarda. Črna vodnica servomotorja se poveže na GND na drugem vrstu breadboarda. Bела проводка сервомотора подключается к пину D9 на другом ряду бредборда.
Для программирования вашей платы Arduino вам нужно будет использовать тот же код, что и в предыдущем примере, но изменить несколько строк:
#include <Servo.h> // Включите библиотеку Servo
Servo myservo; // Создайте объект Servo
int joyX = A0; // Пин, подключенный к оси X джойстика
int val = 0; // Переменная для чтения значения джойстика