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

Этот проект развитие проекта опубликованного в журнале радио за март 2010 года.

Исходники и прошивки для этого проекта открыто не выложены, подробнее в конце статьи.


Термостат для инкубатора.

  • Диапазон термостата - 35.0С...44.5С.
  • Индикация и обработка аварийных ситуаций.
  • Сложный алгоритм поддержания температуры. 
  • Функция поворота лотков.
  • Канал влажности.
   
Краткий обзор.
Регулирование температуры.
В регуляторе совмещены релейный и пропорциональный алгоритмы управления нагревателем. Термостат работает как большинство других, включением/выключением нагрева. Плюс к этому постоянно идет подбор мощности подаваемой на нагреватель, программа пытается выбрать такую оптимальную мощность, при которой лампы не будут выключаться. Так же в этом состоянии реализовано плавное включение (и выключение) ламп, что в принципе должно положительно сказаться на их долговечности. Регулирование осуществляется фазо-импульсным методом.    
Для прошивки с алгоритмом низкочастотной шим.
 Время включенного состояния постоянно и равно 0.3 сек. Мощность регулируется изменением времени паузы в пределах 0..2.5 секунды. 

Аварийные ситуации.
Если произошел пробой симистора, то программа отслеживает это и включается режим регулирования температуры аварийным реле, которое работает на размыкание силовой цепи нагревателя. Пользователь сам устанавливает порог аварийной температуры в диапазоне 39.0-45.0 градусов.
 
Функция поворота лотков.
Время паузы может задаваться до 10 часов. Движение лотков может управляться концевыми выключателями. Также движение лотков, например, при отсутствии концевых выключателей, можно задавать по времени, в программе запоминается время движения с разрядностью в 0.1 секунду.

Канал влажности.
Используется датчик DHT11. В более ранних версиях используется психрометрический способ. Влажность определяется по разности показаний сухого и влажного термометра. При влажности, ниже, установленной в программе, на 15 секунд на выводе  устанавливается высокий уровень напряжения, затем идет пауза заданная параметром «PAU». Паузу можно задавать в пределах 0-200 секунд. Подбор времени паузы позволяет избежать эффекта перерегулирования.

    Описание.

Управляется термостат тремя кнопками «температура», «влажность» и «пауза». Каждая кнопка служит для входа в режим редактирования соответствующего параметра. Кнопкой «температура» задается температура стабилизации термостата и температура аварии. Кнопкой «влажность» задаётся порог поддерживаемой влажности и параметр "пауза влажности". Кнопкой «пауза» задаётся время выключенного состояния двигателя поворота лотков.

Кнопки «влажность» и «пауза» имеют альтернативные функции соответственно плюс и минус, эти функции действуют во всех режимах.
Для входа во все режимы редактирования параметров, следует нажать и удерживать соответствующие кнопки более двух секунд. При этом на экране высветится название режима и при отпускании кнопки выведется мигающее значение параметра.  Если кнопке назначено два параметра, то для входа в режим редактирования второго параметра,  следует продолжать удерживать кнопку еще две секунды.

Для установки температуры стабилизации название режима «УСt».
Для установки температуры аварии название режима «АВР».
Для режима установки порога влажности «ВLA»,
Для влажности задается еще один параметр - пауза. Название режима «PAU».
Для установки времени выключенного состояния двигателя поворота лотков - «OFF».
Для ручного управления поворотным механизмом название режима «РУЧ».
Для установки коррекции датчиков название режима «СОР».

В термостате предусмотрена коррекция используемых в схеме датчиков DS18B20, для входа в режим редактирования коррекции следует нажать все три кнопки, при этом выведется название режима «COP», если кнопки удерживать нажатыми еще 2 секунды, выведется название режима «-2-» коррекция второго датчика.  Коррекция устанавливается с разрешением 0,1 градус.

Если в выше перечисленных режимах (кроме режима «РУЧ») не нажимать кнопки в течении четырех секунд, то происходит сохранение параметра в энергонезависимую память и переход в рабочий режим. Во всех режимах новое измененное значение, принимается только после выхода в рабочий режим.


Лотки

При редактировании параметра «пауза» (времени выключенного состояния двигателя) в режиме «OFF», время задается в минутах в диапазоне девять часов пятьдесят девять минут, например на экране 2.30 – два часа тридцать минут.

Есть две порошивки.
  1. С движением лотков по концевикам и по времени.
  2. С движением лотков только по концевикам.
Для всех прошивок интерфейс одинаков.
Ниже описана возможность задавать движение, как по времени так и по концевикам, в первой версии прошивки. Если в ней не использовать концевики, то останется движение только по времени.

Движение лотков может задаваться по времени и по концевикам. При первом включении после прошивки или при искажении сохраненных данных в еепром, время движения лотков задается равным 50,0 секундам. Для установки времени движения, предназначен режим «РУЧ» ручного управления поворотным механизмом. Время в режиме «РУЧ» индицируется в секундах, в программе запоминается с разрешением в 0,1 секунду. Для входа в него следует нажать две кнопки «влажность» (плюс) и «пауза» (минус), при этом на экране выведется название режима «РУЧ». Далее, нажатие кнопки «влажность» (плюс)  включает движение вперед, на экране отображается время включенного состояния. При нажатии кнопки «пауза» (минус), включается режим реверс, соответственно время на экране начинает уменьшаться. Для обнуления времени следует нажать кнопку «температура», при нажатом состоянии кнопки экран гасится. Для принятия и сохранения значения в EEPROM следует удерживать кнопку «температура» нажатой более трёх секунд, при этом произойдет сохранение параметра в EEPROM и переход в рабочий режим. Если  подождать 25 секунд, при этом, если не было нажатий термостат переходит в рабочий режим без принятия и сохранения параметра в еепром. То есть этим режимом можно пользоваться для установки положения лотков. Внимание, при выходе из этого режима, если используется движение по времени и ни один концевик не замкнут, следующие включение двигателя будет в реверс! Принудительный поворот лотков можно включить удерживая кнопки «температура» и «пауза» более 2 секунд.

Последовательность настройки времени движения лотков.
  1.  Нажатием «влажность» (плюс) и «пауза» (минус), вызвали режим «РУЧ».
  2.  Подвели лотки на исходное положение.
  3. Нажали кнопку «температура» для сброса времени.
  4. Нажатием «влажность» (плюс) подводим механизм на нужное расстояние, допускается нажатие кнопки «пауза» (минус) для корректировки положения.
  5. Нажали и удерживаем кнопку «температура» более 3 секунд.
В-общем то для управления лотками можно использовать сразу контроль конечниками и контроль по времени. В этом случае выход из строя конечника к поломке механизма не приведет (произойдет останов по времени). Также если используется движение только по времени, то, например, в результате отключения электричества в момент движения лотков они будут находиться не в исходном состоянии. При подаче питания и истечении времени паузы начнется движение вперед на заданное в настройках время, что может привести к поломке механизма.

В прошивках с движением лотков только по концевикам, время движения мотора не запоминается и не учитывается.


Влажность.

Используется психометрический способ, что это такое и рекомендации по выполнению влажного термометра хорошо освещены в интернете. Для определения влажности в интернете была найдена таблица и дополнена с помощью этой программы, если Вы найдете в таблице ошибки, то сообщите пожалуйста. Для управления влажностью применен следующий алгоритм. Если влажность меньше установленного порога влажности, то на вывод в течении 15 секунд подаётся высокий уровень напряжения включающий исполнительный механизм, далее на выводе устанавливается низкий уровень напряжения на паузу заданную параметром «PAU». Паузу можно задавать в пределах  0..200 секунд. Для входа в режим редактирования паузы следует нажать и удерживать кнопку «влажность» более 4 секунд, при этом сначала на экране выведется название для режима влажности «BLA», затем для режима паузы «PAU».
Короткое нажатие на кнопку «влажность» включает на 20 секунд отображение вычисленной влажности, следующие нажатие, включает отображение температуры второго датчика. Влажность вычисляется в диапазоне 35,0-43,5 градусов для  сухого термометра.

