Activity

Выжимаем из Omnibus v3 PRO все

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

Все как обычно, рама Х, 4 мотора, ну полетник, ESC… Снизу хрень какая-то.

Так вот, многие знают о переводе ArduPilot на ChbiOS, благодаря чему все плюшки автопилота стали доступны на недорогих F4/F7 полетных контроллерах. Кто не знает, может детально ознакомиться тут. Там буквально первое сообщение темы раскрывает всю суть, принципы прошивки и использования. У меня речь немного о другом. Захотелось в мелкую раму (до 150мм) уместить что-то особенное (заядлые рейсеры скажут - барахло ненужное, и будут со своей колокольни правы) и интересное на данный момент для меня. А именно:

  • Как ведет себя Omnibus под ArduCopter (ArduPlane на этом ПК я испытал еще летом - просто замечательно)
  • Obstacle Avoidance (Избежание столкновений)
  • Optical Flow (Для навигации в GPS denied условиях)
  • Поковыряться с кодом ArduPilot

Комплектующие:
- Рама Hskrc-3-140

Железо
Соединено как показано на схеме вверху. Как видно, на шине i2c находится компас и ToF сенсор VL53L0X который присутствует в модуле FlowDeck и смотрит вниз. В новой версии этого модуля применяется улучшенный вариант этого сенсора VL53L1X, который измеряет расстояния до 4х метров.
OpticalFlow PMW3901MB подключен по шине SPI.
Разработанный мною модуль PROX_ToF содержит до 9-ти датчиков расстояния VL53L1X, имеет интерфейс подключения модуля компаса и представляет собой ту самую коробочку прикрепленную снизу к коптеру. На фото модуль PROX_ToF еще с временным компасом

Вся информация по PROX_ToF - прошивки, схема, печатка выложена тут. По большому счету модуль опрашивает датчики расстояния и генерирует MAVLINK DISTANCE MESSAGE (в зависимости от ориентации каждого из датчиков), которые передаются по UART в ПК.

