Воскресенье, 24.11.2024, 13:23
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Апрель 2011  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Датчик температуры и влажности SHT21. Два в одном

Датчик температуры и влажности SHT21. Два в одном

Наш канал в YouTube


В одной из предыдущих статей блога, рассматривался вопрос об изготовлении датчика влажности, основанного на психрометрическом эффекте – разности температур между сухим и влажным температурными датчиками DS18B20. При всей своей простоте реализации, такой датчик влажности имеет недостаток, о котором говорилось в той же статье – необходимость постоянно держать один из элементов во влажном состоянии, что создаёт определенные неудобства. Поэтому, я обещал, что следующим этапом контроля влажности будет рассмотрение применения специализированных датчиков влажности, таких, например, как HIH-4000. 

В принципе, всё уже шло к тому, что бы создать измеритель влажности на этом датчике, но тут мне попалась довольно интересная информация о том, что компания Sensirion выпускает комбинированные датчики температуры и влажности в одном корпусе SHT21 и, кроме того, всем желающим рассылает бесплатно семплы (образцы) этого датчика. Ну, такой возможностью глупо было не воспользоваться, поэтому, была быстренько оформлена заявка, и через две недели пришло письмо от компании Sensirion, в котором оказался образец датчика SHT21 и его подробный даташит. Впрочем, даташит, был ещё раньше скачан с сайта производителя. Поэтому определённое представление, что это за датчик у меня имелось. А вот размеры действительно поразили – всего лишь 3х3 мм. Видимо, всё же основное назначение SHT21 – использование в качестве встраиваемого решения в различную аппаратуру. Внешний вид датчика показан на рис. 1.

 

Рис.1 


 Хочу обратить ваше внимание, что датчики SHT21 в зависимости от модификации, могут иметь различный формат представления выходных данных – шина I2C, ШИМ, и аналоговый выход (SDM). Соответственно, они имеют различное обозначение – SHT21D, SHT21P и SHT21S. В дальнейшем, при ссылке на SHT21 будем считать, что имеется ввиду датчик с управлением по шине I2C - SHT21D. Корпус QFN датчика имеет шесть выводов, два из которых не задействованы (рис.2)

 

Рис. 2

 

Основные технические характеристики датчика SHT21:

 

 

Выходной сигнал I2C, ШИМ, SDM 
Потребляемая мощность 1.5 мкВт 
Диапазон измерений относительной влажности 0 - 100%
Диапазон рабочих температур -40...125°С
Время отклика (измерения отн. влажности) 8 сек.
Точность 2%
Габаритные размеры QFN корпус, 3х3 мм

 

 

Использование шины I2C является удобным способом для организации управления датчиком SHT21 от микроконтроллера. Существует два режима взаимодействия между микроконтроллером и датчиком - Hold и No Hold Master Mode. Остановимся более подробно на режиме Hold (рис.3)

Рис. 3

 

 

Как и в любом устройстве, работающем по шине I2C с использованием ведущего (в нашем случае – это микроконтроллер) и ведомого (датчик SHT21) вначале ведущий передаёт стартовый импульс (S). Затем передаётся адрес ведомого устройства по шине I2C с режимом записи. Адрес SHT21 определён как 1000000X. Режим запись/чтение определяет бит X (0-запись, 1-чтение). Затем ведущий ожидает подтверждения от ведомого – команду АСК. После получения подтверждения, микроконтроллер выдаёт в линию команду управления или конфигурации – биты 10-17. В показанном на рис. 3 примере передаётся команда работы измерения влажности в режиме Hold. Полный список команд показан в таблице на рис. 4.

Рис. 4

 

Далее, согласно стандартным процедурам протокола I2C, передаётся повторный стартовый импульс (S) и адрес датчика с режимом чтения и контролем приёма подтверждения АСК. После приёма подтверждения начинается отсчёт времени измерения выбранного параметра – влажности или температуры (Measurement) . Следовательно, на это время необходимо установить нужные тайм-ауты в процессе считывания информации с датчика.

