Введение:
Обогреватель комнаты — электронное устройство, предназначенное для отображения текстовой информации о состоянии комнаты на дисплее, слежении за температурной средой комнаты. В самом простом варианте обогрева, температура в комнате поддерживается в пределах определенного значения T.
1.Обзор
1.1 Масляные обогреватели
Рис.1 Масляный обогреватель Polaris PRE J 0920.
Внутри обогревателей этого типа находится минеральное масло, которое нагревается от электрической спирали и отдаёт тепло корпусу. Такой аппарат состоит из равномерных секций и внешне напоминает классическую квартирную батарею.
Из двух равных по мощности масляных обогревателей сильнее греется тот, у которого секций меньше. Поэтому практичнее брать модель с большим количеством секций, чтобы снизить вероятность случайных ожогов.
Плюсы. Масляные обогреватели работают без шума, долго сохраняют тепло после выключения и считаются экологически чистыми.
Минусы. Из-за сильного нагрева корпуса такие устройства могут быть опасными для домашних животных и маленьких детей. Кроме того, масляные аппараты медленно прогревают помещение.
1.2 Инфракрасные обогреватели
Рис.2 Инфракрасный обогреватель Ballu BIH-L-3
Аппараты этого типа используют безвредное инфракрасное излучение. Поэтому они, подобно солнцу, греют не воздух, а попадающие под лучи объекты: мебель, стены, пол, людей. Некоторые инфракрасные обогреватели не нуждаются в электричестве и работают на газе.
Плюсы. Такие устройства не издают шума и подходят для обогрева не только помещений, но и беседок, дачных дворов и других открытых площадок. Кроме того, инфракрасные обогреватели являются самыми экономичными. Особенно газовые модели, работающие не от баллона, а от магистрали природного газа.
Минусы. Эти устройства не годятся для обогрева больших помещений с множеством комнат. Зоны, куда не попадают инфракрасные лучи, остаются холодными.
2. Разработка структурной схемы
Основным структурным звеном является плата Arduino UNO. По шине I2C микроконтроллер считывает показания с часов реального времени. Далее считывает данные полученные с датчика DHT11.
Обработав информацию с часов реального времени и датчика температуры, Он выводит данные по шине I2C на дисплей LCD1602. В зависимости от значений показаний он включает или выключает реле.
Рис.3 Структурная схема устройства.
3.Разработка принципиальной схемы.
Для разработки принципиальной схемы я воспользовался программой Proteus 8, что бы убедиться в том, что устройство работает правильно.
Мне понадобилось:
1) Дисплей LCD1602;
2) Модуль I2C PCF8574;
3) Датчик температуры DHT11
4) Реле на 5V
5) Плата Arduino UNO;
6) Соединительные провода;
7) USB для прошивки платы .
Рис.4 Принципиальная схема устройства
3.1 Плата Arduino UNO
Вместо микроконтроллера я выбрал плату Arduino UNO. У платы есть все необходимые компоненты для обеспечения работы микроконтроллера. Достаточно подключить USB кабель к компьютеру и подать питание.
Arduino — это электронный конструктор и удобная платформа быстрой разработки электронных устройств, для новичков и профессионалов. Платформа пользуется огромной популярностью во всем мире благодаря удобству и простоте языка программирования, а также открытой архитектуре и программному коду. Устройство программируется через USB без использования программаторов.
Рассылаемые в настоящее время версии могут быть заказаны уже распаянными. Информация об устройстве платы (рисунок печатной платы) находится в открытом доступе и может быть использована теми, кто предпочитает собирать платы самостоятельно. Микроконтроллеры ATmega328 дёшевы и стоят около 200 рублей.
У Arduino Uno:
1) 14 цифровых портов входа-выхода ( 6 из них поддерживают режим ШИМ модуляции);
2) 6 аналоговых входов;
3) частота тактирования 16 МГц;
4) USB порт;
5) разъем питания;
6) разъем внутрисхемного программирования;
7) кнопка сброса.
Технические характеристики.
Тип микроконтроллера
ATmega328P
Напряжение питания микроконтроллера
5 В
Рекомендуемое напряжение питания платы
7 – 12 В
Предельно допустимое напряжение питания платы
6 – 20 В
Цифровые входы-выходы
14 (из них 6 поддерживают ШИМ)
Выходы ШИМ модуляции
6
Аналоговые входы
6
Допустимый ток цифровых выходов
20 мА
Допустимый ток выхода 3,3 В
50 мА
Объем флэш памяти (FLASH)
32 кБ (из которых 0,5 кБ используется загрузчиком)
Объем оперативной памяти (SRAM)
2 кБ
Объем энергонезависимой памяти (EEPROM)
1 кБ
Частота тактирования
16 мГц
Длина платы
68,6 мм
Ширина платы
53,4 мм
Вес
25 г
3.2 LCD дисплей.
Жидкокристаллический дисплей (Liquid Crystal Display) сокращенно LCD построен на технологии жидких кристаллов. При проектировании электронных устройства, нам нужно недорогое устройство для отображения информации и второй не менее важный фактор, наличии готовых библиотек для Arduino.
Из всех доступных LCD дисплеев на рынке, наиболее часто используемой является LCD 1602, который может отображать ASCII символа в 2 строки (16 знаков в 1 строке) каждый символ в виде матрицы 5х7 пикселей. Существует огромное количество разновидностей данного ЖК модуля, он может быть 1,2, 4 –ех строчный с различным числом символов на строке.
LCD 1602 представляет собой электронный модуль основанный на драйвере HD44780 от Hitachi. LCD1602 имеет 16 контактов и может работать в 4-битном режиме (с использованием только 4 линии данных) или 8-битном режиме (с использованием всех 8 строк данных), так же можно использовать интерфейс I2C. Что не маловажно, так как нам нужно экономить ножки.
Я выбрал дисплей у которого 2 строки. Подключил к плате Arduino UNO через I2C интерфейс c помощью I2C модуля и SDA,SCL порты Arduino UNO.
3.3 I2C модуль.
Поскольку количество контактов на контроллерах Arduino ограничено и часто при использовании различных датчиков и модулей они заканчиваются, появляется необходимость в их экономии, для этих случай разработан этот модуль, с его помощью можно реализовать передачу по двум контактам (SDA и SCL). Построен он на микросхеме PCF8574T. На плате предусмотрены три перемычки (линии A0, A1, A2 подтянуты к питанию через резисторы R4, R5, R6), необходимы они для смены адресации устройства, всего их 8 вариантов.
3.4 Реле.
Подключить на прямую к Arduino мощную нагрузку, например лампу освещения или электронасос не получится. Микроконтроллер не обеспечивает необходимую мощность, для работы такой нагрузки. Ток, который может протекать через выходы Arduino, не превышает 10-15 мА. На помощь приходит реле, с помощью которого можно коммутировать большой ток. К тому же, если нагрузка питается от переменного тока, например 220v, то без реле ни как вообще не обойтись. Для подключения мощных нагрузок к Arduino используют реле модули.
4.Разработка программной части
4.1 Разработка алгоритма работы устройства
Рис.4 Алгоритм работы устройства
4.2 Разработка программы устройства
Код программы:
#include <dht11.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#define DHTPIN 2 // указываем номер разъема датчика
#define RELAY 13 // указываем номер разъема реле
int maxTmp = 25; // задаем мак температуру
int minTmp = 23; // мин температуру
dht11 DHT; // управление датчика
LiquidCrystal_I2C display(0x27, 16, 2); // управление экрана
void setup()
{
display.begin(); // для запуска экрана
pinMode(RELAY, OUTPUT); // режим работы реле
digitalWrite(RELAY, LOW); // выкл реле
display.print("Max:"); //рисуем интерфейс на дисплее
display.print(maxTmp);
display.print(" Min:");
display.print(minTmp);
display.setCursor(0, 1);
display.print("Current:");
}
void loop()
{
int chk = DHT.read(DHTPIN); //считываем значения с датчика
display.setCursor(8, 1); // текущая температура на экране
if (DHT.temperature >= 0 && DHT.temperature <= 50) // проверка датчика на исправность
{
display.print(DHT.temperature); // отображает текущую
display.print(" ");
}
else
display.print("Error"); // выводим ошибку
if (DHT.temperature <= minTmp && !digitalRead(RELAY)) // алоритм вкл выкл реле
{
digitalWrite(RELAY, HIGH);
display.setCursor(12, 1);
display.print("On ");
}
else if (DHT.temperature >= maxTmp && digitalRead(RELAY))
{
digitalWrite(RELAY, LOW);
display.setCursor(12, 1);
display.print("Off");
}
delay(3000); // пауза }
4.2.1 Выбор среды программирования.
Основа языка программирования модуля Arduino — это язык Си (скорее Си++).
Любая программа — это последовательность двоичных чисел. А программирование — это умение правильно записывать правильные последовательности двоичных чисел. Достаточно давно для записи программ стали использовать специальные средства, которые называются языками программирования.
Ближе всего к записи программы с помощью двоичных чисел, язык ассемблер. Для него характерно соответствие команд языка двоичным командам, понятным процессору. Но кодирование программ на ассемблере требует больших усилий и ближе к искусству, чем к формальным операциям. Более универсальны и легче в применении языки высокого уровня, как Бэйсик или Си.
В языке программирования СИ++ легко найти нужную библиотеку.
4.3 Моделирование рабочего устройства
Устройство я смоделировал в программе Proteus, что бы проверить работу.
Proteus — пакет программ для автоматизированного проектирования электронных схем.
Пакет представляет собой систему схемотехнического моделирования, базирующуюся на основе моделей электронных компонентов, принятых в PSpice. Отличительной чертой пакета PROTEUS является возможность моделирования работы программируемых устройств: микроконтроллеров, микропроцессоров, DSP и проч. Библиотека компонентов содержит справочные данные. Дополнительно в пакет PROTEUS входит система проектирования печатных плат. Пакет Proteus состоит из двух частей, двух подпрограмм: ISIS — программа синтеза и моделирования непосредственно электронных схем и ARES — программа разработки печатных плат. Вместе с программой устанавливается набор демонстрационных проектов для ознакомления.
Рис. 5 Работа устройства в Proteus
Заключение:
В данной курсовой работе мне было предложено разработать устройство управления обогрева комнаты. Устройство должно быть собрано на Arduino UNO.
Управление обогрева комнаты должен включать реле, к которому подключен обогреватель. Включение будет происходить в заданной температуре.
Устройство собрано в среде Proteus. Программа для устройства написана на языке СИ++. Все работает согласно техническому заданию.