Интеллектуальный сервопривод Turnigy TGY-S508H. Описание, разборка и подключение
Интеллектуальный сервопривод — особый класс двигателей предназначенный именно для применения в робототехнике. Они существенно дороже, но предоставляют гораздо больше возможностей разработчику.
Описание
Привычные сервоприводы изначально были предназначены для использования в радиоуправляемых моделях. Они имеют достаточно простую конструкцию и универсальную систему управления. Их часто применяют для строительства различных роботов, но они не отвечают многим требованиям. С другой стороны, есть двигатели, изначально предназначенные для использования в робототехнике. Их условно называют интеллектуальными сервоприводами
Основные особенности двигателей, о которых пойдет речь:
- Удобное крепление, как к корпусу, так и к валу. На корпусе есть сразу 16 отверстий с пазами для гаек (по 8 с каждой стороны). Вал имеет выход на обе стороны двигателя. Это очень удобно и устраняет лишние моменты
- Управление через интерфейс RS485. Это шина, а следовательно двигатели можно подключать друг за другом (до 254 штук). На них даже есть для этого два разъема. То есть каждый следующий подключается к предыдущему и т.д
- Питание от напряжения аккумулятора. Обычные сервы требуют внешнего стабилизатора, а в интеллектуальные сервоприводы встроена схема питания электроники, а сам двигатель питается от аккумулятора
- Обратная связь! Возможно, с этого стоило начать. Они могут сообщать как позицию, так и текущую скорость, температуру и напряжение аккумулятора
- Разные режимы вращения вала. Можно установить либо конкретный угол, либо непрерывно вращать вал с заданной скоростью
Нам для теста достался клон двигателя Dynamixel от Robotis — Turnigy TGY-S508H. Они полностью совместимы с точки зрения протокола и очень похожи по посадочным местам. Стоил он тогда около $28.
Заглянем внутрь?
Разборка
Разобрать его очень просто, достаточно открутить четыре винта.
Редуктор полностью металлический. Хорошо смазан и имеет подшипник. К сожалению, усилие передается только на одну сторону двигателя. На второй стороне только подшипник:
С другой стороны открывается доступ к электронной начинке двигателя. Все это трудно снять и точно сказать, что служит датчиком положения не получится. Видно, что все изготовлено достаточно надежно, а оба разъема двигателя соединены pin to pin.
В целом, качество сборки и конструкция вообще вызывают уважение.
Подключение
Для подключения сервопривода достаточно устройства с интерфейсом RS485 и двухбаночного аккумулятора (либо блока питания на 8В). Мы предпочли использовать для этого Arduino с аккумулятором.
Можно купить готовый преобразователь UART-RS485, но у нас не было время ждать и мы просто взяли популярную микросхему MAX485CSA+T, три резистора по 1к, конденсатор на 0,1мкФ и сделали несложную плату:
С левой стороны пять выводов для подключения к Arduino. Свеху-вниз: 5В, 1, 2, 0 и GND. Разъем справа подключается к сервоприводу. На два нижних контакта необходимо подать питающее напряжение.
После этого достаточно скачать библиотеку (ссылка будет в конце), установить и можно запустить какой-нибудь готовый пример. Вот так выглядит исходный код для Dynamixel_Read:
#include <DynamixelSerial.h> int Temperature,Voltage,Position; void setup(){ Dynamixel.begin(1000000,2); // Inicialize the servo at 1Mbps and Pin Control 2 delay(1000); } void loop(){ Temperature = Dynamixel.readTemperature(1); // Request and Print the Temperature Voltage = Dynamixel.readVoltage(1); // Request and Print the Voltage Position = Dynamixel.readPosition(1); // Request and Print the Position Dynamixel.move(1,random(200,800)); // Move the Servo radomly from 200 to 800 Dynamixel.end(); // End Servo Comunication Serial.begin(9600); // Begin Serial Comunication Serial.print(" *** Temperature: "); // Print the variables in the Serial Monitor Serial.print(Temperature); Serial.print(" Celcius Voltage: "); Serial.print(Voltage); Serial.print(" Volts Position: "); Serial.print(Position); Serial.println(" of 1023 resolution"); Serial.end(); // End the Serial Comunication Dynamixel.begin(1000000,2); // Begin Servo Comunication delay(1000); }
Его немного придется поправить перед использованием. Скорость для сервопривода должна быть 500к!
Как видите, эта программа сначала устанавливает связь с двигателем, меняет его позицию и вычитывает данные. Затем она переключается на скорость связи с компьютером и присылает в монитор COM-порта температуру, напряжение питания позицию и разрешение. Далее снова переключается на работу с двигателем. То есть скорость обмена необходимо поправить в двух местах. Вот и все!
Полезные ссылки
Описание подобного двигателя от Dynamixel
Описание протокола коммуникации
Чертеж двигателя
Библиотека для Arduino
Плата (скачать)
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Метки: dynamixel, gear, robotis, RS485, Turnigy TGY-S508H, интеллектуальный, подколючение, разборка, редуктор, сервопривод, управление Просмотров: 7286