После измерения начинается непосредственно процесс считывания информации Сначала сохраняется содержимое старшего регистра (MSB) с передачей ведомому (от микроконтроллера к датчику) команды подтверждения АСК. Затем считывается младший байт (LSB) с выдачей подтверждения и контрольная сумма (Checksum). Так как считывание контрольной суммы является завершением процедуры чтения, то ведомому передается команда NACK, что говорит о завершении процесса считывания и стоповый бит (Р). Если контрольная сумма не нужна, то команду NACK необходимо подать вместо команды АСК в позиции 45. При этом считывание Checksum будет игнорировано. Последние два бита младшего разряда (43 и 44, рис.3) как наименее значащие при работе в 14-ти битном режиме используются для передачи статуса работы – если бит 43 равен 0-измерение температуры, если 1 – измерение влажности. Бит 44 не определён и в данном случае не используется.

На других режимах работы и дополнительных регистрах SHT21 останавливаться не будем - всю необходимую дополнительную информацию можно найти в даташите, а лучше на основе приведённого выше примера работы датчика, попытаемся реализовать экспериментальную схему измерителя температуры и влажности.

Но вначале нужно уточнить один момент. Полученные результаты измерения представляют собой 16-ти битное число, которое хранится в двух регистрах – MSB и LSB. Однако это значение необходимо подвергнуть преобразованию по определённой формуле, что бы выводимая информация соответствовала градусам в режиме измерения температуры и процентам в режиме измерения влажности.

Для перевода полученного значения в градусы применяется формула:

Для измерения влажности данная формула преобразования будет иметь несколько иной вид:

Теперь перейдём непосредственно к реализации схемы. Для экспериментов с датчиком SHT21 была использована схема с микроконтроллером 16F628A и ЖКИ индикатором WH0802A (рис.5). В принципе, схема абсолютно стандартная, никаких особенностей не имеет. Некоторые вопросы возникли с организацией питания – пришлось использовать питание 5 В для ЖКИ-индикатора и питание 3,3 В для микроконтроллера и датчика. Это обусловлено тем, что максимально допустимое рабочее напряжение SHT21 составляет 3,6В. Датчик SHT21 подключается по шине I2C, которая в микроконтроллере реализована программным способом. В схеме использован кварцевый резонатор на частоту 4 МГц и внешняя RC-цепь сброса.

null

Рис. 5

 

 

Схема собрана на макетной плате, индикатор устанавливается в разъём платы (рис.6). 

 

Рис. 6

 

Так как датчик SHT21 имеет миниатюрные размеры (3х3 мм), то он для удобства работы он установлен на небольшой печатной плате, которая так же, как и индикатор, подключается к основной плате через разъём. Необходимо добавить, что паять датчик нужно очень аккуратно - QFN корпус имеет не выводы, а контактные площадки. Рядом с датчиком устанавливается блокировочный конденсатор 100 nF. Внешний вид платы датчика в увеличенном виде показан на рис.7.


Рис. 7

Управляющая программа микроконтроллера работает в циклическом режиме с поочерёдным режимом измерения температуры и влажности, преобразованием полученных значений в градусы и проценты и вывода на дисплей. В верхней строке индикатора показывается температура, а в нижней строке – относительная влажность. Сразу оговорюсь, что эта программа писалась не под завершённое устройство, а под экспериментальный макет, поэтому является неоптимизированной и требующей определенной доработки в плане добавления различных функций. Необходимо ещё дополнительно реализовать индикацию контроля наличия на линии датчика (сейчас, при отсутствии или неработоспособности датчика на дисплей будут выведены значения температуры 25 С и влажности 18%). Кроме того, в этой версии программы используется только работа со старшим байтом (MSB), поэтому индицируются целые значения градусов без дробной части, не реализована индикация отрицательных температур Тем не менее, данная экспериментальная схема позволяет продемонстрировать работу датчика SHT21 в обоих его режимах измерений и создать на её основе вполне нормальный термометр-гигрометр, что я впоследствии и планирую сделать. Внешний вид устройства с подключенным датчиком в режиме измерений показан на рис. 8.

 

Рис. 8

 

Что касается погрешности измерений, то при измерении температуры погрешность относительно контрольного термометра почти не наблюдалась. Насчёт относительной влажности пока ничего сказать не могу, т.к. в настоящее время нет в наличии контрольного гигрометра. 

Конечно, рассмотренные вопросы далеко не в полной мере отражают возможности использования датчика SHT21. Например, не рассматривался вопрос о программном сбросе датчика (Soft Reset), о пользовательском регистре (User Register), работе в 8….14-битных режимах, и о многом другом. Об этом вы можете почитать в описании производителя на датчик. Не скажу, что я досконально изучил данное изделие компании Sensirion, поэтому если у вас есть вопросы, давайте совместно их обсудим в комментариях или на форуме. Буду благодарен за любые критические замечания и советы по этой статье. По ссылкам в конце страницы, вы можете скачать описание датчика SHT21 (на английском языке) и программу для микроконтроллера.

 

Внимание!

О измерителе температуры и влажности, выполненном на значительно более дешевом датчике DHT11 читайте здесь

 



Даташит SHT21

Прошивка 16F628A

Обсудить на форуме


 

Ещё один вариант этого устройства разработал участник нашего форума myx. В отличие от предыдущего варианта в стабилизаторе 3,3В используется микросхема LM317 (рис. 9)

 

null

Рис. 9

 

Под этот вариант измерителя myx была разработана печатная плата, в связи с чем хочу выразить ему свою глубокую признательность. 

 




Категория: | Просмотров: 36202 | Добавил: Admin | Теги: датчик влажности, SHT21, I2C | Рейтинг: 4.8/4 |
Всего комментариев: 17


16 Николай  
Здравствуйте,подскажите если мспользовать микроконтроллер мегу 8 для этого датчика,подойдет,а то че то написано что он имеет имеет другой I2C-адрес.

17 Admin  
Кто имеет "другой I2C-адрес"? SHT21? biggrin Какая разница, мега, пик, STM? Адрес присваивается ведомому устройству, а не микроконтроллеру, в любом случае для SHT21 он имеет значение 1000000X. Бит Х определяет режимы работы - запись(0)/чтение(1)

14 Admin  
Большая просьба - все вопросы, по данному устройству, которые касаются схемотеники, прошивки и т.д. задавать на соответствующем форуме - http://lock.3dn.ru/forum/2-25-1. Здесь же оставляем только короткие комментарии, отзывы и пожелания.

12 Валерий  
Скажите пожалуйста,что именно вы применили в качестве DA1 и DA2.

13 Admin  
Кренки на 3,3В и 5В в SMD исполнении.

10 Юрий  
А скажите пожалуйста, у вас все проекты на ассемблере?. Интересно было бы этот датчик с avr подружить, сможете помочь программно?

11 Admin  
Да, большинство прошивок для представленных здесь разработок написано на ASM, но для микроконтроллеров PIC. С AVR сталкиваюсь редко, только если нужно повторить какую-либо конструкцию.

8 myx  
Ах, да, забыл сказать - у меня прибор по температуре немного брешет, показывает на 2 градуса меньше, чем на самом деле. Сравнивал с тремя разными цифровыми термометрами. Кстати, каким-то образом измеряемая влажность зависит от измеряемой температуры. Следовательно и гигрометр тоже брешет). То есть при повышении температуры возле датчика без повышения влажности показания на гигрометре существенно меняется. Надеюсь в новой версии все будет ОК!

9 Admin  
Да, есть такой момент. Я же говорил, что это пока макет, экспериментировал с коэффициентами в формуле температуры для разных датчиков, т.к. было небольшое отличие. Коэффициент, который в формуле -46,85 на самом деле в программе -49 - вот и разница.

7 myx  
Отличная идея! С нетерпением буду ждать нового проекта:)

15 Admin  
Ну вот, наконец-то спустя почти три месяца, проект реализован - Универсальный цифровой термометр. Версия 2.0

5 myx  
Собрал, работает. Спасибо! Будет ли апгрейд устройства?

6 Admin  
Апгрейд вряд ли, это ведь просто макет. Планируется использование датчика SHT21 вот с этим девайсом - Универсальный цифровой термометр

2 Vasilij  
Корпус датчика все же впаивается в печатку?
... прямо левшой надо быть...

4 Admin  
Ну не преувеличивайте biggrin . Я эту "печатку" под датчик вообще вручную нарисовал. И припаять большин проблем не составило. Но безусловно, паять нужно очень аккуратно!

1 Вячеслав  
Посмотрите схему! MCLR неправильно подключен. В документации на SHT21 написано что они её калибровали при 3 V. Если стабилизатор вместо 3.3 на 3 В поставить PIC будет работать?

3 Admin  
Да, немножко не досмотрел sad . Спасибо! Уже исправлено.

При 3В МК должен запуститься, у него нижний предел питания как раз 3В. Если всё же не получится запустить, то придётся использовать 16LF628A






T2M © 2024
Сайт управляется системой uCoz