Управление сервомотором: Пълен водичник
Основни усвоени знания:
Определение на управлението на сервомотора: Управлението на сервомотора позволява прецизно манипулиране на позицията, скоростта и ускорението на мотора чрез електронни сигнали.
Механизъм за обратна връзка: Системата за обратна връзка, обикновено потенциометър или енкодер, гарантира, че изходът на мотора съответства точно на входния сигнал за управление.
PWM сигнал: Широчината на импулса (PWM) е критична за задаване на позицията на сервомотора, като варира продължителността на електрическите импулси.
Arduino и сервомотори: Използването на платка Arduino е популярен и ефективен начин за програмиране и управление на сервомотори с минимална хардуерна конфигурация.
Приложения на сервомоторите: Сервомоторите са необходими за проекти, които изискват точен контрол на позицията, като роботика и автоматизирани системи.
Сервомоторът е мотор, предназначен за висока прецизия и точност при въртене. Той се различава от типичния DC мотор по способността си да поддържа конкретна позиция, вместо да върти непрекъснато. Тази характеристика прави сервомоторите идеални за роботика, автоматизация и хобийни проекти.
Тази статия обяснява как функционира управлението на сервомотора, различните видове сервомотори и различните методи и устройства за управление. Представя се и примери за приложения и проекти с сервомотори.
Какво е сервомотор?
Сервомоторът се дефинира като актуатор, който позволява прецизен контрол на позицията (ъгъл), скоростта и ускорението. Типичният сервомотор се състои от три основни компонента: DC мотор, контролна схема и устройство за обратна връзка.
DC моторът задвижва сервомотора и се свързва с предавки, които намаляват скоростта и увеличават момента на изходния вал.

Изходният вал е частта от сервомотора, която върти и движи товара.
Контролната схема е отговорна за приемане и обработване на входящите сигнали от външен контролер. Тези сигнали дават на сервомотора указания за позиция, скорост или посока. Контролната схема също изпраща енергия към DC мотора, за да го задвижи.
Устройството за обратна връзка обикновено е потенциометър или енкодер, които измерват текущата позиция на изходния вал.

Устройството за обратна връзка предава данни за позицията обратно към контролната схема, която след това коригира мощността на DC мотора, за да съвпадне фактическата позиция с желаната позиция от входния сигнал.
Обратната връзка между контролната схема и устройството за обратна връзка гарантира, че сервомоторът може точно да се движи и да поддържа всяка позиция в рамките на диапазона на движение.
Как да се контролира сервомотор?
Сервомоторите се контролират, като се изпраща PWM (широкост на импулс) сигнал към сигналния лин на сервомотора. PWM е техника, която бързо включва и изключва сигнала, за да се създадат импулси с различна ширина. Широчината на импулсите определя позицията на изходния вал.
Например, когато изпратите PWM сигнал с широчина на импулса 1.5 милисекунди (ms), сервомоторът ще се премести в нейтралната позиция (90 градуса).

