Кому лимон?

ssilk

Дык, гайдропы используют в авиации уже 230 лет…😁

Алфизик
digitall:

У меня есть результаты опыта с винто-моторной группой, т.е. характеристика резкого набора оборотов и резкого снижения (скриншоты выкладывал десяток постов выше). Как из этих опытов можно получить параметры для ПИД-регулятора?

Извините, что-то не обнаружил скриншоты. Честно говоря, не было времени всю ветку просматривать, и ещё интернет тупит(3G-модем). Пришлите ссылку в личку. Разберёмся, о каких ПИДах речь, вон у кроковской команды этих ПИДов целая иерархия.

Алфизик
ПНКист:

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

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

ПНКист:

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

Тем не менее, квадрики получают всё большее распространение, большей частью из-за своей технологичности: отсутствует автомат перекоса (эмулируется программно). Ардроны у некоторых команд покупаются один за одним, как расходный материал. Настоящие рабочие лошадки.

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

Главное, что этот программный автомат перекоса изготавливать не надо - залил софт, и всё!!! А процессорные мощности растут с каждым днём, и их нужно наполнять правильным софтом.
Но только чтоб не получалось так:
“Зачем ставят блоки управления на неуправляемые ракеты? С целью повышения их неуправляемости!”

ПНКист

Во, и сайт заработал и моб. версии.

Алфизик:

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

Проблема тут гораздо глубже.

Алфизик:

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

Согласен полностью.

Алфизик:

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

+1…

Алфизик:

“Зачем ставят блоки управления на неуправляемые ракеты? С целью повышения их неуправляемости!”

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

Алфизик

2digitall: Нашёл, нашёл я ваш пост!!! Мне модем пришлось поменять, а то со старым какое-то горе. Такое ощущение, что он стал медленно накрываться медным тазом, через который радиоволны ходят всё хуже и хуже. Приношу 1024 извинения.
Посмотрел я ваши графики, почесал репу… Вообще-то так быть не должно. Первый график должен быть как и второй, только вывернутый наизнанку. Электродвигатели умеют набирать обороты быстро, а у вас этому мешает регулятор, он действительно самолётный. Если на самолёте резко повысить обороты, то произойдёт мгновенный рост крутящего момента, и соответственно, начнётся крен. То есть в регуляторе реализован плавный переход с режима на режим, чтобы регуляторы канала крена успевали подготовиться к росту крутящего момента, чтобы не перенапрягались и не вываливались из критерия применимости ПИДов вообще. Это нужно как-то бороть, ищите доку на свой регулятор, прошивку с быстрым реагированием. Может быть, заменить регулятор на самодельный?

PS: А может, люди и на таких регуляторах летают, а я и не знаю?

digitall
Алфизик:

PS: А может, люди и на таких регуляторах летают, а я и не знаю?

Ага, летают, вполне нормально летают:

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

slvn
digitall:

Накопленная энергия во вращающемся двигателе с винтом, не успеет так же быстро рассеяться

Там будет очень маленькая энергия. У Вас маленькие винты, легковесные, а магниты двигателя находятся на малом радиусе. Это не вертолет с огромным радиусом лопастей. В принципе, момент инерции мат. точки mr^2. Да, энергия еще будет пропорциональна квадрату угловой, но и это ничего не даст особо. Энергия при раскрутке винта расходуется в основном на лобовое сопротивление набегающего потока на винт, а не раскрутку системы винт-двигатель, преодолевая ее общий м.и. Так что не стоит, на мой взгляд, это учитывать в Вашем случае.
Задача регулятора поддерживать заданные обороты. И не важно растут они, или нет. Для этого анализируется ЭДС на пассивной обмотке, т.к. мы используем двигатели без датчиков. Как раскручивать двигатель, так и тормозить его можно только, воздействуя на обмотки. Худо-бедно с этим обычные регуляторы справляются. Только задача у них иная, еще и максимально сохранять энергию, да и сделать так, чтобы они сами не погорели, да и двигатель тоже. Еще и по этой причине стоят фильтры на резкое изменение оборотов. Сами понимаете, что вся такая резвость еще и приводит к большим рывкам тока, а при торможении - к выбросам обратной ЭДС. Не факт, что батарея на это способна, а также и сам регулятор по своей силовой части. Есть еще куча нюансов. Хотя бы те же длинные и накрученные абы как на самодельных коптерах провода с соответствующей индуктивностью. Какой там резкий рывок по току?.. Ну и еще много можно чего напридумывать, что влияет;)