Программное обеспечение
Для того чтобы использовать нестандартное оборудования (OF), понятное дело нужно изменить настройки под ПК и перекомплировать прошивку. После установки Toolchain и последующего git clone прошивки с github.com/ArduPilot/ardupilot единственный файл который нужно было изменить \libraries\AP_HAL_ChibiOS\hwdef\omnibusf4pro\hwdef.dat:

  • Находим дефайны CS пинов (строка #67) и добавляем строку
    PD2 FLOW_CS CS
    b) Находим таблицу устройств SPI и комментируем строку определяющую SPI для OSD (SPI3 DEVID4). Да OSD не пригодится 😃. Так что вместо OSD добавляем устройство optical flow:
    SPIDEV pixartflow SPI3 DEVID4 FLOW_CS MODE3 2MHZ 2MHZ
    env DEFINES HAL_HAVE_PIXARTFLOW_SPI
  • Нужно закомментировать и дейфайны относящиеся к OSD (строка #135)
    #define OSD_ENABLED ENABLED
    #define HAL_OSD_TYPE_DEFAULT 1

После этих изменений конфигурируем и делаем билд для copter. Прошивем Omnibus

Настройка полетника
Проверяем в руках правильно ли коптер реагирует на возмущения. Понятное дело, будет перерегулирование, так как настройки по-умолчнию подходят для 400-500мм коптеров, а для мелочи параметры сильно завышены. Привожу скрин Extended Tuning. Тут внимательно, на этом экране не все параметры удастся занизить до таких величин, поэтому для изменения параметров нужно пользоваться Full Parameters List / Tree. Обратите внимание, что необходимо занизить почти в два раза и Throttle Accel (Accel to motor)

Эти параметры Ardupilot нужно поменять через MissionPlanner после того как убедились, что в Acro и Stabilize коптер ведет себя идеально:
EK2_ALT_SOURCE = 1 #Используем датчик расстояния
EK2_GPS_TYPE = 3 #Используем OF
FLOW_ENABLE = 1
RNGFND_TYPE = 16
RNGFND_MAX_CM = 140

AVOID_ENABLE = 3
PRX_TYPE = 2
AVOID_BEHAVE = 1
AVOID_DIST_MAX = 3

Проверяем что видят датчики: нажимаем ctrl+F в MissionPlanner и выбираем Proximity. Должен появиться “радар” с расстояниями

После этого можно испытать работу Obstacle Avoidance в действии. Работа модуля зависит от полетного режима: в AltHold коптер шарахается от препятствий в том числе и от подвижных, но у пилота есть возможность положить … на мнение Obsticle Avoidance, то есть попросту додавить стиком в сторону препятствия и порубить его винтами. В режиме Loiter (так же и в Guided) коптер учитывает скорость своего движения при определении расстояния до препятствия и соответственно не дает пилоту влететь в него. То есть можно сколько угодно давить стик в сторону препятствия коптер игнорирует эти команды. Однако, если у коптера х-у скорость равна 0, то на подвижное препятствие он не реагирует 😦

Планы

  • Поправить параметры, код модуля Obstacle Avoidance ибо коптер наотрез отказывается пролетать в дверные проемы
  • Проверить возможность получения карты помещения в оффлайне/онлайне на основе датчиков расстояния и вычисления местоположения по OpticalFlow
  • Добавить Linux miniPC на котором будет крутиться уже привычный mavproxy с dronekit и таким образом коптер станет полностью автономным.

Немного фотографий:

Пока все, вроде должно быть продолжение

iNAV на CC3D - самый бюджетный автопилот с функцией RTH для самолета

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

Кроме того, этой записи в дневнике исполнился год. А за год в iNAV произошли существенные изменения. И только в лучшую сторону. Поэтому тут в тексте многое исправлено и дополнено. Актуально на конец февраля 2017. Версия iNAV 1.6.

В поисках кандидата легкого, не дорого комплекта АП для мелкого FPV самолета взор упал на давно приобретенную плату CC3D. Поставив ее на самолет и без труда настроив OpenPilot захотелось большего, а именно возврата домой. В результате после изучения темы всплыли две возможности:

  • прошивка Патрика (базируется на baseflight)
  • iNAV (базируется на cleanflight)
    Имея не очень успешный опыт эксплуатации прошивки Патрика на multiwii, прочитав наискось его тему на http://fpvlab.com, найдя фразу Патрика же, что его прошивке до iNAV очень далеко, у меня остался только один вариант. А почитав в основном положительные отзывы по системе навигации iNAV вообще развеялись все сомнения.

Что потребуется:

  1. Полетный контроллер CC3D или совместимый с iNAV (от $13)
  2. OSD (minimOSD или любое другое поддерживающее cleanflight) (от $8)
  3. GPS приемник (от $10)
    Итого, на АП, gps и osd вышло менее $32
  4. FPV комплект, самолет, РУ, батареи и т.п. это и так понятно.
    Фото подопытного ЛА:

    Пилот может смотреть по сторонам. На мир с высоты смотрю глазами миньена 😃

Получил удовольствие от настройки iNAV, и использования - самолет летает, отлично управляется и летает в стабилизированных режимах, возвращается домой. В RTH имеется возможность изменять высоту возврата в полете при помощи стика РВ.

Начнем (для увеличения изображений правый клик на нем мышей и открыть в новой вкладке).

1. Прошивка iNAV в CC3D.
Ничего необычного в процессе нет.
Качаем скомпилированную прошивку под наш тип платы отсюда github.com/iNavFlight/inav/releases
А далее существует куча мануалов как на CC3D залить стороннюю прошивку. Например тут и тут . Единственное отличие, что для прошивки выбираем скачанный файл iNAV.
С выходом версии 1.2 для CC3D необходимо делать выбор между двумя прошивками CC3D и CC3D_PPM1. Разница очевидна - если используется приемник с выходом PPM (что очень рекомендуется) то качаем одноименную прошивку.

2. Базовая настройка
Настройку полетного контроллера начиная с iNAV 1.6 лучше начинать с закладки Presets. Здесь можно выбрать тип ЛА и за один клик настроить множество параметров.

Далее будем более тонко настраивать iNAV под себя. Начнем с последовательных портов. Настройка портов выполняется на вкладке Ports.
Вкладка Ports

  • UART1 оставляем без изменения (по-умолчанию), к нему будет подключено ОСД или FTDI для настройки с компьютера
  • UART3 будет занят для GPS. Соответственно и включаем эту функцию и выбираем необходимую скорость на порту.
    Могу заметить, что применяя GPS приемники ublox серии 6-8 нет необходимости их подключения к компьютеру и конфигурирования при помощи u-center. iNAV все сделает сам.

Калибровка акселерометра.
Сейчас у iNAV используется шеститочечная калибровка акселерометра. Сложного в ней ничего нет. Ориентируем плату в соответствии с изображением и нажимаем одну единственную кнопку. И так шесть раз. Главное, на что следует обратить внимание так это на то, что ориентация на изображениях инструкции по калибровке - это ориентация полетного контроллера, а не летательного аппарата. Поэтому, чтоб не путаться я провожу калибровку полетника, а уже потом устанавливаю его в самолет.

Конфигурация (закладка Configuration)
Переходим на вкладку Configuration и выбираем тип летательного аппарата - Airplane. Так как у меня классический самолет с хвостовым оперением. Для тех у кого летающее крыло, необходимо выбрать соответствующую опцию.

Не обращаем внимания на нумерацию серв/каналов на картинке. Они не очень совпадают с действительностью.

Ориентация платы.
Так как полетный контроллер можно устанавливать в самолет под любым удобным углом, то нужно настроить соответственно iNAV. Для этого переходим на закладку Configuration и в разделе Board and sensor Alignment устанавливаем желаемые углы. Например, если у вас полетный контроллер установлен так, что USB разъем “смотрит” влево по направлению полета, то устанавливаем Yaw degrees = 90. Если USB разъем получился слева, то Yaw degrees = 270. Раньше такие настройки выполнялись только из CLI. Если будете делать эти настройки там, то нужно иметь ввиду, что у iNav единицы углов равны deg*10 то есть для 90 градусов в терминале (CLI) выполняем команду

set align_board_yaw=900

для 270 градусов -

set align_board_yaw=2700

Для сохранения изменений сделанных в CLI нужно дать команду save и нажать enter.

После этого, подключим все оборудование по такой схеме (это вариант с PPM Receiver). Еще раз отмечу, что вариант с PPM приемником более предпочтителен, чем следующий вариант с Parallel PWM, хотя бы потому что открываются возможности для телеметрии (SOFSERIAL) и подключение аналоговых сигналов для считывания напряжения, тока, RSSI.

Или по такой схеме (это вариант с Parallel PWM Receiver):
(Фото реального hardware):

Оставаясь на вкладке Configaration настраиваем следующее:
Если не хочется, чтобы самолет крутил двигателем при арминге, то включаем свитч “Don’t spin the motors when armed”.

Включим и возможность работы с GPS. Выбирать протокол нет необходимости - у CC3D есть возможность общаться только по UBX.

После включения функции GPS iNav не будет армиться без GPS fix. Если хочется проверить что арм работает то можно отключить эту проверку в CLI: “set nav_extra_arming_safety = OFF”. Не забываем ее включить обратно для реальных полетов!

Так как у меня приемник PPM, то кроме всего прочего CC3D под управлением iNAV позволит мониторить напряжение батареи, ток потребляемый в полете, RSSI приемника. Все эти опции присутствуют с правой стороны конфигуратора на закладке Configuration.

В группе Other Features я включил Telemetry и SOFTSERIAL. Последняя опция позволяет использовать пины 4 и 5 входов как программный UART, когда не хватает аппаратных, в моем случае я его использую для FR-SKY телеметрии. Если уж зашла речь за нее, то нужно не забывать, что у FR-SKY UART инверсный. Но никаких аппаратных инверторов городить не нужно - разработчики iNAV позаботились. Идем в CLI и активируем инверсию на порту:

set telemetry_inversion = ON

И после этого подключаем пин RX FR-SKY приемника к пину 4 CC3D (TX от SOFTSERIAL)
s8.hostingkartinok.com/…/6225dccbbba4b64… (1.3 MB)

Вкладка Receiver
Здесь контролируем, что реакция каналов управления соответствует движениям стиков передатчика. Если нужно то ставим реверсы в передатчике. Но для Turnigy и Taranis этого не потребовалось. Короче, поведение должно быть таким:

  • Стик газа (Throttle) от себя - значение канала увеличивается
  • Стик руля направления (Rudder) отклонятся вправо - значение канала увеличивается
  • Стик руля высоты (Elevator) от себя - значение канала увеличивается
  • Стик элеронов (Ailerons) отклонятся вправо - значение канала увеличивается

Вкладка Modes
На вкладке Modes нужно настроить соответствие режимов полета положению каналов AUX. На AUX я настроил трехпозиционный свитч. С тем как настроено у меня на картинке получается следующее:

  • минимальное значение канального импульса - работают одни гиры. Взлет самолета - просто песня. Взял за фюзеляж, нос градусов 10-20 вверх поднял, газу на 80-100%, самолет отпустил. Он под этим углом идет в небо. Без просадок, виляний и пр.
  • среднее значение - Angle. Тем, кто любит фпв пилотаж, полюбят режим Horizon 😃
  • максимальное значение - RTH. Летим домой. Все автоматические режимы в iNAV самодостаточные. То есть к RTH не нужно включать ANGLE или еще чего-нибудь.

Вкладка Failsafe
Наконец-то! Начиная с версии 1.6 у iNAV появился простой и прозрачный фейлсейф.
Для работы фейлсейфа необходимо следующее:

  • настроить приемник так, чтобы он не выдавал никаких сигналов при выключенном передатчике
  • или назначить на положение одного из AUX каналов режим Failsafe и сделать так, чтобы при выключенном передатчике этот канал приводил к срабатыванию Failsafe.

Так как у меня FR-SKY D4R-II, то выбор очевиден - настраиваю так, чтоб приемник был в режиме no-pulses при фейлсейф. Для этого просто нажимаем кратко кнопку bind на приемнике при выключенном передатчике. Кроме этого, устанавливаем поведение самолета в режиме failsafe. В моем случае я выбрал возврат домой.

Кстати сказать, настройку ФС я невольно проверил. Работает. А дело было так. Одна из первых посадок получилась довольно жесткая - не удивительно, самолет размахом 65см и массой около 600г 😃. Во время этой посадки самолет повел себя так. Ударившись о землю с газом в 0, он резко ожил и дал полный газ, но врезался в кактус, который и остановил аппарат от взлета и набора высоты и кружения в RTH. Это была случайность, которая избавила меня от необходимости стоять и ждать пока сядет акк и самолет рухнет на землю. Короче, при детальном рассмотрении отпал из CC3D приемник от удара при посадке.

После лирического отступления идем на вкладку Motors

Вкладка Motors
На этой вкладке берем в руки самолет, качаем его по осям и смотрим, какие из ползунков шевелятся в зависимости от углов наклона по PITCH и ROLL. Можно запомнить или записать. ROLL - 4,5; PITCH - 3, YAW - 6.

Вкладка Servos
Включаем передатчик, устанавливаем режим Angle или Horizon. Переходим на вкладку Servos.

Тут внимательно. Я, например, на неделю позже взлетел на iNAV из-за реверса элеронов, которая обнаружилась на первой секунде полета 😃. На этой вкладке настраиваем конечные и среднюю точки, расходы, а так же реверсы рулей для режимов стабилизации. Нумерация серв на этой вкладке начинается с 0! Для РВ, наклоняем хвост вниз, РВ должен должен опуститься. Если же РВ поднимается, то необходимо установить Rate (самый правый выпадающий список) Servo 2 с отрицательным знаком. Наклоняем левое крыло вниз. Левый элерон должен должен опуститься вниз, а правый подняться вверх. Если что-то не так, то исправляем установкой отрицательных Rate для Servo 3 и Servo 4 (если элероны подключены к одному каналу через Y-кабель, то достаточно поменять настройку только одного из каналов). Далее отводим хвост влево, руль направления должен отклониться влево. Если не так, то устанавливаем отрицательный Rate для Servo 5.
Обратите особое внимание, что все конечные точки, нейтрали, триммеры настраиваются на той вкладке, а не в передатчике!

3. Переходим к OSD
Я использую minimOSD и micro minimOSD. В них нужно прошить стороннюю прошивку - MWOSD. На данный момент MWOSD претерпевает значительные изменения - добавляются протоколы, новые возможности, опять же-таки появился глючный конфигуратор под chrome…
По ссылке выше присутствует install guide. Но там все как обычно: прошивка через среду Arduino (желательно скачать самую свежую с оффсайта), запуск конфигуратора, прошивка шрифтов через конфигуратор. Настройка параметров. Скрин параметров:

Конечно, до прошивки MWOSD в плату minimOSD ее необходимо настроить. Все изменения в файле Config.h
В разделе OSD HARDWARE settings:

#define MINIMOSD 

В разделе CONTROLLER SOFTWARE

#define iNAV

И наконец в разделе AIRCRAFT/INSTALLATION TYPE settings

#define FIXEDWING

В последних версиях MWOSD есть довольно полезная функция MAPMODE. Если ее активировать в Config.h, то через конфигуратор можно выбрать разные режимы карты. Смысл MAPMODE заключается в том, что центр экрана OSD представляет собой виртуальную карту с меняющимся масштабом, на которой изображен ЛА и дом. Таким образом, можно легко ориентироваться на новой местности.

4. Настройка PIFF
Как оказалось настройки PID/PIFF которые ставит по-умолчанию Preset являются хорошим стартом для настройки. На скрине ниже приведены коэффициенты для моего 800mm крыла - EPP Rainbow. Так как Duster с миньеном, который есть на фото в начале записи пережил более 100 вылетов, а сделан он был из пенокартона, то он уже давно утилизирован

Я пользовался для настройки PIFF контроллера рекомендации автора - DigitalEntity:
0) Настраиваем самолет в режиме ANGLE. Полет выполняем визуально, в безветренный день. Начинаем со следующих значений PIFF: P=5, I=10, D/FF = 20

  1. Даем резкую команду roll с пульта, и смотрим как самолет ее выполняет. Движение самолета должно быть плавным от начала до конца маневра, без осцилляций в начале и в конце, без раскачек. Если самолет раскачивается в конце маневра - уменьшаем FF; Если самолет начинает выполнять маневр быстро, а затем замедляется и снова продолжает движение, как бы рывками - это значит, что FF слишком мало.
  2. Повторяем то же самое для pitch
  3. Можно увеличивать FF так, чтобы появились осцилляции в конце маневра, а затем уменьшить этот параметр на 20%
  4. Если самолет не достигает заданного угла - нужно увеличить коэффициент I
  5. Чтобы самолет хорошо “боролся” с порывами ветра увеличиваем P, но помним, что увеличение P приводит к более активному использованию серв.

5. Настройка PIDов навигации
Если самолет при возврате домой или полетам по точкам летит совсем не по прямой, а восьмерками и спиралями. То стоит подумать о настройке PID навигации, так как значения по-умолчанию не всегда подходят. Первое, что нужно сделать - установить следующие параметры в CLI и в 90% случаев подобные проблемы уходят

set nav_fw_pos_xy_p = 50"
"set nav_fw_pos_xy_i = 5". 

Видео полета (на 2.20 включен принудительный RTH)

Quanum DIY FPV Goggle Set + rx5808-pro в одном корпусе


Уже полгода использую этот самый дешевый в мире шлем. Для неизбалованного качеством сойдет, но страшно надоели провода. А тут еще подкинули ссылку на отличный проект rx5808-pro который использует модуль rx58008, ардуину и позволяет перестраиваться по всем известным сеткам частот. Для настройки можно использовать отдельный монитор или тот же экран, на который выводится основное видео. В оригинале сделано переключение между изображениями тумблером. Бррр, очень не хотелось так делать, да плюсом еще и ардуины все пристроил. Поэтому было решено сделать платку и поставить вместо тумблера кнопку, которая бы могда через аналоговый свитч переключать два видеосигнала.
Таким образом, все это хозяйство отлично влезло в корпус комплектного монитора, внешний вид совсем не пострадал. Провода все ушли, остался только провод питания. Одни плюсы 😃.
Для желающих повторить выкладываю немного измененный скетч (добавил считывание кнопки на D1 и выдачу лог.1 или лог.0 на D8 при нажатии) и печатку в SprintLayuot 6. тут

