Контроллер для кордовых электричек

Маркс
VitalikV:

кв мотора и регулятор не могут работать с точностью до одного оборота.

в программе есть дельта, сейчас она 1/64 от требуемых оборотов в обе стороны.
при 6000 оборотах это составит примерно ±90 оборотов.

VitalikV

У нас нет опоры, сейчас мы опираемся на желаемые обороты, а не на то что может держать система. Т.е. это как в шаговом двигателе, на один шаг открыть дроссель мы можем, а на пол шага нет, и если эта дельта попадает в эти пол шага, то система начинает ловить заданные обороты, которые физика не может выполнить.

На 6000, это 90 оборотов, а на 2000, это 31 оборот, это наверное и вызывает их плавание. Системе проще стабилизироваться в большом диапазоне, чем в маленьком.

Маркс

на малых оборотах изменение последних значительно медленнее и система успевает “накрутить” длительность PWM,
а потом ей приходится “крутить” обратно, а если сделать задержку на ожидание результата,
как это сделано в видео, один раз в 10 мс например то “плавает” значительно меньше,
но тогда разгон от минимальных к максимальным становится медленнее.

я сейчас “курю” тему библиотека Гайвер ПИД, вероятно оно в состоянии помочь.
alexgyver.ru/gyverpid/?ysclid=ls9c08i1u3167093356
Надо только найти пару часов, что бы разобраться "с чувством, толком и расстановкой"©

VitalikV

Прочитал про ПИД, но это все равно не особо сильно решает наш вопрос, вернее решает его, но при условии, что есть некая сетка по которой работает наша “дроссельная заслонка”.

" Дроссель" мы можем только открыть, либо закрыть на один шаг, сколько это оборотов, при той или иной системе мотор-регулятор-батарея? Т.е. в приделах этого шага, мы считаем обороты правильные и не требующие регулирования.

А вот когда обороты выходят за пределы этого параметра, то уже тогда начинает работать ПИД, принимая решение о том, надо нам открыть/закрыть наш “дроссель” на один, два, три шага, или нет.

Но при всем при этом, мы не можем сместить нашу “дроссельную заслонку” на пол шага, что бы получить точность до одного оборота.

А теперь вводные, в моем примере “дроссель” это не таймер, а регулятор, где таймер всего лишь “педаль газа”. Давить на педаль мы можем до упора, выдавать любой сигнал, но дроссель будет работать только по тем шагам которые в нем есть.

Маркс
VitalikV:

но это все равно не особо сильно решает наш вопрос

на самом деле решает ))
ПИД регулятор предназначен как раз для регулировки чего либо на основании
есть текущее значение, например текущие обороты, измеряет тахометр
есть требуемое значение, нужные обороты, задаются в программе
есть изменяемая воздействие, в нашем случае длительность PWM сигнала на регулятор

собственно говоря сейчас в программе все таки и работает
если обороты меньше необходимых (с заданной погрешностью),
таймер начинает увеличивать длительность PWM и наоборот.

Сейчас “трабла” состоит в отсутствии коэффициентов компенсации.
т.е. для значительного изменения оборотов надо менять длительность PWM на большую величину,
а при компенсации изменения от нагрузки или просадке АК коэффициент надо уменьшить.
Именно это и будет делать библиотека ПИД регулятора, я с ней постепенно разбираюсь.
Но времени не хватает, вечером могу только часок выкроить.

VitalikV:

что есть некая сетка по которой работает наша “дроссельная заслонка”.

сетка не поможет, в статике она будет одна, в полете другая,
при наборе высоты третья, при просадке батареи четвертая.
слишком сложно.

Оно и сейчас работает, только набор оборотов идет медленно ),
но на самом деле на высоких оборотах реакция вполне адекватная,
а перед взлетом можно пару секунд и подождать ), пока разгонится мотор.

VitalikV

Так таблица и решает скорость набора оборотов, мы их не подбираем, а просто перепрыгиваем в нужную ячейку и уже там начинаем регулировать.

Так же остается вопрос, при прохождении угла, сколько оборотов добавлять? Времени на подбор этих оборотов не будет. Мы должны компенсировать не только падение оборотов мотора, но и падение скорости модели.

Маркс

а как этот вопрос решается на ДВС ?
по реальной скорости модели вообще нет никакой информации.
и взять ее не откуда, разве что (в порядке бреда) считать на основании данных акселя и гирика,
но боюсь вычислительных мощностей даже ESP32 может не хватить для расчета с приемлемой ошибкой.

VitalikV

Система Двс, настроена таким образом, что мотор начинает набирать обороты , а не просто их поддерживать. Скорость подбирается воздушным винтом и длинной тросов, как и на электро.

Нам нужно имитировать это впиливание мотора на углах, для этого и нужно будет сделать коэффициент усиления, при возрастании нагрузки на винте, при прохождении угла.

Маркс

Виталий, Вы можете написать примерные максимальные обороты двигателя на которых летают кордовые электрички.
Что то мне подсказывает, что если обороты будут больше 20000, придется кардинально менять алгоритм обработки.