digitall
slvn:

Ну и еще много можно чего напридумывать, что влияет

Это все понятно, тем более, что замеры я делал подключившись к одному из силовых выходов регулятора, а пока настраивал измеритель (созданный собственноручно) на нужные пороги напряжения триггеров, нагляделся на осциллограммы работы двигателя и пришел к выводу что значение сигнала на входе регулятора влияет только на скважность ШИМ, выдаваемого на обмотки, т.е. питание двигателя продолжается, но меньшей энергией, по факту - пассивно ждут пока он сам замедлится, на что уходит больше времени чем на раскрутку при полном питании. На мой взгляд именно это основная причина такого кардинального отличия в графиках и времени переходного процесса. Поправьте меня если где-то ошибся. Посему мой первоначальный вопрос так и остался без ответа - я не встречал тех, кто заботился об этой разнице в переходных процессах и до сих пор нет полной уверенности стоит ли вообще об этом заботиться.

slvn
digitall:

и до сих пор нет полной уверенности стоит ли вообще об этом заботиться

Заботиться о том участке, где обороты не дают почти никакой подъемной силы нет никакого смысла, имхо. Я нашел Ваши графики, еще раз посмотрел. Посмотрел “на глаз”, т.к. шкала временная там у Вас не нарисована. На графике торможения почти половина указанного Вами времени (1.4 сек) приходится на обороты ниже 2000. Ничего почти такие обороты не дают. Так же “на глаз” показалось, что при изменении оборотов с 4000 до 6000, и разгон и торможение одинаковы по времени - 0,2 сек. И если Вы хотите увидеть более быстрое торможение, то на этом HK SS есть функция тормоза, которую можно запрограммировать. Но это не нужно. На мой взгляд, гораздо более принципиален тот параметр, что Вы указали: "Запаздывание примерно одинаковое: разгон 0,04 сек, торможение 0,03 сек. ". Вообще-то это очень много. А также стоит построить графики для меньшей дельты в оборотах, и разбираться уже в них.

digitall:

вполне нормально летают

Ну и по этому поводу добавлю. У Вас все хорошо летает. Еще и конструктив сам правильный. Получился весьма компактный аппарат, и с защитой, обладающей минимальной инерцией. Лишь бы он мог тянуть все оборудование. Если брать то, что все это для полета в помещении, то и так сойдет. А вот если будет внешнее воздействие в виде ветра или еще чего, то нужны более быстрые и мощные настройки по ПИДу. Но этого, возможно, Вам и не нужно. Ну и не летайте на полигоне близко к стене на всякий случай. Вихревые отраженные потоки весьма непредсказуемы.
Все же, если хотите, чтобы его не качало, как на видео, а чтобы он жестко держал горизонт, без жесткого ПИДа с соответствующим ответом регулятора не получится. Но, не думаю, что сейчас есть время на эксперименты.

digitall
slvn:

при изменении оборотов с 4000 до 6000, и разгон и торможение одинаковы

Верно подмечено, спасибо за уточнения! Только что проверил по графикам.
Касаемо запаздывания - таки да, но оно в большей степени обусловлено низкой частотой ШИМ (50Гц), что уже дает задержку до 0.02 сек только на смену параметра ШИМ в МК, а пока его еще регулятор измерит, пока отреагирует, вот и набежало 0.04 сек. ИМХО.
По конструктиву - специально разрабатывался под конкретную задачу (сразу понимал, что буду много его бить) и эксперимент оказался более чем удачным. Пробовал летать на улице - сдувает как перышко. Влияние отраженных потоков от стены немного снизилось за счет закрытой конструкции винтов, как и взаимное влияние друг на друга. А вот грузоподъемности оказалось - впритык. Возможно даже придется идти на компромисс, чтобы уложиться в 2 - 2,1 кг.
Очень хочется опробовать нормальную прошивку для регуляторов, но как известно лучшее - враг хорошего. Я этого никогда не делал, боюсь навредить и остаться без регулей в самый ответственный момент, но обязательно попробую позднее.

slvn
digitall:

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

Верно, не делайте ни в коем случае сейчас. Времени впритык. Его нужно максимально тратить на другое. У меня вот лично как раз горький опыт последствий экспериментов, чтобы было еще лучше - это не прохождение КТ3.

Алфизик
digitall:

и до сих пор нет полной уверенности стоит ли вообще об этом заботиться.

Ну хорошо, давайте начнём с того, что же такое ПИД-регулятор и для чего он. Владислав, вы правильно заметили, регулятор меняет значение ШИМ, и далее обороты устремляются к новому значению по экспоненте. Так вот, задача правильного регулятора заключается в том, чтобы к новому значению приходить не по экспоненте, а как можно более “квадратно”. Вы можете возразить, что быстее, чем по экспоненте не получится, но вы выбрали самый крайний случай - изменение до максимальных оборотов. А вот предположим, что нам нужно изменить обороты с 2000 до 3000. Как будет действовать правильный регулятор? Он сначала выдаст максимальное значение, и когда обороты достигнут 3000, выдаст значение ШИМ, при котором обороты установились бы на этом уровне. Крутой кусок экспоненты послужит для перехода от одного значения к другому, так быстрее всего, “квадратнее”. Регулятор может быть как с обратной связью(измеряет обороты), так и без неё. Во втором случае в регуляторе должна быть реализована функция, которая компенсирует запаздывание раскрутки ротора. Поскольку ротор является интегратором, ему в пару нужен дифференциатор, реализованный программно. Теперь о том, “заботиться о разнице или нет”. Регуляторы оборотов двигателей входят в другую, более сложную систему регуляторов крена-тангажа. Эта система имеет совершенно другие временные параметры, обусловленные моментами инерции летательного аппарата по соответствующим осям, эти моменты гораздо больше, чем у пропеллеров. И ещё в регулирующие системы вносят задержку, подтормаживают их, чтобы не происходило перерегулирование, когда регулятор слишком сильно-быстро поменял параметр, и ему приходится тут же отрабатывать обратно, туда-сюда, неустойчиво, с колебаниями. Вот эта разница задержек при раскрутке пропеллеров и при остановке может оказаться каплей в море в задержках во всей этой регулирующей системе. А может и не оказаться. Если в системе регулирования есть запас устойчивости, можете не напрягаться. А если захотите отрегулировать систему на “самый оптимальный оптимум” между быстродействием и устойчивостью, придётся в ней “выбрать все зазоры”, тогда и до регуляторов двигателей придётся докопаться и домотаться.

digitall
Алфизик:

Регулятор может быть как с обратной связью(измеряет обороты), так и без неё

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

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

Алфизик
digitall

Спасибо за науку!

Рад стараться.

ПНКист:

Жаль, что уже июль, а не январь.

Время, вперёд! Я знаю, у вас в Иркутске время на несколько часов от Москвы вперёд, но не на несколько суток же. Или вы вместе со своим крутолётом попутно сотворили машину времени? Ма-а-аленькую такую, ближнего радиуса действия…
Как там с неуправляемостью? Похоже, с ней у многих команд полный порядок. Я завтра хочу отписать про иерархию ПИД-регуляторов, надеюсь, поможет. Чтоб хоть к КТ4 у всех всё летало, может и не шустро, но устойчиво. А то мы с вами такой финал получим…
Большой АрДронный Коллайдер, вот что это будет. Там элементарными частицами всё будет усеяно. Я такой финал не хочу.

Алфизик

