student23 2 11 сентября, 2022 Опубликовано 11 сентября, 2022 · Жалоба Добрый день. Хочу сделать двухконтурную ПИД-регуляцию угла поворота и скорости вращения колес через двигатель. Я почитал немного форум и некоторые статьи и понял, что следует как-то разобраться с выходным сигналом и скоростью его нарастания. Но я не совсем понимаю, какими условиями в коде можно ограничить скорость нарастания выходного сигнала, чтобы он не резко скакал. Как я понял, именно эти резкие скачки вывели комплектующие из строя. Можете помочь с примерным кодом для этого? (Язык С) Также вопрос про выходной сигнал. Я задаю генерацию ШИМ через таймер. Его предделитель равен 24, а регистр ARR (Переполнения) - 1000. Частота тактирования APB равна 72 Мгц. То есть я получу 3000 Герцовый ПИД-регулятор. Именно в функции прерываний по ШИМ я написал свой ПИД. Последняя переменная (out_v) это и есть выходной сигнал. Я его ограничиваю от 0 до 1000, потому что регистр ARR только до 1000. В итоге я подаю сигнал с помощью TIM3 -> CCR1. Правильна ли эта реализация? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 11 сентября, 2022 Опубликовано 11 сентября, 2022 · Жалоба Если использовать разностную реализацию, то ограничения на градиент легко накладываются просто лимитами на эту дельту. Иначе нужно сравнивать новое значение ШИМ со старым, и ограничивать если выходит за рамки. По сути это одно и то же. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
student23 2 12 сентября, 2022 Опубликовано 12 сентября, 2022 · Жалоба В 11.09.2022 в 17:41, Alex-lab сказал: По сути это одно и то же. Добрый день, то есть просто в конце кода добавить ограничения на значения ШИМ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex-lab 4 12 сентября, 2022 Опубликовано 12 сентября, 2022 · Жалоба Не на значения ШИМ, а на прирост. Если ограничить значения, вы просто сузите область регулирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wim 6 12 сентября, 2022 Опубликовано 12 сентября, 2022 · Жалоба 2 часа назад, student23 сказал: в конце кода добавить ограничения В мире выпускаются миллионы устройств с отрицательной обратной связью и никаких ограничителей чего-то там в них и близко нет. Вам они тоже знакомы - зарядка ноутбука, например. Проблема всех начинающих ПИДостроителей в том, что они старательно переписывают формулы из учебников, не понимая, что так называемый "ПИД-регулятор" из этих учебников физически нереализуем. Это становится очевидным при анализе в частотной области, так как в передаточной функции ПИД-регулятора количество нулей превышает количество полюсов. А поскольку усиление с ростом частоты не может расти бесконечно, это устройство физически нереализуемо. То есть никакой комбинацией резисторов, конденсаторов и всяких там ОУ получить ПИД-регулятор невозможно. Поэтому ПИДостроителям приходится изобретать костыли в виде ограничителей чего-то там. А в Вашем случае есть ещё одна неприятность в виде неизвестной задержки сигнала в STM32, что добавляет в передаточную функцию ещё один полюс на неизвестно какой частоте. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться