ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302

Views: 2434 На плате ch-4000 очень легко собрать устройство регулятора температуры и влажности. Датчик DHT11  самый недорогой вариант для создания такого устройства, правда точность его не велика, но для бытовых устройств он даже неплох. Сразу перейдем к схеме регулятора   Печатную плату ch-4000   её на сегодня (05/16) еще можно приобрести в Вороне  http://voron.ua/catalog/017464 . Никаких особенностей в …
Читать далее ch-4060 – регулятор температуры и влажности на датчике DHT11/DHT22/AM2302

Библиотека для датчика DHT11

Views: 3685


Catcatcat_dht-11_150

Библиотека предназначена для микроконтроллеров 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 IDEMPLAB® XC8 Compiler 

Значок

Библиотека для датчика DHT11 151.08 KB 71 downloads

Библиотека для датчика DHT11. v1.0 ...
Login Required Message:

Библиотека v 2.0 улучшенная обработка, только для датчика DHT11 MPLAB® X IDEMPLAB® XC8 Compiler    

Значок

Библиотека для датчика DHT11 - v2.0 3.68 KB 629 downloads

Библиотека для датчика DHT11 - v2.0 ...

Библиотека v 2.1 исправлена работа шины при отсутствии датчика, только для датчика DHT11 MPLAB® X IDEMPLAB® XC8 Compiler  

Значок

Библиотека для датчика DHT11 — v2.1 3.51 KB 480 downloads

Библиотека v 2.1 исправлена работа шины при отсутствии...

Библиотека v 3.0 датчики DHT11/DHT22/AM2302 MPLAB® X IDEMPLAB® XC8 Compiler  

Значок

Библиотека - измерение температуры и влажности v 3.0 датчики DHT11/DHT22/AM2302 4.36 KB 722 downloads

Библиотека предназначена для использования...



Это может быть интересно


  • Moving average – скользящее среднееMoving average – скользящее среднее
    Views: 2246 Скользящая средняя, скользящее среднее (англ. moving average, MA) — общее название для семейства функций, значения которых в каждой точке определения равны среднему значению исходной функции за предыдущий период. Скользящие средние обычно используются с данными временных рядов для сглаживания …
  • Проект с использованием MCC часть 08Проект с использованием MCC часть 08
    Views: 1040 И так создадим проект в котором при помощи двух кнопок мы сможем управлять яркостью светодиодов. При использовании МСС у нас лафа полная, добрые дяди с Microchipa подготовили функции, …
  • TDA7294 part 1TDA7294 part 1
    Views: 251 TDA7294 має унікальні дані для створення підсилювачів звукової частоти HI-FI класу. Варіант застосування є конфігурація BRIDGE (мостова схема включення), де використовуються два TDA7294, як показано на схематичній діаграмі …
  • PIC18 – System ArbitrationPIC18 – System Arbitration
    Views: 570 Системный арбитр. Разрешает доступ к памяти между выборами уровнями системы (т.е. Main, Interrupt Service Routine) и выбором периферийных устройств (т.е. DMA и Scanner) на основе назначенных пользователем приоритетов. Каждый …
  • HVLD модуль на примере PIC24FJ128GA204HVLD модуль на примере PIC24FJ128GA204
    Views: 641 HVLD модуль представляет собой простое устройство, для контроля напряжения питания микроконтроллера или внешнего напряжения (через делитель). Его задача при “выходе” напряжения за заданные пределы сформировать сообщение микроконтроллеру, что …
  • MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)MCC PIC24 – модуль REAL-TIME CLOCK AND CALENDAR (RTCC)
    Views: 486 RTCC предоставляет пользователю часы реального времени и функция календаря (RTCC), точность “хода” может быть откалибрована. Основные особенности модуля RTCC: • Работает в режиме глубокого сна. • Возможность выбора источника …
  • The art of DJThe art of DJ
    Views: 108 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 …
  • Проект с использованием MCC часть 01Проект с использованием MCC часть 01
    Views: 2540 Для изучения MCC я выбрал простой контроллер PIC16F1509. Выбор его был обусловлен богатой новой периферией которую можно изучить. Для начала была собрана схема на макетной плате Внешний вид …
  • Оптосимистор и его применениеОптосимистор и его применение
    Views: 19587 Эрве Кадино “Цветомузыкальные установки” Ответ на вопрос – управление мощным тиристором или симистором, от терморегулятора. Статья в pdf[wpdm_file id=129 template=”link-template-calltoaction3.php”] Оптосимистор принадлежат к классу оптронов и обеспечивают очень хорошую …
  • I2C MODULE – PIC18F25K42 Device ID Revision = A001I2C MODULE – PIC18F25K42 Device ID Revision = A001
    Views: 1081 I2C MODULE Обход ошибок в версии I2C MODULE – PIC18F25K42 Device ID Revision = A001 В Серии K42 применен совершенно новый модуль шины I2C, который позволяет поддерживать все …



DHT11 – Датчик влажности и температуры

Views: 2045


Измерение температуры и влажности при помощи датчика DHT11.

Статья в PDF [wpdm_file id=220]

Catcatcat_dht-11_150DHT11 недорогой цифровой датчик температуры и влажности. Он использует емкостной датчик влажности и терморезистор для измерения температуры окружающего воздуха, данные выдает в цифровой форме по шине типа 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

Габаритные размеры и подключение:

Catcatcat_dht-11_01a

Питание DHT11 составляет 3-5.5V DC. После подачи питания на датчик, необходимо выдержать паузу длительностью не менее 1 секунды перед началом считывания данных. Для фильтрации напряжения питания можно добавить один конденсатор 0,1 мкФ между Vdd и Vss.

Последовательный интерфейс (Single-Wire Двусторонний)

Весь обмен данными выполняется по одной одному проводу (шине). На шине может присутствовать только один датчик. Для получения высокого уровня используется подтягивающий резистор (5-10 кОм), т.е в пассивном состоянии на шине высокий уровень. Формат обмена данными может быть разделен на три этапа:

1) Инициализации.
2) Преамбула.
3) Передача данных.

Инициализация.

Процесс чтения данных начинается с импульса инициализации который формирует микроконтроллер. Он должен установить на шине низкий уровень на время не менее 18 mS, для инициализации  DHT-11.

Catcatcat_dht-11_02n

Преамбула.

Микроконтроллер после формирования импульса инициализации должен сразу перевести порт в режим чтения (режим приема данных). Если датчик готов к передачи данных, он ответит сформировав преамбулу. Один период меандра длительностью ~160 us.

Catcatcat_dht-11_02b

Микроконтроллер получив ответ от датчика, может начать чтение данных.

Передача данных.

Данные представляют собой 5 байт данных, которые читаются по битно микроконтроллером, т.е всего 40 бит.

Catcatcat_dht-11_04

Первые два байта данные влажности (относительная влажность), целая и дробная часть. Третий и четвертый температура (градусы Цельсия), целая и дробная часть и пятый последний байт контрольная сумма, которая равна сумме первых 4 байт. К сожалению хотя и присутствуют байты отвечающие за десятые доли градуса и процента, реально контроллер датчика их не вычисляет (хотя это и понятно при такой точности это бесполезно), поэтому  в них всегда присутствуют нули. Если реально считывать эти байты то мы увидим, например:

bait0 = 41    // влажность
bait1 = 0
bait2 = 31    // температура
bait3 = 0
bait4 = 72    // контрольная сумма

Но нет худа без добра, если в этих байтах всегда нули, то можно это значение (аналогично как для контрольной суммы) использовать для достоверности передачи данных.

Данные кодируются длительностью высокого уровня в каждом бите, бит начинается стробом низкого уровня длительностью приблизительно 50-54uS, после строба идет высокий уровень, если длительность высокого уровня в пределах 24 uS, то это передается “0”, если в пределах 70 uS – передается “1”.

Бит ‘0 ‘:

Catcatcat_dht-11_09
Бит ‘1 ‘:

Catcatcat_dht-11_10

Catcatcat_dht-11_11

