ПИД регулятор для Arduino и ESP8266

preview_player
Показать описание
Построчный разбор кода ПИД регулятора для Arduino и ESP8266 в среде FlProg.
Рекомендую к просмотру:
Рекомендации по теме
Комментарии
Автор

ДЯКУЮ! Реализовал проект с помощью данного блока! Можно в трехпозиционном регуляторе сделать такой вывод: если клапан полностью закрылся то подать на него единицу (или ноль). Например, если клапан полностью закрылся, то нужно выключить насос для того, чтобы он не работал на закрытую задвижку.

yurii.lompart
Автор

Отличная код и отличное объяснение! Несколько уточняющих вопросов, если можно. Я напишу как я понял(но не уверен), а вы поправте или кивните утвердительно головой, если правильно.
Вся работа со временем строиться на внутренням таймере микроконтролера, который при подаче питания запускается и генерирует отсчет времени до тех пор пока не снимется питание с контролера? Если снять питание внутренний таймер обнулиться или нет? Этот таймер, наверное, какая то микросхема, которая выдает на выходе милисекунды. Для нашего удобства вы, програмным кодом превращаете милисекунды в секунды.
Условие IF(TIMER_PID==0.0 ) позволяет контролеру обработать код ПИД регулятора 1 раз за время заданное в параметре CYCLE. Например, если CYCLE=4 секунды, то контролер сможет обработать код ПИД регулятора 1 раз в 4 секунды.
Я не знаю какой родной цикл контроллера. Но точно чаще чем 1 раз в 1000миллисекунд. Припустим 1 раз в 10миллисекунд.
При таком раскладе контролер за 1 секунду пройдет програмный код 100раз.
При переводе милисекунд в секунды пременная округляется до целых или нет?
Потому что если ДА, то условие совпадения времени исполниться(за счет округления) 100раз подряд.
Поправте пожалуйста, потому что в этом вопросе слабо разбираюсь.

Sergnavin
Автор

Дмитрий, а почему коэффициент K_P вынесен за скобку, ведь при этом его изменение влияет и на интегральную и на дифференциальную составляющую?

Andron_Palych
Автор

@Дима Лимите Спасибо за видео поясняющие и блоки программ.
Я не могу разобраться с PWM блоком, как привязать выход pwm_out к конкретному пину ардуино? Выходной параметр равен 1 до тех пор пока время воздействия больше времени шага, а для работы ШИМ значения должны быть от 0 до 255

АндрейСтепанов-вщ
Автор

Извините не по теме. Как осуществить от газового котла настенного, 2 этажа теплого пола по 150м2. Смесительный узел не нужен, а куда ставить насос? Или ставить гидрострелку и по насосу на каждый этаж? Или есть проще схема. Заранее благодарен

мухомороед
Автор

Здравствуйте. Подскажите пожалуйста Аналоговый ПИД могу применить для управления эл. двигателем от стиральной машины с поддержанием требуемых оборотов? Число оборотов подсчитываю модулем датчика Холла на 2-ой пин Ардуино Нано и скоростной счетчик с включенным аппаратным таймером, время опроса 50 мс. Выход 10 пин (ШИМ 0-255) на 4-20 мА твердотельного реле типа SSR-25LA. В данном реле внутрисхемно уже реализовано управление симистором с переходом синусоиды ч/з ноль. Мне остается только с выхода Ардуины подавать требуемый сигнал 4-20 мА, что и делаю с помощью ШИМа с 10 пина и RC цепью. Правильно ли я понимаю, что для работы регулятора на вход SET_VALUE мне нужно подать значение текущих оборотов (кол-во импульсов с датчика Холла в пересчет на обороты/мин), на PRESENT_VALUE значение желаемых оборотов (сигнал с потенциометра в пересчет на об/мин), CYCLE указать 0, 05 (чтобы совпадало с временем опроса скоростного счетчика), ANALOG_OUT_MIN указать 0, ANALOG_OUT_MAX указать 255, ну и подобрать Kp, Ki, Rd? Какое значение на ANALOG_OUT при этом будет в единицах ШИМ (0-255) или же в %?

PB-vumr
Автор

а как можна сделать набор автоматический заданый мошность по кофиценту какую то? например кофицент 1 и мошность паднимаетца 1 просент в секунду или 10 кофицен то 1 процент паднимаетца через 10 секунд?

nerijusk
Автор

Как-то замудрено и ничего не понятно
Лучшеб на наглядных примерах показать
Мне этот код что есть что нету да и как большинству

yhdrhjfyrhjfgdg