Сегодня я решил познакомиться с датчиком влажности DHT11, который также умеет измерять температуру. У него есть старший брат датчик DHT22 с более высокими показателями точности, большим размахом измерительной шкалы, и, конечно же, подороже своего младшего брата.
Т.к. проблематикой влажности я ранее не занимался, и мне не требовалась высокая точность, то по экономическим соображениям я и приобрёл датчик DHT11.
На фото роль датчика взял на себя микроконтроллер ATtiny13. Я написал тестовую программку, которая шлёт одни и те же данные. На тот момент, датчик путешествовал из Китая ко мне и, дабы успокоить свой азарт, я пошёл на такую хитрость.
После танцев с бубном и впитывания даташита, знакомство вполне состоялось. И в итоге я собрал портативное устройство, работающее от 3 пальчиковых батарей.
Содержание статьи / Table Of Contents
↑ Немного про датчик DHT11
Т.к. датчик я тогда ещё в руках не держал, то из даташита выяснил, что у него 4 ноги, а используются всего три из них. Почему Китайцы так сделали, одному Джеки Чану известно. Ну, да ладно.
Основные характеристики датчика DHT11
— диапазон измеряемой влажности: 20-95% RH (значение влажности в 8 бит)
— диапазон измеряемой температуры: 0-50°С (значение температуры также 8 бит)
— точность температурного сенсора: ±2°С
— точность сенсора влажности: ±5% RH
— шаг измеряемых значений: 1
— однопроводной протокол передачи данных
— частота измерений: 1 секунда
— напряжение питания: 3.5-5.5 V
— потребляемый ток в режиме измерения: 2 мА
— потребляемый ток в режиме ожидания: 150 мкА
Для опытов точность и цена датчика в самый раз, и я начал проектировать схему.
↑ Какие стояли задачи:
— устройство должно быть портативным;— иметь малые габариты;
— уметь работать долгое время, т.е. потреблять малый ток;
Значит, от семисегментных индикаторов лучше отказаться и применить индикатор на жидких кристаллах — ЖКИ.Т. к. датчик по сути своей цифровой, то потребуется микроконтроллер, с достаточным количеством выводов и обладающий способностью впадать в глубокий сон.
↑ Принципиальная схема термометра-гигрометра
Тут задействован микроконтроллер (далее МК) ATMega8 в TQFP корпусе, работающий на частоте в 2 МГц от внутренней RC-генератора.
МК принимает данные с датчика DHT11, замеряет и показывает уровень заряда батарей в виде значка батарейки, и отправляет все полученные данные на символьный ЖКИ, у которого две строки по 8 символов.
Ещё МК слушает три кнопки, которые позволяют задать режим отображения данных на индикаторе, температура + влажность, только температура, только влажность. Так же реализован режим калибровки.
↑ Описание логики работы программы
Можно упомянуть про энергосбережение устройства. Как видно по схеме, МК управляет питанием датчика влажности и питанием ЖКИ.Т. к. устройство большую часть времени находится в состоянии покоя (не будет же человек смотреть на его показатели часами), то его смело можно перевести в режим глубоко сна, в котором он потребляет менее 4 мкА! Экономия энергии неплохая.А когда необходимо увидеть показания, достаточно нажать на кнопку «PWR» и МК проснётся, подав питание на ЖКИ и датчик влажности.
Считывание данных из датчика происходит раз в секунду, во время этого процесса кратковременно вспыхивает светодиод «DHT».
Итак, появляется питание, МК считывает калибровочные значения из своей EEPROM и начинает ждать, пока датчик влажности отправит ему свои данные. Через секунду данные получены и МК рисует температуру и влажность на ЖКИ.
У нас есть три кнопки:
— кнопка «PWR»
— кнопка «С»
— кнопка «RH»
Кнопка «PWR» исполняет роль включателя/выключателя устройства. Если зажать кнопку «PWR», то появляется значок часов, который означает, что время отображения данных будет составлять 10 секунд и затем МК уснёт. Если значка нет, то сон отменяется, показ значений будет происходить постоянно, пока батареи не сядут.
Если нажать на кнопку «C», то режим отображения переключится на показ только температуры. Второе нажатие возвращает режим отображения на общий вид.
Аналогично и с кнопкой «RH»: показ только влажности или общий режим.
Если зажать обе кнопки «RH» и «C» вместе на пару секунд и отпустить, то запустится режим калибровки. Калибровка возможна в небольших пределах +/- 9 единиц, тут кнопки «C» и «RH» играют роль кнопок «-» и «+». Переключение по меню происходит кнопкой «PWR».
Собственно это всё, что заложено в МК в плане «2D-графики». Признаюсь, много времени ушло на прорисовку собственного символа батарейки, и особенно на жирный шрифт, т.к. памяти ОЗУ у ЖКИ всего на 8 символов, приходится постоянно её переписывать нужными рисунками.
↑ Сборка измерителя влажности и температуры
Во время сборки устройства, я так был поглощён энтузиазмом, что не заметил, как мой рабочий стол превратился в СВАЛКУ! Не подумайте, что я постоянно сижу в таком бардаке, но когда начинаю творить, то да, одного стола мне мало!Корпус взял от Ethernet-сплиттера, печатную плату вытравил с двух сторон, на лицевой части находится основная часть электроники, а на задней датчик и коробочка для вставки батареек.
Собственно вот что вышло в итоге.
↑ Наладка и фьюзы
При правильном программировании МК и фьюзов устройство начинает работать, как только появляется питание.Наладка устройства сводится к установлению уровня контрастности резистором RV1.
Фьюзы выставляются на тактирование от внутренней RC цепочки на 2 МГц, остальные остаются заводскими.
↑ Файлы
Прошивка для заливки (hex):🎁hex.zip 5.02 Kb ⇣ 64
Программа в CodeVision AVR 3.12 (исходники):
🎁source_code.zip 156.39 Kb ⇣ 88
Проект для опытов в Proteus v8.4 SP0:
🎁proteus.zip 25.59 Kb ⇣ 80
Печатная плата в SprintLayout v6.0:
🎁pcb.zip 31.9 Kb ⇣ 77
↑ Заключение
Думаю, что корпусу не хватает наклейки, но я так и не добрался до неё.Термометр работает верно. Что касается точности измерения влажности, проверить её мне нечем. Медленно подув на датчик, вижу, как температура и влажность повышаются.
Спасибо за внимание!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.