Четверг, 25.04.2024, 17:06
RC - Мастерская
Главная | Каталог статей | Регистрация | Вход
Меню
Статистика
Главная » Статьи » Чертежи и проекты » Микроконтроллеры

Пульт радиоуправления пистолетного типа - прошивка
Пульт радиоуправления пистолетного типа
(прошивка)


Биндинг

 

 

Режим биндинга для пульта запускается либо из меню, либо специальной кнопкой. Возврат в нормальный режим происходит либо при успешном завершении привязки, либо по кнопке «отмена». При отмене процедуры привязки пульт работает с теми настройками, которые у него были перед запуском биндинга.
В режиме биндинга пульт переключается в режим приема и устанавливает свой адрес в 254.254.254.254. В этом режиме он ожидает специального пакета с приемника. Формат пакета при этом должен быть следующим:
 байт  значение
 0 0xfa
1:4 4 байта адреса приемника

При приеме такого пакета, пульт запоминает адрес и отправляет обратно пакет следующего формата:

 

 

 

 Байт значение
 0  0x5d
 1:4 4 байта адреса приемника (подтверждение)
 5  Идентификатор привязки

 

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


Подключение кнопок

 

Кнопки подключаются к микроконтроллеру при помощи входного сдвигового регистра 74HC165 (интерфейс SPI). Для чтения состояния кнопок предусмотрена функция buttonsRead. Результатом ее выполнения является обновление двух переменных:

dState – байт текущего состояния кнопок
dChanged – байт, указывающий на то, состояние каких кнопок изменилось
Соответствие битов кнопкам следующее:

 

 

 7  6  5  4  3 2  1  0
Не используется  Не используется  Кнопка
«канал 4»
Кнопка
«bind»
Кнопка
«меню»
Кнопка
«отмена»
Кнопка
«+»
Кнопка
«-»


Подключение резисторов

 

 

Резисторы пропорциональных каналов подключаются к линиям АЦП 4 и 5. На микроконтроллере эти выводы совмещены с выводами SDA и SDL интерфейса I2C. АЦП запускаем в режиме циклической оцифровки сигнала. Подробно я описывал тут.


Подключение дисплея

 

 

Наиболее подходящим для данного проекта оказался дисплей Arduino TFT. Он практически идеально вписался в имеющийся корпус. Главное же его достоинство – подключение по SPI. Это особенно актуально ввиду большого дефицита свободных пинов на микроконтроллере. Для работы с дисплеем использована библиотека TFT, входящая в Arduino IDE версии 1.0.5 и выше. SD-карта на дисплее пока не используется.


Подключение радиомодуля

 

 

За основу пульта был взят OrangeRx OpenLRS модуль приемника. Достаточно подробно я описал его тут.


Настройки модели (хранение их в EEPROM)

 

 

Пульт дает возможность управления моделью посредством двух пропорциональных и четырех дискретных каналов. Пропорциональные каналы описываются следующей структурой данных:
 Наименование  Тип данных Назначение  Область EEPROM
 Center uint16_t  Нейтральное положение органа управления  Область калибровочных значений
 MaxVal  uint16_t Крайнее правое положение органа управления Область калибровочных значений
 MinVal  uint16_t Крайнее левое положение органа управления Область калибровочных значений
 chValue  uint16_t Текущее положение органа управления  
 ExpLeft  uint16_t Максимальное отклонение управляющего сигнала влево Область настроек модели
 ExpRight  uint16_t Максимальное отклонение управляющего сигнала вправо  Область настроек модели
Trimm  uint8_t Смещение нейтрального положения Область настроек модели
 Revers  uint8_t Реверс канала Область настроек модели

Все дискретные каналы описываются двумя переменными с размерностью в один байт:

 

 

 Наименование Тип данных  Назначение Область EEPROM
dChannels  uint8_t Текущее состояние кнопок  
 dFix  uint8_t Режим работы кнопок  Область настроек модели

 

 

Каждому дискретному каналу в этих переменных соответствует один бит ( с первого по четвертый).

 

Для кнопок возможны два режима работы:
Без фиксации – при нажатой кнопке значением соответствующего канала является логическая единица, при отпущенной – логический ноль.
С фиксацией – каждое нажатие кнопки переключает состояние соответствующего канала с логического ноля на логическую единицу и обратно. Т.е. для включения канала требуется одно кратковременное нажатие на кнопку. Выключение при этом производится повторным нажатием.


Алгоритм микширования

 

Фактически это алгоритм приведения сигнала с органа пропорционального управления к заданному диапазону значений. Базовым диапазоном при этом является диапазон значений от 1000 до 2000 с нейтральным значением 1500. Так же используется диапазон реальных значений, полученных при калибровке пульта.

 

  1. Если ADC_Value больше Center, то считать ОУ отклоненным вправо. Выполнить приведение ADC_Value к диапазону значений 1500:2000
  2. Если ADC_Value меньше Center, то считать ОУ отклоненным влево. Выполнить приведение ADC_Value к диапазону значений 1000:1500
  3. Если 1 и 2 не выполняются, то считать ADC_Value равным 1500
  4. Если для канала включен реверс, то «перевернуть» его значение в рамках диапазона 1000:2000 и изменить принятое отклонение в 1/2 на противоположное.
  5. Если ОУ отклонен вправо, то привести его значение к диапазону 1500 : 1500 + ExpRight
  6. Если ОУ отклонен влево, то привести его значение к диапазону 1500 + ExpLeft : 1500
  7. Полученное значение сдвинуть на Trimm - 128

Прошивки


В прошивке отлажены и функционируют:
- кнопки
- меню
- режим привязки
- передача дискретных каналов

Еще предстоит отладить:
- пропорциональные каналы и их настройки
- генерацию сигналов для пропорциональных каналов.

Так же надо будет написать FHSS - скачкообразный перебор частот. Он необходим для повышения надежности и радиуса действия пульта.

Передатчик v0.1_a скачать

Приемник v0.1_a скачать

Версия 02а:

  1. Отлажены пропорциональные каналы
  2. Исправлена бага в бинде
  3. Исправлена бага в сохранении модели

Передатчик: скачать

Приемник: скачать

Версия 03а:

  1. написан и отлажен FHSS
  2. сделана передача телеметрии. На экране отображаются RSSI & TSSI.
  3. сделан Failsafe.
  4. Кнопка BIND изменила свое назначение. Теперь она программирует Failsafe.

Передатчик: скачать

Приемник: скачать

Версия 1.0:

Написал небольшое приложение для Windows - теперь можно управлять списком моделей с ПК.

Так же приложение позволяет сохранять модели на ПК.

Открыл репозиторий в GitHub. Там теперь в одном месте находятся все исходники и документация.

По документации:

  1. для приемника и передатчика нарисовал в MS Visio основные алгоритмы
  2. выложил схему подключения кнопок для Dip Trace. Печатка к сожалению утеряна
  3. в файле Documentation.xlsx собрал в таблицу соединения Оранжа для приемника и передатчика
  4. там же битовые маски для кнопок и карта EEPROM для передатчика

Скачать с GitHub.

Категория: Микроконтроллеры | Добавил: Mactep (09.03.2014)
Просмотров: 2775 | Теги: RC, OrangeRx, tft, Arduino, rfm22b | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск