Ил-18 Долгий путь к мечте
опять я забыл, что у Вас ретракты на шасси и шасси не могут оказаться в промежуточном состоянии.
в общем для простоты будем считать, что модель всегда разбирается с убранными шасси.
хотя, на самом деле, если инициализируются первыми створки, а потом сделать паузу для завершения отработки ретрактов,
то скорее всего ничего страшного не должно произойти.
про руление носового колесо
- не вижу смысла программировать конечные точки
- достаточно запрограммировать реверс, среднее положение и процент от канала РН.
по крайней мере мне так кажется, всегда можно будет увеличить/уменьшить реакцию на поворота.
среднее положение обязательно, что бы при выпуске проходило соединение с сервой руления
Закончил режим программирования для носового колеса.
В итоге остановился на трех параметрах:
- средняя точка, позиция из которой осуществляется уборка стойки и она же начальная для руления.
- процент реакции от канала РН с аппаратуры, по дефолту стоит 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 мкс.
подумал на досуге, мне проще прикрутить экспоненту на рулевое колесо, чем думать как сделать два режима,
А зачем вам то думать об этом? Это все в пульте двойными расходами будет делаться. И экспонента тоже…
да уж, точно на пенсию пора, очевидные вещи упускаю из виду.
(Да и по производительности F401 значительно превосходит любую Мегу, а про количество портов я вообще молчу. В даннос проекте задействовано три таймера, каждый генерирует по 4 PWM сигнала на четырех ногах процессора, сам процессор в этом процессе не участвует)
С этим я согласен на 100%
К сожалению серьезно заняться проектом и дописать все что касается “шасси” сегодня не получилось,
но пару часов выкроил и оптимизировал код
- изменил логику программы в части разделения на подпрограммы.
В прошлой версии за открытие и закрытие фар, например, отвечала одна подпрограмма, как и за переводы в разные положения закрылков,
Сейчас разделил эти процессы, для каждой операции теперь своя подпрограмма. По две для фар и створок шасси и три для закрылков.
Как следствие, стало гораздо проще ловить “баги”.
В рамках новой логики, дописал модули “открытия” и “закрытия” створок шасси, все как положено, с замедлением.
Осталось “нарисовать” - последовательность, “открыть”-“убрать/выпустить”-“закрыть”.
Дел на пару-тройку часов, вместе с “ловлей блох”.
Ну и почистить разные “ляпы” типа того, что если в процессе открытия фар захочется их сразу убрать,
ни хрена не получится, придется дождаться завершения.
Абалдеть, я их все таки дописал, я имею в виду два модуля GearUp и GearDown.
Есть косяки, не без этого, завтра вечером постараюсь “подчистить” и сделать видюшку.
Кста, заодно решил вопрос с начальным состоянием шасси,
все остальное не сильно принципиально, оно друг от друга не зависит.
При подаче питания на Sequencer, программа выполнит процедуру в соответствии с положением переключателей.
- откроет створки,
- подаст команду на ретракт,
- подождет.
- закроет створки.
То же самое касается остальных каналов.
Дмитрий и еще технический вопрос, пока не начал травить плату, как планируете решить вопрос с питанием фар ?
Может стоит предусмотреть выход, на котором будет сигнал на управление питанием,
а могу вообще на плате поставить MOSFET и сделать управление, ног на процессоре пока хватает.
Фары убираем, питание отключаем, для этого отдельный канал не надо.
Ну и почистить разные “ляпы” типа того, что если в процессе открытия фар захочется их сразу убрать,
ни хрена не получится, придется дождаться завершения.
теперь не придется, любой процесс, кроме выпуска/уборки шасси можно повернуть вспять, на любом этапе
думаю, не стоит ли прикрутить “защиту от дурака”, процесс выпуска/уборки шасси нельзя прервать,
может стоит исключить случайный запуск этого процесса, но пока не придумал, какую ввести зависимость.
как вариант, шасси не будут реагировать на переключатель, если закрылки находятся в убранном положении.
т.е. после взлета, сначала убрать шасси, потом механизацию и наоборот.
Такой вопрос, при первом включении как определяется в каком положении находятся шасси? Почему спрашиваю на на ардуине пришлось поставить микрик ,что бы шасси не выломали створки.
там все просто, при включении питания регистры таймеров хранящие длительность импульса для ретракта содержит 0.
в результате ретракт стоит в том положении в котором был, а это либо выпущено, либо убрано.
перед входом в основной цикл производится инициализация всех выходов на сервоприводы.
в зависимости от положения тумблера шасси запустится одна из процедур “выпуск шасси”/“уборка шасси”,
сначала откроются створки, а потом запишется значение в регистры таймеров для ретрактов.
и после отработки ретрактов, створки опять закроются.