Проект программного ПИД-регулятора температуры для кристаллизационной печи

Рабочие проекты Ардуино
artur_mod
Сообщения: 5
Зарегистрирован: 04 июн 2018, 08:11

Проект программного ПИД-регулятора температуры для кристаллизационной печи

Сообщение artur_mod » 08 июн 2018, 09:02

Здравствуйте!

Помогите, пожалуйста, советом в реализации столь масштабного проекта. Решил создать ПИД -Термоконтроллер для кристаллизационной печи на базе Ардуино.

В первом сообщение хочу описать сам проект Ардуино ПИД-термоконтроллера, который планирую воплотить в реальность.

Материально-техническая база (или что есть под рукой в наличии):

Ардуино контроллеры:

1. TENSTAR ROBOT Nano 3.0 CH340 ATMEGA328P и
2. WAVGAT UNO R3 (CH340G) MEGA328P

Дисплеи:

1. OLED LCD LED Display Module (1.3" I2C 4PIN 128X64)
2. TENSTAR ROBOT LCD1602 (I2C 4PIN)
3. TM1637 LED Display Module (7 Segment 4PIN 0.36 )

Модули:

1. Микро SD-card adapter 6PIN (SPI интерфейс)
2. Модуль реального времени AT24C32 Tiny RTC I2C
3. Ethernet модуль ENC28J60 SPI
4. Семейный шилд для NANO 3.0
5. Твердотельное реле SSR-40 DA
6. Модуль MAX6675 для подключения термопары типа К
7. Амперметр ACS712 3PIN – 2 шт.
8. Матрица 4х4 – клавиатура 8PIN
9. Весы: тензодатчик 1кг, микросхема HX711

Теперь же хочу описать устройство, которое должно получиться на выходе. Буковок много, но это этап планирования, тут без подробного описания желаемого не обойтись. В следующем сообщении начну описывать процесс написания кода, там и вопросы появятся.

Версия 1.

Термоконтролллер осуществляет регулирование температуры по ПИД-закону, в качестве датчика температуры используется термопара типа К, подключенная к микросхеме MAX6675. Управление нагрузкой печи осуществляется с помощью твердотельного реле методом ШИМ.

Термоконтроллер способен осуществлять программу из N-ого количества шагов, а именно нагревать (охлаждать) с заданной скоростью (градусы в час), удерживать заданную температуру (уставку) на заданном уровне в течении заданного времени.

Термоконтроллер имеет модуль аварийного отключения и сигнализации об этом.

Термоконтролллер имеет встроенный терморегистратор, а именно способен накапливать данные (температура от времени) во флеш памяти, а также передавать их на компьютер.

!!! Необязательная, но желательная опция. Термоконтроллер может управляться через интернет, а именно через специальный сайт отслеживаться текущие показатели работы печи, а также возможность отключения - включения печи, задание параметров управления (температуры, скорости, количество шагов подпрограмм и т.д.).

Версия 2.

Все те же возможности, но вместо MАХ6675К используется усилитель сигнала термопары типа К и типа S, описанный в уроке 27.

Версия 3.

Все те же возможности что и у версии 2, плюс управление нагрузкой посредством ФИУ (фазово-импульсное управление).

Версия 4.

Все те же возможности что и у версии 3, дополнительно осуществляется управление печью по трем независимым каналам. (трех-зонная кристаллизационная печь). Три независимых канала регулирования температуры со своими заданными величинами, плюс один независимый канал регистрации температуры. Т.е. в системе будет 4-ые термопары, три термопары – три канала управления (три зоны), и одна термопара только для терморегистратора.

Версия 5.

Все те же возможности что и у версии 4, дополнительно термоконтроллер измеряет вес кристаллизационного тигля, и на основе его изменения (динамики изменения веса) управляет скоростью роста кристалла по ПИД-закону.

P.S. Проект, особенно в последней своей версии очень необычный, так что надеюсь на интерес и консультационную поддержку от всех обитателей форума. Надеюсь, что всё у меня получится.


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Проект программного ПИД-регулятора температуры для кристаллизационной печи

Сообщение Эдуард » 08 июн 2018, 22:51

Здравствуйте!
Дорогу осилит идущий.
Посмотрите проект контроллера элемента Пельтье (начиная с урока 36).
    Сначала делайте костяк программы.
    Затем измерители температуры.
    ШИМ для нагревательного элемента.
    Потом завязывайте все это в регулятор.
    Следующим этапом добавляете сервисные функции.
Каждый этап надо тщательно проверять.

artur_mod
Сообщения: 5
Зарегистрирован: 04 июн 2018, 08:11

Re: Проект программного ПИД-регулятора температуры для кристаллизационной печи

Сообщение artur_mod » 13 июн 2018, 09:55

Здравствуйте!
Эдуард, огромное спасибо за помощь и поддержку. Первым делом я решил прикинуть сколько
мне понадобится контактов Ардуино для того, чтобы подключить самое необходимое. Нарисовал схемку
как у вас в уроке 36. В принципе для реализации конечного проекта (трехзонного ПИД контроллера)
должно хватить, правда впритык.
shemapodkucheniya.gif


Кое-что хочу пояснить, как я вижу реализацию сейчас.

1. В данном проекте реле будет использовано для аварийного отключения печи.

2. В данном проекте не будет датчика температуры холодных концов термопар, а будет применяться термостат для этих целей,
т.о. я планирую ввести коэффициент в расчеты (температура холодного спая будет известна и стабильна), тем самым упростив
расчеты и разгрузив немного процессор.

3. Так же в данном проекте усилитель термопары будет измерять только плюсовые температуры (у печи диапазон
рабочий от 100 до 1000 гр. цельсия), так что нам не понадобится двухполюсное питание.

4. Пока у меня нет ясности на счет кнопочного интерфейса, в принципе все данные для работы можно задавать
еще до загрузки скетча в Ардуино. Позже проект можно будет дополнить стандартным четырехкнопочным интерфейсом
управления, как у большинства серийных термоконтроллеров. Но думаю, задача это не тривиальная и сама по себе
потребует много времени да и ресурсы у Ардуино не бесконечные. Думаю, в любом случае надо какую-то кнопку предусмотреть, хотя бы для
аварийного отключения.

5. Мне бы хотелось контролировать силу тока в нагрузке, это важный параметр для нормальной работоспособности печи. У меня есть амперметр ACS712, но вот подойдет ли он для этих целей не понятно.

Сама печь низковольтная и запитана переменным напряжением через понижающие трансформаторы (каждая зона). Так как в случае трансформаторов велика индуктивная составляющая, то единственный подходящий метод управления мощностью в данном случае ФИУ. ШИМ на базе реле с длинным периодом (обычно от 1 до 3 секунд) не подходит, трансформаторы при каждом запуске испытывают чудовищные кратковременные перегрузки, обмотка от этих ударов быстро перетирается друг об дружку.

Я ещё не до конца изучил вопрос с тем как можно реализовать ФИУ на базе Ардуино, но полагаю, что рассчитанная мощность в процентах должна выдаваться на ПИН в виде какого-то напряжение от 0 до 5 вольт (поэтому ПИНы взял аналоговые), которое поступает на специальное устройство управления силовыми симмисторами (блок ФИУ). Пока не понятно что это будет за блок, какие-то схемы у меня имеются, надо посмотреть.

6. У меня также есть печь, которую можно запитывать напрямую от 220, и она вполне может "переварить" ШИМ управление мощностью. Точно такую же печь, уничтожил современный отечественный серийный термоконтроллер, у которого просто "залипло" контактное реле и он разогнал печь до температуры выше критической. Хотелось бы учесть в своей разработке, именно по этому предусмотрел реле для размыкания силового кабеля нагрузки.

Тут я хотел бы пояснить вот какой момент. У вас в случае контроллера мощности элемента Пельтье используется постоянный ток и плавная регулировка мощности с обратной связью. В моём же случае напряжение на нагрузке переменное, и можно (нужно) использовать ШИМ с большим периодом (от 1 до 3 секунд). Например, твердотельное реле SSR-40D в отличии от контактных реле, конечно могло бы работать с меньшим периодом, но у него скорость отклика 0,3 секунды, не думаю что имеет смысл. Так что в моем случае ШИМ получается достаточно простой. Задаем изначально статичный период ШИМ (думаю секунды 3 взять, как у большинства известных мне серийников), а затем выдаем на реле сигнал в течении некоторого времени, которое и будет соответствовать проценту рассчитанной мощности. Т.е. если сигнал длится весь период ШИМ - значит 100% мощности, если 0 секунд - 0% мощности, соответственно 1.5 секунды - 50% мощности. Обратной связи нет. В данном случае даже и не знаю как её можно обеспечить, но обычные стандартные термоконтроллеры работают так.

Пока всё. Продолжение следует.

artur_mod
Сообщения: 5
Зарегистрирован: 04 июн 2018, 08:11

Re: Проект программного ПИД-регулятора температуры для кристаллизационной печи

Сообщение artur_mod » 26 июн 2018, 06:15

Здравствуйте!

Помогите, пожалуйста, придумать как реализовать функцию нагрева и охлаждения с заданной скоростью. Много чего думал, но в итоге пришел к мысли, что легче всего реализовать эту возможность через контроль скорости. Предположим у нас задана скорость охлаждения печи 5 градусов в час. Из-за небольшой величины работать с градусами не представляется возможным, разве что разбить час на пять частей и понижать (либо повышать) раз в 12 минут температуру на 1 градус, не удобно, да и качество такого регулирования будет крайне низким. По-этому пришел к мысли, что имеет смысл, пересчитать заданную скорость в микровольты на единицу времени, в этом случае ни в каждый момент времени будет нужная нам температура (так как характеристики у термопар не линейные, зато набор (или падение) температуры будет плавный, а главное не будет перескоков, очень важно избежать колебаний (перегрева-охлаждения). Понятно, что рассчитать скорость нагрева-охлаждения в микровольтах мы можем, также мы можем эту скорость отслеживать, но как её контролировать, удерживать в нужном диапазоне? Какой закон регулирования применить в этом случае?

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: Проект программного ПИД-регулятора температуры для кристаллизационной печи

Сообщение Эдуард » 28 июн 2018, 15:42

Здравствуйте!
Я считаю, что надо управлять температурой через заданное значение температуры для терморегулятора. А изменять заданное значение можно разными способами. Например, табличным. Задается таблица: время - температура. При желании можно аппроксимировать промежуточные между полюсами значения по линейному закону. Более важный вопрос, как задавать функцию изменения температуры в программе верхнего уровня.


Вернуться в «Проекты Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: MailRu [Bot] и 5 гостей