Продвинутый приемник FPV Сергея Панкратова работает с любым дисплеем

Долго слежу за темой Делаем из простого приемника Продвинутый-3 или универсальный модуль управления и индикации, сделал несколько вариантов этого замечательного устройства, но захотелось встроить все в корпус от приемника RC305 по примеру serenya. Идею внешнего вида полностью слизал оттуда, только кнопки перенес в верхний торец корпуса. Так как дисплей у меня i2c, то код serenya не подошел, хотя заменив одну строку инициализации дисплея все работало, захотелось чего-то своего.
Была использована довольно известная библиотека U8glib но работа с ней требовала полной перекройки алгоритма работы модуля. Зато огромным плюсом - работа практически со всеми известными дисплеями со всевозможными протоколами. Список поддерживаемых тут. Необходимо лишь подставить нужную строку инициализации дисплея (если разрешение его 128х64 или более), которые есть в каждом примере к библиотеке. Если разрешение экрана менее 128х64, то придется немного поработать руками и поменять циферки координат, чтоб ничего никуда не налазило.
Ложкой дегтя стал объем прошивки. Ни в мегу88 ни в мегу168 она теперь не лезет. Только в мегу328.
Об отличиях в работе:

  • Бипера нет. Можно раскомментировать соответствующий код.
  • Чтобы попасть в настройку калибровки напряжения батареи нужно зажать кнопку “режим” и дождаться появления на экране соответствующего сообщения. Поочередным нажатием на кнопку “режим” в настройку напряжения батареи не попасть.
  • Добавил прогресс бар при сканировании.
    Немного фотографий

