пятница, 29 апреля 2016 г.

Тест сервомотора….

Прошло уже четыре месяца как начал осваивать ардуино с нуля (начало изучения как раз приходиться на начало января 2016 года). Как говориться уже успел разобраться со многим: и с программированием, и с датчиками. Вот наконец подошло время и для сервомотора. Модуль у меня самый что ни на есть простейший и самый наверно недорогой - TowerPro SG90. Для начала давайте познакомимся с его техническими данными:


Технические характеристики
- рабочее напряжение: 3,5-6В
- диапазон вращения: 180°
- скорость вращения без нагрузки при 4,8В: 60° за 0,12с
- скорость вращения без нагрузки при 6В: 60° за 0,10с
- максимальный крутящий момент: 1,6 кг·см
- габаритные размеры ДхШхВ: 23х12х29мм
- вес: 9г

Механизм сервопривода выполнен из пластика. В комплекте с сервоприводом идёт комплект крепежа и пластиковых качелек. Для подключения сервопривода не требуется силового драйвера. То есть наш сервомотор можно подключить напрямую к плате ардуино. Но еще нужно разобраться какие провода сервомотора куда подключать.


В моем случае сервомотор имеет три разноцветных провода, которые нужно подключить к источнику питания (+5 В), земле (GND) и к управляющему пину ардуино. Соответственно серый провод подключается к земле, желтый к 9 пину ардуино, оранжевый к +5 В. Схема подключения сервомотора к ардуино несложная, но на всякий случай нарисую ее. Самое главное это не только подключить сервомотор, но так же еще научиться управлять им. Для начала используем переменный резистор, поворачивая его мы будем изменять его сопротивление и при этом сервомотор будет поворачиваться на заданный угол.
Конечно же управлять сервомотором дело сложное. Но за нас уже подумали и написали библиотеку: «Servo.h», искать ее не нужно: так как она уже входит в стандартную библиотеку. Так что смело подключаем ее в скетче. Да и сам скетч привожу ниже:


#include <Servo.h> // подключаем библиотеку сервы
#define POT_MAX_ANGLE 200.0 // макс. Угол поворота ручки потенциометра в градусах
Servo myServo;

void setup() {
myServo.attach(9); // подключаем серву к 9 пину
}

void loop() {
int val = analogRead (A0); // считываем данные с потенциометра
int angle = int (val/1024.0*POT_MAX_ANGLE); // рассчитываем угол поворота серва
angle = constrain(angle,0,180); // ограничиваем угол поворота от 0 до 180
myServo.write(angle); // даем команду серве задать угол поворота
}

 Вот и все! Загружаем скетч в микроконтроллер, и начинаем тестирование. Действительно с помощью поворота ручки переменного резистора мы управляем углом поворота сервомотора в пределах от 0 до 180 градусов. Все получилось удачно и отлично все работает, чего желаю и всем читателям.


Комментариев нет:

Отправить комментарий