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

Маркс

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

VitalikV
Маркс:

никак, либо в полный газ летать, либо

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

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

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

Маркс
VitalikV:

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

“плавали” (вчера) они только “внизу”, на 4000+ уже не плавали, а сегодня уже и “внизу” не плавают
на моторах с оборотами выше 6000 они вообще плавать не станут

VitalikV:

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

слишком много табличек получится.
от напряжения от направления полета, по ветру или против ну и т,д.
есть гувернер, он держит заданные обороты, зачем таблички ?
он уже есть и работает, осталось его немного отшлифовать,
я сегодня уже не уверен буду я к нему вообще ПИД регулятор прикручивать или нет.
Вчера вечером я логику немного поменял с периодами опроса поигрался.

VitalikV:

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

если не будет запаса по PWM то никакого газа дать не получится )

VitalikV
Маркс:

слишком много табличек получится.

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

Маркс:

он уже есть и работает, осталось его немного отшлифовать,

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

Маркс:

если не будет запаса по PWM то никакого газа дать не получится )

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

Маркс
VitalikV:

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

что должно быть источником для проведения “регулировки” ?

VitalikV

Мы имеем диапазон регулировки сигнала pwm 800-2200 , этот диапазон делим на количество шагов, например 1400мксек/140шагов и получаем, примерно 10мксек. Сколько оборотов, у нас в этот один шаг, мы можем померить при запуске мотора, и дальше уже шагами работать для регулировки оборотов.

RandomJ

Не каждый регулятор понимает такой диапазон. Стандарт 1000 - 2000 мкс.

VitalikV

Уже во всех скетчах, что находил в интернете используют диапазон 800-2300. Но этот параметр всегда можно задать в программе как мин и макс pwm.

И нам собственно все равно какой диапазон делить на шаги, хоть 1500, хоть 1000, хоть 500, просто под него надо выполнить калибровку регулятора, чтобы он понимал когда у него ноль или полный газ.

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

RandomJ

Ардуиновская библиотека “SERVO” расчитана на сервы с отклонением 180° и диапазон сигнала там шире стандарта, с этим столкнулся когда собирал первый таймер CL-Pilot. пришлось чутка подправить скетч оригинальный.

Маркс
VitalikV:

мы получаем реальные параметры системы непосредственно перед полетом.

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

у длительности PWM и оборотами мотора нет никакой связи.
самая первая версия таймера делала то же самое, она есть,
в ней даже изменение оборотов в зависимости от изменения тангажа реализовано.
Timer_for_Plane_два варианта с шасси и без ЕМНИП.zip
если я правильно помню, идея гувернера появилась от желания иметь постоянную линейную скорость полета
не зависимо от состояния батарейки

Маркс

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

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

VitalikV
Маркс:

и ? а как он учитывает изменение напряжения батареи ?

Ни как, так же по оборотам или как то еще, например по обратной эдс, как сам регулятор.

Маркс:

у длительности PWM и оборотами мотора нет никакой связи

Это как? А как вы их регулируете? Какой pwm соответствует 50%газа? А 20%?

VitalikV
Маркс:

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

В итоге нужно , что бы модель летела более менее с одной скоростью.

Я опишу как работает КР таймер, а то и что как он меряет, оставим в стороне.

Мы выставляем обороты например 9000, по обычному тахометру. И можем отрегулировать степень усиления этих оборотов.

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

Из минусов при большом коэффициент, мотор так же начинает плавать по оборотам, поэтому его не рекомендуется выкручивать на максимум, и по умолчанию он 1.

VitalikV

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

Маркс
VitalikV:

Ни как, так же по оборотам или как то еще, например по обратной эдс, как сам регулятор.

вот тут Вы не правы, регулятор по ЭДС подстраивает фазы, он не смотрит на сами обороты.
вертолетные регуляторы с гувернером, умеют выдерживать заданные обороты,
но они их тоже не знают, полки выставляет пилот на столе в
процессе настройки по тахометру.

VitalikV:

Какой pwm соответствует 50%газа? А 20%?

сейчас диапазон в программе 1100-1940, значит 50 процентов соответствует 1520 мс

VitalikV:

А как вы их регулируете?

на входы операционного усилителя, приходят “отфильтрованные” сигналы с двух фаз мотора,
он вычитает один сигнал из другого и на выходе получает меандр.
меандр поступает на вход прерывания микроконтроллера
получая прерывания, МК считает их период и на основании этих данных вычисляет текущие обороты мотора.
если обороты ниже заданных (± дельта), программа увеличивает длительность PWM,
если обороты больше заданных, длительность PWM уменьшается.

в любой момент я могу в программе изменить требуемые обороты мотора и гувернер изменит текущие обороты.

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

RandomJ
Маркс:

А можно схемку что куда подключать для и на каких платках собирать?

Маркс

с этим сложнее, вечером попробую накидать.

но там одна кнопка подключенная на D12
и модуль GY521 (или GY85 надо вспомнить), подключается по стандартной схеме на i2с.

в видео звучить MPU6050, значит модуль GY521 или GY87

Маркс:
Скетч для Arduino IDE Постарался сделать как можно более читабельным Отвечу на все вопросы. Будет доработка в плане внешнего программирующего устройства на базе Arduino Uno и LCD дисплея. Так, благодаря хорошему человеку нашлась четвертая версия Timer_for_Plane_v4 Как это работает в настоящее время можно посмотреть на видео. www.youtube.com/watch?v=yQ3KyVNsnvo
VitalikV
Маркс:

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

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

Маркс

вечером скину проект кросс платы в формате EasyEDA со схемой и рисунком платы

Маркс

Cross_Plate_ProMini.zip

RandomJ:

А можно схемку что куда подключать для и на каких платках собирать?

GY521 подключается
SCL - A5
SDA - A4

Маркс

Но надо понимать, что в данный момент есть три отдельных программы для таймера.
Сам таймер, скетч начальной версии в архиве парой постов выше, он полностью рабочий.
Программатор для таймера, он на данный момент существует как отдельный скетч,
тоже рабочий, но не интегрирован в программу таймера.
Гувернер, это тоже самостоятельный скетч, на данный момент с ним полетать не получится,
для этого его надо интегрировать в скетч таймера, но при этом придется отключить гироскоп.