По окончанию передачи данных датчик передает последний строб, устанавливает на шине высокий уровень и переходит в спящий режим.

Логика чтения данных может быть следующая.

Вид передачи полностью:

Catcatcat_dht-11_12

Датчик подключается ко входу который может формировать прерывания по изменению уровня на входе. Для определения длительности импульса можно использовать таймер микроконтроллера.

Для демо проекта используем плату ILLISSI_B4_primum с установленным микроконтроллером PIC16F1936. Для индикации данные будем выводить, через USB порт на терминал программы AN1310 Microchip.

Catcatcat_dht-11_13

Вариант построение программа для чтения данных с датчика для компилятора 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.85MPLAB® XC8 Compiler v1.20[wpdm_file id=219][/box]



Это может быть интересно


  • ESP32-первое знакомствоESP32-первое знакомство
    Views: 6482 Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как …
  • Стробоскоп для автомобиляСтробоскоп для автомобиля
    Views: 2170 Одним из популярных решений светового тюнинга автомобиля, мотоцикла или скутера стал эффект –  “полицейский стробоскоп“. На база платы ch-c0050 реализовано несколько проектов. В этой статье приводятся две версии …
  • Trimax – кодирование и декодирование ИК-командTrimax – кодирование и декодирование ИК-команд
    Views: 2193 Первое, что надо понять назначение кнопок клавиш пульта, а также, что за кодирование реализовано в ИК- пульте. Для назначения клавиш обратимся к описанию, а для взлома кодирования воспользуемся …
  • Четырех канальный терморегулятор ch-4000Четырех канальный терморегулятор ch-4000
    Views: 3194  Четыре независимых канала регулирования температуры, одновременно можно подключить 16 датчиков температуры DS18B20 с удалением до трехсот метров. Можно для регулировки выбрать любой датчик, подключенный к устройству. Каждый канал может работать …
  • Самый простой диммер для светодиодного освещенияСамый простой диммер для светодиодного освещения
    Views: 3028 Светодиоды все больше входят в нашу жизнь как источники освещения и как само собой разумеющееся, это вопрос регулировки яркости. Существует множество схемных решений, но в нашем варианте мы …
  • Светодиоды со встроенным драйвером WS2812BСветодиоды со встроенным драйвером WS2812B
    Views: 930 Производитель http://www.world-semi.com Краткое описание продукции фирмы Каталог продукции” catcatcat_ws_19 catcatcat_ws_15 catcatcat_ws_11 catcatcat_ws_07 catcatcat_ws_03 catcatcat_ws_18 catcatcat_ws_14 catcatcat_ws_10 catcatcat_ws_06 catcatcat_ws_02 catcatcat_ws_05 catcatcat_ws_09 catcatcat_ws_13 catcatcat_ws_17 catcatcat_ws_16 catcatcat_ws_12 catcatcat_ws_08 catcatcat_ws_04 catcatcat_ws_01 This jQuery …
  • Простой цифровой милливольтметр постоянного токаПростой цифровой милливольтметр постоянного тока
    Views: 4096 Простой цифровой вольтметр постоянного тока. Три диапазона измерений с автоматическим переключением 1 – 0,001 – 0,999 V, 2 – 0,01-9,99 V, 3 – 0,1-99,9. Четыре управляемых выхода с возможностью задания функции контроля …
  • Temperature measurement with NTC thermistor.Temperature measurement with NTC thermistor.
    Views: 312 Проекты в которых присутствовало измерение температуры начинал с цифровых датчиков, т.к. в них все просто и не надо ничего преобразовывать и вычислять. При использовании цифровых датчиков ты получаешь …
  • Проект с использованием MCC часть 14Проект с использованием MCC часть 14
    Views: 831 С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем …
  • PIC18F25K42 – v. A001 – выявленные баги.PIC18F25K42 – v. A001 – выявленные баги.
    Views: 614 Модуль I2C Не работает при использовании в стандартной конфигурации MCC. Требует особой нестандартной конфигурации и управления для нормальной работы. Обойти Обход проблемы возможен библиотека см статью. Модуль ADC2 На …