Ил-18 Долгий путь к мечте
похоже до НГ не спею закончить, сейчас еще аппаратная трабла вылезла,
называется “дребезг” сигнала на выходе микроконтроллера, при подключении нескольких серв на удлинителях,
вылечить легко, надо на все выходы резисторы поставить, фича не документированная,
проконсультировался с хорошим знакомым, он уже сталкивался.
но надо будет переделывать плату, пока продолжу как есть, заодно из китая кучку смд резюков и кондеров закажу.
надо будет переделывать плату
Если сигналы пускать через резисторы, то может и не надо переделывать плату, разрезать дорожки и напаять смд резисторы?
допилил управление фарами.
завтра попробую собрать 5 штук серв и сделать “коллективное видео” вместе с элеронами
очень печальное известие,
из процессора на плате вышел весь волшебный синий дым.
а без него он работать не сможет.
сгорел стабилизатор напряжения и как следует прожарил процессор
у меня есть другая плата, но на ней нет внешней энергонезависимой памяти, сейчас буду думать, как решить этот вопрос.
в принципе FLASH память в самом процессоре никто не отменял, но с ней работать сложнее.
в общем, все не так фатально, перенес софт на другую платформу STM32F401,
вроде разобрался как писать во ФЛЭШ память, впереди длинные выходные, теперь будет время заняться.
Но плату все равно переделывать, UART (SBUS) на другие ноги приходит.
Но это мелочь )
Удалось перенести проект на другой камень,
пока правда без записи и чтения настроек конечных точек,
что бы не вносить новые ошибки.
сегодня занимался поиском и устранением ошибок,
тактовая частота процессора меньше, но это не беда,
а вот разрядность таймеров сильно отличается, в два раза.
как откроется “чип и дип” поеду за мелочевкой и буду травить и собирать новую плату.
добавил на нее четыре кнопки для “перспективного” программирования и еще пару каналов про запас.
прикрутил чтение настроек из FLASH памяти микроконтроллера,
чуть позже исправлю кусок программирования в части записи настроек во FLASH,
и можно будет считать, что вернулся к “до аварийному” состоянию.
заодно разобрался, как можно будет дистанционно править код (через интернет) программы ).
иначе говоря, после того как изделие будет отправлено, я смогу дистанционно удалить выявленные баги.
для этого потребуется только компьютер с USB портом и кабель USB-TypeC
Круто. Типа сервис по гарантии… 😀
нее, типа техподдержка.
далеко не у всех есть StLink, а как выяснилось загрузка прошивки через USB вполне себе работает ))
да и в следующей версии платы, которая в итоге уедет к Дмитрию, будет выведено на гребенку 14 каналов
и сделаны 4 кнопки, пока не понятно зачем, но что то мне подсказывает, что они пригодятся.
но пока расширять софт я не собираюсь )
а теперь маленькая презентация
А скорость и реверс серв потом можно будет менять?
с реверсом все просто, в режиме программирования меняем конечные точки.
со скоростью сложнее, пока такого функционала нет, Дмитрий обозначил временные рамки, исходя из них,
но сама скорость отработки это переменная, точнее время на выполнение операции,
if (_LFPos3 > _LFPos1) LFstep_ = (_LFPos3-_LFPos1) * cycle_ / timeF_ ;
else LFstep_ = (_LFPos1-_LFPos3) / timeF_ * cycle_ ;
if (_RFPos3 > _RFPos1) RFstep_ = (_RFPos3-_RFPos1) * cycle_ / timeF_ ;
else RFstep_ = (_RFPos1-_RFPos3) / timeF_ * cycle_ ;
вот так считается шаг смещения на каждый такт выполнения операции.
есть конечные точки, есть время выполнения операции и есть длительность одного такта.
для каждой сервы они считаются отдельно.
cycle_ и timeF_ это константы в программе, длительность такта и время на полный цикл,
сейчас для закрылков они составляют 40 мс и 100 мс соответственно
так что теоретически можно поместить в список изменяемых параметров.
но пока не планирую, важно довести до ума.
вот сейчас заканчиваю “писать” кусок открытия/закрытия створок.
день прошел сверх плодотворно.
закончил тестирование открытие и закрытие створок шасси, пока на прямую от тумблера шасси.
осталось дописать алгоритм выпуска/уборки шасси и можно переходить к рулению носового колеса.
Итого, что на данный момент работает.
- чтение настроек конечных точек из 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 каналом ))
в общем, пока хватит, думаю до конца выходных в первом приближении будет готово
Пока вспомнил,
Дмитрий, ОЧЕНЬ ВАЖНО, при включении питания этого устройства, чисто механически, шасси должны быть в убранном положении.
Просто потому, что совсем не понятно в каком состоянии при включении будут створки шасси, особенно в режиме первичного программирования.
А что случится, если шасси будут выпущены? Чисто с целью повышения образованности?
Как вариант - при включении сразу открываем створки, убираем шасси, ждем, закрываем створки.
самый главный момент с режимом программирования, при входе в режим, стойка должна быть выпущена или убрана.
- в режиме программирования, в первый раз, не понятно в каком положении окажутся створки шасси.
и как только я дам команду на изменение положения стойки, а это надо будет сделать обязательно (начальная инициализация),
то стойка может убраться через створки ну или выпуститься,
просто программа не знает в каком положении ретракт - при старте программы в принципе я могу прописать открытие створок и перевод шасси в заданное положение.
в принципе “защита от дурака” предусмотрена, до завершения программирования на ретракт вообще не подается никакая команда,
но всякое бывает, вдруг трабла проскочит
- программа не знает в каком положении ретракт
Ну дык я и говорю, что можно начать с открытия створок. Они всяко быстрее откроются, чем нога до них доедет. Но это только мысли вслух. Меня вполне устроит начальноубранное положение.