Сервопривод
Сервопривод – гибрид электрического мотора и потенциометра. Отличие от обычного мотора в том, что сервопривод может поворачивать свой вал на заданный угол и удерживать это положение. Для определения этого положения и отвечает встроенный потенциометр. Основными характеристиками сервопривода являются: угол поворота и момент силы, который характеризует усилие, которое способен преодолеть вал сервопривода при вращении. Для удобства, сервоприводы комплектуются “качалкой” – дополнительной насадкой на вал, позволяющей изменять его вращательное усилие. Угол поворота самого дешёвой и распространённой модели сервопривода (SG90) составляет 180º.
Внешний вид | Изображение на схеме | Основные характеристики |
Масса, m [кг] | ||
Угол поворота, φ [º] | ||
Крутящий момент, M [Н·м] или [кг·см] | ||
Пример подключения к Arduino | ||
Крутящий момент зависит от мощности электромотора сервопривода. Немаловажную роль играет и материал, из которого изготовлены шестерни сервопривода. В дешёвых версиях – шестерни пластиковые, в дорогих – металлические, что положительно сказывается на стойкости к износу. Сервопривод SG90 может питаться от напряжения 4,8 – 9 В и его можно подключать к пину питания 5 В Arduino. Но при больших нагрузках, ток потребляемый сервоприводом возрастает, что может сильно нагружать пин питания, поэтому рекомендуется запитывать его от собственного источника. Дорогие и мощные модели сервоприводов обычно питаются от 12 В, поэтому запитываются исключительно от отдельного источника.
При напряжении 5 В, сервопривод SG90 способен развить крутящий момент в 1,2 кг·см, т.е. он сможет провернуть вал, если к нему будет подвешен груз, массой в 1,2 кг, на расстоянии в 1 см от центра вала. При удалении от центра вала, усилие, которое будет развивать вал будет уменьшаться пропорционально. Например, на расстоянии в 2 см от центра вала, сервопривод сможет провернуть вал с грузом в 0,6 кг, а если расположить подвес на расстоянии 0,5 см, то сервопривод справиться и с грузом в 2,4 кг.
Внутри сервопривода располагается электромотор, который с помощью шестерней передаёт крутящий момент на вал. К валу подсоединён потенциометр, который определяет его текущее положение. Управляющая схема, расположенная внутри сервопривода, координирует действия мотора, получая данные о его положении с потенциометра:
Внутреннее устройство сервопривода |
Сервопривод подключается к любому цифровому пину Arduino и управляется с помощью подачи специальных импульсов. Для управления сервоприводом понадобится специальная библиотека [Servo.h], которая является стандартной и уже присутствует во всех сборках Arduino IDE. Для того, чтобы её подключить в самом начале вашей программы укажите следующую команду:
#include <Servo.h>
Далее необходимо дать имя подключённому сервоприводу (если их несколько, следует давать каждому уникальное имя):
Servo myservo;
В разделе [setup] Вашей программы следует указать пин, к которому подключен сервопривод (если сервоприводов несколько, данная команда прописывается для каждого из них):
myservo.attach(9);
Управлять сервоприводами можно с помощью команды:
myservo.write(val);
где:
- val – угол поворота сервопривода в градусах (можно задать значение от 0o до 180o).
Таким образом, программа, которая повернёт вал сервопривода на 110o будет выглядеть так:
#include <Servo.h> Servo myservo; void setup(){ myservo.attach(9); } void loop(){ myservo.write(110); delay(15); }
Обратите внимание: вал сервопривода не может повернуться мгновенно, поэтому после команды на поворот, следует задать некоторую паузу, в нашем случае для этого была использована команда:
delay(15);
Чаще всего, сервоприводами управляют при помощи джойстика, кнопок или потенциометра, а Arduino используют для преобразования входного управляющего сигнала в выходной сигнал, поворачивающий вал сервопривода на нужный угол:
|
Для того, чтобы посмотреть программный код, который позволит управлять сервоприводом с помощью потенциометра, можно загрузить готовый пример из базы примеров Arduino IDE. Это можно сделать нажав [Файл] → [Примеры] → [Servo] → [Knob].