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

Основные параметры:

  • регулируемый диапазон температур: 10...50°С;
  • диапазон регулировки гистерезиса: 0,5...9,5°С;
  • точность измерения: 0,5 °С;
  • максимальная нагрузка на контакты реле: 20 А (16 В постоянного тока);
  • максимальное напряжение контактов реле: 60 В постоянного тока;
  • напряжение питания: 9...12 В;
  • потребляемый ток 15 мА/65 мА (реле выкл/вкл).

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

Конструкция

Принципиальная схема устройства представлена ​​на рисунке 1. Была спроектирована очень простая микропроцессорная система, «сердцем» которой является небольшой микроконтроллер производства Microchip (ранее Atmel) с обозначением ATtiny84, отвечающий за реализацию всего функционала устройства. Он работает от внутреннего высокостабильного RC-генератора с частотой 8 МГц.

Рисунок 1. Принципиальная схема контроллера

Основной задачей микроконтроллера является реализация шины 1-Wire, по которой он обменивается данными с цифровым термометром типа DS18S20 фирмы Maxim (ранее Dallas). Он также отвечает за управление работой вышеупомянутого графического OLED-дисплея, благодаря реализации программной поддержки интерфейса SPI, которым оснащен модуль. Последней задачей является работа с тактовыми кнопками, являющимися элементом пользовательского интерфейса, при этом работа осуществляется с помощью встроенного в структуру микроконтроллера таймера-счетчика Timer0, что обеспечивает, во-первых, реализацию простого механизма, исключающего дребезг контактов кнопок, а, во-вторых, срабатывание короткого и длительного нажатия упомянутых кнопок. Последнее свойство относится к системе меню устройства.

Выбор именно этого типа микроконтроллера не был критическим. Была выбрана система с минимально необходимым количеством портов ввода/вывода и необходимым объемом Flash-памяти, что было обусловлено в основном необходимостью реализации шрифтовых форм, используемых в графическом пользовательском интерфейсе.

Использование

Управление контроллером осуществляется с помощью двух кнопок, условно названных ПЛЮС и МИНУС. Кратковременное их нажатие вызывает изменение значения температуры с шагом 0,5 °С в допустимом диапазоне 10...50 °С.

Длительное нажатие кнопки ПЛЮС переводит контроллер в режим регулировки гистерезиса, текущее значение которого затем отображается на экране устройства. В этом режиме короткое нажатие кнопок ПЛЮС и МИНУС изменяет значение гистерезиса с шагом 0,5°С в допустимом диапазоне 0,5...9,5°С, а длительное нажатие вызывает выход из режима регулировки гистерезиса с запоминанием значения в энергонезависимой памяти микроконтроллера и переходом в нормальный режим работы, т.е. регулировки заданной температуры.

С другой стороны, длительное нажатие кнопки МИНУС вводит контроллер в меню выбора режима автоматического регулирования - режим обогрева (управление отопителем и т.п.) или режим охлаждения (управление вентилятором и др.). Смена режима производится коротким нажатием кнопок ПЛЮС и МИНУС, о чем свидетельствует соответствующий значок в графическом интерфейсе пользователя (стрелка вверх для режима обогрева или стрелка вниз для режима охлаждения). Еще одно длительное нажатие кнопки МИНУС вызывает выход из меню выбора режима (с сохранением значения в энергонезависимой памяти микроконтроллера) и переход в нормальный режим работы, т.е. регулировки заданной температуры.

Графический пользовательский интерфейс показывает состояние реле управления. В правом верхнем углу рядом с символом, обозначающим режим работы, отображается соответствующий символ. Закрашенный квадрат означает, что реле включено, а пустой – выключено. Внешний вид графического пользовательского интерфейса показан на рис. 2, а на рис. 3 показана схема меню устройства. Любые изменения температуры, сделанные с помощью пользовательского интерфейса, сопровождаются простой, но эффективной анимацией изменяющихся значений.

Рисунок 2. Внешний вид графического интерфейса пользователя

Рисунок 3. Диаграмма, показывающая систему меню

Программа управления

В устройстве используется простой алгоритм управления, учитывающий заранее заданные (и хранящиеся в энергонезависимой EEPROM микроконтроллера) параметры гистерезиса, включающие в себя величину отклонения вверх и вниз (симметрично) от заданного значения (в пределах ± 9,5°С). И так, например: при настройках гистерезиса регулирования ±1°С и заданной температуре 21°С в случае работы прибора в режиме обогрева автоматика включит реле при снижении измеряемой температуры до 20°С и выключит его, когда эта температура достигает значения 22°С, а в функции охлаждения автоматическая регулировка включит реле, когда измеренная температура повысится до 22°С, и выключит его, когда температура снизится до 20°С.

Настройки битов конфигурации:

CKSEL3...0: 0010
SUT1...0: 10
CKDIV8: 1
CKOUT: 1
DWEN: 1
EESAVE: 0

Монтаж и наладка

Схема сборки контроллера uniTherm представлена ​​на рис. 4. Была разработана небольшая и очень простая двухсторонняя печатная плата с применением выводных элементов. Сборка контроллера uniTherm начинается с пайки микроконтроллера. Затем устанавливаем остальные полупроводниковые элементы, пассивные элементы и, наконец, реле, кнопки и соединительные разъемы. В самом конце припаиваем OLED-дисплей с помощью штыревого разъема, который обеспечивает как необходимую электрическую, так и механическую надежность.

Рисунок 4. Макет печатной платы контроллера

Фото 5. Вид на собранное устройство с верхней стороны без установленного OLED-дисплея

Фото 6. Вид на собранное устройство с OLED дисплеем

При выборе конкретного модуля дисплея, доступного на рынке, необходимо чтобы он был оснащен следующими управляющими сигналами: CLK (тактовый сигнал шины SPI), MOSI (ввод данных шины SPI), CS (вход выбора драйвера SSD1306) и DC (данные/команда). Определить характер отправляемых сигналов: 1 - данные, 0 - команда. Расположение выводов питания не менее важно, поскольку в коммерческих модулях выводы питания (VCC) и земли (GND) часто меняются местами.

Правильно собранное устройство не требует настройки и должно работать сразу после включения питания. Вид собранного устройства сверху без OLED-дисплея представлен на фото 5.

Автор: Роберт Волгаев


Файлы к статье "Термостат с OLED-дисплеем на ATtiny84"
Описание:

Файл прошивки микроконтроллера

Размер файла: 22.83 KB Количество загрузок: 256 Скачать

Комментарии  

0 #1 Александр 057 05.07.2022 14:42
Здравствуйте. Хочу попробовать реализовать проект на другом микроконтроллер е, не поделитесь исходником? Спасибо.
Сообщить модератору
0 #2 AntonChip 15.07.2022 22:10
Цитирую Александр 057:
Здравствуйте. Хочу попробовать реализовать проект на другом микроконтроллере, не поделитесь исходником? Спасибо.

По поводу исходника свяжитесь с автором robert.wolgajew (собак)ep.com.p l
Сообщить модератору