Многоканальный тестер сервоприводов с индикатором своими руками

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

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


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


    В хоббийной электронике широко применяются системы с управлением при помощи 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 (все двигатели в среднее положение)

    Файлы для скачивания


    Печатная плата
    Прошивка
    Модель для печати корпуса
    И, уж извините, ссылка на основную статью на моем сайте.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 37

      0
      О. С 3D-принтером все самоделки становятся намного лучше, а что за принтер если не секрет?
        0
        Да, 3D-печать для меня сильно все изменила.
        У меня есть своя Prusa I3 от sunhokey и еще доступ к PrintBox One на работе. Обычно на первом печатаю из PLA, а на втором из ABS.
          0
          А в чём (в каком софте) разрабатываете модели для печати? Мне почему-то кажется, что это довольно долгий и нудный процесс.
            0
            SketchUp, наверное, самый простой и бесплатный.
        0
        Прям бальзам на душу. Я уж, грешным делом, думал, что Хабр захватила секта Свидетелей Ардуино. А тут такая качественная статья!
        Каким образом происходит генерация ШИМа? Понимаю, что программно — у Меги8 нет столько аппаратных выходов таймеров. Используете ли при этом таймеры для измерения временных промежутков?
          0
          Спасибо)
          На самом деле на эту тему была моя самая первая публикация на этом ресурсе. Периодически вызывается прерывание, дергается нога и выставляется таймер для следующего вызова с разной длительностью в зависимости от текущего канала. То есть все работает на одном таймере и каналы никак друг на друга никак не влияют, и обрабатывается все достаточно быстро.
          0
          А можно ли сделать серводетектор?
          который выполняет обратную сервотестеру функцию?
          это бывает нужно узнать в каких пределах выдаёт сигнал мозг коптера или приёмник аппы.
            0
            Ага. Мне уже много дополнений накидали, но это что-то новенькое. Можно конечно. Если буду делать новую прошивку, то скорее всего прикручу.
            И можно, конечно, еще осциллографом посмотреть.
              0
              Для этого подойдет логический анализатор. Ну, или, осцилограф, если нужно ещё и уровни сигнала смотреть.
              Я пользуюсь китайским клоном USBee за 13 долларов.
                0
                если на то пошло, то USBee может и управлять сервоприводом. а еще его можно использовать вместо вольтметра или даже для прозвонки, но нужно ли?
                  0
                  Клон стоит очень дёшево, даже дешевле, чем сделать плату из поста, а функционал выше на порядок, почему бы и не купить его себе? Во всяком случае задачу он решает.
                    0
                    вопрос в удобстве.
                0
                Тут ниже уже писали про осциллографы и частотомеры. Еще можно сами «мозги коптера» использовать — у них есть режим калибрации радио, отображающий измеренную частоту по каждому входному каналу.
                0
                Как раз думал заказать аналог на али, но там действительно либо маленький функционал, либо цена завышена. Не увидел в статье вот что, на какой угол можно поворачивать серву? И есть ли в продаже изготовленный Вами тестер?
                  0
                  Где купить нашел, остался вопрос про угол (в смысле градус) поворота.
                    0
                    Все так. Сигнал стандартный, а угол уже от сервомашинки зависит. Самые распространенные примерно на 160 градусов крутятся.
                      0
                      Угол зависит от механической конструкции машинки, есть и многооборотные серво…
                        0
                        То что угол зависит от сервы это понятно, но например вот про такой тестер http://ru.aliexpress.com/item/Servo-Tester-3CH-ECS/32578110399.html?btsid=222828ab-6d5f-47e0-a969-f538a68c9293&ws_ab_test=searchweb201556_0%2Csearchweb201602_4_10048_10047_10037_10017_407_10046_10033_10045_406_10032%2Csearchweb201603_1&spm=2114.30010708.3.1.5SUkjb
                        народ в отзывах пишет, что может поворачивать только на 60 градусов. А если мне нужно тестить сервы которые крутятся на 360?
                          0
                          3.Минимальный шаг изменения длительности — 1мкс. То есть диапазон 0,8-2,3мс разбит на 1500 шагов

                          охватывается весь диапазон работы стандартных серво. если серво крутится на меньший угол, чем заявлено — это проблемы серво. с китайскими тестерами на самом деле тоже проблем не встречал.
                            0
                            видео интересное — https://dev.rcopen.com/forum/f8/topic201833 там диапазон 0,5 — 2,5 по моему… Вы напишите, какой вам диапазон нужен — автор подправит прошивку, я думаю…
                      0
                      Разработка, умно, свежо!
                      Один вопрос, ну почему опять сборка в Китае?!
                        +1
                        Паял сам в печи. Даже платы заказывал в Резоните. При чем тут Китай?
                        Но я надеюсь, что дорасту когда-нибудь до сборки в Китае. Лучше же работать головой, а не руками)
                          –2
                          Не идите в Китай ) уже давно у нас и дешевле и быстрее.
                          Дешевая рабочая сила, которая обеспечивала низкую себестоимость, уже и не такая уж дешевая.
                          P.S. Красивый монтаж.
                            0
                            Все действительно подорожало, но и у нас тоже все цены подняли. Вроде как до сих пор вполне выгодно отдавать производство на сторону.
                            И я не понимаю что в этом плохого и что за необходимость поощрять грязное производство в России?
                            0
                            Насчет сборки в Китае, предварительный расчет 2 запусков: 100 + 100 штук.
                            BOM — 4,6$
                            Стоимость сборки 1 штуки в первой партии 164 рубля
                            Стоимость сборки 1 штуки во второй партии 78 рублей
                            Посчитал для ориентира, дабы понимать — на сейчас сборка, как пром. образцов так и мелкой\крупной серии в Китае — экономически не целесообразна.
                              0
                              Вы видимо имеет точное представление что и сколько стоит на производстве, только я не понял чьи это цены.
                              Было бы круто именно сравнить.
                              (я за монтаж через друзей меньше платил)
                          0
                          Честно говоря — вполне годно, но реально не хватает нескольких вещей:

                          1а) Хорошего DC-DC на плате — для питания серв, и широкого входного диапазона 5-25в
                          или
                          1б) Штатного аккумулятора.
                          и соответственно: поддержку переключения с обычного(5в) на повышеное(6в) на high voltage(7.4) для серв

                          поясню — иной раз на модели проверяешь работу сервы прямо в поле, и реально лишние провода — ЗЛО. Да и на столе, когда собираешь — просто удобнее использовать что-то «все в одном»

                          2) Интерфейс… 6 реглируемых PPM каналов, и отсутствие интерфейса :( Это к сожалению ужасно неудобно. Мелкий экран, и уровни PPM в виде «графической шкалы» по каждому из каналов. Интуитивно — и видно сразу.
                          3) high speed sweep. Очень нужно. Но это легко добавляется програмно в прошивке
                          4) Это было-бы ОЧЕНЬ круто — иметь измеряемое энергопотребление по каналам. Редко, но нужно, и простых способов это сделать — пока вообще нет
                          5) для коптероводов — поддержку oneshot125, но, опять-же, это програмно в прошивке добавляемо.

                          Ну и главное — где и как купить? ) Я готов купить, пусть даже голую плату )
                            0
                            Спасибо большое за столько рекомендаций!
                            У меня и сейчас получилась очень неприятная цена, к сожалению, а с такими наворотами, даже и не знаю во сколько бы это все вылетело.
                            С интерфейсом согласен, надо привыкать, но в целом все нормально отображается и легко читается что и и в каком режиме находится.
                            Сейчас продаю их через свой маленький магазинчик и еще можно купить у моих друзей.
                              0
                              Заказал! Цена в 590руб, для устройства — это копейки. Я вас очень прошу — посмотрите на международный рынок! ~$20 — на том-же rcgroups у вас купят тысячи устройств. Т.к. вы конкурируете с сервотестором за $100!

                              Оформил заказ (olafnew@yandex.ru).
                                0
                                не вздумайте ставить экран! нормальный интерфейс. а удорожание совсем ни к чему. а вот широкий диапазон питания это хорошо, но опять же дорого.
                              0
                              Интересует а сервоприводы которые стоят в широкоформатных принтерах можно этим прибором проверять? Инженеры-наладчики прикупили бы, могу даже дать ссылку на форумом
                                0
                                Боюсь, что нет. Это для простеньких хоббийных машнок только
                                0
                                Насколько сложно добавить поддержку изменяемой частоты обновления? Большинство современных цифровых сервоприводов поддерживают >50 Гц, но не всегда возжно найти их спецификации, да и не всегда можно им доверять. А вот протестировать сервопривод и найти максимально возможную надёжную частоту обновления полезно, когда необходима стабилизация скоростной модели. На низких частотах обновления при высоком уровне стабилизации модель может заметно осциллировать уже на скорости порядка 150 км/ч и приходится поднимать частоту до 200-300 Гц.
                                  0
                                  Можно, но сложновато. только если существенно прошивку переделать.
                                  А можете показать ссылки на такие машинки? Это видимо уже продвинутый уровень какой-то. Я ведь больше с точки зрения «робототехники» ими интересуюсь. У крутых строителей моделей видимо свои требования.
                                    0
                                    Машинки? Говоря о быстрых моделях, я имел в виду самолёты. Например, FunJet Ultra спроектирован для скоростей свыше 200 км/ч. Если имелись в виду многоканальные тестеры приводов, то из примеров до $10, изменяемую частоту поддерживают Andoer HJ Digital Servo Tester (50, 125 или 250Гц) и Hobbymate HBS100 (50, 125, 250, 333Гц или произвольная длина цикла в мс).
                                  –1
                                  Без исходников не тру.
                                    0
                                    Классный проект, Сергей!
                                    От идеи, до готового продукта.
                                    Электроника и 3д печать для быстрого макетирования.

                                    Only users with full accounts can post comments. Log in, please.