Ил-18 Долгий путь к мечте
Итого, что на данный момент работает.
- чтение настроек конечных точек из FLASH.
- начальная установка сервоприводов.
- закрылки - первое положение - убраны
- фары - первое положение - убраны
- створки шасси - второе положение - открыты
- шасси - выпущены.
- управление фарами с отдельного канала с замедлением
- управление закрылками с отдельного канала три положения с замедлением
- управление створками шасси с отдельного канала с замедлением
Что еще не сделано
- программирование конечных точек надо дописать в части записи настроек во 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 каналом ))
в общем, пока хватит, думаю до конца выходных в первом приближении будет готово
Пока вспомнил,
Дмитрий, ОЧЕНЬ ВАЖНО, при включении питания этого устройства, чисто механически, шасси должны быть в убранном положении.
Просто потому, что совсем не понятно в каком состоянии при включении будут створки шасси, особенно в режиме первичного программирования.
А что случится, если шасси будут выпущены? Чисто с целью повышения образованности?
Как вариант - при включении сразу открываем створки, убираем шасси, ждем, закрываем створки.
самый главный момент с режимом программирования, при входе в режим, стойка должна быть выпущена или убрана.
- в режиме программирования, в первый раз, не понятно в каком положении окажутся створки шасси.
и как только я дам команду на изменение положения стойки, а это надо будет сделать обязательно (начальная инициализация),
то стойка может убраться через створки ну или выпуститься,
просто программа не знает в каком положении ретракт - при старте программы в принципе я могу прописать открытие створок и перевод шасси в заданное положение.
в принципе “защита от дурака” предусмотрена, до завершения программирования на ретракт вообще не подается никакая команда,
но всякое бывает, вдруг трабла проскочит
- программа не знает в каком положении ретракт
Ну дык я и говорю, что можно начать с открытия створок. Они всяко быстрее откроются, чем нога до них доедет. Но это только мысли вслух. Меня вполне устроит начальноубранное положение.
опять я забыл, что у Вас ретракты на шасси и шасси не могут оказаться в промежуточном состоянии.
в общем для простоты будем считать, что модель всегда разбирается с убранными шасси.
хотя, на самом деле, если инициализируются первыми створки, а потом сделать паузу для завершения отработки ретрактов,
то скорее всего ничего страшного не должно произойти.
про руление носового колесо
- не вижу смысла программировать конечные точки
- достаточно запрограммировать реверс, среднее положение и процент от канала РН.
по крайней мере мне так кажется, всегда можно будет увеличить/уменьшить реакцию на поворота.
среднее положение обязательно, что бы при выпуске проходило соединение с сервой руления
Закончил режим программирования для носового колеса.
В итоге остановился на трех параметрах:
- средняя точка, позиция из которой осуществляется уборка стойки и она же начальная для руления.
- процент реакции от канала РН с аппаратуры, по дефолту стоит 50 процентов, меняется вверх/вниз с шагом 1 за 0,3 секунды. При этом можно смотреть насколько реально будет повернуто носовое колесо, отклоняя стик РН.
- реверс носового колеса, по дефолту стоит 0, т.е. реверс ОТКЛ, любое значение отличное от 0 трактуется как ВКЛ.
так же как в предыдущем пункте можно сразу контролировать направление поворота, при движении стика РН.
Вроде с носовым колесом закончил.
Кроме того, поменял меню на дисплее в режиме программирования, он стало более читабельным.
В общем завтра сделаю видео (сегодня уже нет ни сил ни желания).
Постепенно приближаюсь к самому главному, выпуск/уборка шасси.
Но судя по всему это будет не сложная задача )).
В скором времени придет из Китая мелочевка, новую плату со всеми исправлениями уже нарисовал.
ЗдОрово! Но у моего варианта руления колесом есть один серьезный недостаток. При слишком сильном отклонении сервы нога может выскочить из прорези в качалке. если, например оттриммировать РП после настройки, в крайнем положении стойка может выпасть, а этого бы не хотелось. А ограничить ход - радиус поворота вырастет. Пока не проверял, насколько, но предвижу …
Сначала с минимальным коэффициентом передачи от РН к рулевому колесу, что бы рулилось на взлете и посадке,
после первого полета и тримирования РН в воздухе настраивается среднее положение рулевого колеса,
положение РН и рулевого колеса не зависят одно от другого,
при старте программы она считывает показание канала РН и от этого положения уже пляшет.
суть в том, что после тримирования РН, даже если РН окажется отклонен на 45 градусов,
при следующем включении питания колесо встанет в среднее положение, заданное в программе.
а потом процентами настраивается максимальное отклонение рулевого колеса, при котором “не выпадает”.
И кстати, у тумблера GEAR может быть три положения,
вполне могу прикрутить два режима рулевого колеса руление и взлетный,
во взлетном режиме например отклонение колеса 50 процентов от руления или 60, сколько надо в общем ).
Памяти микроконтроллера пока съедено 18 процентов.
И кстати, у тумблера GEAR может быть три положения,
Да, как-то так будет. Два наверное.
В выходные приступлю к крайнему шагу выпуск-уборка шасси.
Вчера пришла из Китая мелочевка (резисторы, конденсаторы SMD),
сегодня перерисовал плату с учетом выявленных недостатков и переходом на другой камень.
выглядеть будет примерно так.
паять SMD будет тот еще квест )), а их там теперь очень много )
прикольная шайтан коробка получается на ардуине , а самое главное, что можно настраивать без компа.
она не на Ардуине, это на процессоре STM32, Ардуинка не потянула,.
а выпуск/уборка шасси потихоньку продвигаются.
Да, как-то так будет. Два наверное.
подумал на досуге, мне проще прикрутить экспоненту на рулевое колесо, чем думать как сделать два режима,
да еще что бы пилот после посадки не попутал и не убрал ненароком шасси.
У меня ардуина управляет 7 машинками.Если шасси будут убирать машинки, то нужно предусмотреть регулировать скорость уборки, изменение крайних точек и реверса. Режимы можно назначить на передатчике
Если использовать библиотеку Servo для Ардуино и “прикрутить” замедление" и программируемые конечные точки,
то неизбежно возникнут непредусмотренные колебания в процессе перемещения,
проверено на нескольких разных процессорах Атмега.
Как выяснилось, это “особенность” использования библиотекой таймеров.
Это касается в том числе и Арду 2560.
А если писать все самому, то памяти Меги 328 в итоге может и не хватить, сейчас проект занимает 25 килобайт
и это еще не все.
Да и по производительности F401 значительно превосходит любую Мегу,
а про количество портов я вообще молчу ).
В даннос проекте задействовано три таймера, каждый генерирует по 4 PWM сигнала на четырех ногах процессора,
сам процессор в этом процессе не участвует.
Если шасси будут убирать машинки, то нужно предусмотреть регулировать скорость уборки, изменение крайних точек и реверса.
два канала на закрылки,
три канала на фары,
три канала на створки шасси,
три канала на ретракты,
один канал на рулевое колесо.
Итого 12 каналов с периодом 10 мс (так захотелось, могу сделать и 7 и 20),
точность импульсов PWM составляет ±2 мкс, т.е. если должно быть 1520 мкс, то будет от 1518 до 1522,
точность с запасом )
Для каждого канала программируются конечные точки и замедление в миллисекундах.
Уверен, что с Ардуино Вы получаете не больше ± 5-7 мкс.