Как создать двухканальный термостат на микроконтроллере ATmega8. Какие функции имеет данный терморегулятор. Как работает схема и программа термостата.
Особенности двухканального термостата на ATmega8
Двухканальный термостат на микроконтроллере ATmega8 представляет собой устройство для точного контроля и регулирования температуры в двух независимых зонах. Основные характеристики данного терморегулятора:
- Два независимых канала измерения и регулирования температуры
- Использование цифровых датчиков температуры DS18B20
- Отображение информации на семисегментных светодиодных индикаторах
- Возможность задания верхнего и нижнего порогов срабатывания для каждого канала
- Управление нагрузкой с помощью реле
- Сохранение настроек в энергонезависимой памяти
- Питание от источника 5В
Такой термостат может применяться для поддержания заданной температуры в различных системах — от бытовых до промышленных. Рассмотрим подробнее схему и принцип работы устройства.

Схема двухканального термостата на ATmega8
Основой термостата является микроконтроллер ATmega8, работающий на частоте 4 МГц от внутреннего RC-генератора. Схема устройства включает следующие основные элементы:
- Микроконтроллер ATmega8
- Два цифровых датчика температуры DS18B20
- Семисегментные светодиодные индикаторы
- Кнопки управления
- Выходные реле для управления нагрузкой
- Стабилизатор напряжения 5В
Датчики DS18B20 подключаются к разным выводам микроконтроллера по однопроводному интерфейсу 1-Wire. Это позволяет измерять температуру в двух разных зонах. Семисегментные индикаторы управляются в динамическом режиме для отображения текущей температуры и уставок. Кнопки используются для настройки параметров работы термостата.
Принцип работы программы терморегулятора
Программа для микроконтроллера ATmega8 реализует следующие основные функции:
- Измерение температуры с датчиков DS18B20
- Отображение текущей температуры на индикаторах
- Управление реле в зависимости от измеренной температуры и заданных порогов
- Настройка параметров работы с помощью кнопок
- Сохранение настроек в EEPROM
- Обработка ошибок и неисправностей датчиков
Измерение температуры происходит с периодом около 1 секунды. Программа сравнивает измеренные значения с заданными порогами и управляет включением/выключением реле для поддержания нужной температуры. При выходе за нижний порог включается нагрев, при достижении верхнего — выключается.

Настройка и использование термостата
Настройка параметров работы термостата осуществляется с помощью трех кнопок:
- «ОК» — переключение между каналами и вход в режим настройки
- «Вверх» — увеличение значения
- «Вниз» — уменьшение значения
Преимущества использования ATmega8 в термостате
Микроконтроллер ATmega8 обладает рядом преимуществ для применения в термостате:
- Достаточное количество портов ввода-вывода для подключения всех необходимых компонентов
- Наличие встроенного АЦП для измерения аналоговых сигналов
- Возможность программирования на языке C
- Низкое энергопотребление
- Невысокая стоимость
- Хорошая документация и поддержка
Использование ATmega8 позволяет создать функциональное и надежное устройство для контроля температуры при относительно небольших затратах.

Области применения двухканального термостата
Термостат на ATmega8 может применяться в различных системах, где требуется точное поддержание температуры в заданном диапазоне:
- Бытовые системы отопления и кондиционирования
- Теплицы и оранжереи
- Инкубаторы
- Системы подогрева воды
- Холодильные камеры
- Сушильные шкафы
- Промышленные термостаты
Наличие двух независимых каналов позволяет контролировать температуру сразу в двух зонах или использовать второй канал в качестве резервного.
Возможные модификации и улучшения термостата
Базовую схему термостата на ATmega8 можно модифицировать и дополнять новыми функциями:
- Добавление ЖК-дисплея для более информативной индикации
- Реализация ПИД-регулирования для более точного поддержания температуры
- Добавление интерфейса для связи с компьютером
- Увеличение количества каналов измерения и управления
- Реализация различных режимов работы (нагрев, охлаждение, циклический режим)
- Добавление звуковой или световой сигнализации

084-Двуканальный термометр-термостат на ATmega8. — GetChip.net
25.11.2012 Внимание! Программа термостата обновлена до версии v2b_1.
Представляю Вашему вниманию свое устройство — двухканальный термометр-термостат. Термостат был сделан мною по просьбе родственников, для поддержания в ящике с картошкой постоянной температуры. Если в другие годы в нём не было необходимости, то прошлая зима показала, что он необходим.
В качестве датчиков использовал DS18B20. Микроконтроллер (ATmega8) работает от внутреннего задающего генератора на 4 мГц (дополнительно, на плате предусмотрена возможность установки кварца). Из-за артефактов динамической индикации (заметно было подмигивания в момент опроса датчика) пришлось отказаться от чтения ROM датчика и подсчёта CRC. Тем не менее, в устройстве используются два датчика, которые подключены к разным выводам МК. Один измеряет температуру наружного воздуха, другой в ящике. Термостатирование организовано только для датчика №2 (ящик).
Термометр-термостат разделён по двум корпусам. В одном управляющая часть и дисплей, в другом блок питания и реле управления нагрузкой. На плате управления предусмотрена установка стабилизатора питания с конденсаторами для питания микроконтроллера, но так как питание приходит и так 5 v он не впаян (в случае питания от блоков питания с выходным напряжением больше 5 v, его необходимо впаять). Корпус управления снабжён кронштейном который позволяет устанавливать его как на DIN-рейку или просто саморезами к стене.
Разъёмы устройства:
— по USB разъёму передаются управляющие сигналя для включения реле;
— через аудио разъёмы подключены датчики температуры.
Так как программа занимает 66 % памяти, решено было сделать ещё и второй канал управления, на всякий случай, от РВ5. В данной программе второго канала нет, и понадобится ли вообще, пока не знаю, но на ПП второй канал организован в полном объёме, только не установлено реле.
Описание работы термостата.
Устройство имеет три кнопки для управления. Кнопка (ОК), (Up), (Dn). При включении питания на индикаторе высвечивается температура датчика №1 (наружный воздух).
Для просмотра температуры в ящике необходимо нажать кнопку (ОК). При этом загорается светодиод синий HL1 (см. схему), указывающий, что на дисплей выведена температура датчика №2.
При повторном нажатии кнопки (ОК), на дисплей выводится температура датчика №1, а светодиод HL1 гаснет.
Для входа в режим установки верхнего порога отключения и нижнего порога включения обогрева. Необходимо нажать обе кнопки (Up), (Dn) и удерживать их нажатыми не менее 5 сек. По истечении этого времени устройство перейдёт в режим просмотра верхнего порога выключения обогрева. Теперь кнопки нужно отпустить. На дисплее будет высвечиваться значение порога и у четвёртого разряда засветится верхний сегмент, указывающий, что это верхний порог.
Для изменения уставки порога, необходимо нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. Уставку можно менять в пределах от +1 до +10 градусов, с дискретностью 1 градус. Увеличение значения происходит с помощью кнопки (Up), а уменьшение с помощью кнопки (Dn). Для сохранения уставки или просто для перехода на следующий порог, необходимо нажать кнопку (ОК). На дисплее высветится нижний порог и у четвёртого разряда засветится нижний сегмент, указывающий, что это нижний порог.
Для изменения уставки порога, необходимо опять нажать кнопку (ОК). Значение на дисплее начнёт мигать, сигнализирующее о готовности к изменению уставки. После установки порога включения, нажимаем кнопку (ОК) для сохранения и выхода из режима установки порогов термостатирования. Уставки сохраняются в энергонезависимой памяти МК и при исчезновении питания не сбрасываются.
Рекомендую для качественного хранения картошки, уставку включения (нижний порог) обогрева установить +2, уставку выключения (верхний порог) +4.
Для удобства контроля состояния температуры в ящике, был введён дополнительный алгоритм сигнализации о низкой температуре в ящике. Что он из себя представляет? Когда на дисплее отображается температура датчика №1, а температура в ящике снижается (допустим, из-за неисправности нагревателя) и достигает значения ниже +1 градуса, светодиод HL1 начинает мигать, сигнализируя о низкой температуре в ящике. Если температура в ящике поднимется выше + 2 градусов, светодиод перестанет мигать.
Алгоритм неисправности датчиков. При неисправности датчика да дисплее выводится надпись Err №. Номер обозначает код неисправности от 1 до 3. Цифра 1 обозначает – нет высокого уровня, 2 – нет датчика, 3 – высокий уровень не восстановлен.
Когда на дисплее отображается температура датчика №1, и произошла неисправность датчика №2,то светодиод HL1 начинает мигать, сигнализируя о неисправности. Таким образом, при выведенной на дисплей температуре датчика №1 Вы не пропустите возникшую неисправность термостата.
Ещё несколько моментов. Термостат отключен если уставка нижнего порога равна уставке верхнего порога, или уставка нижнего порога выше уставки верхнего порога. Если неисправны датчик №1 или №2, то в меню уставок, значение уставки Вы не увидите, хотя уставку изменить можно, но вслепую. Это сделано для того, что бы пользователь не лез изменять уставки при неисправных датчиках.
Файлы для сборки устройства.
084_Termostat_PCB_ATtmega8_OK.zip (7942 Загрузки)
7_seg_term_OK_v2b_1_ATtmega8.zip (7936 Загрузок)
Termostat_7_LED1.zip (6025 Загрузок)
084-Fusebits.png (6602 Загрузки)
Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставяться инверсно.
Как правильно прошить AVR фьюзы
(Visited 23 271 times, 2 visits today)
Двухканальный термостат на ATmega8 DS18B20 | Мир микроконтроллеров
Комплект радиодеталей предназначен для самостоятельной сборки двухканального термостата на микроконтроллере ATmega8-16PU (запрограммирован) и датчиков температуры DS18B20, с выводом информации на два трехразрядных семисегментных светодиодных индикатора.
Подробное описание и инструкция по эксплуатации двухканального термостата представлены на сайте «МирМК»
Перейти на страницу сайта
Возможности термостата:
Каналы идентичны, каждый канал может работать в следующих режимах:
1. Поддержание определенной температуры
2. Поддержание температуры в определенных границах (положительной, отрицательной, смешанной для режимов «нагрев» и «охлаждение»)
3. Однократный нагрев до определенной температуры, однократное охлаждение до определенной температуры (запуск режима осуществляется вручную)
4. Автоматический выбор режимов «Нагрев» или «Охлаждение»
Программа уже очень давно выложена на сайте, все проблемы, выявленные в ее работе, устранены (делал для себя, работой доволен)
Диапазон установки температур включения и выключения нагрузки:
— положительная — до +99ºС
— отрицательная — до -50ºС
Шаг установки температуры — 1 градус
Включение нагрузки происходит высоким уровнем с вывода порта микроконтроллера, выключение — низким уровнем.
Двухканальный термометр с диапазоном измерения текущей температуры от -55ºС до +125ºС с разрешающей способностью:
— положительные температуры до 99ºС — 0,1 градуса, свыше 99 градусов — до одного градуса
— отрицательные температуры до -9,9ºС — 0,1 градуса, ниже -9,9 градуса — до одного градуса
Период измерений температуры — около 1 сек.
Устройство управляется тремя кнопками
Отключение канала производится путем записи нулевых установок включения и выключения канала
Питание устройства осуществляется от стабилизированного источника напряжением 5 вольт
При возникновении ошибки в работе с датчиком соответствующий номер ошибки выводится на индикатор, а нагрузка отключается:
Еr.1 — нет высокого уровня на линии DQ
Er.2 — нет импульса присутствия от датчика
Er.3 — не восстановлен высокий уровень на линии DQ после импульса присутствия
К сожалению, из-за необходимости организации динамической индикации шести разрядов индикаторов, не удалось решить проблему с проверкой кода CRC.
В случае зависания программы сработает сторожевой таймер и микроконтроллер будет перезагружен. Перезагрузка не повлияет на работу устройства, за исключением — будут отключены нагрузки при использовании режима однократного нагрева/охлаждения
Алгоритм установки термостатов:
— выставляется температура включения нагрузки
— выставляется температура выключения нагрузки
— и все
Комплект поставки:
1. Запрграммированный микроконтроллер ATmega8-16PU — 1 шт
2. Трехразрядный семисегментный светодиодный ультраяркий индикатор — 2 шт
3. Датчик температуру DS18B20 — 2 шт
4. Оптосимистор МОС3052 — 1 шт
5. Симистор ВТ138-600 — 1 шт
6. Реле SRD-05VDC-SL-C — 1шт
7. Транзисторы ВС547 — 6 шт
8. Транзистор 2N7000 — 1 шт
9. Диод 1N5817 (1N5819) — 1 шт
10 Кнопка тактовая четырехконтактная 6х6х10 — 3 шт
11. Светодиод 3мм — 2 шт
12. Клемник разъемный на плату и кабель KF-2P, шаг 5,08мм — 2 к-та
13. Резисторы:
— 150 Ом — 8 шт
— 330 Ом — 2 шт
— 510 Ом — 1 шт
— 2,2 кОм — 1 шт
— 4,7 кОм — 2 шт
— 10 кОм — 3 шт
Термопарный термостат ATmega8 « Adafruit Industries – Создатели, хакеры, художники, дизайнеры и инженеры!
Вот схема, я использовал популярную термопару типа K и MAX31855KASA+ для сопряжения. Я мог бы еще поставить операционный усилитель и подключить к АЦП Atmega8, но 31855 для ленивых и внутри все есть, просто подключите термопару и получайте данные через интерфейс SPI. У него также есть некоторые приятные функции, такие как обнаружение ошибок (если терм. поврежден или замкнут на VCC или GND), с другой стороны, это не так дешево.
Подробнее.
Хватит макетировать и паять – немедленно приступайте к изготовлению! Игровая площадка Adafruit’s Circuit Playground битком набита светодиодами, датчиками, кнопками, клипсами типа «крокодил» и многим другим. Создавайте проекты с помощью Circuit Playground за несколько минут с помощью сайта программирования MakeCode с функцией перетаскивания, изучайте информатику с помощью класса CS Discoveries на code.org, переходите в CircuitPython, чтобы вместе изучать Python и аппаратное обеспечение, TinyGO или даже используйте Arduino. ИДЕ. Circuit Playground Express — новейшая и лучшая плата Circuit Playground с поддержкой CircuitPython, MakeCode и Arduino. Он имеет мощный процессор, 10 NeoPixels, мини-динамик, инфракрасный прием и передачу, две кнопки, переключатель, 14 зажимов типа «крокодил» и множество датчиков: емкостное касание, ИК-близость, температура, свет, движение и звук. Целый огромный мир электроники и кодирования ждет вас, и он умещается на вашей ладони.
Присоединяйтесь к более чем 35 000 создателей на каналах Adafruit в Discord и станьте частью сообщества! http://adafru.it/discord
Хотите поделиться потрясающим проектом? Выставка Electronics Show and Tell проходит каждую среду в 19:00 по восточному времени! Чтобы присоединиться, зайдите на YouTube и проверьте чат шоу — мы опубликуем ссылку там.
Присоединяйтесь к нам каждую среду в 20:00 по восточноевропейскому времени, чтобы задать вопрос инженеру!
Подпишитесь на Adafruit в Instagram, чтобы узнать о совершенно секретных новых продуктах, закулисных событиях и многом другом https://www.instagram.com/adafruit/
CircuitPython — самый простой способ программирования микроконтроллеров — CircuitPython.org
Maker Business — проблемы в торговле между Китаем и США, выделенные законопроектом о принудительном труде конечно!
Electronics — Fuse Safety
Python для микроконтроллеров — Информационный бюллетень Python для микроконтроллеров: Хэллоуинские проекты, CircuitPython 8 beta 3 и CPython 3.11 и многое другое! #CircuitPython @micropython @ThePSF @Raspberry_Pi
Ежемесячный выпуск Adafruit IoT — канарейка CO2 в угольной шахте, приколы AQI и многое другое!
Microsoft MakeCode — MakeCode Спасибо!
EYE on NPI — понижающий силовой модуль Maxim Himalaya uSLIC #EyeOnNPI @maximintegrated @digikey
Новые продукты — Adafruit Industries — Создатели, хакеры, художники, дизайнеры и инженеры! — #NewProducts 26. 10.22 с #Adafruit High Power #Infrared #LEDEmitter — STEMMA JST PH 2 мм!
Получайте ежедневный информационный бюллетень, не содержащий спама, о носимых устройствах, ведении «производственного бизнеса», электронных советах и многом другом! Подпишитесь на AdafruitDaily.com!
Комментариев пока нет.
Извините, форма комментариев в настоящее время закрыта.
Энчатер для печатных плат – цифровой термостат v 1.0
проекты DYI и многое другое…
PCB Enchater – цифровой термостат v 1.0
Опубликовано admin 21 мая 2011 г.
Опубликовано в: проекты. Tagged: 7-сегментный дисплей, Atmega8, AVR, Декодер BCD, цифровой термостат, микроконтроллер, устройство для зачарования печатных плат, разводка печатной платы, pt100, измерение RTD.
Я хотел бы представить свой более крупный проект, основанный на AVR Atmega 8. Это цифровой термостат с управлением воздушным насосом, специально разработанный для гравировки печатных плат.
Основы
Основы для этого проекта:
- Драйвер на базе AVR Atmega8 в пакете TQFP
- Терморегулятор с двумя состояниями
- Прерванная работа насоса во время нагрева до заданного значения температуры
- Измерение температуры датчиком RTD PT100
- 3 микропереключателя для установки температуры и выбора меню
- 2 выхода реле 250VAC 5V (один для нагревателя и один для воздушного насоса)
- 4-разрядный светодиодный 7-сегментный дисплей с общим анодом и двоично-десятичным дешифратором
- Источник питания +12 В
//
Алгоритм управления
Драйвер работает как на схеме 1.1. Значение температуры по умолчанию выбрано 45°С, так как это оптимальная температура для B327. После включения питания воздушная помпа работает на удаление жидкости из воздуховодов в течение нескольких минут, а затем периодически работает, как только температура достигает 38°С, и переключается на непрерывную работу.
Гистерезис составляет около 3°C из-за двухпозиционного регулятора.
Почему PT100 ??
В первую очередь я решил использовать этот датчик для повышения точности измерений. Как всем известно, Pt100 имеет нелинейную характеристику, поэтому нам необходимо сделать программную линеаризацию. Линеаризация может быть выполнена двумя способами: LUT (справочная таблица) или уравнением, помещенным в uC . Первое решение является лучшим, потому что на Atmega 8 у нас есть только 8 КБ флэш-памяти, что сильно уменьшает объемы, а вторая причина — число с плавающей запятой (объявление 1 числа с плавающей запятой увеличивает размер исходного кода на 4 КБ), которое мы должны использовать, но мы J . В этом приложении я столкнулся с проблемой, которую я не рассматривал в начале проекта, которая не соответствует основным принципам. В Atmega 8 у нас есть 10-битный АЦП, что делает невозможным достижение точности менее 1 градуса Цельсия. Для решения проблемы предлагаю использовать 16-битный и более АЦП. В моем проекте я получаю точность 0,5 град С.
Перейдем к электронной части статьи. Как видно на рисунке 1.1, для измерения я использовал MAX9944, работающий как дифференциальный усилитель с 10-кратным коэффициентом усиления, а второй — как источник тока 1,241 мА и измерение мощности питания 2,048 В (эталонное напряжение MAX6612). Во время измерения мы должны предотвратить самонагрев нашего датчика RTD, и это основная причина, по которой мы используем стабильный источник тока. В дополнение к уменьшению влияния сопротивления проводов мы используем 4 соединения, как на рисунке 1.2, которые компенсируют их влияние. Диод D1 защищает АЦП Atmega от повреждений, вызванных напряжением выше 5 В. Операционные усилители питаются от 8 В (конечно, можно использовать и другие прецизионные усилители, например, rail-to-rail), так что если что-то по каким-то причинам может пойти не так ( по закону Мерфи 😉 ) 8В попадет на АЦП. Для предотвращения такой возможности используется резистор (R3) и диод D1. При попадании 8 В из усилителей резистор R3 уменьшит ток, а диод D1 начнет проводить напряжение.
Отображение и настройка температуры
Заданное и фактическое значения отображаются на двух двойных 7-сегментных светодиодных дисплеях с общим анодом. Отображение цифр осуществляется дешифратором BCD (4543D) и четырьмя транзисторами NPN для последовательного управления дисплеями (рисунок 1.3.). Последняя цифра зарезервирована для отображения заглавной буквы C. Использование 4543D немного усложняет весь проект. Преобразование 16-битного целого числа без знака в 3-битное кодовое число не так просто. В моем проекте я показываю оставшуюся часть числа преобразования деления на 10, 100, 1000. Согласно коду архитектуры AVR, это совершенно неэффективно — деление на 10 занимает гораздо больше времени, чем деление на 2, а исходный код становится больше. Чтобы решить эту проблему, я предлагаю использовать драйвер светодиодного дисплея с интерфейсом I2C или SPI или просто сдвиговый регистр с SPI.