Каталог
|
Переделка USB-симулятора полета в пульт радиоуправления на основе Arduino2020-01-27 Все статьи →Автор: Антон Царицынский 1 КомпонентыUSB-симуляторы полета используют совместно со специальными компьютерными программами-симуляторами (например, FMS, рис. 1) для наработки или поддержания навыков пилотирования авиамоделями.
Рис. 1 – Flight Model Simulator У меня в наличии был простейший четырехканальный FS-SM020 с возможностью триммирования по всем каналам (рис. 2).
Рис. 2 – Симулятор полета FS-SM020 автора Вскрытие показало (рис. 3), что корпус имеет множество отверстий, скрытых под наклейками, для установки дополнительных органов управления, разъема питания; кроме того, внутри достаточно места для воплощения идей, описанных далее.
Рис. 3 – Первое вскрытие Электронная часть, за исключением четырех потенциометров, подлежала удалению (рис. 4).
Рис. 4 – После удаления всего ненужного Функциональность пульта определил так:
Дальше постепенно вырисовалось все необходимое «железо»:
Рис. 5 – Система питания пульта Питается пульт от одного литиево-ионного аккумулятора типоразмера 18650, расположенного в батарейном отсеке. Для контроля заряда-разряда аккумулятора использован модуль на основе микросхемы TP4056. Необходимое напряжение (5V) формирует повышающий стабилизатор. Между ним и контроллером заряда-разряда установлен тумблер для отключения питания. Базовая схема системы питания показана на рис. 6.
Рис. 6 – Базовая схема системы питания С наличием стабильного питания можно было двигаться дальше и разместить все вышеперечисленное внутри корпуса выпотрошенного симулятора (рис. 7–16).
Рис. 7 – Собрали все вместе
Рис. 8 – Вид на систему питания. Здесь и далее широко используются стяжки и Его величество термоклей
Рис. 9 – Небольшое дополнение в системе питания: гнездо 2,1-5,5мм для кабеля
Рис. 10 – Большое дополнение к системе питания: белый провод, идущий через резистор 10кОм к ARDUINO Pro Mini для контроля уровня заряда аккумулятора
Рис. 11 – Адаптер и радиомодуль с антенной. Для обеспечения возможности присоединять антенну пришлось расширить отверстие, через которое ранее проходил USB-кабель
Рис. 12 – Энкодер
Рис. 13 – Вид на ARDUINO Pro Mini. Макетная плата под ней посажена на термоклей
Рис. 14 – По центру – пьезоэлемент
Рис. 15 – Отгородил систему питания от проводов
Рис. 16 – Контроллер заряда-разряда аккумулятора развернут светодиодом к лицевой стороне корпуса. Через отверстие, прорезанное в наклейке, можно следить за окончанием процесса зарядки (красный – заряжается, зеленый – зарядка окончена) Схема пульта показана на рис. 17.
Рис. 17 – Схема пульта Свободный батарейный отсек, который также имеется в корпусе симулятора, приспособил для хранения кабеля для подзарядки и антенны при транспортировке (рис. 18).
Рис. 18 – USB-кабель и антенна в батарейном отсеке пульта С лицевой стороны все выглядит как на рис. 19.
Рис. 19 – Вид с лицевой стороны 2 Программная частьДля удобства весь код содержится в нескольких файлах: 1. VMETER.h, VMETER.cpp – содержат описание класса VMETER для контроля уровня заряда аккумулятора. Косвенно оценка этого уровня выполняется через измерение напряжения на аккумуляторе с учетом неизменного напряжения питания самого микроконтроллера благодаря повышающему стабилизатору. Некоторые константы и методы приведены в табл. 1. Табл. 1 – Некоторые константы и методы класса VMETER
2. PIEZO.h, PIEZO.cpp – содержат описание класса PIEZO для работы с пьезоэлементом. Некоторые методы класса приведены в табл. 2. Табл. 2 – Некоторые константы и методы класса PIEZO
3. ENC.h, ENC.cpp – содержат описание класса ENC для работы с энкодером с кнопкой. Константы и методы класса приведены в табл. 3. Табл. 3 – Константы и методы класса ENC
4. TR.ino – основная программа. Помимо файлов VMETER.h, PIEZO.h, ENC.h добавлены стандартные библиотеки:
Что будем запоминать в качестве пользовательских настроек? Согласно сформулированных ранее требований: величины расходов и наличие/отсутствие реверса по каналам. В каком виде? Тут я предложу немного математики. Для наглядности предположим, что по одному из каналов будем управлять сервомашинкой. Обозначим пределы отклонений ручки управления и сервомашинки как показано на рис. 20.
Рис. 20 – Пределы отклонений ручки и сервомашинки Запишем зависимость положения сервомашинки xout от положения ручки xin xout = aout + (xin – ain) × (bout – aout) / (bin – ain). Если в качестве пределов отклонения для ручки принять минимальный и максимальный уровни напряжения с потенциометра в цифровом виде, то ain = 0, bin = 1023, и формулу можно упростить: xout = aout + xin × (bout – aout) / 1023. Для контроля расхода по каналу с сервомашинкой введем коэффициент k = (mout – x’out) / (mout – xout), где mout = (aout + bout) / 2 – среднее положение сервомашинки; x’out – искомое нами положение машинки с настроенным пользователем расходом, которое выразим из этой формулы, преобразуем и получим x’out = 0,5 × (aout + bout) × (1 – k) + k × xout. Изменяя знак коэффициента k, получаем реверс. Таким образом, в EEPROM микроконтроллера будем записывать четыре таких коэффициента – по количеству каналов. Регулирование этих коэффициентов выполняется с помощью энкодера. Выбор канала осуществляется нажатием на кнопку, собственно регулирование –вращением ручки. При выборе следующего канала коэффициент предыдущего записывается в EEPROM микроконтроллера. В табл. 4 приведены некоторые константы, переменные и функции из файла TR.ino. Табл. 4 – Некоторые константы, переменные и функции из файла TR.ino
Прошивка ARDUINO Pro Mini через USB-TTL конвертер показана на рис. 21.
Рис. 21 – Процесс прошивки 3 ЭксплуатацияПитание пульта включается/выключается тумблером. После одного длинного звукового сигнала включается передатчик, можно использовать пульт по прямому назначению. Для перехода в режим настройки расхода и реверса первого канала необходимо нажать кнопку энкодера. Последует один короткий звуковой сигнал (при настройке их количество соответствует номеру канала), после чего можно приступить к настройке вращением ручки энкодера. По завершению настройки следует еще раз нажать на кнопку энкодера, чтобы перейти к следующему каналу. После настройки всех каналов последует один длинный сигнал, пульт перейдет в обычный режим. При снижении «уровня заряда» ниже критического пульт будет издавать длинный сигнал через заданный интервал времени. Заряжается пульт через гнездо 2,1–5,5мм блоком питания 5V, рекомендуется 1А и выше. Пример настройки одного канала:
4 Проверка работыВ архиве есть скетч для простого приемника, с помощью которого можно проверить работу пульта. Я использовал ARDUINO Nano и радиомодуль nRF24L01 с адаптером (рис. 22).
Рис. 22 – Приемник Схема приемника показана на рис. 23.
Рис. 23 – Схема приемника После включения пульта и приемника в Мониторе порта можно наблюдать значения по четырем каналам (рис. 24).
Рис. 24 – Проверка пульта через Монитор порта 5 Вместо заключения
Рис. 25 – Для сравнения с первым фото Мой список компонентов
Ссылки:
Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Дмитро
07.10.2022 10:54:28
Гарна робота. А чи не залишилась у вас та електроніка що вийняли? У мене на такому пульті електроніка вийшла з ладу.
|