Создание собственной системы стабилизации

oleg70
rual:

плохо прочитали пункт “и” моего поста

“можно” != “надо” … (😃) , в простейшем случае, для управления “ручками” вполне пойдет…
(не все же сразу хотят “летающего робота”)

SergDoc:

Это Олег )))

да, это я (😃)

oleg70
rual:

Имеем квадрик

Александр, я тут размышляю - как поудобней останавливать процесс калибровки магнитометра (?)…
Другими словами программа ищет максимумы/минимумы по осям пока мы крутим аппарат,
а как ей понять что “достаточно”… (?)
У “фантома” например непонятно, калибровка как то сама заканчивается в определенный момент (то ли по времени ограничена, то ли еще как…).
Делал с “пищалкой”, но опять городильня лишняя, а вручную как то не “феншуй”… никак не придумаю что то…
есть какие мысли ??

rual
oleg70:

а как ей понять что “достаточно”… (?)

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

oleg70
rual:

пока за некоторый период времени

Ну да, получается, что всё ж привязка к периоду времени необходима… Я то хотел найти некий признак без ограничения времени “кручения” аппарата, что б поиск min/max по осям сам останавливался… ограничить этот поиск каким либо значением нельзя (теряется смысл)…
Придется всеж пищалку ставить, и выключать вручную… (зато надёжно)

rual
oleg70:

Я то хотел найти некий признак без ограничения времени “кручения” аппарата, что б поиск min/max по осям сам останавливался… ограничить этот поиск каким либо значением нельзя (теряется смысл)…

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

oleg70
rual:

и алгоритм поймёт, что калибровку ты решил прекратить.

Да, именно так, всё хорошо, но есть некоторые неприятные моменты при таком подходе (проверял) :
если при “кручении” держать аппарат не параллельно/перпендикулярно вектору магнитной индукции (а он находится под углом (?) к ЗЕМЛЕ), то изменение max/min прекратится - но калибровка получится не “идеальной” (а это не наш метод 😃)
… хотя и вполне рабочей…

SergDoc

А я тут опенпилотовскую методику осваиваю калибровки компаса - на шару не пошло ставил примерно на глаз по осям (в смысле по сторонам света) - получил 45 градусов отклонение!!! ищу - куда же дети мой мех. компас дели - надо по нему откалиброваться… и никак не догоню термокалибровку баро и ДУС-ов, что-то я не так делаю или у меня в коде что-то не работает - короче отдельная песня…
кстати на кого бы скинуть это мероприятие, а то щас Макс придёт скажет “делом надо заниматься, девочки, делом, а развлечения потом” © )))

VitaliyRU
rual:

и параметры ПИД не оптимальны для текущей передаточной характеристики ВМГ (приёмистости).

Все еще хуже 😃) Параметры ПД(И оставим в покое) оптимальны только для определенного возмущающего воздействия. Если настроить пару ПД на импульс Х, то для импульса 2*Х регулятор говоря Вашим языком “проскочит” - т.е. перерегулирование. И соответственно наоборот.
вот тут я пытался это наглядно показать, замедлено в 10 раз

Когда то пробовал считать через mV=Ft. Но расчетные обороты моторов разбегались с истинными(еще бы 😃, а мерить реальные мне стало лень 😃 - просто сменил работу 😃
PS На всякий случай уточню. Если коптеру на луч повесить грузик с ПД - получим постоянное вращение(до неприличных углов), с П И Д наклон. Адаптацию я так ниасилил сделать. По этому в ВИЕ добавил множители на каждый мотор и настраивал в висение в горизонте без постоянного наклона с И=0. Так он себя вел на порядок лучше. Дело же не только в ЦТ - каждый китайский мотор уникален 😃)

rual
VitaliyRU:

Параметры ПД(И оставим в покое) оптимальны только для определенного возмущающего воздействия

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

VitaliyRU:

вот тут я пытался это наглядно показать, замедлено в 10 раз

Виталий, было бы наглядно, но нужно хотя бы легенду ваших абстракций нарисовать. И было бы не плохо ещё и график во времени.
Вообще всякие регуляторы мне прививали моделировать в VisSime . Довольно удобно, просто и наглядно.

oleg70
SergDoc:

и никак не догоню термокалибровку баро и ДУС-ов

В даташитах на датчики (ms5611 не в счёт, там всё понятно) температурная компенсация по встроенному “термометру” практически не освещается… типа - “она должна быть”, а что , куда, непонятно …, приходится самому вылавливать тенденции уплывания показаний по осям… (при помощи жёнского фена, и льда из холодильника 😃)…

Drinker
oleg70:

температурная компенсация по встроенному “термометру”

Давным-давно (в нашей голагтеке) была такая FY-21AP от фейтех… так в отличие от остальных своих поделок они зачем-то отключили калибровку гир. До +5 работала, а ниже кирдык - сумашедшее вращение. Обогревающие лампочки над гирой помню спасали. Температура с баро шла.

alexeykozin
VitaliyRU:

mV=Ft

к примеру в ардукоптре
стаб пиды: угловая ошибка * стаб P,D
рэйт пиды: ошибка угловой скорости * рэйт P,D
управляющий сигнал: стаб+рэйт

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

угловая скорость и инерция по вращению
что то типа
m*d*omega=Ft

в первых прошивках были только стаб пиды, настроить было крайне сложно и нестабильно было от мощности и напруги

Drinker

Ну это в тему о темп компенсации. ИМХО на микроэлектромеханике это абсурд. Прецизионная она, индивидуальна для каждого экземпляра. Кстати, а чего пьезогиры 03 например вдруг одна стоит раза в три дороже мпу?

