Датчик температуры dht11
Датчик температуры и влажности DHT11
С этим товаром обычно покупают
Цифровой датчик температуры и влажности DHT11. с подключением по однопроводной шине.
Основные технические характеристики:
- Интерфейс: 1-проводный;
- Внешние компоненты: подтягивающий резистор на линии данных (в зависимости от длины кабеля);
- Питание: от 3.5 до 5.5 В;
- Измерение температуры:
- Допустимый диапазон: 0°C. +50° C;
- Максимальная погрешность: ±2°C@0..+50°C;
- Разрешение шкалы: 1°C ;
DHT11 – Датчик влажности и температуры
DHT11 недорогой цифровой датчик температуры и влажности. Он использует емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха, данные выдает в цифровой форме по шине типа 1-wire. В использовании он довольно прост, но требует точного определения длительности временных сигналов, чтобы декодировать данные. Единственный недостаток это возможность получения данных не чаще 1 раза в две секунды.
Особенности.
· Температурная компенсация во всем диапазоне работы
Габаритные размеры и подключение:
Питание DHT11 составляет 3-5.5V DC. После подачи питания на датчик, необходимо выдержать паузу длительностью не менее 1 секунды перед началом считывания данных. Для фильтрации напряжения питания можно добавить один конденсатор 0,1 мкФ между Vdd и Vss.
Последовательный интерфейс (Single-Wire Двусторонний)
Весь обмен данными выполняется по одной одному проводу (шине). На шине может присутствовать только один датчик. Для получения высокого уровня используется подтягивающий резистор (5-10 кОм), т.е в пассивном состоянии на шине высокий уровень. Формат обмена данными может быть разделен на три этапа:
2) Преамбула.
3) Передача данных.
Инициализация.
Процесс чтения данных начинается с импульса инициализации который формирует микроконтроллер. Он должен установить на шине низкий уровень на время не менее 18 mS, для инициализации DHT-11.
Микроконтроллер после формирования импульса инициализации должен сразу перевести порт в режим чтения (режим приема данных). Если датчик готов к передачи данных, он ответит сформировав преамбулу. Один период меандра длительностью
Микроконтроллер получив ответ от датчика, может начать чтение данных.
Передача данных.
Данные представляют собой 5 байт данных, которые читаются по битно микроконтроллером, т.е всего 40 бит.
Первые два байта данные влажности (относительная влажность), целая и дробная часть. Третий и четвертый температура (градусы Цельсия), целая и дробная часть и пятый последний байт контрольная сумма, которая равна сумме первых 4 байт. К сожалению хотя и присутствуют байты отвечающие за десятые доли градуса и процента, реально контроллер датчика их не вычисляет (хотя это и понятно при такой точности это бесполезно), поэтому в них всегда присутствуют нули. Если реально считывать эти байты то мы увидим, например:
bait0 = 41 // влажность
bait2 = 31 // температура
bait4 = 72 // контрольная сумма
Но нет худа без добра, если в этих байтах всегда нули, то можно это значение (аналогично как для контрольной суммы) использовать для достоверности передачи данных.
Данные кодируются длительностью высокого уровня в каждом бите, бит начинается стробом низкого уровня длительностью приблизительно 50-54uS, после строба идет высокий уровень, если длительность высокого уровня в пределах 24 uS, то это передается “0”, если в пределах 70 uS – передается “1”.
Бит ‘0 ‘:
Бит ‘1 ‘:
По окончанию передачи данных датчик передает последний строб, устанавливает на шине высокий уровень и переходит в спящий режим.
Логика чтения данных может быть следующая.
Вид передачи полностью:
Датчик подключается ко входу который может формировать прерывания по изменению уровня на входе. Для определения длительности импульса можно использовать таймер микроконтроллера.
Для демо проекта используем плату ILLISSI_B4_primum с установленным микроконтроллером PIC16F1936. Для индикации данные будем выводить, через USB порт на терминал программы AN1310 Microchip .
Вариант построение программа для чтения данных с датчика для компилятора MPLAB® XC8 Compiler v1.20. Для измерение длительности мы применим таймер Timer0. А для контроля моментов изменения сигнала на входах будем использовать возможность микроконтроллера формировать прерывания по изменению состояния на входах. Всё декодирование данных будет выполняться в прерывании (благо там минимум работы), поэтому для основной программы остается только дать “толчек” для выдачи данных и обработать их когда данные будут готовы.
Настройка прерывание для работы с датчиком
Датчик температуры и влажности DHT11.
Автор: Internet. Опубликовано в Неопределено
При цене в 2$ датчик DHT11 является самым дешевым цифровым датчиком, позволяющий измерять температуру и влажность окружающей среды.
Технические характеристики: Предел измерения температур: 0-50°С (±2°С)
Предел измерения влажности: 20-80% ( ±5%)
Напряжение питания: 3-5,5V
Энергопотребление: Измерение: 0,5-2,5мА
Передача данных: 0,2-1мА
Ожидание: 0,1-0,15 мА
Опрос датчика с частотой не чаще 1 раз в секунду
Получил посылку из Китая. Датчики приехали.
Датчики я заказывал на DealExtreme, 15 долларов за 5 штук.
Даташит на них имеется, но исключительно на китайском (иероглифы).
Как показало вскрытие, датчики работают по протоколу 1Wire. Для связи с контроллером используется однопроводная шина с открытым коллектором, поэтому обязательна подтяжка резистором 5-10кОм к плюсу питания.
Их я и использовал для написания своего кода.
Сами датчики выглядят так:
Привинтил датчик к свей любимой девборде на Тини2313+индикаторы.
На фото первый вариант испытаний, видно температуру (левый индикатор) и влажность воздуха (правый).
Сам проект сильно сырой, делался только чтобы посмотреть работу датчика.
Вот конечный результат.
На экране с интервалом в три секунды меняются показания температуры и влажности.
Проект на Си в CodeVision прилагаю. Там в проекте есть маленько мусора в файлах, но это на полёт не влияет, издержки экспериментирования.
Автор ewgeny.