s.Bus декодер для расширения числа каналов v2
Что изменилось
Во-первых, декодер стал программируемым. Теперь настройки декодера заливаются с компьютера при помощи специального приложения(прилагается вместе с исходниками). Логика моих рассуждений была такова: если человек, собравший этот декодер, имеет техническую возможность подключить его к компьютеру через USB-to-TTL преобразователь для заливки прошивки из среды Arduino IDE, то эту же техническую возможность он сможет использовать и для его настройки.
В декодере сохранилось изначальное разделение каналов на два банка. В новой прошивке каждый банк независимо от другого может генерировать как сигнал на сервоприводы (до восьми штук в каждом банке), так и суммарный PPM сигнал.
Выходами теперь можно управлять – можно настроить вывод любого канала на любой выход декодера. Каналы при этом можно дублировать. При желании, например, можно вывести канал газа хоть на все 16 выходов декодера.
В различных полетных контроллерах я встречал функцию «возврат домой». Интересна она с точки зрения возврата модели в точку старта при пропадании сигнала с пульта управления. Для активации этого режима удобно использовать функцию failsafe приемника. В новой версии декодер позволяет выводить сигнал failsafe в виде обычного ШИМ-сигнала (как на серву) на любой вывод.
Как и прежде, прошивка микроконтроллера заливается при помощи Arduino IDE. Приложение для настройки декодера с компьютера написано на c# в Microsoft Visual Studio 2010 и для работы требует наличие на компьютере NET Framework 2.0. Все исходные коды прилагаются.
Теперь немного подробнее.
Основные характеристики:
- подключение до 16 сервоприводов
- генерация до 2-х независимых сигналов PPM
- кодирование до 16 каналов в каждом PPM
- возможность переназначать каналы s.Bus в любые выходы декодера и/или на любое место PPM сигнала
- возможность использования одного канала с аппаратуры для нескольких выходов
- возможность одновременного вывода до 8-ми любых каналов PWM и до 16-ти каналов PPM
Допустим, схема собрана, прошивка залита. Подключаем декодер к компьютеру через USB-to-TTL преобразователь. После этого запускаем приложение SBUSDecoderCFG.exe для настройки декодера. Вы увидите на экране такое окно:
Первым делом в левом верхнем углу выбираем из выпадающего списка COM-порт, соответствующий подключенному декодеру, аналогично тому, как это делается в Arduino IDE. Кнопки «Read» и «Write» позволяют соответственно считать и записать конфигурацию из/в память декодера.
Далее, собственно, о настройках… Я опишу настройки на примере банка А, подразумевая, что для банка Б они производятся аналогично. Банки работают абсолютно независимо друг от друга и взаимного влияния каких либо настроек между ними нет.
Галка PPM. Если она не установлена, то банк генерирует управляющие сигналы для сервоприводов в количестве до восьми штук. Если галка стоит, то на втором выходе каждого банка (Ch1 для А и Ch9 для Б) будет генерироваться PPM-сигнал. Остальные выходы банка при этом никакого сигнала выводить не будут.
Выпадающий список «Frame». При помощи этого выпадающего списка задается длина фрейма для PPM или частота ШИМ для сервоприводов. Значение указывается в миллисекундах. Для сервоприводов рекомендую устанавливать значение 20мс, что соответствует частоте 50Гц.
Выпадающий список «Channels». При помощи этого выпадающего списка можно указать, сколько каналов будет выводиться в данном банке. Для режима вывода PPM максимальное число каналов рассчитывается из длины фрейма автоматически. Но при этом можно указать и меньшее число.
Выпадающие списки «Ch1» - «Ch16». Здесь номер Ch указывает на позицию сигнала в банке, а выпадающий список позволяет выбрать номер канала в шине s.Bus. Таким образом можно коммутировать любые каналы, передаваемые с пульта, на любые выводы декодера.
В выпадающем списке каждого выхода помимо номера канала можно выбрать значение «FS». Выбор этого значения говорит о том, что на этом выходе будет выводиться сигнал failsafe. Сигнал будет выводиться в виде ШИМ с длинной импульса 1000мкс или 2000мкс.
В итоге получился декодер, который на основании данных с шины s.Bus может управлять 16-ю сервами или управлять 8-ю сервами и генерировать PPM-сигнал до 16-ти каналов или параллельно генерировать 2 PPM-сигнала до 16 каналов в каждом. При этом допускается переназначение каналов.
Для первоначальной настройки декодера сразу после сборки и прошивки надо выполнить следующие действия:
- запустить на ПК конфигуратор
- выбрать COM-порт
- нажать кнопку Write.
Последовательность должна быть именно такой. Пока EEPROM не инициализирована, нажатие кнопки Read приведет к "зависанию" приложения. После первой инициализации можно читать/писать конфигурацию как угодно.
Внимание! Не все приемники выдают в шину s.Bus сигнал потери связи. Особенно грешат этим «китайские поделки». Проверяйте правильность выходных сигналов для Вашего приемника.
Для включения декодера в режиме работы с конфигуратором (соединение с ПК) необходимо замкнуть контакт Arduino A4 на землю (GND) и перезагрузить микроконтроллер.
Скачать с GitHub: https://github.com/mactep8/SBus_Decoder
Для теста установил следующие настройки:
Для наглядности снял картинку результата с моего USB-осциллографа:
Синий канал показывает третий канал банка А, а красный - PPM банка B.
О всех найденных багах сообщайте через форму обратной связи. |