Программный терморегулятор на ATmega8
Программный терморегулятор на ATmega8
Всем Доброго дня!
Данная тема начиналась с viewtopic.php?p=1082830#p1082830, но так как там уже
невозможно что то найти продолжим в отдельной теме, а терморегулятор, благодаря Soir , получился отличный, за что еще раз огромное спасибо!
Сейчас терморегулятор стал трех позиционным, регулирование при помощи исполнительного механизма, который изменяет положение заслонки.
А теперь снова к Soirу
последняя прошивка viewtopic.php?p=1330779#p1330779, работает, только параметр F не изменяет своего значения, как установил в сервисном меню так и остается, регулирование проходит нормально, время выполнения программ соответствует реальному.
Данная тема начиналась с viewtopic.php?p=1082830#p1082830, но так как там уже
невозможно что то найти продолжим в отдельной теме, а терморегулятор, благодаря Soir , получился отличный, за что еще раз огромное спасибо!
Сейчас терморегулятор стал трех позиционным, регулирование при помощи исполнительного механизма, который изменяет положение заслонки.
А теперь снова к Soirу
последняя прошивка viewtopic.php?p=1330779#p1330779, работает, только параметр F не изменяет своего значения, как установил в сервисном меню так и остается, регулирование проходит нормально, время выполнения программ соответствует реальному.
- Вложения
-
- Описание работы.doc
- (49 КБ) 1164 скачивания
-
- shem_3x..pdf
- (81.83 КБ) 1563 скачивания
Re: Программный терморегулятор на ATmega8
tbogdan писал(а):А теперь снова к Soirу
последняя прошивка viewtopic.php?p=1330779#p1330779, работает, только параметр F не изменяет своего значения, как установил в сервисном меню так и остается...
Чтобы F менялся в автоматическом режиме, коэффициент n должен быть больше 0. Посмотрите формулу. Или все равно не работает?
Re: Программный терморегулятор на ATmega8
Тогда все работает, изменяется только больше от заданного в сервисном меню правильно?
Re: Программный терморегулятор на ATmega8
tbogdan писал(а):Тогда все работает, изменяется только больше от заданного в сервисном меню правильно?
Да, в сервисном меню задается минимальное значение. Максимум ограничен 100 (могу подвинуть в ту или другую сторону, можно сделать доступным для установки в сервисном режиме). Если n=0, то F всегда, как задано в настройках. Если n>0, то F автоматически меняется в зависимости от рассогласования по формуле.
Собственно, этот вариант управления мною был разработан "в темную", так как не имею возможности хоть сколь-либо проверить его работу в реальных условиях. Если такой способ не позволяет добиться нормального регулирования температуры, Вы пишите, будем вместе думать, как улучшить его работу.
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: Программный терморегулятор на ATmega8
Собственно, этот вариант управления мною был разработан "в темную", так как не имею возможности хоть сколь-либо проверить его работу в реальных условиях.
Этого мало. Я вам посоветую ПИД-регулятор запрограммировать. Дело в том, что П-регулятор (а у вас именно он, пропорциональный регулятор) не сводит ошибку рассогласования к нулю (и при наличии фазовых задержек обеспечит колебательный режим работы системы, что вам вряд ли надо). К нулю её может свести ПИ-регулятор (пропорционально-интегральный). В этому случае интеграл ошибки медленно вытянет ошибку в ноль. Но это замедляет реакцию системы на внешние события. Ускорить может производная ошибки. Так получается ПИД-регулятор (пропорционально-интегральный). Книжку Бесекерского "Теория систем автоматического управления" я вам советовать не буду, а вот методику настройки ПИД-регулятора прибора "Параграф" дам - там всё просто.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Re: Программный терморегулятор на ATmega8
da-nie писал(а):Этого мало. Я вам посоветую ПИД-регулятор запрограммировать...
Да, спасибо за замечание, полностью согласен. По просьбе tbogdan алгоритм работы предыдущего устройства не менялся. За время, что прошло с момента его разработки, в моем арсенале появились и ПИД-регуляторы, которые действительно себя оправдывают. Пусть tbogdan проведет полевые испытания, посмотрим, что получилось. А далее от результата...
Re: Программный терморегулятор на ATmega8
Всем доброго дня!
Может кому еще пригодится, выкладываю два варианта программного терморегулятора, для небольшой муфельной печи (до 2 кВт.) который уже отработал отлично. Большое спасибо автору прошивки и схемы Soirу
И второй вариант , который только начинаем осваивать, для регулирования горелки ELCO EK3.45, на жидком топливе.
Во втором варианте пока использовал готовый регулятор от печи только изменил прошивку, которую переделал Soir, и добавил разъем для подключения трех каналов регулирования и управления горелкой, потом доделаем все на плате.
Пока все.
Может кому еще пригодится, выкладываю два варианта программного терморегулятора, для небольшой муфельной печи (до 2 кВт.) который уже отработал отлично. Большое спасибо автору прошивки и схемы Soirу
И второй вариант , который только начинаем осваивать, для регулирования горелки ELCO EK3.45, на жидком топливе.
Во втором варианте пока использовал готовый регулятор от печи только изменил прошивку, которую переделал Soir, и добавил разъем для подключения трех каналов регулирования и управления горелкой, потом доделаем все на плате.
Пока все.
- Вложения
-
- foto.rar
- (640.89 КБ) 727 скачиваний
-
- Горелка ELCO EK3.45 .rar
- (376.71 КБ) 555 скачиваний
-
- муфельная печь 1.5 кВт.rar
- (446.6 КБ) 957 скачиваний
Re: Программный терморегулятор на ATmega8
Попробовал, и что могу сказать, регулятор работает с очень большими выходами за пределы регулирования,
инерционность камеры большая, горелка через несколько минут выходит на 100% мощность, идет разогрев.
При достижении установленной температуры работа горелки продолжается на полной мощности, соответственно температура увеличивается,
при достижении установленной температуры + гистерезис начинается уменьшение мощности горелки и снова большое отклонение, начинается колебательный процесс,
при установленной температуре 200 градусов отклонение достигает 50-70.
инерционность камеры большая, горелка через несколько минут выходит на 100% мощность, идет разогрев.
При достижении установленной температуры работа горелки продолжается на полной мощности, соответственно температура увеличивается,
при достижении установленной температуры + гистерезис начинается уменьшение мощности горелки и снова большое отклонение, начинается колебательный процесс,
при установленной температуре 200 градусов отклонение достигает 50-70.
Re: Программный терморегулятор на ATmega8
tbogdan писал(а):Попробовал, и что могу сказать, регулятор работает с очень большими выходами за пределы регулирования...
Предусмотренные настройки недостаточны?
Понедельник день тяжелый, во вторник посмотрю. По совету da-nie попробуем применить ПИД-регулятор... Только уже не получится:
tbogdan писал(а):...оставив алгоритм и программу прежней...
Работа программ останется без изменений, но настройки параметров регулирования будут другие.
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: Программный терморегулятор на ATmega8
начинается колебательный процесс
Попробуйте уменьшить коэффициент передачи пропорционального регулятора. Это повысит устойчивость, но увеличит статическую ошибку управления.
По совету da-nie попробуем применить ПИД-регулятор...
Непременно попробуйте.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Re: Программный терморегулятор на ATmega8
настроек недостаточно
Схему пока не изменять, но это так желательно, контролер можно заменить на ATmega168
ATmega328, если будет мало памяти.
А программ (не более 5), то нужно программирование времени разогрева и таймер, то есть, так как было. И еще, а нет ли какой то возможности выводить текущею температуры в файл чтоб сформировать график.
Думал будет для Вас проще переделать программу, но вышло не так.Soir писал(а):Работа программ останется без изменений, но настройки параметров регулирования будут другие.
Схему пока не изменять, но это так желательно, контролер можно заменить на ATmega168
ATmega328, если будет мало памяти.
А программ (не более 5), то нужно программирование времени разогрева и таймер, то есть, так как было. И еще, а нет ли какой то возможности выводить текущею температуры в файл чтоб сформировать график.
Какие нужны параметры чтоб предварительно настроить или определить диапазоны изменения параметров ПИДda-nie писал(а):Непременно попробуйте. Только настройте его под изделие.
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: Программный терморегулятор на ATmega8
Какие нужны параметры чтоб предварительно настроить или определить диапазоны изменения параметров ПИД
А они все описаны вместе с методикой настройки в статье из моего поста выше: download/file.php?id=112938
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Re: Программный терморегулятор на ATmega8
Спасибо, попробуюda-nie писал(а):Попробуйте уменьшить коэффициент передачи пропорционального регулятора. Это повысит устойчивость, но увеличит статическую ошибку управления.
пробую разобраться.da-nie писал(а):А они все описаны вместе с методикой настройки в статье из моего поста выше: download/file.php?id=112938
Re: Программный терморегулятор на ATmega8
ПИД-регулятор, пробная версия. Работу программы не менял, только алгоритм управления клапаном. Принцип работы:
F – длительность управляющего импульса, подающегося на исполнительный механизм клапана. Может принимать значения от 1 до 100, цена одного деления 20 мс. Таким образом, длительность импульса может быть в пределах от 20 мс до 2 с.
Расчет F ведется по алгоритму:
error_new = SP - PV; – определение ошибки
error_summa = error_summa + error_new; – накопление ошибки. error_summa ограничивается не больше Er и не меньше -Er,
F = (error_new + (error_new - error_old)*di/ti + error_summa*ti/In)/ Pr;
error_old = error_new – запоминание ошибки.
Если текущая температура ниже текущего задания, то формируется импульс на открытие клапана. Если текущая температура выше текущего задания, то импульс на закрытие клапана.
Формула почти та же, что и в документе, выложенном da-nie. Обозначение коэффициентов другое, связано с ограниченными возможностями семисегментного индикатора. Я думаю, сопоставлением идентифицируете кто есть кто.
Попытки хоть как-то прогнать в Proteus успеха не имели, то есть регулятор реагирует, но насколько правильно трудно сказать. Надо на реальном объекте опробовать, тогда уже ясно будет какие коэффициенты куда тянуть, что добавить или убавить, может и ошибки выявятся...
Описание, прошивка, проект в Proteus (схема не менялась, ресурсов МК более, чем достаточно) во вложении.
F – длительность управляющего импульса, подающегося на исполнительный механизм клапана. Может принимать значения от 1 до 100, цена одного деления 20 мс. Таким образом, длительность импульса может быть в пределах от 20 мс до 2 с.
Расчет F ведется по алгоритму:
error_new = SP - PV; – определение ошибки
error_summa = error_summa + error_new; – накопление ошибки. error_summa ограничивается не больше Er и не меньше -Er,
F = (error_new + (error_new - error_old)*di/ti + error_summa*ti/In)/ Pr;
error_old = error_new – запоминание ошибки.
Если текущая температура ниже текущего задания, то формируется импульс на открытие клапана. Если текущая температура выше текущего задания, то импульс на закрытие клапана.
Формула почти та же, что и в документе, выложенном da-nie. Обозначение коэффициентов другое, связано с ограниченными возможностями семисегментного индикатора. Я думаю, сопоставлением идентифицируете кто есть кто.
Попытки хоть как-то прогнать в Proteus успеха не имели, то есть регулятор реагирует, но насколько правильно трудно сказать. Надо на реальном объекте опробовать, тогда уже ясно будет какие коэффициенты куда тянуть, что добавить или убавить, может и ошибки выявятся...
Описание, прошивка, проект в Proteus (схема не менялась, ресурсов МК более, чем достаточно) во вложении.
- Вложения
-
- Termo_ATMEGA8_PID.zip
- (37.86 КБ) 667 скачиваний
Re: Программный терморегулятор на ATmega8
Soir спасибо! Еще раз спасибо!
попробовал, пока вроде все работает, сейчас немного задержка за доработкой самой камеры.
Сложно подобрать параметры, все очень долго.
попробовал, пока вроде все работает, сейчас немного задержка за доработкой самой камеры.
Сложно подобрать параметры, все очень долго.
Re: Программный терморегулятор на ATmega8
Всем доброго дня!
Soir,все нормально, температура регулирования в пределах нормы (до +/- 10С),потом попробую снять графики
чтоб более наглядно.
Есть только одно замечание, при включении регулятора начальное задание SP для первой программы ( 0 ), принимается
за нуль, текущая температура выше ( например +24С ), и регулятор подает команды на уменьшение мощности, было бы
хорошо если начальная температура для первой программы принималась текущая ( PV ).
Soir,все нормально, температура регулирования в пределах нормы (до +/- 10С),потом попробую снять графики
чтоб более наглядно.
Есть только одно замечание, при включении регулятора начальное задание SP для первой программы ( 0 ), принимается
за нуль, текущая температура выше ( например +24С ), и регулятор подает команды на уменьшение мощности, было бы
хорошо если начальная температура для первой программы принималась текущая ( PV ).
- da-nie
- Говорящий с текстолитом
- Сообщения: 1590
- Зарегистрирован: Вс июн 24, 2012 16:07:00
- Откуда: Лен.Обл.
- Контактная информация:
Re: Программный терморегулятор на ATmega8
температура регулирования в пределах нормы (до +/- 10С)
А что вы регулируете?
Я управлял с помощью разных регуляторов системой термостабилизации для одного занятного приборчика, с тепловыделением 25 Вт. К сожалению, охлаждение было возможно только по корпусу, поэтому наружная температура была около 15-25 C. Стабилизировалась температура 37 С с использованием 100 Вт нагревателя с возможностью задания (и поддержания) на обмотках нагревателя кожуха системы термостабилизации с помощью ШИМ температуры с точностью 0.1 С. Так вот, в статическом режиме ошибка температуры внутри прибора (не кожуха системы термостабилизации) составляла +-0.01 C. В переходных процессах она доходила до 0.5 C при изменении наружной температуры скачком на 10 C.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Re: Программный терморегулятор на ATmega8
tbogdan писал(а):...температура регулирования в пределах нормы (до +/- 10С)...
Да, многовато. Это в статическом режиме или при разогреве? Конечно, сотых и десятых не будет, разрешающая способность 1 градус, но 10 это много. Конечно, во многом зависит от конструкции, но думаю 2-3 градуса было бы нормальным результатом. Со своей стороны готов доработать, пока правда не знаю что именно.
tbogdan писал(а):Есть только одно замечание, при включении регулятора начальное задание SP для первой программы ( 0 ), принимается за нуль, текущая температура выше ( например +24С ), и регулятор подает команды на уменьшение мощности, было бы хорошо если начальная температура для первой программы принималась текущая ( PV ).
А в прошивке так и есть... Просматривая прошивку выявил, что первая программа (P0) как-то неадекватно себя ведет, буду разбираться. И нужно кое-что подчистить от старой версии регулятора, в т.ч. и в алгоритме регулирования. Так что я поправлю прошивку, потом Вы снова проверите, а затем будем работать над более точным поддержанием температуры.
Re: Программный терморегулятор на ATmega8
Доработал прошивку, кое-какие недочеты выявил, надеюсь стала лучше.
Из настроек убрал один лишний параметр (с). Поправил описание.
Чтобы добиться более точного поддержания температуры, наверно следует увеличить скорость работы регулятора (уменьшить параметр ti). Сейчас минимально возможный 1 сек. Я его специально делал большим, с учетом того, что управляется заслонка электродвигателем, чтобы слишком часто его не дергать. Если для каких-то настроек Вы видите, что предела недостаточно - пишите, я расширю в ту или другую сторону, или сделаю более тонкую настройку (например, с десятыми).
Из настроек убрал один лишний параметр (с). Поправил описание.
Чтобы добиться более точного поддержания температуры, наверно следует увеличить скорость работы регулятора (уменьшить параметр ti). Сейчас минимально возможный 1 сек. Я его специально делал большим, с учетом того, что управляется заслонка электродвигателем, чтобы слишком часто его не дергать. Если для каких-то настроек Вы видите, что предела недостаточно - пишите, я расширю в ту или другую сторону, или сделаю более тонкую настройку (например, с десятыми).
- Вложения
-
- Termo_ATMEGA8_PID_1.zip
- (23.71 КБ) 581 скачивание
Re: Программный терморегулятор на ATmega8
Спасибо, попробую уже только в понедельник.