Ссылка на исходники, картинки, инструкции по подключению
Выражаю благодарность Панкратову Сергею и serenya за труды.

Шнур для симулятора из Arduino UNO без пайки и использования звуковой карты

Случилось так, что волею событий переселился я в другую страну. С пультом, но без моделей, без паяльника и самое стремное, что в зоне досягаемости достать ни второе ни третье ни радиодеталей никак нельзя. Пока жду свой первый пепелац из поднебесной зачесалось хоть в симе полетать. Но к сожалению, SmartPropoPlus с предустановленным vJoy, хоть и работали, но для моих целей не подходили. SPP и PPJoy вроде работали и для моих целей, но только из тестового режима Вынь 8 х64. И тут я вспомнил, что всунул при отъезде в сумку пару ардуин. Почему бы не сделать кабель для сима из arduino?
В Ардуино UNO и MEGA2560 интерфейс с ПК выполнен на AVR. Для плат R1 и R2 это чип Atmega8U2, а для R3 - Atmega16U2. Эти чипы запрограммированы таким образом, что представляются компьютеру как USB Serial interface, и они подключают “главную” Atmega ардуины через TTL Serial port (цифровые пины 0 и 1).
Чипы 8U2 и 16U2 могут быть перепрограммированы при помощи DFU (Device Firmware Upgrade mode). Это означает, что USB Serial firmware может быть заменена другой USB firmware с тем, чтобы превратить ардуино в разные USB девайсы, например мышь, клавиатуру, MIDI устройство, джойстик (подробнее тут).
Итак, для работы понадобятся:

  1. Arduino UNO
  2. джампер и проводок
  3. Flip. Скачать и установить
  4. Архив с HID firmware, USB serial firmware (для восстановления) и скетчем для ардуины.
    Вперед!
  5. Открываем счетч из архива и заливаем его в плату ардуино.
  6. Переводим Atmega8U2 в DFU режим. Для этого.
    2.1. Устанавливаем джампер как на картинке.

    2.2. Касаемся проводком, одной стороной подключенным к GND, к левому выводу конденсатора (как на той же картинке). При этом светодиод несколько раз моргнет
    2.3. Убираем джампер
    2.4. Если это сделано первый раз, то нужно установить драйвера на DFU из папки куда был установлен flip.
  7. Заливаем в Atmega8U2 firmware (прошивку) Arduino-big-joystick.hex при помощи flip. Если позже захочется восстановить ардуину к прежнему виду (чтоб для ПК она была не джойстиком, а последовательным портом), то после перевода Atmega8U2 в DFU режим загрузите в нее Arduino-usbserial.hex
  8. Убираем все провода с Ардуино. Переподключаем ее к компьютеру. Подключаем ППМ от пульта на вывод D3 Ардуины, соединяем общие у пульта и ардуины. Все. Можно идти в “Игровые устройства” Windows, найти там Arduino joystick, запускать эмулят…, ой, сим и тренироваться.


    Удачи.
