Ил-18 Долгий путь к мечте

Гена_Большой

Итого, что на данный момент работает.

  • чтение настроек конечных точек из FLASH.
  • начальная установка сервоприводов.
  1. закрылки - первое положение - убраны
  2. фары - первое положение - убраны
  3. створки шасси - второе положение - открыты
  4. шасси - выпущены.
  • управление фарами с отдельного канала с замедлением
  • управление закрылками с отдельного канала три положения с замедлением
  • управление створками шасси с отдельного канала с замедлением

Что еще не сделано

  • программирование конечных точек надо дописать в части записи настроек во FLASH,
    сейчас во FLASH хранятся базовые настройки, +100 -100 по всем каналам
  • руление носовым колесом
  • не забыть добавить перевод рулевого колеса в среднее положение перед началом уборки шасси.
  • добавить в программирование номера каналов управления закрылками, шасси, фарами.

Пока вроде все что вспомнил.

Гена_Большой

расписал все это и возникла идея для продолжения проекта.
а состоит она в следующем,
у меня есть готовый девайс, который (чисто теоретически) в состоянии получать данные с любого приемника,
имеющего выход типа SBus/iBus и прочие асинхронные последовательные.
так же, есть куча свободных выводов микроконтроллера, на которые можно “повесить” кнопки и светодиоды.
и 12-14 (ограничено необходимостью иметь UART и i2c) PWM выходов.
по сути что то типа интерпретатора LUA (но его я не смотрел и не читал)

хочется замутить нечто типа интерпретатора,
описываешь поведение выходов в зависимости от входных данных,
разные переходы, циклы и прочее )
загружаешь эти данные во FLASH, а дальше программа внутри микроконтроллера их читает и управляет )

Гена_Большой
Гена_Большой:

Что еще не сделано

  • программирование конечных точек надо дописать в части записи настроек во FLASH,
    сейчас во FLASH хранятся базовые настройки, +100 -100 по всем каналам

  • руление носовым колесом

  • не забыть добавить перевод рулевого колеса в среднее положение перед началом уборки шасси.

  • добавить в программирование номера каналов управления закрылками, шасси, фарами.

  • ну и самое главное, циклограмма выпуска/уборки шасси

Пока вроде все что вспомнил.

запись и чтение во FLASH допилил, теперь все работает корректно.
добавил программирование номеров каналов

особенность программирования
номер канала считается методом деления значения в поле на 100.
т.е. 100-199 - будет считаться первым каналом, 1100-1199 - 11 каналом, все что больше 1200 - останется 12 каналом ))

в общем, пока хватит, думаю до конца выходных в первом приближении будет готово

Гена_Большой

Пока вспомнил,
Дмитрий, ОЧЕНЬ ВАЖНО, при включении питания этого устройства, чисто механически, шасси должны быть в убранном положении.
Просто потому, что совсем не понятно в каком состоянии при включении будут створки шасси, особенно в режиме первичного программирования.

DmitryK

А что случится, если шасси будут выпущены? Чисто с целью повышения образованности?
Как вариант - при включении сразу открываем створки, убираем шасси, ждем, закрываем створки.

Гена_Большой

самый главный момент с режимом программирования, при входе в режим, стойка должна быть выпущена или убрана.

  1. в режиме программирования, в первый раз, не понятно в каком положении окажутся створки шасси.
    и как только я дам команду на изменение положения стойки, а это надо будет сделать обязательно (начальная инициализация),
    то стойка может убраться через створки ну или выпуститься,
    просто программа не знает в каком положении ретракт
  2. при старте программы в принципе я могу прописать открытие створок и перевод шасси в заданное положение.
Гена_Большой

в принципе “защита от дурака” предусмотрена, до завершения программирования на ретракт вообще не подается никакая команда,
но всякое бывает, вдруг трабла проскочит

DmitryK
Гена_Большой:
  • программа не знает в каком положении ретракт

Ну дык я и говорю, что можно начать с открытия створок. Они всяко быстрее откроются, чем нога до них доедет. Но это только мысли вслух. Меня вполне устроит начальноубранное положение.

Гена_Большой

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

про руление носового колесо

  • не вижу смысла программировать конечные точки
  • достаточно запрограммировать реверс, среднее положение и процент от канала РН.

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

Гена_Большой

