Контроллер для кордовых электричек
Поставьте программу на телефон жены, если там все заработает, проблема не в таймере, а в телефоне.
Причины, модуль блютуз на телефоне либо завис, либо подключился к другому ранее сопоряженному устройству. Отключить все сопряженные устройства, перезагрузить телефон. Второй вариант более геморный, ошибка в автоматических обновлениях телефона от производителя, могут быть не видны устройства BLE, при этом стандартный блютуз будет работать… Тут надо уже по модели телефона разбираться, либо откат, либо переустановка этих обновлений.
Serial Bluetooth Terminal от Kai Morich для андроида не ниже 4.3
упал и периодически стучим пропеллером об планету… Это всё на откуп регулятору. Увы дешёвые регуляторы от Али функции отключения при перегрузке не имеют. Какие модели условно бюджетных регуляторов могут отключаться при блокировке мотора я не ведаю. Если кто ведает пишите.
Надо брать те, что чуть по дороже))) Сказать, какие именно регуляторы с Али, умеют отключать мотор при заклинивании, сложно, так как это не всегда указано в инструкции или в описании, тут только пробовать.
Я себе брал фирмы ZTW, мне понравились эти регули, качество исполнения хорошее, в землю не тыкал, поэтому не знаю отключается или выгорает. Цена средняя, хорошая градация по Амперажу и весу.
Единственное на что советую обратить внимание, это на напряжение BEC, не все таймеры могут переварить 5,5V и более. Так что не забывайте читать инструкцию на таймер, при выборе регулятора.
Всем БОЛЬШОЕ СПАСИБО!!! Все получилось после переустановки программы и перегрузки телефона! Скоро в небо!!!
меня не оставляют сомнения, если есть гувернер, зачем нужен гироскоп ?
Тут наверное все зависит от гувернера, его основная задача поддерживать обороты, в диапазоне установленных.
Но иногда нужно лететь по горизонту медленнее, а этих оборотов не хватает на вертикалях, и тут уже должен работать гироскоп.
Но я бы сделал функцию гироскопа отключаемой, так же как и функцию гувернера, может кому то с гироскопом понравится летать больше, чем с гувернером.
Как я понял, на системе Бургера гувернер встроен в регулятор, и он просто обеспечивает стабильные обороты, а за перегазовки отвечает гироскоп.
В КР таймере, за перегазовки отвечает гувернер в самом таймере.
В нашем случае, я вижу два режима работы гувернера, пассивный как в регуляторе и активный как в КР таймере.
Моё решение контрдоллера:
А схему и файлики прошивки в студию для повторения. Или это коммерческий проект?
Сказ про то "Как вредно быть сильно умным"©
А пока оптимизировал уже написанный код, но ошибку так и не вывил, а без “визуализации” сложно.
полтора месяца ломал голову, что же я такого сломал в программе,
что она отказывается работать, да еще осциллограф не работал.
сегодня подключил осциллограф и увидел, что PWM идет правильный, а мотор крутится “через ж…”.
Оказывается аккумуляторы иногда надо заряжать, хотя бы раз в месяц ))
их у меня целых три и все три оказались посажены до 3В/банка.
И при попытке гувернера увеличить оборотов регулятор просто уходил в отсечку.
у меня просто нет слов (((
а я уже половину программы гувернера переписал в поисках логической ошибки.
поставил на заряд кучку 2S LiPo и пошел пока “курить бамбук”.
Сегодня утром переписал обработчик прерываний от операционного усилителя,
а дальше семь часов искал ошибку в программе.
кто же мог подумать, что в семи строчках кода можно сделать такую глупую ошибку.
void isr()
{
isr_time = micros();
isr_period = isr_time - isr_prev;
isr_period_buffer [isr_buffer_count] = isr_period ;
isr_prev = isr_time;
isr_buffer_count++;
if (isr_buffer_count > 15) isr_buffer_count == 0;
_isrFlag = true;
}
дрогнула рука и вместо присвоения ноля я влепил оператор сравнения с нолем.
я могу себе позволить делать “много кода” в обработчике прерываний, потому как точно знаю,
что других прерываний ПОКА не будет, но все равно, этот код из обработчика уже вынес ))
да и сделано это было в поисках ошибки, возникавшей по причине посаженных АК
теперь я его вернул к прежнему виду
void isr()
{
isr_time = micros(); // запомнил момент прерывания
_isrFlag = true; // поднял флаг
}
Вычистил все траблы
следующим шагом будет поиск путей ускорения процесса стабилизации оборотов
пока шаг проверки и корректировки 20 мсек, при шаге PWM - 1, если сделать меньше,
на маленьких оборотах они начинают плавать, сказывается задержка раскручивания и остановки мотора.
на системе Бургера гувернер встроен в регулятор
с большой долей вероятности вертолетная прошивка, например как в регуляторах YGE/YEP и их клонах.
“перегазовки” могут быть реализованы настроенными заранее, переключаемыми полками гувернера.
а еще поэкспериментировал, на 2/3 газа и выше, никакой задержки не требуется,
стабилизация оборотов в рамках установленной дельты происходит без траблов.
а вот ниже, в таком случае, идет заметное колебание оборотов до стабилизации.
это дело поправимое, можно сделать программное переключение.
Посмотрел видео, показалось, или стоит какое то замедление на подъем оборотов? Очень уж плавно они поднимались. Если убрать эту задержку, как будет работать? Может проблема и на низких оборотах уйдет. Плавная раскрутка нужна только на старте.
это только при первоначальном наборе оборотов, сама регулировка будет достаточно быстрой.
в видео корректировка производится (ЕМНИП) 200 раз в секунду на 1 мс длительности сигнала PWM,
т.е. от 1300 до 1800 мс 500 шагов по 5 мс итого примерно 2,5 секунды,
если сделать меньше или убрать совсем, то получится как на видео ниже,
до 4000 стабилизация оборотов получается достаточно долгой.
photos.app.goo.gl/xK2rxZUphStCykX58
надо городить ПИД регулировку, будет о чем подумать,
Дело в том, что регуляторы у всех разные, пропеллеры тоже,
пока не понятно от чего отталкиваться.
Не получится сразу задать PWM соответствующий реальным оборотам,
Программа приближается к ним снизу, проскакивает, потому что у раскрутки мотора есть задержка,
а потом ей приходится отыгрывать обратно,
На каждом такте, т,е. семь раз за один оборот мотора (количество полюсов),
программа сравнивает текущие обороты с требуемыми,
если текущие обороты меньше, программа увеличивает длительность PWM на 1 мс, если выше, то уменьшает,
на больших оборотах реакция мотора быстрее, поэтому стабилизация происходит тоже быстрее
Ну так все правильно, таймер дает сигнал на 5000 об/мин, но система регулятор-мотор, не успевает выйти на заданные обороты, а таймер уже начинает их регулировать. Поэтому и должна быть задержка. Может имеет смысл, сделать плавающую задержку, меньше обороты больше задержка, больше обороты, задержка меньше.
это как раз и есть то самое, которое называется ПИД-регулировка.
буду думать как ее прикрутить.
есть готовые библиотеки, но они не подходят.
таймер дает сигнал на 5000 об/мин
не совсем так,
сейчас при старте программа “заводит” двигатель на минимальных оборотах,
PWM минимального газа + 50 мс, чтобы мотор начал крутится,
иначе гувернер не будет получать прерываний и ничего не сможет измерить.
А дальше программа сравнивает текущие обороты с требуемыми и меняет длительность сигнала PWM ±1.
И делает она это сравнение 7 раз за один оборот.
Завтра попробую уменьшить частоту измерений, сделаю один раз за оборот и посмотрю, что получится.
С другой стороны, регулировка оборотов нужна только в полете,
в принципе можно “подключать” гувернер позже, после старта мотора например на 80 процентах газа,
а дальше указываем обороты гувернеру и запускаем его.
И на посадке то же самое, отключаем гувернер и уменьшаем обороты с помощью прямых команд PWM.
Гувернер нам надо включать на любых заданных оборотах, уже после того как мотор вышел на эти обороты. Регулировка оборотов, для первоначально заданных, с шагом в 100 оборотов, нас устроит. При старте, таймер измеряет и выходит на нужные обороты, далее запоминаем импульс и уже относительно него регулируем, причем в низ нам регулировать, в принципе не нужно. Если при пикировании мотор разгрузился в пределах 100 оборотов (как пример), одного шага из заданных, то гувернер игнорирует это.
Куда важнее нам прибавлять на вертикалях, когда не хватает тяги.
Так же, если учесть, что обороты в основном зависят от напряжения батареи и КВ мотора, то при задании оборотов, более расчетных максимальных, то гувернер работать все равно не сможет, так как будет тупо висеть на таймере полный газ.
Может вообще имеет смысл, создать таблицы, как в инжекторных двигателях автомобиля и работать по ним.
Может вообще имеет смысл, создать таблицы, как в инжекторных двигателях автомобиля и работать по ним.
результаты в статике и в полете будут очень сильно отличатся,
кроме того, таблицы также потеряют смысл при снижении напряжения питания.