Таймер для свободнолетающих моделей

Прототипом послужил таймер от http://myresearch.lt
Но захотелось большего, поэтому, вот что получилось:

Назовем его SERVOTIMER2.
Устройство ServoTimer2 предназначено для принудительной посадки свободнолетающих авиамоделей. Вместе с сервоприводом является электронным аналогом механического таймера. Устройство может управлять любым исполнительным механизмом стандартных систем дистанционного управления с задержкой срабатывания от 0,1с до 109 минут с дискретностью 0,1с.
Принцип работы прост - при включении ServoTimer2 сервомеханизм устанавливается в крайнее положение. По истечению заданного пользователем промежутка времени сервомеханизм устанавливается в противоположное положение.
Добавил световую индикацию низкого напряжения питания.
Установка времени срабатывания таймера - джампером.
Добавил установку крайнего положения сервы (дискретность 15% хода) и ее корректировку (дискретность 1% хода).
Технические характеристики вышли следующие
Напряжение питания - 3-5.5В
Напряжение срабатывания LowVoltage Alarm - 3,3В ± 10%
Потребляемый ток - 7 мА
Размеры - 40x14x8 мм
Масса - 3г

Схема, печатка, исходники, прошивка

Восьмиканальный приемник на базе сателита HK-TR6A 2.4ГГц

Ввиду того, что тема посвященная самодельным приемникам на базе этого сателита закрыта, запишу эту разработку к себе в дневник.
Не смотря на то, что эти приемники с сателитами производятся очень давно, более трех лет точно, на сайте ХК они периодически поступают в продажу (где-то два раза в год), но восьмиканальных нет в наличии уже очень давно. Да и алгоритм работы этого приемника с сателитом очень сильно напоминает простое резервирование. Поэтому я использую эти приемники и их сателиты в основном отдельно друг от друга.

Мелким шрифтом - о старой версии
В основе декодера для сателита лежит Atmega8. Работает от внутреннего генератора на частоте 8МГц. Исходник на BascomAVR, хотя отладка велась на платке Arduino 😁. Бывает, извращаемся.
Декодер с сателитом может биндиться к передатчику, сохранять фейлсейв по всем каналам (сейчас так сделано, что при первом включении после бинда обязательно нужно сохранить фейлсейв путем втыкания биновочного шнурка в разъем бинда при находящихся в линке применике с передатчиком. Иначе будут сервы ползти в одну сторону до упора при отключении передатчика). Светодиод индицирует процесс бинда - после успешного бинда он гаснет. А так же он не горит при нормальной работе с передатчиком (при подаче питания он светится).

Скачать все файлы проекта одним архивом можно тут (старая версия).

За время эксплуатации все же были замечены недостатки (причем такие же как и у ReSt - проблемы c выводом PWM когда более 6 каналов стоят в максимуме), да и отсутствие ППМ выхода огорчало. Поэтому полностью переписал код, добавил ППМ, сделал более информативным поведение светодиода, ввел начальную инициализацию EEPROM при первом включении. Пришлось добавить кварц на 16МГц и сменить МК - любой из серии 48/88/168/328 подойдет. Поведение светодиода следующее:

  • Горит все время - обычная работа, принимаем данные от передатчика
  • Мигает медленно - режим бинда
  • Горит постоянно из режима бинда - получены данные бинда
  • Мигает быстро - режим ФейлСейв

При первом включении приемник записывет значение ФС по всем каналам по-умолчанию в 1500мкс.
Для входа в режим биндинга нужно нажать кнопку “FailSave/Bind” и подать питание.
После бинда с последующим пауэрсайклом можно записать свои положения ФС, для этого при нормальной работе приемника нужно нажать на кнопку “FailSave/Bind”.
Более подробная информация у меня на сайте (на английском).
Прошивка, исходники, плата, схема привемника с ППМ от 03.07.2015 тут

HK decoder 8ch dollop.zipHK decoder 8ch+PPM dollop.zip