borodach 16 25 февраля, 2019 Опубликовано 25 февраля, 2019 (изменено) · Жалоба Вот и пришлось мне ознакомиться с ПИД регулированием, чтоб оно было неладно. Карпова прочитал, очень доходчивая статья. Много апноутов всяких, формул раздобыл. А в кучу собрать не получается. Ближе к делу. Есть DCDC buck на Atmega8. ШИМ 8бит, 256 уровней. Питание 50В, делаем на выходе 20В. Значит, в 8-битный таймер ШИМ грузим сотню. 100/256*50=19,5В. Без обратной связи примерно так и получается. Теперь АЦП оцифровывает выход, использую АЦП 8-битный. Т.е. при замкнутой петле и без нагрузки АЦП должен тоже выдавать значение 100? Это первый вопрос. Вешаем нагрузку - в таймере по прежнему 100, а АЦП выдаёт пусть 95. Далее, пропорциональная компонента: u=Kp*e. Как получается ошибка? Из опорных 100 вычесть 95 из АЦП будет 5, по логике надо умножить на пропорциональный компонент (коэффициент усиления). Что надо сделать далее? Это главный вопрос, после которого ни в одной известной мне статье не описывается. Просто u=Kp*e плюс дифф.компонента плюс интегральная компонента. Безразмерная, ни к чему не привязанная u. И наконец, если выход равен опоре, то ошибка будет ноль? умножить её на любой Kp будет тоже ноль? Изменено 25 февраля, 2019 пользователем borodach Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 30 minutes ago, borodach said: Карпова прочитал, очень доходчивая статья. Есть DCDC buck на Atmega8. ШИМ 8бит, 256 уровней. Питание 50В, делаем на выходе 20В. Значит, в 8-битный таймер ШИМ грузим сотню. 100/256*50=19,5В. Без обратной связи примерно так и получается. Увы и ах... С какой скоростью Ваш ПИД будет менять управляющее воздействие? Сколько времени занимают вычисления? Каков период таймера? Вы где-нибудь видели такой регулятор на таком процессоре? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
borodach 16 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба Я бы не хотел рассматривать скоростные характеристики регуляторов. Меня математика сейчас интересует. Мега8 вполне годится. Без АЦП и математики, чисто на таймере, достигается частота ШИМ 30кГц на 8-мегагерцовом кварце и 60кГц на 16-мегагерцовом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 11 minutes ago, borodach said: Я бы не хотел рассматривать скоростные характеристики регуляторов. Меня математика сейчас интересует. Мега8 вполне годится. Без АЦП и математики, чисто на таймере, достигается частота ШИМ 30кГц на 8-мегагерцовом кварце и 60кГц на 16-мегагерцовом. Вы же читали доходчивую статью... Там математика изложена. Обычно используют несколько иную форму записи. Так в чем у Вас затруднения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
borodach 16 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба Затруднение в понимании процессов Т.е. у нас есть ошибка регулирования - разница между тем, что должно быть, и тем, что есть на самом деле. Есть коэффициент усиления Кр. Как перейти от e*Kp к числу, которое надо загрузить в таймер? Понимаю, что вопрос дурацкий, но я ни разу не программист Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 11 минут назад, borodach сказал: Т.е. у нас есть ошибка регулирования - разница между тем, что должно быть, и тем, что есть на самом деле. Есть коэффициент усиления Кр. Как перейти от e*Kp к числу, которое надо загрузить в таймер? Есть ошибка текущая, есть скорость изменения текущей ошибки (прошлая ошибки - текущая ошибка) всё это подставляется в формулу с коэффициентами и на выходе получаем по сути напряжение которое должно быть выставлено на выходе. Т.к. крутим не напряжение а скважность то есть ещё какой то коэффициет пересчёта. Который как я понимаю должен входить в пропорциональный коэффициент. В результате будем получать сразу число которое нужно получить. А вообще очень всё хорошо видно в обычном экселе. Где каждая строчка это шаг. Соответственно на первом шаге на выходе 0 а должно быть N. Значит ошибка = N - 0. Далее применяем формулу ПИД регулятора, добавляем какую нибудь нелинейную функцию регулирования и получаем ошибку на выходе. Вуала. И так несколько строчек. Можно даже графики построить. Всё так прекрасно видно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
borodach 16 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба скорость изменения ошибки - это дифф.компонент, я до него пока не дошёл, делаю просто П-регулятор. так вот число в таймере - это и связано со скважностью, т.е. это длительность цикла; Uвых=Uвх*D, где D=100/256 для получения 20 вольт из 50 6 minutes ago, MegaVolt said: В результате будем получать сразу число которое нужно получить. т.е. АЦП должен совсем немного отставать от опоры, и, имея достаточный коэффициент усиления Кр, мы получим на выходе число, равное опорному? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wim 6 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба Нужно составить разностное уравнение. Но, чтобы его составить, нужна непрерывная усредненная модель. Об этом, например, здесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Егоров 0 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 1 hour ago, borodach said: Понимаю, что вопрос дурацкий, но я ни разу не программист Вы просто не понимаете своего счастья. Стройте источник без программно добавляемых неисправностей. По-простому. И все будет работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 1 час назад, Tanya сказал: Увы и ах... С какой скоростью Ваш ПИД будет менять управляющее воздействие? Сколько времени занимают вычисления? Каков период таймера? Вы где-нибудь видели такой регулятор на таком процессоре? Вот, именно так и надо делать. Сначала построить ЛАХ, который Вы хотите получить. На нем выделить 3 "волшебные" точки: 1. Коэфф усиления в "статике" - он даст ошибку регулирования; 2. Частоту, когда ЛАХ пересекает 0 дб - "слева" от нее будет полоса частот, где изменения выходного сигнала будут подавляться обратной связью. Наклон ЛАХ там будет от -20 до -40дб/дек 3. Частота квантования - по горизонтали, а по вертикали эту точку определит подавление силового фильтра. Наклон ЛАХ там будет "фильтр" + "наклон от участка №2" Как только определите ЛАХ и частоты, так все остальное сразу будет видно... Хотите подробнее - могу голосом по скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
borodach 16 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 2 ALL если бы я делал обычный аналоговый источник, то вопрос звучал бы так "как мне подключить TL431 и оптопару, чтобы появилась обратная связь" Т.е. вопрос стоит не в полюсах и нулях, не в частотах сопряжения и среза фильтров LC, не в полосе пропускания, а тупо на уровне проводочков, соединяющих узлы. Даже без частотозависимых компонентов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 2 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 1 hour ago, borodach said: Т.е. вопрос стоит не в полюсах и нулях, не в частотах сопряжения и среза фильтров LC, не в полосе пропускания, а тупо на уровне проводочков, соединяющих узлы. Даже без частотозависимых компонентов. Схема цифровой обработки такая: И тут не PID, а 2p2z контроллер во-первых. Во вторых, как видно из схемы, в 8-и битной арифметике его не считают, надо переходить на 32-а бита, если нужно нормальное качество управления без выбросов. Для этого на схеме стоят конвертеры разрядности. А PWM comparator это и есть регистр compare вашего таймера генерации ШИМ-а. На простом PID-е да еще 8-и битном ничего кроме возбуждений не получите. Рекомендую Microcap для моделирования в z-области. Там и оптимизацию запустить можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexPec 3 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 28 минут назад, AlexandrY сказал: На простом PID-е да еще 8-и битном ничего кроме возбуждений не получите. Рекомендую Microcap для моделирования в z-области. Там и оптимизацию запустить можно. Да можно регулирование -то получить. Если автору не важна скорость, не важно качество регулирования (в смысле выбросов) - то медленно, и конечно с выбросами, в среднем можно добиться чтоб регулятор держал напряжение. Но без I компоненты, только P думаю держаться напряжение не будет, будет плавать. 2borodach: произведениe Kp*e добавляйте с нужным знаком к значению таймера на "холостом ходу", при котором преобразователь показывает нужное напряжение. Но без интегральной компоненты таймер не сумеет автоматически подстроиться так, чтобы на выходе напряжение было равно заданному. Ошибка на выходе думаю все-равно будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 25 февраля, 2019 Опубликовано 25 февраля, 2019 · Жалоба 1 час назад, borodach сказал: вопрос ... тупо на уровне проводочков, соединяющих узлы ERX = VOUT – VREF IX+1 = IX – i · ERX D = IX – p · ERX – d · (ERX – ERX–1) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться