Views: 2428 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11 самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств он даже неплох. Сразу перейдем к схеме регулятора Печатную плату ch-4000 её на сегодня (05/16) еще можно приобрести в Вороне http://voron.ua/catalog/017464 . Никаких особенностей в …
Читать далее ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302
Метка:DHT11
Библиотека для датчика DHT11 — v2.1
Views: 298Библиотека v 2.1 исправлена работа шины при отсутствии датчика, только для датчика DHT11
Библиотека для датчика DHT11
Views: 3675
Библиотека предназначена для микроконтроллеров 8 битной серии (но может с некоторыми изменениями использоваться и на 16 разрядных контроллерах) состоит всего из двух функций.
initDHT11 (); для инициализации таймера 0 микроконтроллера и настройки прерываний.
puscDHT11 (); для запуска процесса чтения данных с датчика.
Особенность библиотеки в том что при чтении данных она не тормозит, работу основного цикла программы, все чтение данных выполняется в процессе прерываний.
Для запуска библиотеки в работу необходимо выполнить следующие действия: Для определения длительности импульса, используется таймер 0 микроконтроллера, для этого в файле HDT11.с в функции initDHT11, надо OPTION_REGbits.PS = 2; подобрать коэффициент предделителя, чтобы на вход поступала тактовая 1Мгц.
Описание по работе и подключению датчика читайте в разделе DHT11 – Датчик влажности и температуры.
Флаг DATAYES устанавливается в 1 когда данные получены. После чтения данных его надо сбросить. Для запуска чтения данных надо вызвать функцию puscDHT11 (); (флаг DATAYES должен быть предварительно сброшен). Данные влажности считываем с переменной bait0, данные температуры с переменно bait2. Флаги ошибок: ERROR_DHT11 – если флаг установлен, нет ответа от датчика (обрыв линии связи, повреждение датчика), ERROR_CS – если флаг установлен, ошибка контрольной суммы, часто связано с длинными линиями связи. Обычно устраняется уменьшением подтягивающего резистора до 1 кОм. Сбрасываються флаги автоматически при вызове функции puscDHT11 ().
Ниже приведена библиотека и пример реализации на микроконтроллере PIC16F1936, датчик подключен к порту RB3. Данные передаются на USART.
Файлы для загрузки
Библиотека и демонстрационный пример работы, MPLAB® X IDE, MPLAB® XC8 Compiler
![Значок](https://catcatcat.d-lan.dp.ua/wp-content/plugins/download-manager/assets/file-type-icons/download4.png)
Библиотека для датчика DHT11 151.08 KB 71 downloads
Библиотека для датчика DHT11. v1.0 ...Библиотека v 2.0 улучшенная обработка, только для датчика DHT11 MPLAB® X IDE, MPLAB® XC8 Compiler
![Значок](https://catcatcat.d-lan.dp.ua/wp-content/plugins/download-manager/assets/file-type-icons/download2.png)
Библиотека для датчика DHT11 - v2.0 3.68 KB 626 downloads
Библиотека для датчика DHT11 - v2.0 ...Библиотека v 2.1 исправлена работа шины при отсутствии датчика, только для датчика DHT11 MPLAB® X IDE, MPLAB® XC8 Compiler
![Значок](https://catcatcat.d-lan.dp.ua/wp-content/plugins/download-manager/assets/file-type-icons/download2.png)
Библиотека для датчика DHT11 — v2.1 3.51 KB 474 downloads
Библиотека v 2.1 исправлена работа шины при отсутствии...Библиотека v 3.0 датчики DHT11/DHT22/AM2302 MPLAB® X IDE, MPLAB® XC8 Compiler
![Значок](https://catcatcat.d-lan.dp.ua/wp-content/plugins/download-manager/assets/file-type-icons/download2.png)
Библиотека - измерение температуры и влажности v 3.0 датчики DHT11/DHT22/AM2302 4.36 KB 720 downloads
Библиотека предназначена для использования...Это может быть интересно
LM317 и светодиоды
Views: 7830 LM317 и светодиоды статья с переработанная с сайта http://invent-systems.narod.ru/LM317.htm Долговечность светодиодов определяется качеством изготовления кристалла, а для белых светодиодов еще и качеством люминофора. В процессе эксплуатации скорость деградации кристалла …Стабилизатор тока на SN3350, часть 2
Views: 1156 Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего …AD9833 – Programmable Waveform Generator – part two
Views: 1750 Прошло время и появилась тема, что-бы закончить проект AD9833 – Programmable Waveform Generator. Приехали печатные платы. В этот раз я печатные платы заказывал в https://jlcpcb.com/ делал это в …MPLAB® Harmony – или как это просто! Часть 2.
Views: 2678 Часть вторая – Первая программа на PIC32. Музыкальная тема к статье, слушаем: Для начала изучения PIC32 надо иметь или демоплату или самому её изготовить имея микроконтроллер. Начнем из …Часы + Календарь + Термометр + …
Views: 2694 Часы + Календарь + Термометр + Индикатор влажности + Секундомер + Дистанционное управление на ИК лучах (пульты на RC-5 протоколе) + Автоматическая регулировка яркости + Возможность вывода данных через USB, …Обновление ESP8266 c ESPFlashDownloadTool_v3.6.3
Views: 3461 Технология обновления следующая: Загружаем программу со страницы espressif.com. Разархивируем. Где находятся файлы, для прошивки? Заходим в каталоги Подключаем по схеме в статье WiFi ESP8266 (замыкаем BT2, перемычка). Запускаем программу, …Проект с использованием MCC часть 14
Views: 823 С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем …Проект с использованием MCC часть 03
Views: 1577 Первым делом перенастроим регистры конфигурации, следующим образом: Отключим выход генератора (CLKOUT function is disabled. I/O function on the CLKOUT pin) Включим сторожевой таймер (WDT enabled) После этой настройки …The art of DJ
Views: 96 The art of DJ. The art of DJ has gained wide popularity. Today, a DJ is not just someone whose task is to mix tracks; a DJ is …LED модуль P10 (1R) V706A
Views: 7678 Это еще одно чудо от китайского брата. Это монохромные матрицы, называются они P10 (1R) V706A, ну типа R-красные, но не верьте паяют светики и зеленые и синие, в общем …
DHT11 – Датчик влажности и температуры
Views: 2042
Измерение температуры и влажности при помощи датчика DHT11.
Статья в PDF [wpdm_file id=220]
DHT11 недорогой цифровой датчик температуры и влажности. Он использует емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха, данные выдает в цифровой форме по шине типа 1-wire. В использовании он довольно прост, но требует точного определения длительности временных сигналов, чтобы декодировать данные. Единственный недостаток это возможность получения данных не чаще 1 раза в две секунды.
Особенности.
· Температурная компенсация во всем диапазоне работы
· Измерение относительной влажности и температуры
· Калиброванный цифровой сигнал
· Отличная долгосрочная стабильность показаний
· Не требуются дополнительные компоненты
· Возможность передачи данных на большое растояние
· Низкое энергопотребление
· 4-контактный корпус и полностью взаимозаменяемы
Детали.
Для преобразования данных внутри датчика используется 8-битный микроконтроллер, В процессе производства датчики калибруются и калибровочная константа записывается вместе с программой в память микроконтроллера. Однопроводный последовательный интерфейс дает возможность быстрой интеграции в устройство. Его небольшие размеры, низкое энергопотребление и до-20-метром передачи сигнала, что делает его привлекательным выбором для различных приложений.
Диапазон измеряемых параметров.
Обзор:
Параметр | Диапазон измерения | Точность | Разрешение |
Влажность | 20-90% | ±5% | 1 |
Температура | 0-50°С | ±2°С | 1 |
Подробные спецификации:
Параметр | Условия | Минимальное | Типичное | Максимальное |
Влажность | ||||
Разрешение | 1% | 1% | 1% | |
8 бит | ||||
Стабильность | ±1%RH | |||
Точность | 25°С | ±4%RH | ||
0-50°С | ±5%RH | |||
Взаимозаменяемость | полностью взаимозаменяемы | |||
Диапазон измерения |
0°С | 30%RH | 90%RH | |
25°С | 20%RH | 90%RH | ||
50°С | 20%RH | 80%RH | ||
Время отклика (в секундах) |
1/e(63%)25℃, 1m/s Air |
6 | 10 | 15 |
Гистерезис | ±1%RH | |||
Долговременная стабильность |
типичная | ±1%RH/year | ||
Температура | 1°С | 1°С | 1°С | |
Разрешение | 8 бит | 8 бит | 8 бит | |
Стабильность | ±1°С | |||
Точность | ±1°С | ±2°С | ||
Диапазон измерения |
0°С | 50°С | ||
Время отклика (в секундах) |
6 | 30 |
Электрические параметры:
Параметр | Режим | Мин | Типовое | Макс | Ед.изм. |
Напряжение питания | DC | 3 | 5 | 5.5 | V |
Ток потребления | Измерение | 0.5 | 2.5 | mA | |
Ожидание | 100 | 150 | uA | ||
Среднее | 0.2 | 1 | mA |
Габаритные размеры и подключение:
Питание DHT11 составляет 3-5.5V DC. После подачи питания на датчик, необходимо выдержать паузу длительностью не менее 1 секунды перед началом считывания данных. Для фильтрации напряжения питания можно добавить один конденсатор 0,1 мкФ между Vdd и Vss.
Последовательный интерфейс (Single-Wire Двусторонний)
Весь обмен данными выполняется по одной одному проводу (шине). На шине может присутствовать только один датчик. Для получения высокого уровня используется подтягивающий резистор (5-10 кОм), т.е в пассивном состоянии на шине высокий уровень. Формат обмена данными может быть разделен на три этапа:
1) Инициализации.
2) Преамбула.
3) Передача данных.
Инициализация.
Процесс чтения данных начинается с импульса инициализации который формирует микроконтроллер. Он должен установить на шине низкий уровень на время не менее 18 mS, для инициализации DHT-11.
Преамбула.
Микроконтроллер после формирования импульса инициализации должен сразу перевести порт в режим чтения (режим приема данных). Если датчик готов к передачи данных, он ответит сформировав преамбулу. Один период меандра длительностью ~160 us.
Микроконтроллер получив ответ от датчика, может начать чтение данных.
Передача данных.
Данные представляют собой 5 байт данных, которые читаются по битно микроконтроллером, т.е всего 40 бит.
Первые два байта данные влажности (относительная влажность), целая и дробная часть. Третий и четвертый температура (градусы Цельсия), целая и дробная часть и пятый последний байт контрольная сумма, которая равна сумме первых 4 байт. К сожалению хотя и присутствуют байты отвечающие за десятые доли градуса и процента, реально контроллер датчика их не вычисляет (хотя это и понятно при такой точности это бесполезно), поэтому в них всегда присутствуют нули. Если реально считывать эти байты то мы увидим, например:
bait0 = 41 // влажность
bait1 = 0
bait2 = 31 // температура
bait3 = 0
bait4 = 72 // контрольная сумма
Но нет худа без добра, если в этих байтах всегда нули, то можно это значение (аналогично как для контрольной суммы) использовать для достоверности передачи данных.
Данные кодируются длительностью высокого уровня в каждом бите, бит начинается стробом низкого уровня длительностью приблизительно 50-54uS, после строба идет высокий уровень, если длительность высокого уровня в пределах 24 uS, то это передается “0”, если в пределах 70 uS – передается “1”.
Бит ‘0 ‘:
По окончанию передачи данных датчик передает последний строб, устанавливает на шине высокий уровень и переходит в спящий режим.
Логика чтения данных может быть следующая.
Вид передачи полностью:
Датчик подключается ко входу который может формировать прерывания по изменению уровня на входе. Для определения длительности импульса можно использовать таймер микроконтроллера.
Для демо проекта используем плату ILLISSI_B4_primum с установленным микроконтроллером PIC16F1936. Для индикации данные будем выводить, через USB порт на терминал программы AN1310 Microchip.
Вариант построение программа для чтения данных с датчика для компилятора MPLAB® XC8 Compiler v1.20. Для измерение длительности мы применим таймер Timer0. А для контроля моментов изменения сигнала на входах будем использовать возможность микроконтроллера формировать прерывания по изменению состояния на входах. Всё декодирование данных будет выполняться в прерывании (благо там минимум работы), поэтому для основной программы остается только дать “толчек” для выдачи данных и обработать их когда данные будут готовы.
Настройка прерывание для работы с датчиком
IOCBP=0b00000000; // отключить все прерывания и сбросить все флаги IOCBN=0b00000000; IOCBF=0b00000000; INTCON=0b11001000; /* || | +---- сбросить флаг прерывания от изменеию состояния на входе * || +------- разрешить прерывания по изменению состояния на входе * |+---------- разрешить прерывания от переферии * +----------- разрешить глобальные прерывания */ OPTION_REG=0b11000010;// настройка таймера Timer0 /* |+++---- PS<2:0>:010-1 : 8 * +------- PSA:0 = Prescaler is assigned to the Timer0 module */
Функция запуска измерения (её можно в ставить в главный цикл для постоянного получения данных)
if(DHT11==0)// запуск измерения { DHT11=1; // включить цикл измерения TRISB=0; // настроить порт на выход LATB0=0; // установить низкий уровень __delay_ms(18); // задержка в 18 миллисекунд (больше можно :)) IOCBP0=1; // настроить прерывание на входе RB0 на фронт IOCBF0=0; // сбросить флаг прерывания TRISB=1; // настроить порт на вход PREAM=1; // поиск преамбулы }
Вариант обработки прерываний
//=====================================прерывания================================== void interrupt my_isr(void) // { if(IOCIF) { IOCIF=0; //сбросить флаг IOCBF0=0; //сбросить флаг if(DHT11) { if(IOCBP0)// если прерывания по фронту { IOCBP0=0; // отключить прерывание по фронту IOCBN0=1; // включить прерывание по срезу TMR0=0; // сбросить таймер TMR0IF=0; // сбросить флаг переполнения TMR0IE=1; // разрешить прерывания TMR0 } else { dlinimp=TMR0; // сохранить значение таймера в регистр TMR0=0; // сбросить таймер TMR0IF=0; // сбросить флаг переполнения IOCBP0=1; //включить прерывание по фронту IOCBN0=0; //отключить прерывание по срезу LATB1=!LATB1; // переключить светодиод if(!TMR0IF) { if(PREAM)// поиск преамбулы { if(dlinimp>80) { PREAM=0;// преамбула принята countbit=0; } } else { if(countbit<8) { bait0<<=1; if(dlinimp>30) bait0 |= 0b00000001;// определение бита и запись его в байт приема } else if(countbit<16) { bait1<<=1; if(dlinimp>30) bait1 |= 0b00000001;// определение бита и запись его в байт приема } else if(countbit<24) { bait2<<=1; if(dlinimp>30) bait2 |= 0b00000001;// определение бита и запись его в байт приема } else if(countbit<32) { bait3<<=1; if(dlinimp>30) bait3 |= 0b00000001;// определение бита и запись его в байт приема } else if(countbit<40) { bait4<<=1; if(dlinimp>30) bait4 |= 0b00000001;// определение бита и запись его в байт приема } countbit++;// увеличить счетчик бит } } else { ERROR_DHT11=1; // неисправность датчика } } } } if(TMR0IF) { TMR0IF=0; DHT11=0; TMR0IE=0; //запретить прерывания TMR0 } }//===================================end_interrupt=================================
Вывод: простой недорогой датчик влажности и температуры, для проектов бытового назначения.
[box title=”Файлы для загрузки” color=”#521BDE”] Демонстрационный проект, MPLAB® X IDE v1.85, MPLAB® XC8 Compiler v1.20[wpdm_file id=219][/box]
Это может быть интересно
PIC18 – System Arbitration
Views: 564 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …Емкостной сенсор
Views: 2986 Изучаем изготовление емкостных сенсоров на PIC-микроконтроллере. Конструкция емкостных сенсоров имеет вид: Емкостные сенсоры строятся по схеме высокочастотного генератора, сам принцип основан на измерение частоты этого генератора. Частота зависит …TM1650 драйвер LED семисегментного индикатора
Views: 17745 Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd. Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только …NeoPixel LED and PIC24
Views: 629 Популярность однопроводной шины для управления светодиода типа WS2812 не ослабевает, а новые типы светодиодов в корпусах 3,5*3,5мм, 2,0*2,0мм становяться все больше привлекательными. Построение дисплеев для анимации требуют все …Ultrasonic Level Meters – ULM –53L
Views: 717 Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики …Проект с использованием MCC часть 06
Views: 1266 Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. …Toyota Auto Fader – Модуль включения усилителя
Views: 1929 Toyota Auto Fader – Модуль включения усилителя. Часто автолюбители прибегают к замене штатного головного устройства на универсальное мультимедийное, в котором значительно расширены функциональные возможности. Если возникает желание оставить …Дисплей KD035C-3A подключение и управление
Views: 698 Дисплей KD035C-3A производиться компанией SHENZHEN STARTEK ELECTRONIC TECHNOLOGY CO.,LTD Характеристики Параметр Спецификация Единицы измерения Размер дисплея 70.08(H)*52.56(V) (3.5inch) mm Тип дисплея TFT active matrix Цветовая гамма 65K/262K colors Разрешение …LATINO – открытый проект ch-светомузыки
Views: 1653 Проект построенный на некоторых принципах ch-светомузыка. Проект ознакомительный предназначен, для самостоятельного построения простого и эффективного светосинтезатора. Вывод осуществляется на ВОУ собранной на драйверах HL1606. Для этого была …WiFi ESP8266 – AT команды связанные с функцией Wi-Fi
Views: 5258 AT команды связанные с функцией Wi-Fi Функции Wi-Fi подключения, запускаться из командной строки Команда Описание 1 AT+CWMODE Проверка, настройка режима работы Wi-Fi (sta/AP/sta+AP), (не рекомендуется для новых проектов). 2 …