Сервопривод TowerPro MG995
Сервопривод (сервомотор, серводвигатель, сервомашинка или просто "серво") - часто незаменимый элемент при конструировании всевозможных роботизированных манипуляторов. Например, такие моторы встречаются в моделях с поворачиваемой миниатюрной камерой или служат приводом, создающим движение ноги, руки или головы робота. Аналогичные серводвигатели устанавливаются в игрушечные радиоуправляемые автомобили, где они регулируют поворот передней оси. Способов использования сервомоторов достаточно много.
В своей конструкции, сервомотор сочетает несколько электронных и механических элементов: обычный миниатюрный щеточный двигатель, снижающий скорость и увеличивающий крутящий момент редуктор, датчик положения вала редуктора в виде переменного резистора (потенциометра), и крохотной платы с микросхемой-контроллером. Все его составляющие части размещены в пластиковом корпусе.
Сервопривод отличается от обычных моторов возможностью повернуть вал на определённый заданный угол. Модель MG995 позволяет вращать вал редуктора в двух направлениях - по часовой или против часовой стрелке, в диапазоне от 0 до 170-180°. Точность позиционирования имеет погрешности и зависит от конкретного изделия. Встроенный контроллер на микросхеме AA51880 определяет угол поворота по показаниям потенциометра B5K. В электрической цепи питания серво присутствуют cборки на полевых транзисторах MOSFET - TC4953 и 9926A.
Управление сервомотором MG995
Управление сервомотором осуществляется сигналами широтно-импульсной модуляции (ШИМ). Угол поворота вала редуктора изменяется шириной импульса высокого уровня за каждый промежуток времени. Интервал приёма между импульсами управления у модели MG995 составляет 20 миллисекунд.
У MG995 есть три вывода, два из которых (коричневый "-" и красный "+") соединяются с внешним источником питания, и третий, оранжевый, подключается к контроллеру, генерирующему импульсы переменной ширины. В качестве ШИМ-контроллера может быть применена любая процессорная плата на базе Arduino или другая аналогичная на 5В логике.
Питание MG995
Рабочий ток сервомотора без нагрузки достаточно мал, примерно 170-200 мА. Однако, с увеличением нагрузки на вал вплоть до максимально возможной, а также при резкой смене направления вращения, увеличивается внутренняя нагрузка на электрическую цепь мотора, вследствии чего потребляемый ток может повышаться до пикового значения 1200мА. Во избежании поломок генератора импульсов ШИМ, настоятельно рекомендуется не подключать положительный вывод питания сервопривода непосредственно к микроконтроллеру. Наилучшим вариантом станет использование внешнего источника питания.
Схема рекомендованного подключения сервопривода MG995 к Arduino
Вам потребуется следующие компоненты:
Источник питания постоянного напряжение 7-9 вольт соединяется с бочкообразным разъёмом входного напряжения на плате Arduino. Питание для контроллера можно подать на выводы "Vin" и "GND" с соблюдением полярности. "Минусовые" выводы мотора и платы-контроллера должны быть скоммутированы в одну общую линию. "Плюсовой" вывод мотора подключается к источнику питания постоянного напряжения 4.8-6.6 вольт.
Понимание о том, как же управлять сервомашинкой, приходит с опытом. В качестве примера воспользуйтесь простым программным кодом, написанным для среды разработчика Arduino IDE. Нижеприведённый скетч наглядно демонстрирует возможность поворота вала редуктора от 0 до 180 градусов и обратно в зацикленном режиме. Подключаемая в скетче библиотека Servo значительно облегчает процесс программирования. Текст скетча можно найти в обширной перечне примеров редактора Arduino IDE "Файл->Примеры->Servo->Sweep".
#include "Servo.h"
Servo myservo; // создаем объект servo для управления сервомотором
// двенадцать объектов servo могут быть создано на большинстве плат
int pos = 0; // переменная, сохраняющая позицию сервомотора
void setup() {
myservo.attach(9); // управляющий вывод сервомотора подключен к 9 контакту платы
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // угол поворота от 0 до 180 градусов
// с шагов в 1 градус
myservo.write(pos); // сообщаем сервомотору новую позицию
// из переменной "pos"
delay(15); // ожидаем синхронизацию положения сервомотора
}
for (pos = 180; pos >= 0; pos -= 1) { // угол поворота от 180 до 0 градусов
// с шагов в 1 градус
myservo.write(pos); // сообщаем сервомотору новую позицию
// из переменной "pos"
delay(15); // ожидаем синхронизацию положения сервомотора
}
}
Поэкспериментируйте с вариантом посложнее, в котором управление поворотом ротора синхронизировано с вращением ручки внешнего потенциометра. Соединение Arduino-контроллера и потенциометра представлено на картинке ниже. Текст этого скетча также можно найти в списке примеров редактора Arduino IDE "Файл->Примеры->Servo->Knob".
#include "Servo.h"
Servo myservo; // создаем объект servo для управления сервомотором
int potpin = 0; // аналоговый контакт подключен к потенциометру
int val; // переменная, считывающая значения из аналогового контакта
void setup() {
myservo.attach(9); // управляющий вывод сервомотора подключен к 9 контакту платы
}
void loop() {
val = analogRead(potpin); // считываем значения потенциометра (значения
// между 0 и 1023)
val = map(val, 0, 1023, 0, 180); // преобразовываем его в угол поворота вала
// мотора (значения между 0 и 180)
myservo.write(val); // передаём на мотор команду перемещения вала
delay(15); // ожидаем синхронизацию сервомотора с новым
// положением
}
Габаритные размеры, мм
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru