Терморегулятор для аквариума
Статья опубликована в журнале "Радио" №10, 2012.
В статье приводится описание простого терморегулятора для аквариума. Устройство измеряет температуру воды и управляет водонагревателем, поддерживая заданное значение температуры. Датчиком температуры является цифровой термометр DS18B20, в качестве индикатора выбран двухразрядный семисегментный светодиодный индикатор. Схема управления выполнена на микроконтроллере Atmel ATmega8.
В статье приводится описание простого терморегулятора для аквариума. Устройство измеряет температуру воды и управляет водонагревателем, поддерживая заданное значение температуры. Датчиком температуры является цифровой термометр DS18B20, в качестве индикатора выбран двухразрядный семисегментный светодиодный индикатор. Схема управления выполнена на микроконтроллере Atmel ATmega8.
Введение
Подаренный на Новый год ребенку аквариум, неожиданно принес массу новых проблем и забот. За ним нужно следить, для него потребовался фильтр, аэратор, освещение, терморегулятор… Большая часть оборудования была приобретена вместе с рыбками, а вот терморегулятор было решено разработать самому. Изучение радиолюбительских решений в этой области показало огромный интерес населения к данной сфере увлечений. Самым удачным решением является, на мой взгляд, конструкция, описанная в [1]. Но, для поставленной цели, конструкция представляется излишне усложненной и избыточной. Для решения задачи поддержания заданной температуры – заведомо более высокой, чем окружающая, достаточно одного канала для подключения нагрузки – нагревателя. Высокая точность измерения – так же ни к чему: хватит двух разрядов для индикации целых значений температуры. Интерфейс должен быть прост: для управления устройством достаточно одной кнопки. В итоге родилась описываемая ниже конструкция.
Постановка задачи
Аквариумные рыбки, как правило, жители теплых мест планеты, поэтому комфортной для них является температура +26..+28 градусов. Комнатная температура в наших жилищах не всегда соответствует указанным значениям, поэтому рекомендуется подогревать воду в аквариуме. Подогрев необходимо контролировать, чтобы не допустить перегрева. Исходя из этих условий, можно сформировать структуру терморегулятора: датчик температуры определяет температуру, микроконтроллер преобразует электрический сигнал с датчика и индицирует его в понятном числовом виде на индикаторе. Кроме индикации, контроллер сравнивает текущее значение температуры с заданным и, в зависимости от отклонения подает сигнал на ключ управления нагревательным элементом, включая или отключая его.
Принципиальная схема
Принципиальная схема терморегулятора показана на рисунке 1.
В качестве датчика температуры DD1 выбран компактный, достаточно распространенный и недорогой цифровой термометр DS18B20. Микросхема имеет цифровой интерфейс 1-Wire, программно и аппаратно легко реализуемый на любом микроконтроллере. Преимущество микросхемы еще и в том, что датчик калиброван изготовителем и не требует какой-либо температурной подстройки в реальном устройстве.
«Сердцем» терморегулятора является микроконтроллер ATmega8 – микросхема DD2. Тактовую частоту процессора задает кварцевый резонатор Q1. В качестве индикатора использован двух разрядный семисегментный светодиодный индикатор с общими катодами HL1. Мощности выходных каскадов портов микроконтроллера достаточно для прямого (с токоограничительными резисторами R2, R3) подключения светодиодного индикатора.
Управление нагрузкой осуществляется с помощью связки оптрон – симистор по стандартной схеме DD4, VD2, R5. Включенный последовательно с излучателем оптопары светодиод VD1 играет роль индикатора включения нагрузки.
Питание устройства осуществляется от зарядного устройства сотового телефона (на схеме не показано) через стабилизатор напряжения DD3. «Зарядник» можно использовать любой, желательно с напряжением холостого хода не ниже 7В – в конструкции использован от сотовых телефонов Siemens (напряжение холостого хода 8,5В).
Кнопка S1, подключенная к линии PB1 микроконтроллера (программно на входе включен встроенный резистор на VCC), используется для управления устройством.
В качестве датчика температуры DD1 выбран компактный, достаточно распространенный и недорогой цифровой термометр DS18B20. Микросхема имеет цифровой интерфейс 1-Wire, программно и аппаратно легко реализуемый на любом микроконтроллере. Преимущество микросхемы еще и в том, что датчик калиброван изготовителем и не требует какой-либо температурной подстройки в реальном устройстве.
«Сердцем» терморегулятора является микроконтроллер ATmega8 – микросхема DD2. Тактовую частоту процессора задает кварцевый резонатор Q1. В качестве индикатора использован двух разрядный семисегментный светодиодный индикатор с общими катодами HL1. Мощности выходных каскадов портов микроконтроллера достаточно для прямого (с токоограничительными резисторами R2, R3) подключения светодиодного индикатора.
Управление нагрузкой осуществляется с помощью связки оптрон – симистор по стандартной схеме DD4, VD2, R5. Включенный последовательно с излучателем оптопары светодиод VD1 играет роль индикатора включения нагрузки.
Питание устройства осуществляется от зарядного устройства сотового телефона (на схеме не показано) через стабилизатор напряжения DD3. «Зарядник» можно использовать любой, желательно с напряжением холостого хода не ниже 7В – в конструкции использован от сотовых телефонов Siemens (напряжение холостого хода 8,5В).
Кнопка S1, подключенная к линии PB1 микроконтроллера (программно на входе включен встроенный резистор на VCC), используется для управления устройством.
Программа
Алгоритм программы реализован в среде разработки Algorithm Builder for AVR (http://www.algrom.net/russian.html) и представлен в архиве term.zip
Программа работает следующим образом. После подачи питания, кратковременно на индикаторе отображается номер версии программы. Затем с периодичностью около секунды производится запуск измерения температуры цифровым термометром DS18B20. По окончании измерения, результат (целое число градусов) выводится на индикатор.
Результат измерения сравнивается с заданным пороговым значением температуры. При отклонении температуры включается или отключается оптрон управления нагрузкой (нагревательным элементом).
По нажатию кнопки устройство переводится в режим индикации/установки порогового значения температуры (признак режима – индикация точки в младшем разряде). По кратковременному нажатию кнопки индицируемое значение увеличивается на единицу. Если нажатие длительное (более трех секунд), индицируемое значение сохраняется в энергонезависимой памяти микроконтроллера, а программа возвращается в режим индикации измеренного значения температуры. Если нажатий не было дольше тех же трех секунд, программа так же возвращается к индикации температуры (точка в младшем разряде гаснет).
В программе ограничен диапазон установки пороговой температуры значениями 5..35 градусов. Кроме этих цифр после 35 на индикатор выводятся символы «С» (Control) и «Р» (Power).
Если в момент индикации «С» длительно удерживать нажатой кнопку, программа переходит в режим индикации/установки способа управления нагрузкой – «СН» или «СС». «СН» (Control Hot) - соответствует подаче сигнала включения нагрузки при температуре ниже установленного порогового значения. Используется, когда для достижения порога требуется нагрев. Например, температура в комнате +24 градуса, в качестве нагрузки подключен нагревательный элемент, установленное пороговое значение температуры +27 градусов. В случае «СН» нагреватель будет включен до достижения температуры выше +27 (т.е. при +28) градусов, при измеренном значении температуры +28, нагреватель отключится и вновь включится при снижении температуры ниже +27 (т.е. при +26). «СС» (Control Cold) – соответствует обратному режиму включения нагрузки (нагрузка включается при температуре выше порога). Используется, когда для достижения порога требуется охлаждение. Например, в комнате +28, нагрузка – вентилятор, направленный на аквариум, порог +27. В случае «СС» при температуре +28 включится вентилятор, когда температура упадет до +26, вентилятор отключится.
Если в момент индикации «Р» длительно удерживать нажатой кнопку, программа переходит в режим индикации/установки скважности импульсов, подаваемых на ключ управления нагрузкой – значения от «Р1» до «Р9». В программе реализована возможность импульсного управления нагрузкой: при включении нагрузки возможен режим, когда ключ замкнут в течение четверти секунды (назовем этот период «тик»), затем он отключается на заданное число «тиков». Такой режим позволяет использовать в качестве нагревателя не специализированный аквариумный водонагреватель, мощность которого порядка 50 Вт, а обычный «полукиловаттный» кипятильник в режиме один «тик» к восьми. Например, при установке «Р6» - один «тик» нагрузка будет включена, пять «тиков» - выключена; при установке «Р1» - нагрузка будет постоянно включенной.
Запись выбранного значения в режимах «С» и «Р» в энергонезависимую память микроконтроллера осуществляется длительным нажатием на кнопку. По окончании записи, программа возвращается в режим индикации температуры. Если кнопку длительное время не нажимать, программа так же вернется в режим индикации температуры.
Индицируемые значения температуры программно ограничены диапазоном «-9»…«59». Если температура ниже минус девяти, на индикаторе отображается «Lo», если выше плюс пятидесяти девяти – «Hi».
Программой задействованы два таймера микроконтроллера. Прерывания от Timer0 с периодом около миллисекунды используются для организации динамической индикации и опроса кнопки управления. Прерывания Timer1 с периодом около четверти секунды используются для отсчета временных интервалов, управления нагрузкой, формирования «тиков».
Коды программы представлены в таблице 1 (Hex файл). Значения Fuse битов при программировании представлены на рисунке 2.
Программа работает следующим образом. После подачи питания, кратковременно на индикаторе отображается номер версии программы. Затем с периодичностью около секунды производится запуск измерения температуры цифровым термометром DS18B20. По окончании измерения, результат (целое число градусов) выводится на индикатор.
Результат измерения сравнивается с заданным пороговым значением температуры. При отклонении температуры включается или отключается оптрон управления нагрузкой (нагревательным элементом).
По нажатию кнопки устройство переводится в режим индикации/установки порогового значения температуры (признак режима – индикация точки в младшем разряде). По кратковременному нажатию кнопки индицируемое значение увеличивается на единицу. Если нажатие длительное (более трех секунд), индицируемое значение сохраняется в энергонезависимой памяти микроконтроллера, а программа возвращается в режим индикации измеренного значения температуры. Если нажатий не было дольше тех же трех секунд, программа так же возвращается к индикации температуры (точка в младшем разряде гаснет).
В программе ограничен диапазон установки пороговой температуры значениями 5..35 градусов. Кроме этих цифр после 35 на индикатор выводятся символы «С» (Control) и «Р» (Power).
Если в момент индикации «С» длительно удерживать нажатой кнопку, программа переходит в режим индикации/установки способа управления нагрузкой – «СН» или «СС». «СН» (Control Hot) - соответствует подаче сигнала включения нагрузки при температуре ниже установленного порогового значения. Используется, когда для достижения порога требуется нагрев. Например, температура в комнате +24 градуса, в качестве нагрузки подключен нагревательный элемент, установленное пороговое значение температуры +27 градусов. В случае «СН» нагреватель будет включен до достижения температуры выше +27 (т.е. при +28) градусов, при измеренном значении температуры +28, нагреватель отключится и вновь включится при снижении температуры ниже +27 (т.е. при +26). «СС» (Control Cold) – соответствует обратному режиму включения нагрузки (нагрузка включается при температуре выше порога). Используется, когда для достижения порога требуется охлаждение. Например, в комнате +28, нагрузка – вентилятор, направленный на аквариум, порог +27. В случае «СС» при температуре +28 включится вентилятор, когда температура упадет до +26, вентилятор отключится.
Если в момент индикации «Р» длительно удерживать нажатой кнопку, программа переходит в режим индикации/установки скважности импульсов, подаваемых на ключ управления нагрузкой – значения от «Р1» до «Р9». В программе реализована возможность импульсного управления нагрузкой: при включении нагрузки возможен режим, когда ключ замкнут в течение четверти секунды (назовем этот период «тик»), затем он отключается на заданное число «тиков». Такой режим позволяет использовать в качестве нагревателя не специализированный аквариумный водонагреватель, мощность которого порядка 50 Вт, а обычный «полукиловаттный» кипятильник в режиме один «тик» к восьми. Например, при установке «Р6» - один «тик» нагрузка будет включена, пять «тиков» - выключена; при установке «Р1» - нагрузка будет постоянно включенной.
Запись выбранного значения в режимах «С» и «Р» в энергонезависимую память микроконтроллера осуществляется длительным нажатием на кнопку. По окончании записи, программа возвращается в режим индикации температуры. Если кнопку длительное время не нажимать, программа так же вернется в режим индикации температуры.
Индицируемые значения температуры программно ограничены диапазоном «-9»…«59». Если температура ниже минус девяти, на индикаторе отображается «Lo», если выше плюс пятидесяти девяти – «Hi».
Программой задействованы два таймера микроконтроллера. Прерывания от Timer0 с периодом около миллисекунды используются для организации динамической индикации и опроса кнопки управления. Прерывания Timer1 с периодом около четверти секунды используются для отсчета временных интервалов, управления нагрузкой, формирования «тиков».
Коды программы представлены в таблице 1 (Hex файл). Значения Fuse битов при программировании представлены на рисунке 2.
Монтаж
Для терморегулятора печатная плата специально не разрабатывалась. Монтаж выполнен на макетной плате набора SEM0010M-8A [2], представляющего собой макетную плату 42х42мм с распаянным на ней микроконтроллером ATmega8A-AU и кварцевым резонатором 16МГц. Плата с элементами установлена в корпусе 75х75х13мм (полупрозрачная коробка-органайзер для хранения мелочи) - рисунок 3.
Датчик температуры припаян полуметровым телефонным четырехжильным проводом к плате. От воды DS18B20 защищен обычным скотчем. При работе датчик располагается недалеко (5-10 см) от нагревательного элемента в верхней части аквариума, желательно внутри течения от фильтра-аэратора – это обеспечивает равномерный прогрев толщи воды.
В качестве индикатора можно использовать любые семисегментные индикаторы с общим катодом и током 5-15мА на сегмент, в конструкции был использован индикатор от неисправной материнской платы компьютера. Возможно, придется подобрать номиналы токоограничительных резисторов R2, R3 до достижения приемлемой яркости. Использование индикатора с общими анодами потребует изменения программного кода микроконтроллера.
В узле управления нагрузкой возможно использование оптронов серий МОС306х, МОС316х с соответствующим изменением номинала резистора R4. Симистор VD2 может быть любым с соответствующим нагрузке номинальным током и допустимым напряжением превышающим сетевое.
В качестве разъема ХТ1 использован двухконтактный клеммник.
От стабилизатора DD3 можно отказаться, если выходное напряжение «зарядника» не превышает 5,5В (например для сотовых телефонов LG). Отказаться можно также от использования кварцевого резонатора – в устройстве нет критичных к стабильности временных параметров элементов: интерфейс 1-Wire для взаимодействия с датчиком DS18B20 имеет достаточно широкий диапазон допустимых задержек. В этом случае рекомендуется работа микроконтроллера от встроенного RC-генератора 4МГц, при этом необходимо скорректировать программу в части настройки таймеров и программных задержек при работе с 1-Wire.
Настройки цифровые устройства при правильном монтаже, как правило, не требуют. В случае отсутствия индикации температуры, следует проверить питающее напряжение на входе и выходе стабилизатора DD3. Также следует проверить настройки программатора.
В качестве нагревательного элемента был использован бытовой электрокипятильник 500Вт (режим работы терморегулятора «Р9»). Для его подключения использовался доработанный бытовой полутораметровый удлинитель на две розетки. Доработка свелась к подключению двужильного электрокабеля в разрыв одного из проводов. Концы кабеля подлючаются к клеммам разъема ХT1 на плате устройства. Фото конструкции с аквариумом показано на рисунке 4.
Датчик температуры припаян полуметровым телефонным четырехжильным проводом к плате. От воды DS18B20 защищен обычным скотчем. При работе датчик располагается недалеко (5-10 см) от нагревательного элемента в верхней части аквариума, желательно внутри течения от фильтра-аэратора – это обеспечивает равномерный прогрев толщи воды.
В качестве индикатора можно использовать любые семисегментные индикаторы с общим катодом и током 5-15мА на сегмент, в конструкции был использован индикатор от неисправной материнской платы компьютера. Возможно, придется подобрать номиналы токоограничительных резисторов R2, R3 до достижения приемлемой яркости. Использование индикатора с общими анодами потребует изменения программного кода микроконтроллера.
В узле управления нагрузкой возможно использование оптронов серий МОС306х, МОС316х с соответствующим изменением номинала резистора R4. Симистор VD2 может быть любым с соответствующим нагрузке номинальным током и допустимым напряжением превышающим сетевое.
В качестве разъема ХТ1 использован двухконтактный клеммник.
От стабилизатора DD3 можно отказаться, если выходное напряжение «зарядника» не превышает 5,5В (например для сотовых телефонов LG). Отказаться можно также от использования кварцевого резонатора – в устройстве нет критичных к стабильности временных параметров элементов: интерфейс 1-Wire для взаимодействия с датчиком DS18B20 имеет достаточно широкий диапазон допустимых задержек. В этом случае рекомендуется работа микроконтроллера от встроенного RC-генератора 4МГц, при этом необходимо скорректировать программу в части настройки таймеров и программных задержек при работе с 1-Wire.
Настройки цифровые устройства при правильном монтаже, как правило, не требуют. В случае отсутствия индикации температуры, следует проверить питающее напряжение на входе и выходе стабилизатора DD3. Также следует проверить настройки программатора.
В качестве нагревательного элемента был использован бытовой электрокипятильник 500Вт (режим работы терморегулятора «Р9»). Для его подключения использовался доработанный бытовой полутораметровый удлинитель на две розетки. Доработка свелась к подключению двужильного электрокабеля в разрыв одного из проводов. Концы кабеля подлючаются к клеммам разъема ХT1 на плате устройства. Фото конструкции с аквариумом показано на рисунке 4.
Работа с оборудованием
Работа с терморегулятором происходит следующим образом. Если при программировании микроконтроллера запись данных в энергонезависимую память не производилась, следует первое включение производить без подключенной нагрузки. После появления на индикаторе измеренной температуры, необходимо выставить параметры «С» и «Р» в нужные значения. Например, при работе с нагревателем: «СН» и «Р9». Затем установить требуемое значение температуры воды в аквариуме. Процедура установки значений описана выше. После этого нужно отключить устройство от сети, опустить нагревательный элемент в аквариум, закрепить рядом датчик температуры, подключить нагревательный элемент к устройству и вновь включить терморегулятор.
Практический пример: аквариум 50л, температура в комнате +25, нагреватель – электрокипятильник 500Вт, режимы терморегулятора: «СН» и «Р9», установлено значение температуры +27. В таком режиме прогрев воды до отключения нагревателя (+28) происходил в течение полутора часов, далее периодичность включения нагревателя составляла около 20 минут. Субъективные ощущения при касании нагревателя: «чуть теплый». Интерес живых обитателей аквариума к «нововведениям» поначалу был: рыбки тыкались носом в кипятильник и сразу отплывали – никто не пострадал…
Практический пример: аквариум 50л, температура в комнате +25, нагреватель – электрокипятильник 500Вт, режимы терморегулятора: «СН» и «Р9», установлено значение температуры +27. В таком режиме прогрев воды до отключения нагревателя (+28) происходил в течение полутора часов, далее периодичность включения нагревателя составляла около 20 минут. Субъективные ощущения при касании нагревателя: «чуть теплый». Интерес живых обитателей аквариума к «нововведениям» поначалу был: рыбки тыкались носом в кипятильник и сразу отплывали – никто не пострадал…
Выводы
Устройство получилось компактным и, сравнительно, недорогим (дешевле, чем промышленный терморегулятор для аквариума).
В перспективе терморегулятор можно дорабатывать далее: осталась масса неиспользованных ресурсов микроконтроллера и место на плате. Можно, например, добавить еще один ключ управления нагрузкой и использовать его для периодического включения фильтра или подсветки.
В перспективе терморегулятор можно дорабатывать далее: осталась масса неиспользованных ресурсов микроконтроллера и место на плате. Можно, например, добавить еще один ключ управления нагрузкой и использовать его для периодического включения фильтра или подсветки.
Литература
- П.Кожухин. Автомат для аквариума. – Радио, 2011, №6, с.43-45.
- Модуль Evolution light на базе микроконтроллера ATmega8A-AU.