Прибор для проверки сервоприводов дистанционно управляемых моделей. Проверка усилия сервоприводов Подключение к компьютеру

Схема и описание В основе принципиальной схемы лежит микроконтроллер Attiny2313 . Непосредственно к нему через транзисторы подключен семисегментный трехразрядный индикатор с динамической индикацией. На индикатор выводится текущее значение угла и режим работы. Для управления служат кнопка и энкодер. При нажатии на кнопку включается один из следующих режимов:

  1. приращение угла по 0,1 градусу
  2. по 1 градусу
  3. по 10 градусов
  4. перемещение вала между крайними точками (0 либо 150 градусов)
Энкодер изменяет текущий угол в большую или меньшую сторону, в зависимости от направления вращения. Кнопка и один из выводов энкодера подключены напрямую к внешним прерываниям МК. В момент нажатия на кнопку на пол секунды выводится текущий режим. Во время этих манипуляций на выводе PD6 МК присутствуют импульсы с длительностью от 0,8 до 2,3мс и частотой 50Гц. О самом алгоритме формирования управляющего сигнала я уже писал ранее . Схема имеет возможность питаться от источника постоянного напряжения 5В, либо от 7-12В. Выбор питания задается перемычкой. Если тестер используется для проверки регуляторов, то питется он от самого регулятора.
Конструкция Разработаны подробные чертежи самой платы (конечно, односторонней),…
… сборочный чертеж лицевой…
… и обратной стороны устройства.
Обратите внимание на перемычки J1-J4. Это резисторы с нулевым сопротивлением в корпусе 1210. Сборка и настройка Как видно на чертежах на лицевой стороне находятся исключительно необходимые элементы управления, индикации, а также клеммы для подключения питания. Плату без труда можно изготовить в домашних условиях при помощи ЛУТ (не забудьте сделать рисунок платы зеркальным!). У меня она выглядит вот так:
Для программирования придется припаяться проводами к плате. Я специально развел ноги MOSI, MISO, SCK на индикатор, а на сигнале RESET оставил контактную площадку. При программировании фьюзы менять не надо, файл прошивки, печатная плата и список для покупки - в конце статьи.
Видео работы Видео проверки сервопривода:

Видео проверки бесколлекторного двигателя с регулятором:
Файлы для скачивания Если вы захотите собрать такой же тестер сервоприводов вам понадобится файл

Сервотестер это прибор, предназначенный для проверки работоспособности сервопривода, определения его крайних углов, скорости передвижения, минимального шага, а также рысканья. Он может быть очень полезен строителям роботов, так как позволяет запустить привод и проверить функционирование модели до того как готова управляющая электроника. Подобные штуки используют в магазинах радиоуправляемых моделей для демонстрации покупателям возможностей сервомашинок. Однако, хочется иметь подобную вещь под рукой всегда. Конечно, можно купить самые разные тестеры, но гораздо интереснее сделать самому.

Схема и работа


В основе принципиальной схемы лежит микроконтроллер Attiny2313 . Непосредственно к нему через транзисторы подключен семисегментный трехразрядный индикатор с динамической индикацией. На индикатор выводится текущее значение угла и режим работы. Для управления служат кнопка и энкодер. При нажатии на кнопку включается один из следующих режимов:
1 - приращение угла по 0,1 градусу
2 - по 1 градусу
3 - по 10 градусов
4 - перемещение вала между крайними точками (0 либо 150 градусов)
Энкодер изменяет текущий угол в большую или меньшую сторону, в зависимости от направления вращения. Кнопка и один из выводов энкодера подключены напрямую к внешним прерываниям МК. В момент нажатия на кнопку на пол секунды выводится текущий режим. Во время этих манипуляций на выводе PD6 МК присутствуют импульсы с длительностью от 0,8 до 2,3мс и частотой 50Гц. О самом алгоритме формирования управляющего сигнала я уже писал ранее . Схема имеет возможность питаться от источника постоянного напряжения 5В, либо от 7-12В. Выбор питания задается перемычкой.

Конструкция

Разработаны подробные чертежи самой платы (конечно, односторонней),…


… сборочный чертеж лицевой…

… и обратной стороны устройства.

Обратите внимание на перемычки J1-J4. Это резисторы с нулевым сопротивлением в корпусе 1210.

Сборка и настройка

