Главная » Статьи » Proton PICBasic

Еще один ПИД регулятор на 16f876
Как- то раз, одна дружественная лаборатория попросила сделать для нее ПИД регулятор до 500 градусов с точностью удержания температуры не хуже 0,5 градуса, при этом точность установления самой температуры требовалась не очень высокая – около 3х градусов и, соответственно, градуировка термопары не закладывалась. Промышленный регулятор им не подошел ни по точности, ни по удобству. Так как менять температуру надо было очень часто, а делать это кнопками очень муторно , было решено в качестве задатчика температуры применить энкодер. Но, к сожалению, до железа дело так и не дошло, так как финансирование закончилось, как это часто у нас бывает, раньше чем поступили деньги. Временные характеристики нагревателя были приблизительно как у электрической конфорки, поэтому для того чтобы симуляция в протеусе не была слишком долгой и утомительной, шаг регулирования временных параметров уменьшен в 10 раз. Еще им нужен был аналоговый выход температуры. Температура подается на вход 12-и разрядного выносного АЦП, что обеспечивает шаг дискретности 0,125 градуса, хотя возможно это излишне. Все настройки вводятся в сервисном меню и запоминаются в ЕЕПРОМ. В сервисном режиме можно настраивать такие параметры, как: коэффициенты регулирования, период ПИД, период ШИМ, режим регулирования (ПИД, П, ПД, ПИ, Релейный режим – для подбора коэффициентов). Алгоритм регулирования классический и самый простой , с ограничением интегрирования. Для того чтобы войти в сервис, перед запуском симуляции переведите кнопку SERVIСE в нажатое состояние, запустите протеус (подайте питание), нажимая кнопку выберете нужный параметр и измените его вращением энкодера, далее нажимайте кнопку до выхода из сервисного меню. Dll-ка mcp3201 для тех у кого протеус меньше чем 7.10 прилагается в архиве. Mcp4921 можно вообще исключить из моделирования. Хотя программа сыровата и подглючивает (иногда АЦП вдруг читает нулевое значение, и срабатывает защита от обрыва термопары), да и опыта в микроконтроллерах у меня не очень много, все же надеюсь, что информация будет полезна тем, кто впервые хочет покрутить, пощупать ПИД регулятор, хотя бы виртуально.



Архив на яндексе https://yadi.sk/d/DOqFGDUTrHzVb


Категория: Proton PICBasic | Добавил: dimvad (09.04.2014)
Просмотров: 8532 | Комментарии: 4 | Теги: ПИД регулирование, ПИД регулятор, энкодер, ПИД | Рейтинг: 5.0/1
Всего комментариев: 4
1 Andriy76   (13.04.2014 22:54)
Спасибо , поизучаю . Сейчас в зарядке применяю ПИД регулятор от авторов Протона . Но всегда интересно пощупать что-то новое . 
Компилятор ругаеться на Repeat:Until .
Детально не смотрел . Что то есть лишнее .

2 mikhail09p   (13.04.2014 23:09)
Спасибо, очень познавательно!
Компилятор тоже ругается на Repeat:Until .

3 dimvad   (13.04.2014 23:22)
Ни чего страшного, что ругается. Компилит нормально. Просто, когда после Repeat стоит двоеточие, компилятор ошибочно воспринимает их как повторяющиеся метки.

4 dimvad   (16.05.2014 17:55)
Недавно сделал все это в железе – на макетке, все заработало после незначительных доработок. Чтобы обеспечить желаемую точность удержания температуры пришлось на выходе АЦП взгородить софтовый фильтр 2-го порядка – на самом деле это довольно просто. Точность получилась где-то 0.3 градуса в  замкнутой камере, на воздухе 1 градус. Компенсацию холодного спая пока не делал. Глюки на которые я жаловался в реальности не проявились. Если делать, допустим, паяльную станцию, то ни каких фильтров и внешних АЦП городить не нужно – получится, я думаю +/-  1.5 – 2 градуса. Если будет время, может быть  выложу все это позже.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]