Вот, собственно, про ПИДы. Сколько их должно быть всего? А сколько степеней свободы у летательного аппарата, плюс к тому, сколько у него органов управления. Для дрона три оси перемещательных, три вращательных и четыре пропеллерных. Для вертолёта тоже всё пересчитываем, оси рулевых машинок в автомате перекоса тоже не забываем. Про пропеллерные ПИДы чуть выше немного обсудили, поэтому начну с другого края. Например, ПИД канала высоты, для чего он нужен? Какой информацией он оперирует? Нужен для того, чтобы после получения команды, допустим, “набрать высоту 1 метр” спустя минимальное время аппарат оказался на 1 метр выше, чем был, при этом остальные параметры полёта оказались возможно более близкими к первоначальным. Это существенно, а то ведь можно так нарегулировать, что высоту наберёт, и скорость заодно, и ещё дальше полетит по инерции, беги-лови его. А дальше объясняю на простых примерах, от простого к сложному. Как выполнялся бы манёвр космическим кораблём в невесомости? Импульс двигателем в одну сторону, через некоторое время - в другую. А вертолёт что сделает? Прибавит обороты(либо шаг, у кого как), набирая вертикальную скорость, а после убавит, не до висения, а ещё меньше, и по инерции взойдёт на заданную высоту, и только на ней восстановит прежние параметры. Для всего этого ПИД оперирует несколькими данными, прежде всего массой и либо ускорением(с акселерометра), либо тягой(от оборотов). Есть другие параметры, о них попозже. Итак, акселерометр. Иногда кажется, что он вообще кажет что хочет, реагирует на любой стук, даже в покое ведёт себя беспокойно, а на вибрирующем вертолёте - и подавно. При этом проинтегрировать его показания один раз, чтобы получить скорость, и проинтегрировать скорость, чтобы получить перемещение, вот эта задача весьма нетривиальная. При интегрировании константа выплывает, при втором - вообще всё убегает со страшной силой. Поэтому акселерометр - только для того, чтобы констатировать, что переходный процесс успокоился, и ускорение равно земному. А весь остальной манёвр - за счёт физики процесса. Кстати, хороший фильтр для акселерометра сегодня выложу. Пойду материал по нему готовить, а вы пока осмысливайте.

digitall
Алфизик:

Пойду материал по нему готовить, а вы пока осмысливайте.

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

Алфизик

Люди, я вам обещал интересный фильтр для акселерометра, но у меня тут ситуация дурацкая: видит око, да скриншот неймёт. Помогите себе сами, хорошо? Я вам сейчас распишу, что и как.
1.Берём поток данных от реального акселерометра в реальных условиях. Не в полёте, лучше в руках держать.
2. От этих значений находится экспоненциальная средняя Y1=X*K+Y0*(1-K);
Вот с этим К придётся немного поэкспериментировать.
3. Ещё две экспоненциальные средние находим, но с условиями: у одной значение обновляется только когда данные выше или равны вот той первой средней, а у другой - ниже или равны. У обеих коэффициент меньше чем у первой раз в 5 (т.е. медленнее). Должны получиться две более-менее стабильные границы, средняя постоянно мотается между ними. Не обращаем на неё внимания, пока она не попытается оттуда выйти.
4. А вот если попыталась, то тащим обе границы вслед за ней. То есть сдвигаем обе ровно настолько, насколько попыталась выйти.
5. Между этими двумя границами находим ( A+B )/2, это и считаем показаниями акселерометра.
Сделайте, пожалуйста кто-нибудь и выложите сюда, а то мне некогда разбираться почему не получается, на работе конец месяца, могут премировать, а могут кремировать.

digitall
Алфизик:

Сделайте, пожалуйста кто-нибудь и выложите сюда,

Попробую реализовать сегодня-завтра, как время позволит. Несколько небольших вопросов ,возможно не очень умных, показания берем откалиброванного акселерометра или “raw”? на какой диапазон настроить? и на какую частоту настраиваем выдачу показаний (от этого зависят параметры шума)? Нужно ли подстраивать внутренние цифровые фильтры акселерометра? На всякий случай уточню, использую комбинированный датчик LSM303DLH от ST c 12-разрядными сырыми данными. Обмен по I2C на 200кГц (магнитометр почему-то на 400кГц не откликается).
Да и, если можно, пару слов о физике/математике фильтра, чтоб лучше понимать что искать и куда смотреть.

Алфизик

Я мучил акселерометр ММА7455, он не интеллектуальный вовсе, 10 разрядов на 8g, данные абсолютно сырые, снимаются когда сам выставит готовность, частота шины - любая, успевает. Можно с любым проделать.
Стохастический подавитель какой-то. Физика фильтра мне самому не совсем понятна. Я не люблю такие вещи, которые раздирают данные напополам. Но он работает, и гладит хорошо, и реагирует быстро по сравнению со всем остальным. А глядеть графики хорошо, когда они ВСЕ на экране. Сразу видно, что было и что стало. Коэффициент подбирать, чтобы средняя моталась почти до самых границ, но не задевала их, а то потащит.

digitall
Алфизик:

Стохастический подавитель какой-то

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