Для контроля температуры, влажности и датчиков дыма решил собрать схемку с использованием платки Arduino Pro Mini.
Плата, в принципе, подойдет любая, главное чтобы на ней стоял микроконтроллер ATMEGA328P и были доступны все выводы.
Датчики температуры цифровые (1-Wire), датчик влажности аналоговый.
Запись лога в формате CSV ведется на SD карту (используется библиотека FatFs (C) ChaN).
Дисплей используется символьный - 20x4.
Итого в проекте используются:
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 или аналогичной.
Ардуиновских плат "Pro Mini" на ATMEGA328P великое множество с разной обвязкой, стабилизаторами и с разным количеством подключенных выводов.
В проекте используются почти все выводы, включая ADC6, ADC7, которые как раз могут быть и не подключены.
Свободных ножек маловато, поэтому кнопки подключены к одному выводу через делитель напряжения. Информация о нажатиях считывается с помощью АЦП.
Для бесперебойной работы используется резервное питание на 3-х пальчиковых батарейках размера AAA.
Переключающая кнопка SW1 используется для выключения устройства, микроконтроллер видя сигнал на ноге PC3, отключает резервное питание с помощью мосфета Q3.
Внешнее питание 9-ти вольтовое, чтобы можно было подключить датчики дыма напрямую.
Датчики дыма обычные, фотоэлектрические (ИК), куплены в ОБИ, внутри оказался аналог чипа MC145010 (XC5010DW). У него вывод 7 используется для соединения датчиков в сеть и для информировании о срабатывании. То есть, если один датчик сработал - верещать будут все.
Плата часов реального времени была куплена давно и аккумулятор LIR2032 уже помер.
Он, в принципе, и не нужен, вместо него хорошо встает обычная батарейка CR2032, только надо выпаять D1, R4, R5, и закоротить R6.
Долго думал какой выбрать датчик влажности и остановился на готовом модуле HM1500LF, он выдает результат в аналоговом виде линейно от 1 до 3.6В.
Можно было выбрать какой-нибудь цифровой и подешевле, но не нашел в подходящем корпусе. Про этот написано, что он водостойкий и работает в широких температурно-влажностных режимах. Посмотрим...
Также поддерживается датчик температуры и влажности - Aosong AM2305.
Программа вычисляет влажность, используя в качестве опоры напряжение питания (AVcc), которое в свою очередь вычисляется, используя встроенный в микроконтроллер источник опорного напряжения 1.13 вольт.
При старте программа пытается продолжить писать лог в файл, имя которого запомнено в EEPROM (tlog_*.csv).
Фактическая запись на карту памяти идет периодически - по заполнению буфера в ОЗУ на 3/4.
Кнопка "OK" - сброс буфера на карту, отображение дополнительной информации и вход в настройки, кнопка "LEFT" - отключение тревоги (сначала по температуре, потом по дыму).
Настройки:
1. Информация об имени и размере лога, создание нового лога.
2. Установка даты и времени.
3. Сохранение настроек в tlog.cfg (название датчиков, имена колонок в логе и другие настройки).
4. Считывание настроек из tlog.cfg.
5. Очистка датчиков температуры и поиск их по-новой.
6. Калибровка опорного источника напряжения.
7. Редактирование тревожной температуры для каждого датчика.
Для работы с картой памяти используется библиотека FatFs.
Использован пример "avr_complex" с небольшими корректировками.
Схема:
Прошивка: AVRFLASH.ROM
Комментариев нет:
Отправить комментарий