Как видно на чертежах на лицевой стороне находятся исключительно необходимые элементы управления, индикации, а также клеммы для подключения питания. Плату без труда можно изготовить в домашних условиях при помощи ЛУТ (не забудьте сделать рисунок платы зеркальным!). У меня она выглядит вот так:


Для программирования придется припаяться проводами к плате. Я специально развел ноги MOSI, MISO, SCK на индикатор, а на сигнале RESET оставил контактную площадку. При программировании фьюзы менять не надо, файл прошивки, печатная плата и список для покупки - в конце статьи.

Видео работы

Вместо заключения

В качестве достоинств своего устройства хочется отметить, что не часто у сервотестеров есть индикатор, особенно при стоимости менее 200р. В будущем я хочу добавить в прошивку еще два режима - для определения крайних углов и режим автоматического изменения угла.
И, конечно,

Основной параметр сервопривода развиваемое усилие, но очень часто этот параметр сильно отличается от заявленного. Мы решили протестировать часто используемые двигатели. Для начала протестируем двигатели Microservo 9g, Hitec HS-485 и MG995.

Сервоприводы

При постройке различных роботов важно иметь возможность прикинуть подъемную силу двигателя и потребляемый ток. Обычно, в характеристиках двигателей указывают параметр «torque». Он измерятся в кг/см и показывает сколько килограмм может поднять двигатель при расстоянии от вала до точки приложении силы 10мм. Это усилие с которым двигатель должен удерживать груз, но не двигаться.
Для проверки мы использовали плечо 10см, то есть все показания надо умножать в десять раз. Питание во всех опытах — 5В. Для управления двигателем мы использовали , который делали ранее. За предоставленные весы спасибо автору блога Alex-EXE.ru .

Tower Pro 9g microservo

Пожалуй, самый популярный из-за цены. Мы покупали в интернет магазине DVRobot по 130 рублей/штука. Заявленное усилие — 1,6кг/см. Эти двигатели часто ругают из-за того, что они оказываются слабее чем заявлено.
На нашем проверочном стенде сервопривод выжал 130грамм/10см (то есть 1,3кг/см):

При этом двигатель потреблял ток 500мА. Однако с таким усилием двигатель можно исключительно удерживать вес. Мы решили проверить какой вес он сможет действительно «таскать».
Комфортно он перемещает вес 110 грамм (при плече 10см) и потребляет при этом около 400мА с бросками до 580мА.
В целом, можно сказать что такие характеристики вполне удовлетворительны, но, возможно, в продаже встречается много подделок.

Hitec HS-485

Эти двигатели мы покупали на сайте HobbyKing.com за 16$. Это отличные, надежные цифровые двигатели и они хорошо себя зарекомендовали.
Заявленное усилие при 4,8В — 4,8кг/см. На нашем стенде он показал 4,6кг/см и потреблял при это 780мА:

При этом подвижность он сохраняет развивая усилие 4кг/см. Потребляемый ток колеблется в пределах от 600 до 800мА.

MG995

Это настоящий зверь с усилием 13кг/см при стоимости 330 рублей. По крайней мере так заявляет продавец DVRobot .
Проверим так ли это:

При 5ти-вольтовом питании на стенде он выжимал 8,55кг/см и потреблял при этом аж 1,5А. С одной стороны это меньше, чем заявлено, но с другой, это все же лучшее соотношение усилие/цена.
Нормально такой двигатель может перемещать вес около 7,3кг/см и при этом потребляемый ток составляет около 1А с бросками до 2А.

Здравствуйте!

Для чего это нужно

В хоббийной электронике широко применяются системы с управлением при помощи PWM-сигнала. Это последовательность импульсов с частотой 50Гц. Информация в них кодируется в виде длительности импульсов, которые могут меняться от 0,8 до 2,3мс. Крайние значения этого диапазона могут незначительно отличаться у разных производителей.

Сервоприводы для строительства авиамоделей, гексаподов, манипуляторов и т.д., используют именно такой сигнал. Как правило они имеют три провода - питание, общий и сигнал. Также в авиамоделировании, автомоделировании, коптеростроении регуляторы хода коллекторных и бесколлекторных моторов используют такой же управляющий сигнал, который определяет скорость и направление вращения двигателей.

Источником такого сигнала может служить пульт управления, запрограммированный контроллер или что-то подобное. Но очень часто на этапе строительства бывает удобно применить тестер сервоприводов, который генерирует такой же сигнал в ручном режиме. Это позволяет заранее проверить работоспособность механики, измерить крайние положения и т.д.

Особенности и характеристики нашего прибора

Большинство тестеров, которые сейчас можно купить либо очень просты, либо дорого стоят. Я хотел сделать как можно дешевле, но при этом дать ему максимально широкий функционал. Вот что у меня получилось:
  1. Шесть независимых каналов управления. Именно независимых! Обычно в готовых можно подключить одновременно несколько двигателей, но сигнал на них один и тот же. На моем приборе можно даже запустить один в автоматическом режиме, а остальными управлять по очереди в ручном и т.д.
  2. Формирование сигнала и индикация в микросекундах. В большинстве тестеров индикация отображается не понятно в чем, либо отсутствует вовсе
  3. Минимальный шаг изменения длительности - 1мкс. То есть диапазон 0,8-2,3мс разбит на 1500 шагов
  4. Возможность подключения к ПК. Можно использовать его, например, в паре с Raspberry Pi. Сам сигнал будет формироваться при этом существенно точнее, чем средствами самого одноплатного компьютера
  5. Открытость. В конце статьи вы сможете найти все файлы, необходимые для самостоятельного изготовления тестера
А вот его характеристики:
  1. Напряжение питания - 5В
  2. Потребляемый ток (без сервоприводов), не более - 100мА
  3. Длительность формируемых импульсов - 0,8-2,3мс
  4. Точность установки длительности - 1мкс
  5. Частота следования импульсов - 50Гц
  6. Скорость соединения с ПК - 9600, 8 bits, 1 stop bit

Схема тестера сервоприводов

Работая над схемой я старался максимально удешевить ее и сделать простой в повторении. В качестве управляющего контроллера использован народный контроллер Atmega8A-AU.

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

Разъемы тестера предназначены для подключения самих сервоприводов, программирования, подключения к ПК и питания. Я принял решение не устанавливать на плату стабилизатор питания. То есть для ее использования не получится использовать напряжение аккумуляторов напрямую. Необходимо найти источник или стабилизатор на 5В с током, соответствующим току, потребляемому подключаемыми двигателями.
При проверке связки бесколлекторного двигателя с регулятором оборотов (ESC) сам двигатель питается от аккумулятора. Если у ESC есть встроенный регулятор оборотов, то можно питать тестер прямо от него.

Печатная плата подготовлена в формате Sprint Layout. Это двухсторонняя плата, но я рисовал ее так, чтобы можно было изготовить ее в домашних условиях ЛУТом или фоторезистом, а в переходные отверстия легко можно запаять перемычки с одной стороны платы на другую.

Лицевая сторона платы:

… и обратная:

Я изготавливал эту плату в ручную и все это мной проверено и работает:

Также я провел небольшую кампанию среди подписчиков сообществ Товары из Китая радиолюбителю и нашего местного хакспэйса MakeItLab и нашел людей, которые поддержали выпуск небольшой партии устройств. Пользуясь случаем, хочу выразить им свою благодарность. Вот так выглядит устройство в заводском исполнении:



Список компонентов

Вот полный список со ссылками:
  1. Микроконтроллер Atmega8A-AU в корпусе TQFP44
  2. Трехразрядный семисегментный дисплей с общим катодом BC56-12GWA . Если вы обратили внимание, на плате предусмотрено место для установки другого, существенно более дешевого дисплея с aliexpress
  3. Сдвиговый регистр SN74HC595DR в корпусе SOIC16
  4. Логический транзистор BCR108E6327 в корпусе SOT23 - 3шт
  5. Светодиоды KP-2012SGC, либо любые другие в корпусе 0805 - 6шт
  6. Инкрементальный энкодер EC12E24204A9
  7. Танталовый конденсатор T491C226K016AT (22мкФ-16В, типоразмер C)
  8. Конденсатор 0,1мк в корпусе 0805 - 7шт
  9. Резистор 1кОм в корпусе 0805
  10. Резисторная сборка 1кОм в корпусе 0603×4
  11. Резисторная сборка 300 Ом в корпусе 0603×4 - 3шт
  12. Кнопка без фиксации типа DTSM20-4.3N - 2шт
  13. Клеммная колодка с шагом выводов 5,08 с двумя контактами
  14. Гребенка контактов PLS-40 (всего потребуется 26 штырьков)
  15. Джампер

Корпус

Еще я нарисовал и распечатал на 3D-принтере небольщую оправку и ручку на энкодер. Файлы для скачивания чуть позже.



Прошивка

Файлы прошивки будут в конце статьи. Прошить контроллер можно при помощи любого ISP-программатора через стандартный 6ти-пиновый разъем. На плате шесть из восьми контактов слева от энкодера предназначены в первую очередь именно для этого.
Фьюз-биты необходимо установить так, как показано на рисунке:

Работа тестера

Проще, конечно, один раз увидитеть:

Для запуска тестера в ручном режиме управления необходимо, чтобы перемычка «PC/Manual» при включении питания была установлена.

При запуске в ручном режиме на дисплее высветиться приветствие «HI» и тестер перейдет в режим ожидания выбора пользователем начальной длительности сигнала. Грубо говоря, от края или от середины диапазона. При нажатии на левую кнопку управление будет происходить от нуля, при нажатии на правую - от середины. После нажатия на одну из кнопок начнется генерирование сигнала, активным станет первый канал и он перейдет в режим «1».

В рабочем режиме кнопка MODE переключает режимы управления, меняя шаг приращения. Отображение текущего режима происходит при помощи шести светодиодов. Возможны четыре ручных режима (шаг 0,1; 1; 10 и от 0 до 150, то есть между краями диапазонов) и два автоматических (старт/стоп). Длительное нажатие на кнопку MODE переводит канал в режим автоматического управления и двигатель начинает плавно качаться из стороны в сторону. Короткое нажатие кнопки MODE в автоматическом режиме останавливает или возобновляет движения. Длинное нажатие на кнопку MODE возвращает канал в режим управления энкодером.

Кнопка CHANNEL производит переключение между активными каналами. Отображение текущего активного канала происходит на дисплее в двоичном коде при помощи разрядных точек. Длинное нажатие на эту кнопку переводит тестер в режим формирования одинаковых импульсов на всех каналах.

Обратите внимание, что на индикаторе отображаются цифры от 0 до 150. Это примерно соответствует углу сервопривода и может быть пересчитано в длительность импульса. Для пересчета достаточно умножить показания на десять и прибавить 800. Например, если на индикаторе десять, значит длительность импульсов 900мкс.

Подключение к компьютеру

Если вы используете Raspberry Pi, то вы можете просто подключить Rx, Tx и GND в левой нижней части платы. Если у вас нет TTL-совместимого COM-порта в вашем компьютере, то вы можете использовать USB-COM-переходник, которые стоят очень дешево. Также вы можете взять напряжение 5В USB-порта, но помните, что его максимальный ток 500мА! Скорость подключения - 9600.
Для того, чтобы тестер загрузился в режиме управления от ПК необходимо включить его без перемычки. При этом на индикаторе отобразятся буквы «PC» и тестер перейдет в режим ожидания команд от ПК. До прихода первого полного пакета на всех каналах сигнал будет отсутствовать.

Значения длительности импульсов необходимо отправлять в микросекундах от 0 до 1500. То есть на каждый канал расходуется два байта.

Пакет данных должен состоять из 16ти байт: сначала два байта 0xFF для обозначения начала пакета, затем 12 байт длительностей импульсов для каждого канал и в конце два байта check-суммы. Check-сумма необходима для проверки корректности пакета и должна быть равна сумме всех длительностей.

1ый байт - 255 (0xFF)
2ой байт - 255 (0xFF)
3ий байт - старший байт первого канала
4ый байт - младший байт первого канала
5ий байт - старший байт второго канала
6ый байт - младший байт второго канала
7ий байт - старший байт третьего канала
8ый байт - младший байт третьего канала
9ий байт - старший байт четвертого канала
10ый байт - младший байт четвертого канала
11ий байт - старший байт пятого канала
12ый байт - младший байт пятого канала
13ий байт - старший байт шестого канала
14ый байт - младший байт шестого канала
15ый байт - старший байт check-суммы
16ый байт - младший байт check-суммы

Примеры корректных пакетов (в десятичной системе):
255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (все двигатели в начальное положение)
255 255 2 238 0 0 0 0 0 0 0 0 0 0 0 240 (первый двигатель в среднее положение)
255 255 2 238 2 238 2 238 2 238 2 238 2 238 17 148 (все двигатели в среднее положение)



Публикации по теме