Прошивка BLHeli_S для ESC
И еще про пиды, раньше D ограничивали, делали его как можно ниже из за предела шумов которые увеличение D создавало ( эти шумы), после введения нотч ( отсекающего ) фильтра появилась возможность D задрать.
Это Борис написал
И
Yes unsynced pwm uses less CPU usage and is therefore perhaps the only good reason to have it running.
Меньше ест ресурсов проца и поэтому предпочтительно
И еще про пиды, раньше D ограничивали, делали его как можно ниже из за предела шумов которые увеличение D создавало ( эти шумы), после введения нотч ( отсекающего ) фильтра появилась возможность D задрать
Тащемта теперь мы задираем P потом D, а I не трогаем?
Тащемта теперь мы задираем P потом D, а I не трогаем?
Сам посуди, Р при появлении отклонения от внешнего воздействия “пинает” раму в противоположном направлениии, это его задача . Если Сила пинка большая, рама не остановится в центре и пролетит его в противоположную сторону, это осциляции и то что квадрик лихорадит ты увидишь. D предупреждает мозг о силе P и предсказывает как нужно тормозить чтобы сильно не пролететь через ноль. Это задача D, при малом значении квадрик пружинит, при большом, D участвует в суммарном пид и тоже может вызвать осцилляцию, это тоже ты увидишь. Задача I при этом на заключительном этапе до успокоить раму возле нуля и не дать колебаниям выйти за допустимые рамки. Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ? 😃
Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ?
Спасибо, уважаемый! Но я как баран на новые ворота… =)
Сам посуди, Р при появлении отклонения от внешнего воздействия “пинает” раму в противоположном направлениии, это его задача . Если Сила пинка большая, рама не остановится в центре и пролетит его в противоположную сторону, это осциляции и то что квадрик лихорадит ты увидишь. D предупреждает мозг о силе P и предсказывает как нужно тормозить чтобы сильно не пролететь через ноль. Это задача D, при малом значении квадрик пружинит, при большом, D участвует в суммарном пид и тоже может вызвать осцилляцию, это тоже ты увидишь. Задача I при этом на заключительном этапе до успокоить раму возле нуля и не дать колебаниям выйти за допустимые рамки. Вот график на котором все понятно, работа I видна между двумя пунктирными линиями. И чё его трогать ? 😃
При всем уважении, но I нужен не для успокоения остаточных колебаний, а для компенсации уводов, возникающих из-за накапливаемой ошибки P и D с течением времени. Ошибка накапливается в первую очередь из-за вибраций и внешних воздействий(ветер, паразитные влияния аэродинамического характера)
Если вы посмотрите график I в блекбоксе вы поймете что успокоить ту синусойду, создаваемую P и D он не может, он просто сдвигает общие пиды выше или ниже средней линии. А само значение I это не коэффициент воздействия, а время за которое измеряется ошибка и чем оно больше тем точнее воздействие, но дольше реакция. Поэтому I обычно уменьшают чтобы он не вносил задержку в отклик, но если уменьшить его слишком сильно, то он просто не будет должным образом улавливать ошибку.
П.С. а еще после того как мы задрали P, затем D, мы можем еще раз поднять P, т.к. с более высоким D можно поднимать P еще выше без последствий, однако на уровне ощущений это в современных контролерах неуловимо, только по блекбоксу.
Внесу свои пять копеек:
I - это интегральная составляющая ошибки, как правильно написал предыдущий аппонент, она не компенсирует оставшуюся синусоиду, это делается подбором правильных P и D, а она (I) правильно компенсирует ошибку в конструкции: смещённый центр тяжести, неравные моторы и регуляторы, а так же внешние воздействия: ветер, но это меняется от ориентации коптера так что толку от этого нет.
Вот поэтому для меня до сих пор остаётся загадка как настраивать I. Мой мозг пока это не осознаёт 😦
Согласен с вами. Но график вверху принадлежит автору прошивки Boris.B и я привел перевод его постинга кажется прошлого года о роли I в его PID контроллере. Я не буду спорить, у меня это отложилось так. Мой товарищь преподает что такое PID студентам, мы говорили с ним, вроде не возражал. Понятно что интеграл это сумма по определению, как это точно работает здесь 100 процентов никто не знает, PID есть если кто не в курсе и в паяльнике 😃
PS продается на Бенгуде на жалах Т12, в настройках меню кажется 10 или 12 пунктов, три из них настройка PID 😃 Какова роль I в паяльнике ? 😃
Какова роль I в паяльнике ?
Прикоснулись паяльником к земляному полигону, пошел отбор тепла. На изменение скорости остывания - отработала D, но ее не хватило - т.к. полигон оказался большой и теплоемкий. На изменение температуры отработала P, ровно пропорционально температуре остывания(ошибки), но этого тоже не хватило, температура установилась на N градусов меньше чем заданная. Далее вступает в дело I - смотрит, прошла секунда температура все еще не вернулась к заданной - добавила мощности, прошла еще секунда - если не вернулась - добавила еще мощности, и т.д. Т.е. чем дольше сохраняется ошибка, тем больше вес I составляющей в компенсирующем воздействии. Доходчиво? Тоже самое и в коптерах, например с ветром.
Это совсем на пальцах, уровень 5го класса:) как проще объяснить я не знаю
Прикоснулись паяльником к земляному полигону, пошел отбор тепла.
Спасибо Алексей, а то народ когда комментирует пункты меню, просит эти три пункта просто не трогать 😃
Паяльник
banggood.com/DSK-Digital-Soldering-Station-Kit-Sol…
Но в вашем описании работа I больше похожа на работу D. D дает понять мозгу как протекает процесс , это работа D его не бывает без P она следит за Р и на ее данных мозг делает прогноз поведения, I только уточняет ( в полетнике я так себе представляю это и есть небольшие поправки в пределах пунктирных линий ) Или что то не так ?
PS Повышаю ставку, это за 3 класс 😃
Это совсем на пальцах, уровень 5го класса как проще объяснить я не знаю
Видимо я еще в четвертом.
Теперь скажите как всё это в реалии применить. Настраиваем P до посинения и появления осциляций. Затем вваливаем D - пока не будет трясти на спуске или после флипэндрола, потом еще вваливаем P. А I как настраивать?
А как настраивать по Yaw?
Вы меня простите, что спрашиваю сто раз обмусоленную тему. Но мне никто не рассказывал про Пиды. По гуляющим видео всё не однозначно. У каждого своя методика и она в корне отличается от других (ну кроме настройки P).
Я вот и спрашиваю пока точно вот уверен не буду что всё верно понял.
Но в вашем описании работа I больше похожа на работу D.
Нет. Алексей все правильно объяснил I. D - это тормоз P когда мы очень быстро двигаемся к нужной точке. Поэтому раз скорость приближения большая, то пора тормозить чтобы не было перерегулирования (осциляции). D - дифференцирующая составляющая управления, она связанна со скоростью ошибки, а I - интегральная - почти постоянная составляющая ошибки.
Под настройку ПИД - наверное лучше отдельную ветку создавать и там обсуждать.
D - это тормоз
Игорь, D это не тормоз, это прогноз, он не так работает как вы описали. Он берет несколько значений параметра P суммирует и делит и выдает мозгу, но никак не занимается торможением. Вы правильно написали связана со скоростью ошибки, она определяет скорость изменения P а как реагировать дело полетника.
Настраиваем P до посинения и появления осциляций. Затем вваливаем D - пока не будет трясти на спуске
Первый пункт правильный. А вот D - увеличиваем чтобы прошли осциляции от большого Р. Потом опять увеличиваем Р и потом увеличиваем D чтобы их убрать. И так несколько итераций. Далее немного уменьшаем Р и D. С ними все. По I - не подскажу, сам не понимаю как ее настраивать, говорят что как раз при спусках и резких подъемах надо настраивать I.
По хорошему ПИД надо настраивать держа квадрик в руках, соблюдая ТБ, и даем квадригу изменение по путчу или ролу или по yaw и смотрите поведение квадрика на возмущение, он должен четко сопротивляться без колебаний (осциляций) возвращаться на место.
Игорь, D это не тормоз, это прогноз, он не так работает как вы описали. Он берет несколько значений параметра P суммирует и делит и выдает мозгу, но никак не занимается торможением. Вы правильно написали связана со скоростью ошибки, она определяет скорость изменения P а как реагировать дело полетника.
В классическом ПИД: Uупр = P*delta(i) + D*(delta(i)-delta(i-1))/t + I*СУММА(delta(i)), где delta - это ошибка управления между входным и выходным сигналами.
Правильно D - прогноз как мы быстро достигаем нужного положения, и D применяется к скорости ошибки управления, но никак P, ведь P, D, I - это константы, вы же их и задаете в конфигураторе, то как они могут меняться? Поэтому все делается именно с ошибкой управления.
Первый пункт правильный. А вот D - увеличиваем чтобы прошли осциляции от большого Р.
Я не лезу в драку 😃 Но я всегда считал что при большом P при увеличение D и появление осцилляций связано с суммарным пид Для этого в блекбокс и ввели значения суммарные пиды.
Сам по себе P и D могут быть небольшими, но суммарный значение превышает границу за которой осцилляция . Они же работают в фазе P и D. D строго следует за P
Так на форумах это пробегало.
P, D, I - это константы,
Это не константы, это границы за пределы которых вы запрещаете значения выбегать, эти значения ( P D I ) переменны, а не постоянны, посмотрите блекбокс. Именно в этих заданных вами границах синусоида работает, узкие границы, маленькие значения, большие границы - большие разбросы и осцилляции. В сети 220 вольт, но напряжение может гулять от и до но не выше, если 5 вольт другое кино. ( не удачный пример )
Увеличение D же по факту гасит P, разве нет?
Увеличение D же по факту гасит P, разве нет?
D это пресc секретарь P и его задача доносить мозгу как ведет себя P / Я вот поискал писали же раньше
Писал Крайков, он уже давно не на конфе, живет в штатах, лётчик, летает на реактивном самолете , мы с ним разбирались когда то в этом, но я уже и подзабыл
rcopen.com/forum/f136/topic362347/20525
rcopen.com/forum/f136/topic362347/20536
rcopen.com/forum/f136/topic362347/20542
Увеличение D же по факту гасит P, разве нет?
И да и нет 😒
Хотя вобще не правильно говорить что она гасит или не гасит P, она с ним вобще ничего не делает, P отдельно, D отдельно.
D увеличивает силу противодействия в момент увеличения ошибки, и уменьшает силу противодействия в момент уменьшения ошибки. Скорость изменения ошибки может быть как положительной так и отрицательной, соответственно и вес D в корректирующем воздействии либо положительный, либо отрицательный в зависимости от знака скорости изменения ошибки.
Это не константы, это границы за пределы которых вы запрещаете значения выбегать, эти значения ( P D I ) переменны, а не постоянны, посмотрите блекбокс.
Если честно меня это немного напрягает, как можно показывать константы графически. Я думаю что это скорее всего на график выводится 3 составляющие сигнала управления из приведенной мной формулы, сигнал умноженный на Р, скорость умноженная на Д и суммарная ошибка умноженная на И.
Все таки лучше в отдельную тему. И давайте я посмотрю исходники Бориса и найду кусок кода где идет расчет.
Скорость изменения ошибки может быть как положительной так и отрицательной, соответственно и вес D в корректирующем воздействии либо положительный, либо отрицательный в зависимости от знака скорости изменения ошибки.
Абсолютно точно написано, я просто утверждаю что когда скорость изменения ошибки положительная она накладывается ( суммируется ) на PID и суммарное значение может превысить предел. Поэтому в ящике и ввели суммарный PID
И давайте я посмотрю исходники Бориса и найду кусок кода где идет расчет.
Отлично, я там дал выше ссылки писал Крайков, там как раз есть ссылки на куски кода Бориса на тот момент.
( потом он их поменял ) Это во второй ссылке, со слов “физически в прошивке Бориса если посмотреть код”
Обновили все файлы прошивки ( версия осталась таже 16.3 ), возле каждого файла появилась надпись
Update SiLabs BLHeli bootlaoder to rev “d” hex files
Ну и выпустили новую версию сюит под это изменение с новой прошивкой
Changes in 16.3.14.7.0.1:
SiLabs BLHeli bootloader:
updated rev sign “c” to “d” for BLHeli_S 16.3 and BLHeli 14.7 hex files. No change in functionality.
Последние пару страниц имели много букв п и д ))) спасибо было реально полезно…
Upd: упс, это не тоьуо в этой теме ))) перепутал )))