Термометр с тревогой и логированием в баню

Arduino Pro Mini
Для контроля температуры, влажности и датчиков дыма решил собрать схемку с использованием платки Arduino Pro Mini.
Плата, в принципе, подойдет любая, главное чтобы на ней стоял микроконтроллер ATMEGA328P и были доступны все выводы.
Датчики температуры цифровые (1-Wire), датчик влажности аналоговый.
Запись лога в формате CSV ведется на SD карту (используется библиотека FatFs (C) ChaN).
Дисплей используется символьный — 20x4.


Итого в проекте используются:
SD
1. Плата Arduino Pro Mini 5В 16МГц (китайский аналог).
2. Плата часов Tiny RTC I2C на DS1307.
3. Плата Micro SD 5V с микросхемой согласования уровней напряжения (SPI).
4. Символьный LCD 20 x 4 производства МЭЛТ с нормальной русской кодировкой (страница 1) MT-20S4A.
5. Цифровые датчики температуры DS18B20 (1-Wire).
6. Аналоговый датчик влажности HM1500LF.
7. Сирена XHD SFB-55.
8. Батарейный блок на 3 х 1.5В (ААА) для резервного питания.
9. Датчики дыма на микросхеме MC145010 или аналогичной.
RTC

Ардуиновских плат «Pro Mini» на ATMEGA328P великое множество с разной обвязкой, стабилизаторами и с разным количеством подключенных выводов.
В проекте используются почти все выводы, включая ADC6, ADC7, которые как раз могут быть и не подключены.
Свободных ножек маловато, поэтому кнопки подключены к одному выводу через делитель напряжения. Информация о нажатиях считывается с помощью АЦП.

Для бесперебойной работы используется резервное питание на 3-х пальчиковых батарейках размера AAA.
Переключающая кнопка SW1 используется для выключения устройства, микроконтроллер видя сигнал на ноге PC3, отключает резервное питание с помощью мосфета Q3.
Сирена
Внешнее питание 9-ти вольтовое, чтобы можно было подключить датчики дыма напрямую.

Датчики дыма обычные, фотоэлектрические (ИК), куплены в ОБИ, внутри оказался аналог чипа MC145010 (XC5010DW). У него вывод 7 используется для соединения датчиков в сеть и для информировании о срабатывании. То есть, если один датчик сработал — верещать будут все.

Плата часов реального времени была куплена давно и аккумулятор LIR2032 уже помер.
Он, в принципе, и не нужен, вместо него хорошо встает обычная батарейка CR2032, только надо выпаять D1, R4, R5, и закоротить R6.

Долго думал какой выбрать датчик влажности и остановился на готовом модуле HM1500LF, он выдает результат в аналоговом виде линейно от 1 до 3.6В.
Можно было выбрать какой-нибудь цифровой и подешевле, но не нашел в подходящем корпусе. Про этот написано, что он водостойкий и работает в широких температурно-влажностных режимах. Посмотрим…
Датчик влажности

Программа вычисляет влажность, используя в качестве опоры напряжение питания (AVcc), которое в свою очередь вычисляется, используя встроенный в микроконтроллер источник опорного напряжения 1.13 вольт.

При старте программа пытается продолжить писать лог в файл, имя которого запомнено в EEPROM (tlog_*.csv).
Фактическая запись на карту памяти идет периодически — по заполнению буфера в ОЗУ на 3/4.
Кнопка «OK» — сброс буфера на карту, отображение дополнительной информации и вход в настройки, кнопка «LEFT» — отключение тревоги (сначала по температуре, потом по дыму).

Настройки:
1. Информация об имени и размере лога, создание нового лога.
2. Установка даты и времени.
DS18B203. Сохранение настроек в tlog.cfg (название датчиков, имена колонок в логе и другие настройки).
4. Считывание настроек из tlog.cfg.
5. Очистка датчиков температуры и поиск их по-новой.
6. Калибровка опорного источника напряжения.
7. Редактирование тревожной температуры для каждого датчика.

Для работы с картой памяти используется библиотека FatFs.
Использован пример «avr_complex» с небольшими корректировками.

Схема

Прошивка, исходник для Atmel Studio 6.2, DSN для Протеуса.
Библиотека LCDALPHA.DLL с русским шрифтом для MT-20S4A, страница 1.
  • +4
  • 29 декабря 2014, 11:47
  • vad7
  • 2
Файлы в топике: TempAlarm.zip, LCDALPHA.dll.zip

Комментарии (4)

RSS свернуть / развернуть
Однозначный плюс! Проект непростой. Единственное, чего бы хотелось еще увидеть, так это фото готового блока управления (с экраном который) и его внутреннюю компоновку.
0
Вся конструкция только ведёт учёт параметров или чем-то управляет?
0
только учет и информирование
0
поговаривают, что DS18B20 при 100С долго не живут — может как-нибудь попозже поделитесь статистикой? Это будет интересно многим.
Спасибо за проект!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.