Ил-18 Долгий путь к мечте
У меня ардуина управляет 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.
в результате ретракт стоит в том положении в котором был, а это либо выпущено, либо убрано.
перед входом в основной цикл производится инициализация всех выходов на сервоприводы.
в зависимости от положения тумблера шасси запустится одна из процедур “выпуск шасси”/“уборка шасси”,
сначала откроются створки, а потом запишется значение в регистры таймеров для ретрактов.
и после отработки ретрактов, створки опять закроются.
“Кина сегодня точно не будет”(с), я поторопился.
где то сидит трабла, не все створки открываются когда надо, будем искать.
Трабла выявлена и купирована.
“Кина будет завтра”(с)
Дмитрий и еще технический вопрос, пока не начал травить плату, как планируете решить вопрос с питанием фар ?
Планировал для этого использовать Игвовский модуль света. Там несколько выходов на диоды и моргалка. Рулится с канала приемника.
Но можно и на плате задел сделать. Как Вам удобнее.
Рулится с канала приемника.
пока, чисто технически, без серьезной доработки платы могу на нее прикрутить еще пару каналов PWM,
а может даже три получится,
и в программу добавить управление этими каналами через SBus, свободными (если такие еще есть) каналами.
в общем надо знать, что и как управляет Игвой.
igva-rc.narod.ru/prd/bano/lma6_1.htm
как-то так, только у меня еще шнурок питания отдельный.
А зачем ей управлять с платы? Рассчитывал просто в выход приемника ее…
а сколько выходов на приемнике, их Вам точно хватит ?
у Вас же одних моторов четыре штуки, или все на один канал будут ?
проверил, могу прикрутить еще пару каналов PWM и сделать их “сквозными”, т.е. повторяющими каналы аппаратуры.
безо всякого микширования и прочих прелестей.
можно внести еще пару программируемых параметров, номера каналов с аппаратуры на два сервисных канала Секвенсера.
В общем решил, что так надо сделать, пара лишних каналов совсем е лишняя.
Там переместятся на плате уже прописанные каналы, немного подправится код.
Все равно все в комплексе придется проверять )).
а сколько выходов на приемнике, их Вам точно хватит ?
у Вас же одних моторов четыре штуки, или все на один канал будут ?
10 каналов. Моторы все на один канал, не вижу смысла в разнотяге.
Пока прикидываю примерно так:
1234 EATR
5 Gear
6 Flaps
7 Ail 2 ? может и одного канала элеронов хватит
8 Фары и свет
9Flaps2
10 рулевое колесо
Собсна это первое, что пришло в голову, может будет и по другому. 9 и 10 каналы через плату расширения, может и вообще без нее все получится сделать.
поправил плату и программу, теперь есть три сквозных канала,
в принципе моторы можно будет подключить, что бы не паять тройник.
какие выбрать будет настраиваться в режиме программирования, можно даже все три на канал газа повесить )).
закрылки уже реализованы в Секвенсере, все равно им надо замедление.
руление носовым колесом тоже есть, как и перевод в среднее положение при уборке шасси.
в общем, до конца недели сделаю полное тестирование и к выходным буду травить новую плату, крайнюю версию.
пока с видео никак не срастается.
в процессе тестирования выявлен не сильно критичный, но очень неприятный баг,
на десятой минуте “полета” произошел самопроизвольный выпуск шасси.
справедливости ради, они сами убрались, но момент все таки неприятный.
причину уже установил, но пока никак не могу придумать способ его “купирования”.