Маркс
VitalikV:

Система Двс, настроена таким образом, что мотор начинает набирать обороты , а не просто их поддерживать.

эту функцию будет выполнять гироскоп. начальные обороты например 75 процентов от максимума,
а при переходе в набор высоты таймер будет повышать обороты до заданного значения, в пределах 100%

VitalikV:

при возрастании нагрузки на винте

при росте нагрузки или снижении напряжения питания гувернер будет поддерживать заданные обороты

VitalikV
Маркс:

Виталий, Вы можете написать примерные максимальные обороты двигателя на которых летают кордовые электрички.

Возьмем пример из существующих таймеров, от 4500-16000

Маркс:

эту функцию будет выполнять гироскоп. начальные обороты например 75 процентов от максимума,
а при переходе в набор высоты таймер будет повышать обороты до заданного значения, в пределах 100%

А что мы считаем за максимум, за 100%? Мы задаем обороты для полета, а максимум мы не знаем… С каждым винтом этот максимум разный.

Единственное что мы можем изначально установить это диапазон регулировки газа от 0 до 100%, а обороты в этом диапазоне разные.

Маркс

есть кВ мотора, от него вполне можно отталкиваться,
есть напряжение батареи, например 12В, при кВ 1200 максимальные обороты 14400,
берем 70 процентов например, получаем 10000 номинальных оборотов,
от них пляшем подбирая пропеллер.

VitalikV

Это обороты холостого хода, без винта и то примерные.

Нам надо сделать максимум 90%от диапазона, а 10% на работу гувернера вверх. Это будет нас страховать от того, что кто то выкрутит обороты в упор, и не будет запаса на регулирование.

VitalikV

Немного не так, 10% процентов это аварийный запас, на случай когда нужны обороты, но при этом нет возможности поставить акб, с большим количеством банок, или заменить мотор, на мотор с более высоким кв.

А так если система подобрана правильно, то мы и будем летать на 75-80%, и запас на работу гувернера будет больше.

Просто получается так, что если нам надо крутить большой винт, мы ставим мотор с низким КВ и либо работаем с ним в верхнем диапазоне “дроссельной заслонки”, для получения необходимых оборотов, либо ставим акб с большим количеством банок. Больше банок, больше вес, что не всегда можно разместить на модели. К тому же количество банок может быть ограничено характеристиками мотора и регулятора.

Маркс

значит надо будет прикручивать калибровку гувернера,
что бы в статике он измерил максимальные и минимальные обороты,
а от них уже плясать, но это дело будущего.
сейчас я могу сделать режим калибровки “на столе”,

  • ставим модель на стол, фиксируем
  • подключаем таймер к компьютеру
  • запускаем в таймере кусок калибровки максимальных и минимальных оборотов с измерением
  • в мониторе последовательного порта смотрим и от полученных цифр пляшем.
Маркс

второй вариант, когда и если срастется прикрутить STM32
в WEB морде кнопка “Калибровка”, которая вызывает программку которая все делает сама прямо в поле.
и менять полетные обороты можно будет прямо со смартфона.
WEB мордочку я уже немного научился делать, осталось скрестить таймер с ней.

VitalikV

Еще раз, не правильно привязываться к оборотам, эта величина не постоянная, неизвестная, и она нам нужна просто какая то установившаяся.

При замене аккумулятора или винта, нам придется калибровать заново, да и на поле ноут никто не потащит. Аккумулятор меняем после каждого полета, калибровать?

Единственное что у нас постоянно, это диапазон , который мы можем задать и под него откалибровать регулятор.

Маркс

и ваапче, как я понимаю кордовым важна линейная скорость,
фиксируете номинальные обороты на 75 процентов от максимальных (запас для гироскопа),
а дальше подбором пропеллера добиваетесь требуемой скорости.
а уж стабильность оборотов мотора в прямолинейном полете гувернер как-нибудь обеспечит

Маркс

надо понимать, что гувернеру филетово напряжение на батарейке,
я ему даю “цифру” требуемых оборотов и он к ним будет стремится.

VitalikV:

привязываться к оборотам, эта величина не постоянная, неизвестная,

это как раз та величина которую я могу измерить и отрегулировать программно,
для этого и служит гувернер с обратной связью от мотора, он РЕАЛЬНО измеряет и изменяет обороты.
при этом, гувернеру глубого по фиг греальная скорость модели, он будет держать заданные обороты,
пока хватает управляющего воздействия в виде диапазона PWM.

а вот линейная скорость не известна никак
если нужно, тогда давайте начнем городить трубки Пито и измерять скорость ))

VitalikV

Примерно да, так и есть, допустим, что линейная скорость зависит от оборотов мотора, а обороты мотора, зависят от положения “дроссельной заслонки”.

Как только гувернер видит падение оборотов, он добавляет газ , выравнивая их. На этом пассивный гувернер у нас отработал.

Но так же можно его сделать активным, а то как то 25%оборотов утилизировать на полет по горизонту, жалко.