Закончил режим программирования для носового колеса.
В итоге остановился на трех параметрах:

  • средняя точка, позиция из которой осуществляется уборка стойки и она же начальная для руления.
  • процент реакции от канала РН с аппаратуры, по дефолту стоит 50 процентов, меняется вверх/вниз с шагом 1 за 0,3 секунды. При этом можно смотреть насколько реально будет повернуто носовое колесо, отклоняя стик РН.
  • реверс носового колеса, по дефолту стоит 0, т.е. реверс ОТКЛ, любое значение отличное от 0 трактуется как ВКЛ.
    так же как в предыдущем пункте можно сразу контролировать направление поворота, при движении стика РН.

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

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

В скором времени придет из Китая мелочевка, новую плату со всеми исправлениями уже нарисовал.

DmitryK

ЗдОрово! Но у моего варианта руления колесом есть один серьезный недостаток. При слишком сильном отклонении сервы нога может выскочить из прорези в качалке. если, например оттриммировать РП после настройки, в крайнем положении стойка может выпасть, а этого бы не хотелось. А ограничить ход - радиус поворота вырастет. Пока не проверял, насколько, но предвижу …

Гена_Большой

Сначала с минимальным коэффициентом передачи от РН к рулевому колесу, что бы рулилось на взлете и посадке,
после первого полета и тримирования РН в воздухе настраивается среднее положение рулевого колеса,
положение РН и рулевого колеса не зависят одно от другого,
при старте программы она считывает показание канала РН и от этого положения уже пляшет.
суть в том, что после тримирования РН, даже если РН окажется отклонен на 45 градусов,
при следующем включении питания колесо встанет в среднее положение, заданное в программе.
а потом процентами настраивается максимальное отклонение рулевого колеса, при котором “не выпадает”.

Гена_Большой

И кстати, у тумблера GEAR может быть три положения,
вполне могу прикрутить два режима рулевого колеса руление и взлетный,
во взлетном режиме например отклонение колеса 50 процентов от руления или 60, сколько надо в общем ).
Памяти микроконтроллера пока съедено 18 процентов.

DmitryK
Гена_Большой:

И кстати, у тумблера GEAR может быть три положения,

Да, как-то так будет. Два наверное.

9 days later
Гена_Большой

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

выглядеть будет примерно так.
паять SMD будет тот еще квест )), а их там теперь очень много )

boss

прикольная шайтан коробка получается на ардуине , а самое главное, что можно настраивать без компа.

Гена_Большой

она не на Ардуине, это на процессоре STM32, Ардуинка не потянула,.
а выпуск/уборка шасси потихоньку продвигаются.

Гена_Большой
DmitryK:

Да, как-то так будет. Два наверное.

подумал на досуге, мне проще прикрутить экспоненту на рулевое колесо, чем думать как сделать два режима,
да еще что бы пилот после посадки не попутал и не убрал ненароком шасси.

boss

У меня ардуина управляет 7 машинками.Если шасси будут убирать машинки, то нужно предусмотреть регулировать скорость уборки, изменение крайних точек и реверса. Режимы можно назначить на передатчике

Гена_Большой

Если использовать библиотеку Servo для Ардуино и “прикрутить” замедление" и программируемые конечные точки,
то неизбежно возникнут непредусмотренные колебания в процессе перемещения,
проверено на нескольких разных процессорах Атмега.
Как выяснилось, это “особенность” использования библиотекой таймеров.
Это касается в том числе и Арду 2560.
А если писать все самому, то памяти Меги 328 в итоге может и не хватить, сейчас проект занимает 25 килобайт
и это еще не все.

Да и по производительности F401 значительно превосходит любую Мегу,
а про количество портов я вообще молчу ).
В даннос проекте задействовано три таймера, каждый генерирует по 4 PWM сигнала на четырех ногах процессора,
сам процессор в этом процессе не участвует.

boss:

Если шасси будут убирать машинки, то нужно предусмотреть регулировать скорость уборки, изменение крайних точек и реверса.

два канала на закрылки,
три канала на фары,
три канала на створки шасси,
три канала на ретракты,
один канал на рулевое колесо.

Итого 12 каналов с периодом 10 мс (так захотелось, могу сделать и 7 и 20),
точность импульсов PWM составляет ±2 мкс, т.е. если должно быть 1520 мкс, то будет от 1518 до 1522,
точность с запасом )
Для каждого канала программируются конечные точки и замедление в миллисекундах.
Уверен, что с Ардуино Вы получаете не больше ± 5-7 мкс.