SergDoc

дык вот блин фен и украл, не помогло пока ))) или я уже отупел или что, надо разницу довести до 10 градусов, а потом ждать… короче щас не до того, скоро сезон, а мелкой только половина, так и хочется в иму влепить проц отдельный - парадокс в разъёмах ))) или в слоях, ещё один вопрос гложет - а воспримет ли инвертор (на XOR) PPM? тупо 1.5В по постоянке на входе или лучше отдельно пустить или поймёт - короче в голове каша, думал опенпилотом отвлечься и конвертопланом - нифига не помогает, а тупо делать на авось не катит, инвертор где-то такой лежит - надо пробовать…

Drinker:

а чего пьезогиры 03 например вдруг одна стоит раза в три дороже мпу?

мурата мля, классная вещь, но ацп к ней надо минимум 24 бит - раз, термокомпенсацию к ним придумывать на ходу- два или ждать пока остынут, я на них долгое время эксперименты, экспериментировал, но когда точность стм-овского ацп получается 2.6 градуса - это не есть гуд…

alexeykozin

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

SergDoc
alexeykozin:

зато стабильность будет

не, не покатит внешнее… что-то мне подсказывает - генератор это и 25В - это постоянная составляющая сигнала, а вот на осцилл так и не удосужился кинуть… хотя я и 100n туда ставил вроде как стабильней себя вели…

alexeykozin

навсякий случай еще раз глянул - постоянка

VitaliyRU
rual:

Оптимальны - это значит обеспечивают достаточное ( входящее в окно нормы) регулирование в результате воздействия

Просто по моим наблюдениям PD не очень оптимальная мат модель для коптера. Из-за сильного недорегулирования в зоне малых ВВ при гарантированном НЕ раксколбасе при больших ВВ.
Только пришел я к этому от обратного.
Есть вот такой девайс

Что бы добиться хотя бы такой стабильности, настривать пол часа, и это до первого падения. мотор чуть не ровно приклеил и все по новой.
у него очень низкая приеместость у моторов. Для вия P=2.5 всего, D=50. Но для идеального спокойного воздуха выкручивал и до 6(взлетал очень аккуратно с сетчатого покрытия), и тогда он стабильный. но это до первого заметного “порыва ветра”. Прошивать регули тогда еще не умели. Изначально он был на выпиленном ITG 3205 и ADXL 345. Вот и начал искать что там можно “математикой” сделать.

alexeykozin:

к примеру в ардукоптре
стаб пиды: угловая ошибка * стаб P,D
рэйт пиды: ошибка угловой скорости * рэйт P,D
управляющий сигнал: стаб+рэйт

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

угловая скорость и инерция по вращению
что то типа
m*d*omega=Ft

в первых прошивках были только стаб пиды, настроить было крайне сложно и нестабильно было от мощности и напруги

Да я примерно к тому же и пришел. Там мрак…
3х мерная матрица Тяга по времени, а по ось Z это все еще по просадке lipo.
Плюс все вся эта матрица работает для отдельно взятого lipo. Для нового все по новой мерить. + нужны свои регули. Что бы знать обороты моторов и управлять ими так, что бы матрица соответствовала действительности. + еще амперметр и кривая зависимости тока от напруги(для оси Z матрицы).
Все это интерполировать никакая ардуина это не потянет. Так STM32 c железной точкой в шкафу и лежит 😃 В обшем я забил - жизни не хватит 😃
Да и итоговую кривую(Р это прямая кривая) можно имперически вывести, но силенок уже не хватило 😃
Да и тут недавно почитал как NASA делала управление DC 10 без гидравлики, только дрыгаетлями. Даже они не асилили и попросили сделать honeywell(кажись) что бы управление тягой было линейным 😃)
Да смое главное забыл. Все эти ужосы нужны что бы знать кривую F(тяга мотора) по t. Как только площадь под кривой Ft = mV(измеренной гириком) меняем знак управляющего воздействия на противоположный. Вы идеале все устаканиться с первой попытки - скорость моторов с противоположных сторон и V в 0.

rual
alexeykozin:

к примеру в ардукоптре
стаб пиды: угловая ошибка * стаб P,D
рэйт пиды: ошибка угловой скорости * рэйт P,D
управляющий сигнал: стаб+рэйт

Вот это интересная тема пошла! Самому было лень копаться в адрдупилоте, интересно послушать тех кто на нём “собаку съел”.
По сути получается в Акоптере режим “ливел” (так вроде называется, если маразм не подводит) получается добавлением стаба угла к режиму “акро” и переключением входа стаба “акро” с “ручек” на величину ошибки угла?

alexeykozin:

m*d*omega=Ft

Тут я не понял… F- тяга, t-время, omega (w) - угловая скорость, d - двойная удельная (для распределенной массы) длина плеча силы ? Тогда m*d*omega= интеграл F(t) *dt, но для постоянной F верно…
Вот опять не увидел И звено в пидах. Что будет если к одному лучу подвесить небольшой груз?

Drinker:

Ну это в тему о темп компенсации. ИМХО на микроэлектромеханике это абсурд.

Согласен на 100%.

SergDoc:

мелкой только половина, так и хочется в иму влепить проц отдельный - парадокс в разъёмах )))

Серёг, это уже есть , у тебя дешевле выйдет?

SergDoc:

а воспримет ли инвертор (на XOR) PPM?

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

SergDoc:

инвертор где-то такой лежит - надо пробовать…

вот это правильно!

SergDoc
rual:

Серёг, это уже есть , у тебя дешевле выйдет?

это не то ))) дёшево не будет, но назоводы должны кипятком писаться))) короче всё в своё время…