Проект этого устройства был создан в результате конкретной задачи. Меня попросили разработать простой контроллер для управления работой небольших вентиляторов постоянного тока в серверной, чтобы поддерживать заданную температуру воздуха. Задача достаточно тривиальная, поэтому, решив реализовать ее аппаратно, я хотел немного разнообразить творческий процесс, оснастив целевое устройство дополнительными функциями.
Основные параметры:
- регулируемый диапазон температур: 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 | Скачать |
Комментарии
По поводу исходника свяжитесь с автором robert.wolgajew (собак)ep.com.p l