Небольшой рисунок поясняющий работу кнопок.

При включении, параметры считываются из EEPROM, если их контрольная сумма не совпадает с сохраненной, то параметры инициализируются значениями по умолчанию  температура стабилизации – 35 градусов, температура аварии – 40,5 градусов, время выключенного состояния двигателя – 2 часа, время включенного состояния двигателя – 50,0 секунд, коррекции датчиков – 0 градусов. Влажность 50%, пауза влажности 30 секунд. На экран выводится надпись «EEP» (EEPROM).



Схема.
   схема 45kB
рис. 1
Для управления поворотным механизмом выделено два выхода, «движение» вывод 2 и «реверс» вывод 3. И два входа для концевых выключателей SA1 и SA2. Схемы подключения двигателя использованы из журналов, в частности "Н. Заец. Устройство управления двигателем инкубатора. Радио №5 2002". Здесь небольшая подборка статей, на которые обращал внимание, при разработке. При движении вперед на выводе «движение» устанавливается высокий уровень напряжения. При реверсе включение происходит в следующем порядке, на выводе «реверс» устанавливается высокий уровень напряжения, через 100 миллисекунд  на выводе «движение» устанавливается высокий уровень напряжения и начинается отсчет времени. Выключение происходит в обратном порядке, на выводе «движение» устанавливается низкий уровень напряжения, через 100 миллисекунд на выводе «реверс». Если используются концевые выключатели, то их замыкание выключает двигатель и включается счет паузы. При замкнутом выключателе SA1 включение поворотного механизма всегда будет осуществляться вперед, при замкнутом SA2 в реверс.

Простые схемы, для понятия принципа, подключения двигателя с помощью реле.
подключение двигателя с помощью реле


Пример схемы подключения двигателя с помощью транзисторов.  
транзисторный мост
Эту схему я нарисовал в микрокапе, может есть проще.. Для ее управления требуется подавать высокий уровень напряжения только на один вывод микроконтроллера. При движении вперед устанавливается высокий уровень напряжения на выводе 2 "мотор", при движении в реверс устанавливается высокий уровень напряжения на выводе 3 "реверс". Соответственно для  этой схемы есть своя прошивка.

В термостате предусмотрена сигнализация выхода температуры за пределы диапазона регулирования.  К выводу 13 подключен звуковой излучатель со встроенным генератором. При температуре ниже 35.0°C на выводе устанавливается высокий уровень напряжения  длительностью 0.5 секунды с периодом 2 секунды. При температуре выше температуры аварии минус 0.5 градуса, на выводе устанавливается высокий уровень напряжения длительностью 0.5 секунды, с периодом в 1 секунду.  При пропадании датчика  на выводе устанавливается высокий уровень напряжения длительностью 1.5 секунды, через 0.5 секунды.
При температуре выше температуры аварии на выводе 11 «Авария_2» устанавливается высокий уровень напряжения, данный вывод служит для индикации превышения температуры верхней допустимой границы, высокий уровень  напряжение снимется только после перезапуска устройства. При этом на выводе 12 «авария» также устанавливается высокий уровень напряжения включая транзисторный ключ VT2, который включает реле К1 нормально замкнутые контакты размыкаются обесточивая нагревательный элемент. Считается, что произошел пробой симистора и происходит не контролируемый рост температуры. Далее термостатирование будет производиться этим реле. При этом в момент выключения реле будут подаваться управляющие импульсы на симистор, на тот случай, если по каким то причинам, произошло ложное срабатывание режима "АВАРИЯ".  Ситуация, когда датчик перестаёт отвечать, отрабатывается следующим образом. На индикатор выводится "---". Снимаются управляющие импульсы с симистора, и на выводе «Авария_2» устанавливается высокий уровень напряжения, подается звуковая сигнализация. Сделано это так, потому что датчик может пропадать, например, из-за плохого контакта или замыкания в линии, а потом опять определяться,  в этом случае термостат не прекращает терморегулирование, работа продолжается с индикацией аварийной ситуации. Следует принять меры по её устранению.
На выводе 6 «нагрев» устанавливается высокий уровень напряжения при решении управляющей программы микроконтроллера о включении нагрева. 
В термостате предусмотрена защита от сбоя датчика, если измеренная температура превышает предыдущие значение на 15 градусов, то это измерение игнорируется (например, произошел сброс датчика и следующие чтение температуры вернет 85 градусов, что включило бы  режим аварии).
Также в программе включен сторожевой таймер, что исключает зависание программы, например из-за сильной помехи по сети.


Управление симистором/тиристором.

На выводе PD3 точка «А» на схеме, для включения симистора генерируются импульс длительностью 25 микросекунд.
В схеме можно применять тиристоры и симисторы включенные по схемам приведенным ниже. Импульсные трансформаторы применяют типов МИТ-4, МИТ-12 или аналогичных.
Если нет возможности их достать, то можно сделать самодельный. Трансформатор содержит две изолированные друг от друга обмотки по 45 витков провода ПЭЛШО 0,18 магнитопровод – кольцевой К10х6х4.5 из феррита 2000НМ.

Управление с помощью оптопар МОС:
Для прошивки с фазоимпульсным управлением, можно применять только MOC3021, MOC3022, MOC3023, подключив их к точке "А", они не имеют в своем составе схемы Zero-Cross. Вывод "нагрев", в этой прошивке индицирует поданную мощность.
Для прошивки с алгоритмом низкочастотной шим, желательно применять оптопары содержащие блок "Zero-Cross" (Zero-Cross: схема управления переключением (открыванием симистора) в момент перехода фазы через ноль) MOC3041, MOC3042, MOC3043, MOC3061, MOC3062, MOC3063 подключив их к точке "B" на основной схеме. Или к точке "А" подключаются оптопары без "Zero-Cross" - MOC3021, MOC3022, MOC3023. Статья по применению этих оптопар, журнал радиомир 10.2008 (21 Kb) .

Схемы подключения оптопар.
Для симистора.

Для встречно-параллельно включенных тиристоров.

( MOC3021, MOC3022, MOC3023 подключаются к точке А).

Ограничивающие резисторы R* во всех случаях подбираются в зависимости от используемого импульсного трансформатора или типа применяемой оптопары.

Для правильной работы узла управления симистором, следует проконтролировать работу блока синхронизации с сетью, на схеме (рис. 1)  VT1, R1, R2, R3, C6, VD2.
Осцилограммы его работы:

Осцилограмма
  • Черный - напряжение с выхода диодного моста.
  • Красный - управляющие импульсы на симистор PB3(17).
  • Синий - синхроимпульсы с коллектора VT1.
  • Ширину синхроимпульсов можно менять резистором R2, уменьшая сопротивление увеличиваем ширину импульса. Например, если на максимальной мощности наблюдается подмаргивание ламп, то это значит, что синхроимпульс имеет маленькую длину и управляющий импульс подается на симистор в тот момент, когда еще ток в цепи не достиг значения тока удержания симистора. Также, если синхроимпульс будет чересчур длинным, то это может негативно повлиять на алгоритм фазоимпульсного управления.

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


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

    Fuse биты.

    High Byte   
    RSTDISBL WDTON SPIEN CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST
    1
    (unprogrammed)
    1
    (unprogrammed)
    0
    (programmed)
    1
    (unprogrammed)
    0
    (programmed)
    0
    (programmed)
    0
    (programmed)
    1
    (unprogrammed)
    Low Byte
    BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0
    1
    (unprogrammed)
    0
    (programmed)
    1
    (unprogrammed)
    0
    (programmed)
    0
    (programmed)
    0
    (programmed)
    1
    (unprogrammed)
    1
    (unprogrammed)




    Прошивки.

    Моё условие.
    Если Вы будете использовать мое устройство и его работа Вам понравится, то Вы в виде благодарности перечислите мне небольшую сумму.
    Если Вы соглашаетесь с этим условием.



    Hosted by uCoz