Содержание
- Обзор
- Технические характеристики
- Подключение к плате Arduino
- Пример использования
- Часто задаваемые вопросы
Обзор сервопривода MG995
Сервопривод – это устройство, которое обеспечивает преобразование сигнала в строго соответствующее этому сигналу перемещение (поворот) исполнительного устройства. Представляет собой прямоугольную коробку с мотором, схемой и редуктором внутри и выходным валом, который может поворачиваться на строго фиксированный угол, определяемый входным сигналом. Существует очень много видов сервоприводов, которые различаются габаритами, материалом шестеренок (пластмасса, металл), способом управления ( аналоговые и цифровые), скоростью вращения вала, крутящим моментом, диапазоном поворота (120°, 180°, непрерывного вращения). Сервоприводы MG995 (рис. 1) обладают хорошим крутящим моментом до 13 кг/см, металлическими шестернями и поэтому часто используются в авиамоделизме, в робототехнике (например, поворот головы или руки робота).
Рисунок 1. Сервопривод MG995.
Технические характеристики MG995
- Рабочее напряжение – 4.8-7.2 В
- Угол поворота 120 градусов
- Крутящий момент – 8,5 кг/см (при 4.8 В), 10 кг/см (при 6 В)
- Скорость – 0,20 сек/60° (при 4,8 В), 0,16 сек/60° (при 6 В)
- Материал шестерней – металл
- Вес – 55 г
- Размер – 40х20х42 мм
Подключение к плате Arduino
Для подключения сервопривода используют 3 провода:
- красный провод – питание (внешний стабилизированный источник питания 4.8-7.2 В);
- черный провод –к выводу Arduino GND;
- оранжевый – сигнальный (подключается к цифровому ШИМ выводу контроллера Arduino) (см. рис. 2).
Рисунок 2. Подключение сервопривода к плате Arduino.
Для управления сервоприводами с помощью Arduino в Arduino IDE есть стандартная библиотека Servo.h, которая включает в себя функции для установки настроек сервопривода, необходимого угла, считывания состояния.
В листинге 1 представлен скетч вращения сервопривода от 0 до 120° с шагом 1°, а затем в обратную сторону.
Листинг 1
// подключение библиотеки Servo #include <Servo.h> // создать объект servo Servo servo1; // пин для подключения сервопривода const int pin_servo=9; // макс значение угла поворота const int angle_max=120; // для хранения текущей позиции сервопривода int angle = 0; // для хранения направления 1 или -1 dir=1; void setup() { // подключить управление сервоприводом к пину pin_servo servo1.attach(pin_servo); } void loop() { for(;;) { // команда установки положения сервопривода servo1.write(angle); // время на перемещение сервопривода delay(15); // if(angle==0) dir=1; else if(angle==angle_max) dir=-1; angle=angle+dir; } }
Результат работы скетча – сервопривод медленно вращается в одну сторону, затем в другую.
Пример использования MG995
В качестве примера рассмотрим использование сервопривода для управления клешней для захвата банок 0.33 л. в качестве экрана часов.
Нам потребуются следующие компоненты:
- Плата Arduino Uno – 1 шт
- Плата прототипирования – 1 шт
- Сервопривод MG995 – 1 шт
- Робоклешня – 1 шт
- Потенциометр 10кОм
- Блок питания 5В – 1 шт
- Провода
Схема соединения элементов показана на рис. 3.
Рисунок 3. Подключение клешни с сервоприводом к плате Arduino.
Рисунок 4. Схема в сборе.
Поворотом потенциометра, и соответственно поворотом сервопривода будем захватывать и отпускать банку. Содержимое скетча представлено в листинге 2.
Листинг 2
// подключение библиотеки Servo #include <Servo.h> // создать объект servo Servo servo1; // пин для подключения сервопривода const int pin_servo=9; // макс значение угла поворота const int angle_max=120; // для хранения текущей позиции сервопривода int angle = 0; // направление 1 или -1 dir=1; void setup() { // подключить управление сервоприводом к пину pin_servo servo1.attach(pin_servo); } void loop() { // получаем значение положения потенциометра int val=analogRead(pin_pot); // масштабирование к максимальному размаху сервопривода int angle_t=map(val,0,1023,0,angle_max); // при изменении - перемещение if(angle_t!=angle_last) { // команда установки положения сервопривода servo1.write(angle_t); // время на перемещение сервопривода delay(15); angle_last=angle_t; } }
Рисунок 5. Плата в работе.
Загружаем скетч на плату и проверяем работу.
Часто задаваемые вопросы
- Проверьте правильность подключения контактов сервопривода.
- Проверьте наличие достаточного внешнего питания сервопривода.
- Проверьте правильность подачи команд на перемещение.
- Проверьте наличие достаточного внешнего питания сервопривода.