РадиоКот :: Термометр-гигрометр на ATmegta8
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: ТермометрГигрометрДобавить тег

Термометр-гигрометр на ATmegta8

Автор: balmer, balmer@inbox.ru
Опубликовано 19.09.2013
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2013!"

Добрый всем радиокотам. Смотрю на работы конкурсные и радуюсь. Узнал из них много инересного и занимательного. Даже из комментариев "Автор неправ, надо использовать микросхему XXXX" узнал любопытные деталюшки. Думаю дай-ка и я пошлю одну свою разработку. Правда она делалась в начале весны и довольно простая по схемотехнике, ну да ничего.

Разработка эта ... часы на ATmega8 ..., шучу-шучу термометр-гигрометр с батарейным питанием на Atmega8. Подвигло на создание сей конструкции меня дача. Бываю там не каждый день, а температуру и влажность внутри помещения и снаружи интересно знать. Причем знать именно всю историю - как дача остывала, как грелась, какая температура была при этом на улице.

Схема

Детали были такие процессор ATMega8, датчик AM 2302 (DHT-22), spi flash M25P16 и дисплейчик от Nokia разрешением 96x48. Соединяем все это вместе, получаем схему с минимумом обвеса.

Выглядит сия поделка так. Есть еще уличный вариант, но он совсем непрезентабельный, чтобы висел и не привлекал внимания.

А вот и схема:

Транзистор нужен, чтобы датчик не кушал лишнее электричество. Кнопка - чтобы включать дисплей. Короткое нажатие - показать данные, длинное нажатие - включить подсветку.

Так как мой код и USB драйвера не влезали в ATMega8, то общение с компьютером происходит через програматор USBAsp. Там есть очень удобная команда прочитать/записать по SPI 4 байта. Ей и пользуемся для общения компьютер <-> девайс. Намучался с таким схемотехническим решением изрядно. Всетаки когда ATmega8 работает как мастер для LCD дисплея и SPI flash и в этот момент к нему пытается подключиться программатор по SPI - это гемморой. А если сюда еще подмешать power save режимы, то смесь получается адская. Но вроде тфу-тфу все баги выловил связанные с этим.

 

Интерфейс

Вся логика работы с PC стороны написанна на python, с испоьзованием сторонних библиотек usb, PyQt4 и matplotlib. Так что теоретически должна работать под любой операционкой, где это есть. Основной скрипт с графической оболочкой - это main.py. Но некоторые редкоиспользуемые команды есть только в usb_commands.py. После сборки устройства и заливки программы, вынимаем перемычку JP1. После этого USBasp программатор пригоден для того, чтобы общаться с нашим устройством по SPI. Записываем в eeprom имя устройства. Делается это в командной строкой "usb_commands.py set_name device_name". Имя нужно для того, чтобы потом различать устройства и сливать данные в соответствующий файл. Далее пользуемся уже исключительно командным интерфейсом запуская файл main.py.

Так же надо установить время/дату на устройстве, иначе оно не будет писать во flash данные. Для этого жмем кнопку "Установить время". Время потом желательно обновлять иногда, а то например у меня часы убегают за месяц на 5 минут. Данные во flash пишутся раз в 6 часов, поэтому оставляем прибор на некоторое время и подключаемся к нему опять и жмем кнопку "Прочитать данные". После этого сможем воспользоваться левой частью меню, где есть просмотр данных. В папке graph/data есть данные за несколько месяцев с моих датчиков, так что можно запустить main.py и посмотреть как выглядят графики.

Вот типичный весенний день. Приехали на дачу, растопили печку, жена начала кашеварить (и соответственно повышать влажность). От топки печки повышается температура, а влажность снижается. От готовки еды влажностть и температура повышается. Там есть маленький пик начиная с 20-ти часов, это кипятили чайник. Так что на этом графике можно даже видеть когда чайник кипел и форточку открывали.

А вот уже погода на улице. Чудесная весенняя погода днем тепло и сухо, ночью бывают заморозки.

А вот летняя погода. Калининградский холод и влажность. Вобщем если не хотите заплесневеть - не селитесь на побережъе балтийского моря.

Недостатки замеченные во время эксплуатации.

DS1307 - довольно прожорливая микросхема (в том виде как ее включил). Кушает постоянно 150 mka. Если прибавить сюда время от времени просыпающийся микроконтроллер, то средний ток потребления получается порядка 200 мка. Это немало для девайса на батарейках. Поэтому дешевую батарейку на 4.5 V сие чудо техники разряжает за два месяца. Купил потом батарейки подороже, они живут уже три с половиной месяца и пока не разрядились. Так-же скачут показания напряжения питания на +-0.1V. Это из-за того что питаю LCD дисплей через ножку микроконтроллера. Step-Up ковертор, встроенный в дисплей дает довольно сильные помехи на ADC. Еще неудобно, что надо нажимать на кнопку, чтобы посмотреть показания. Красивее выглядит, когда данные отображаются постоянно.

PS

Хоть это устройство и делает все что нужно, но возобладало желание сделать еще лучше. Поэтому делаю еще один вариант, но на STM32L. Там будет все - и постоянная индикация, и потребление в 20 мка и USB интерфейс.

Так что STM32 - rulezzzz и To Be continued....

 


Файлы:
Схема и плата для Eagle
Исходники для ATmega8 и скрипты для PC


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

13 0 0

Эти статьи вам тоже могут пригодиться: