Привет всем!
Хочу поделиться очередной своей разработкой - тестером сервоприводов. По сути, это генератор стандартных для хоббийной электроники PWM-сигналов, который позволит проверить механику в ручном режиме до того, как у вас готова основная электроника, либо может быть использован совместно с компьютером для управления вашим роботом. В этом посте вы найдете подробное описание конструкции, а так же все файлы, необходимые для его самостоятельного изготовления.
Хочу поделиться очередной своей разработкой - тестером сервоприводов. По сути, это генератор стандартных для хоббийной электроники PWM-сигналов, который позволит проверить механику в ручном режиме до того, как у вас готова основная электроника, либо может быть использован совместно с компьютером для управления вашим роботом. В этом посте вы найдете подробное описание конструкции, а так же все файлы, необходимые для его самостоятельного изготовления.
На всякий случай напомню, что аппаратуре радиоуправления сигнал с чатотой 50Гц и длительностью 0,8-2,3мс (может отличаться немного у разных производителей) стал стандартом дефакто. Тестер генерирует именно этот сигнал. Когда строишь РУ модель или какого-нибудь робота, то бывает удобно использовать этот тестер для проверки, если нет аппаратуры или электроники для робота. Или надо просто быстро проверить работоспособность.
Предыстория проекта
Началось все с того, что я сделал линейку радиолюбителя:
С этим проектом мне помогли ребята из группы в контакте Товары из Китая радиолюбителю. Я провел у них небольшую кампанию по сбору средств и мы выпустили партию этих штук.
После этого я вспомнил о другом своем старом проекте - тестере сервоприводов (только там все редактирование слетело). Он был неплох, но там были косяки и он не у всех сразу собирался. Поэтому я решил попробовать сделать раз и навсегда действительно хороший тестер. Со сбором средств на его выпуск мне уже помогали ребята из местного хакспейса MakeItLab.
Фичи нового тестера сервоприводов:
Технические характеристики
Работая над схемой я старался максимально удешевить ее и сделать простой в повторении. В качестве управляющего контроллера использован народный контроллер Atmega8A-AU.
Трехразрядный семисегментный дисплэй подключается через сдвиговый регистр и логические транзисторы. Шесть светодиодов служат для отображения текущего режима и подключены они методом так называемого чарлиплексирования для экономии выводов МК.
Для управления использован обычный инкрементальный энкодер и две кнопки. Энкодер управляет установленным углом, а кнопки переключают режим управления и текущий канал. Везде стоят конденсаторы от дребезга контактов, так что все это работает очень даже четко.
Разъемы тестера предназначены для подключения самих сервоприводов, программирования, подключения к ПК и питания. Я принял решение не устанавливать на плату стабилизатор питания. То есть для ее использования не получится использовать напряжение аккумуляторов напрямую. Необходимо найти источник или стабилизатор на 5В с током, соответствующим току, потребляемому подключаемыми двигателями.
Печатная плата
Печатная плата подготовлена в формате Sprint Layout. Это двухсторонняя плата, но ее характеристики вполне позволяют изготовить ее в домашних условиях ЛУТом или фоторезистом, а в переходные отверстия легко можно запаять перемычки с одной стороны платы на другую.
Все файлы для скачивания будут в конце статьи.
Некоторую сложность, с точки зрения припаивания, представляют только резисторные сборки в корпусе 0603×4. Также обратить внимание стоит на полярность светодиодов, которые установлены навстречу друг другу.
Я сначала сделал прототип у уверен, что все это изготовить в домашних условиях более чем реально.
Список компонентов
Еще я нарисовал и распечатал на 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 (все двигатели в среднее положение)
Файлы для скачивания
Печатная плата
Прошивка
Модель для печати корпуса
P.S.: уж извините за небольшую рекламу, но сейчас эту штуку можно купить здесь, здесь и здесь.
Готов максимально помочь в сборке! Мою почту можно найти на моем основном сайте.
Спасибо за внимание!
Предыстория проекта
Началось все с того, что я сделал линейку радиолюбителя:
С этим проектом мне помогли ребята из группы в контакте Товары из Китая радиолюбителю. Я провел у них небольшую кампанию по сбору средств и мы выпустили партию этих штук.
После этого я вспомнил о другом своем старом проекте - тестере сервоприводов (только там все редактирование слетело). Он был неплох, но там были косяки и он не у всех сразу собирался. Поэтому я решил попробовать сделать раз и навсегда действительно хороший тестер. Со сбором средств на его выпуск мне уже помогали ребята из местного хакспейса MakeItLab.
Фичи нового тестера сервоприводов:
- Шесть независимых каналов. Обычно в готовых можно подключить одновременно несколько двигателей, но сигнал на них один и тот же. У моего можно даже запустить один в автоматическом режиме, а остальными управлять по очереди в ручном
- Формирование сигнала и индикация в микросекундах. В большинстве тестеров индикация отображается не понятно в чем, либо отсутствует вовсе
- Минимальный шаг изменения длительности — 1мкс. То есть диапазон 0,8-2,3мс разбит на 1500 шагов
- Возможность подключения к ПК. Можно использовать его, например, в паре с Raspberry Pi. Сам сигнал будет формироваться при этом существенно точнее, чем средствами самого одноплатного компьютера
- Открытость! Я выложу все файлы и вы сможете сами его изготовить
Технические характеристики
- Напряжение питания - 5В
- Потребляемый ток (без сервоприводов), не более - 100мА
- Длительность формируемых импульсов - 0,8-2,3мс
- Точность установки длительности - 1мкс
- Частота следования импульсов - 50Гц
- Скорость соединения с ПК - 9600, 8 bits, 1 stop bit
Работая над схемой я старался максимально удешевить ее и сделать простой в повторении. В качестве управляющего контроллера использован народный контроллер Atmega8A-AU.
Трехразрядный семисегментный дисплэй подключается через сдвиговый регистр и логические транзисторы. Шесть светодиодов служат для отображения текущего режима и подключены они методом так называемого чарлиплексирования для экономии выводов МК.
Для управления использован обычный инкрементальный энкодер и две кнопки. Энкодер управляет установленным углом, а кнопки переключают режим управления и текущий канал. Везде стоят конденсаторы от дребезга контактов, так что все это работает очень даже четко.
Разъемы тестера предназначены для подключения самих сервоприводов, программирования, подключения к ПК и питания. Я принял решение не устанавливать на плату стабилизатор питания. То есть для ее использования не получится использовать напряжение аккумуляторов напрямую. Необходимо найти источник или стабилизатор на 5В с током, соответствующим току, потребляемому подключаемыми двигателями.
Печатная плата
Печатная плата подготовлена в формате Sprint Layout. Это двухсторонняя плата, но ее характеристики вполне позволяют изготовить ее в домашних условиях ЛУТом или фоторезистом, а в переходные отверстия легко можно запаять перемычки с одной стороны платы на другую.
Все файлы для скачивания будут в конце статьи.
Некоторую сложность, с точки зрения припаивания, представляют только резисторные сборки в корпусе 0603×4. Также обратить внимание стоит на полярность светодиодов, которые установлены навстречу друг другу.
Я сначала сделал прототип у уверен, что все это изготовить в домашних условиях более чем реально.
Список компонентов
- Микроконтроллер Atmega8A-AU в корпусе TQFP44
- Трехразрядный семисегментный дисплей с общим катодом BC56-12GWA. Если вы обратили внимание, на плате предусмотрено место для установки другого, существенно более дешевого дисплея с aliexpress
- Сдвиговый регистр SN74HC595DR в корпусе SOIC16
- Логический транзистор BCR108E6327 в корпусе SOT23 — 3шт
- Светодиоды KP-2012SGC, либо любые другие в корпусе 0805 — 6шт
- Инкрементальный энкодер EC12E24204A9
- Танталовый конденсатор T491C226K016AT (22мкФ-16В, типоразмер C)
- Конденсатор 0,1мк в корпусе 0805 — 7шт
- Резистор 1кОм в корпусе 0805
- Резисторная сборка 1кОм в корпусе 0603×4
- Резисторная сборка 300 Ом в корпусе 0603×4 — 3шт
- Кнопка без фиксации типа DTSM20-4.3N — 2шт
- Клеммная колодка с шагом выводов 5,08 с двумя контактами
- Гребенка контактов PLS-40 (всего потребуется 26 штырьков)
- Джампер на 2,54мм
Еще я нарисовал и распечатал на 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 (все двигатели в среднее положение)
Файлы для скачивания
Печатная плата
Прошивка
Модель для печати корпуса
P.S.: уж извините за небольшую рекламу, но сейчас эту штуку можно купить здесь, здесь и здесь.
Готов максимально помочь в сборке! Мою почту можно найти на моем основном сайте.
Спасибо за внимание!
Тоже похожее делал с ЖК экраном, так на макетке и остался не доведенный до ума.
Была еще идея отсекать остановку движка сервы по помехам от щеток для измерения времени поворота сервы, может в следующем проекте реализуете такой функционал. Не знаю насколька такая функция полезна но была такая идея.
зы: Еслли че - это самодельный сервотест с тахометром.
Кнопки "садить" на землю через транзюки тиипа BCR, которые управляются от "MANUAL" например.
Чтобы шаловливые ручки не коротили Rx и Tx на "змлю" в режиме "AUTO".
Я смотрел 1602, возможно 1202 подешевле будет.
Если честно, на таких простых устройствах мне проще сразу плату делать. Там же ничего нет, что нужно проверять на мекетке)
А семисегментники я просто часто в других проектах использую, поэтому у меня их мешок. Вот и сюда пристроил. Если кроме угла ничего отображать не надо, то вполне достаточно. Но вот измерение скорости - крутая фича.
Поэтому, извините, вы предлагаете красивую, но бесполезную вещь.
Серьезно? Проблема деланья чего-то состоит в том, что надо что-то делать?
Как правило интернет-магазины вполне готовы обсуждать проблемы с работоспособностью товара, который они продают. И я вижу применение утройства существенно шире, чем входной контроль покупок.
Бесполезную для кого? Для вас?
А то, что эта фишка делает, можно собрать на простой цифровой микросхеме без сложной логики. Заменить сопротивление на потенциометр и все дела.
Мне хотелось сделать отличный нафаршированный прибор, просто потому, что я мог, и я его сделал. Да, тому кто строит авиамодели это покажется избыточным, но для проекта типа такого использование хорошего тестера сервоприводов вполне оправдано. Ни в коем случае не пытаюсь умалить чьи-то заслуги.
Что же касается "такого" (робота), то, насколько я понимаю, для точного выполнения команд нужны шаговые двигатели, а не сервы. Но это уже дело тех, кто этим увлекается.
но всё равно интересно,на новой элемнтной базе, здесь можно наворочить больше функций ...