• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO





Датчик влажности с использованием 8051 (гигрометр)



Статьи публикуются по мере поступления. Для упорядоченного тематического
поиска воспользуйтесь блоком  "Карта сайта"







Проект представляет собой простой датчик влажности на базе микроконтроллера 8051. Датчик влажности также называют гигрометром. Схема может воспринимать относительную влажность (RH) от 20% до 95% с точностью до 5%. Информация о влажности отображается на ЖК-дисплее 16 × 2. Также предусмотрено реле, которое должно быть активным, когда влажность пересекает определенную точку отключения. Схема работает от сети, и ее очень легко установить. DHT11 - это датчик влажности, используемый здесь. Подробности и работа датчика влажности DHT11 приведены ниже.

 

Датчик влажности DHT11.

 

Распределение DHT11

 

DHT11 - датчик температуры с низкой влажностью, который имеет цифровой выход. Емкостный метод используется для измерения влажности, а для измерения температуры используется термистор. Датчик может воспринимать относительную влажность от 20% до 95% при разрешении 5%. Измерение температуры до 50 ° C при разрешении 2 ° C. Связь с микроконтроллером осуществляется через один провод. Основная схема связи приведена на изображении ниже.

 

Диаграмма времени DHT11

 

Коммуникация с датчиком DHT11 очень удобна. Контакт 2 DHT11 подключен к выходу порта микроконтроллера. Схема подключения показана на рисунке ниже. Штырь данных (контакт 2) DHT11 требует внешнего подтягивающего резистора 10K.

 

Схема подключения DHT11

 

Протокол связи объясняется следующим образом. MCU (микроконтроллер) сначала посылает низкий сигнал ширины 18 мс на DHT11. После этого сигнала MCU подтягивает линию связи и ожидает ответа от DHT11. Это займет до 2. 40uS. Затем DHT11 вытаскивает линию связи и сохраняет ее на 80uS. Затем DHT11 поднимает линию и удерживает ее на 80uS. Затем DHT вытягивает линию для 50uS, а следующий высокий импульс будет первым битом данных. Данные отправляются в пакетах по 8 бит. Каждый высокий импульс пакета указывает сигнал данных. Низкие сигналы 50uS между битами данных являются просто разделителями. Логика бит данных идентифицируется путем измерения ее ширины. Импульс от 26 до 28uS указывает, что импульс «LOW» и 70uS wide указывает на «HIGH». Говоря простыми словами, импульс, более узкий, чем 50uS, можно воспринимать как «LOW», а более широкий, чем 50us, можно считать «HIGH». Первые 8 бит пакета данных представляют собой интегральное значение относительной влажности, а остальные 8 бит представляют собой десятичное значение относительной влажности, третье 8 бит представляют собой интегральное значение данных температуры, а последние 8 бит представляют собой десятичное значение данных температуры. Для DHT11 десятичные значения всегда равны нулю, и мы измеряем относительную влажность только в этом проекте. Поэтому нам нужно просто коснуться первых 8 бит данных, то есть неотъемлемой части данных относительной влажности. На рисунке ниже показана схема датчика влажности.

 

Принципиальная электрическая схема.

 

гигрометр

 

Датчик влажности DHT11 подключен к P3.1 микроконтроллера 8051. R8 поднимает линию связи между DHT11 и 8051. Реле управляется с использованием P2.0 микроконтроллера. Транзистор Q1 переключает реле. R0 - нагрузочный резистор, а R7 ограничивает базовый ток Q1. D5 - всего лишь свободно вращающийся диод. Линии данных ЖК-дисплея соединены с портом 0 микроконтроллера. Контрольные линии RS, R / E и E подключены к контактам P2.7, P2.6 и P2.5 микроконтроллера соответственно. R4 устанавливает контрастность дисплея. R5 ограничивает ток через светодиод задней подсветки. C9 - байпасный конденсатор. C8, C10 и X1 связаны с схемой синхронизации. C11, R6 и S2 образуют схему сброса.

 

Скачать код

 

О программе.

Протокол связи с датчиком и микроконтроллером уже объяснен. Вывод вывода данных DHT11 подключается к P3.5 микроконтроллера. В начале цикла MAIN P3.5 удерживается высоко. Затем он становится низким и вызывается процедура задержки 18 мс (DELAY1). Затем P3.5 делается высоко. Это формирует первый начальный сигнал 18 мс для DHT11. Теперь линия связи высока, и микроконтроллер проверяет статус этой линии и ждет там до тех пор, пока она не станет низкой. Он становится низким, когда DHT11 отправляет ответный сигнал. Затем микроконтроллер ожидает второго сигнала ответа, который является высоким сигналом. Когда этот высокий сигнал принимается, микроконтроллер ждет следующего низкого сигнала, и после этого низкого сигнала начинается передача данных. Я уже упоминал, что каждый бит данных представлен высоким сигналом, а его ширина определяет логику. Поэтому, когда микроконтроллер получает импульс данных, запускается Timer1, и программа ждет там до тех пор, пока импульс данных не исчезнет. Затем таймер остановлен. Теперь TL1, т. Е. Низкий регистр Timer1, содержит ширину импульса данных. Затем ширина сравнивается с 50 путем вычитания 50 из счета TL1. Если установлен флаг переноса (PSW.7), это означает, что ширина меньше 50uS, и если флаг переноса не установлен, это означает, что ширина выше 50uS. Если ширина меньше 50uS, это указывает на низкий сигнал и ACC.0 очищается. Если ширина превышает 50uS, это указывает на высокий сигнал и устанавливается ACC.0. После этого регистр TL1 и бит PSW.7 очищаются. Затем LOOP повторяется 8 раз, а аккумулятор вращается влево в начале каждой итерации. Команда rotate left (RL) используется, поскольку во время каждой итерации вы обновляете только ACC.0, и вам нужно сохранить этот бит до следующего обновления. Это достигается путем переключения его налево каждый раз. Последнее обновление ACC.0 не требует сдвига позиции, потому что оно в нужном месте, как предполагается, должно быть. Это является причиной размещения инструкции RL A в начале LOOP. После 8-й итерации LOOP выходит без вращения аккумулятора. Теперь содержимое аккумулятора равно интегральному значению текущей относительной влажности в процентах. Затем подпрограмма DINT вызывается для инициализации дисплея. Затем вызывается подпрограмма TEXT1, которая отображает «Гигрометр». Затем вызывается подпрограмма LINE2 для переключения курсора на вторую строку. Затем вызывается подпрограмма HMDTY для отображения значения влажности в процентах. Затем вызывается CHECK подпрограммы для проверки того, превышает ли значение влажности значение выше или ниже 65%. Если влажность выше 65%, реле активируется, а реле отключается. Вызывается подзапрос задержки 2S DELAY2. 2-секундная задержка дается, потому что вы можете принимать излучение от DHT11 один раз в каждые 2 секунды. Это также делает дисплей стабильным. Затем программа переходит на MAIN-метку, и весь процесс повторяется.

 







Просмотров: 756 | Добавил: Chinas | Рейтинг: 0.0/0








Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 380



          

Радио для всех© 2024