Когато изпратите PWM сигнал с широчина на импулса 1 ms, сервомоторът ще се премести в минималната позиция (0 градуса). Когато изпратите PWM сигнал с широчина на импулса 2 ms, сервомоторът ще се премести в максималната позиция (180 градуса).
Честотата на PWM сигнала е 50 Hz, което означава, че се повтаря всеки 20 ms. Широчината на импулсите може да варира от 1 ms до 2 ms в този период.
Има много начини за генериране и изпращане на PWM сигнали към сервомотори. Някои от най-общи методи са:
Използване на платка Arduino или друг микроконтролер
Използване на потенциометър или друг аналогов сензор
Използване на джойстик или друг цифров входен апарат
Използване на специализиран контролер или драйвер за сервомотори
В следващите секции ще разгледаме всеки от тези методи по-подробно и ще видим няколко примера как работят.
Управление на сервомотор с Arduino
Arduino е един от най-популярните платформи за управление на сервомотори. Платките Arduino имат вградени PWM изходи, които могат да се използват за изпращане на сигнали към сервомотори. Arduino има и библиотека Servo, която облекчава написването на код за управление на сервомотори.
За управление на сервомотор с Arduino ще ви трябват:
Платка Arduino (например Arduino UNO)
Стандартен сервомотор (например SG90)
Превключващи жици
Хляб (опционално)
Червената жица от сервомотора се свързва с 5V на платката Arduino. Черната жица от сервомотора се свързва с GND на платката Arduino. Белата жица от сервомотора се свързва с пин 9 на платката Arduino.
За програмиране на платката Arduino ще ви трябва да използвате Arduino IDE (онлайн или офлайн). Можете да използвате един от примерите от библиотеката Servo или да напишете собствен код.
Следният код показва как да се завърти сервомотора назад и напред през 180 градуса, използвайки цикъл for:
#include <Servo.h> // Включете библиотеката Servo
Servo myservo; // Създайте обект Servo
int pos = 0; // Променлива за позиция
void setup() {
myservo.attach(9); // Прикачете обекта Servo към пин 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Цикъл от 0 до 180 градуса
myservo.write(pos); // Запишете позицията в обекта Servo
delay(15); // Изчакайте 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Цикъл от 180 до 0 градуса
myservo.write(pos); // Запишете позицията в обекта Servo
delay(15); // Изчакайте 15 ms
}
}
Този код използва два цикъла, за да увеличава и намалява променливата за позиция от 0 до 180 градуса и обратно. След това записва тази стойност в обекта Servo, използвайки myservo.write(pos). Добавя се и закъснение от 15 ms между всеки стъп, за да забави движението.
Загрузете този код в платката Arduino, използвайки бутонът Upload в IDE, и наблюдавайте как сервомоторът се движи назад и напред гладко.
Управление на сервомотор с потенциометър
Потенциометърът е аналогов сензор, който може да варира съпротивлението си в зависимост от колко завъртите неговия копчето. Можете да използвате потенциометър като входно устройство за управление на сервомотор.
За управление на сервомотор с потенциометър ще ви трябват:
Платка Arduino (например Arduino UNO)
Стандартен сервомотор (например SG90)
Потенциометър (10k Ом)
Превключващи жици
Хляб
Диаграмата за свързване на потенциометър и сервомотор към платката Arduino е показана по-долу:
Червената жица от потенциометъра се свързва с 5V на платката Arduino. Черната жица от потенциометъра се свързва с GND на платката Arduino. Зелената жица от потенциометъра се свързва с пин A0 на платката Arduino.
Червената жица от сервомотора се свързва с 5V на друг ред на хляба. Черната жица от сервомотора се свързва с GND на друг ред на хляба. Белата жица от сервомотора се свързва с пин 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 ms
}
Този код използва функцията analogRead(potpin), за да прочете стойността от потенциометъра, свързан с пин A0. След това използва функцията map(val,0,1023,0,180), за да преобразува диапазона на стойностите от 0 -1023 до 0 -180 градуса. След това записва преобразуваната стойност в обекта Servo, използвайки функцията myservo.write(val). Добавя се и закъснение, както в предходния пример.
Можете да загрузите този код в платката Arduino, използвайки бутонът Upload в IDE. Трябва да видите, че сервомоторът се движи според положението на копчето на потенциометъра.
Управление на сервомотор с джойстик
Джойстикът е цифров входен апарат, който може да детектира посоката и големината на движението по две оси. Можете да използвате джойстик, за да контролирате сервомотор, като съпоставите x-оста на джойстика с ъгъла на сервомотора.
За управление на сервомотор с джойстик ще ви трябват следните:
Платка Arduino (например Arduino UNO)
Стандартен сервомотор (например SG90)
Модул джойстик (например KY-023)
Превключващи жици
Хляб
Диаграмата за свързване на модул джойстик и сервомотор към платката Arduino е показана по-долу:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Червената жица от модул джойстик се свързва с 5V на платката Arduino. Черната жица от модул джойстик се свързва с GND на платката Arduino. Зелената жица от модул джойстик се свързва с пин A0 на платката Arduino.