Главная » Статьи » Как подключить

Работа с датчиком влажности SHT21
Вместо предисловия
Эта статья должна была быть опубликована аж 4 месяца назад, но по непонятным мне причинам, попавший ко мне образец датчика, отказался нормально работать и поэтому он был заброшен в долгий ящик. К счастью, со временем подтянулся народ и появилась возможность проверить написанный код с другими датчиками. Поэтому выражаю огромную благодарность пользователю Civil c форума http://bascomavr.3bb.ru, который поделился своими результатами и своим устройством, описанным ниже.


 Не так давно, с пол года назад, компания Sensirion рассылала бесплатные образцы новейших датчиков влажности SHT21. И как бывает в таких случаях, производитель предоставил возможность получить образцы этих датчиков совершенно бесплатно. За более чем полгода, многие успели урвать эту кроху, в том числе и я. Несмотря на крошечные размеры корпуса микросхемы (3х3х1,1 мм), вытравить под нее плату, а тем более запаять, проще простого. ЛУТ и простой паяльник справляются на ура.






 С ведущим контроллером датчик общается по протоколу i2c, и для работы необходимы всего лишь пару внешних резисторов и один керамический конденсатор по питанию. Адрес датчика на шине и2ц фиксирован и имеет значение &h80. Примеры как работать с периферией по протоколу I2C можно глянуть на основе этого или вот этого.
 Сам метод работы с датчиком и рабочие команды описывать не буду, так как есть отличная и интересная статья от товарища dcoder с сообщества easyelectronics.ru, посвященная описанию датчика. 
 
 Схема устройства приведена ниже, используются семисегментные индикаторы RL-D5623 YCAW с общим анодом. Тактирование микроконтроллера происходит от внутреннего RC генератора настроенного на 8 МГц. Питать датчик рекомендуется напряжением 3,6 В, но если подать на него 5 В датчик продолжит работу. Производитель крайне не рекомендует этого делать, так как срок службы резко сокращается (разрушается активный слой внутри датчика).





 Фрагмент кода для работы с датчиком. Здесь происходит считывание влажности и температуры с последующим преобразованием согласно формулам из даташита. Работа с датчиком происходит в нормальном  (slave) режиме, тоесть во время измерения датчик не прижимает линию CSL к земле:

'считывание температуры
I2cstart
I2cwbyte &H80                       'адрес микросхемы-датчика SHT21
I2cwbyte &HE3                       'выбор измерения T в нормальном режиме
Waitms 100                          'измерение
I2cstart
I2cwbyte &H81                       'чтение результата измерения
I2crbyte Data1 , Ack               'прием старшего байта, ждем слудующий байт
I2crbyte Data2 , Ack               'прием младшего байта
I2crbyte Crc , Nack                'прием байта контрольной суммы (можно на него забить)
I2cstop                             'конец общения

Dataw = Data1
Shift Dataw , Left , 8
Dataw = Dataw + Data2
= Dataw * 175.72
= T / 65536
= T - 46.85

'считывание влажности
I2cstart
I2cwbyte &H80                    'адрес микросхемы-датчика SHT21
I2cwbyte &HE5                    'выбор измерения влажности в нормальном режиме
Waitms 100                       'измерение
I2cstart
I2cwbyte &H81                    'чтение результата измерения
I2crbyte Data1 , Ack             'прием старшего байта, ждем слудующий байт
I2crbyte Data2 , Ack             'прием младшего байта
I2crbyte Crc , Nack              'прием байта контрольной суммы
I2cstop                           'конец общения

Dataw = Data1
Shift Dataw , Left , 8
Dataw = Dataw + Data2
= Dataw * 125
= H / 65536
= H - 6

Print "  T " ; Fusing(, "#.##") ; "   H " ; Fusing(, "#.#")


 Полный листинг программы можно скачать в конце статьи, там же находиться откомпилированный файл.


А вот измерения устройством в сравнении с метеостанцией:






  Как видно качество измерений не уступает фирменному аналогу.



 Скачать исходники, файл прошивки и файл печатной платы в формате .lay



Еще пара фоток устройства от автора:


             



  UPD. От сенсирион прикатил еще один конверт с таким же датчиком, так что как появится время выложу свой похожий проект на этой крохе.



Категория: Как подключить | Добавлено: 08.11.2011
Просмотров: 28433 | Комментарии: 16 | Теги: I2C, SHT21, индикатор, ATmega8 | Рейтинг: 5.0/7
Всего комментариев: 16
+1   Спам
16 sany2   (10.07.2016 22:32) [Материал]
tcpip,в начале пропишите(перед Do ) Config Portс.0 = Output,после Do
if H>60 Then
Portс.0 = 1
else
Portс.0 = 0
end if

15 tcpip   (09.07.2016 19:43) [Материал]
Добрий день, пожалуйста, допишите, кто-нибудь, в программу возможность включенияодного из портов (для подключения реле) при достижении определенного уровня влажности (например, 60 %)

14 dopl123   (15.11.2015 01:58) [Материал]
пожалуйста скиньте проект этого устройства в протеусе, потому что в приложенных исходниках его нет
буду очень благодарен!

13 exersizze   (09.01.2013 01:22) [Материал]
Теперь видно;) Если вдруг где-то случайно забыли упомянуть о фьюзах, самое простое это открыть исходник и посмотреть на первые строчки. Цифра с шестью нулями это и есть частота на которую скомпилировали программу

+1   Спам
12 amv2000   (08.01.2013 20:48) [Материал]
О чём Вы говорите который раз вижу не читают внимательно статью, вот о фьюзах:
Тактирование микроконтроллера происходит от внутреннего RC генератора настроенного на 8 МГц.
Чего ещё, разве только большими буквами посередине статьи...не в обиду.

11 InOn   (08.01.2013 19:51) [Материал]
Неравнодушен я ко всяким "показометрам". Затеялся собрать конструкцию Civil, но возникла проблема с программированием фьюзов контроллера. Я понимаю, что этот ресурс ориентирован в первую очередь на программистов, но уж будьте снисходительны и к нам, простым обывателям и повторятелям. Упоминайте в прошивках ещё и о фьюзах пожалуйста.

10 tip4ik   (10.04.2012 11:46) [Материал]
Сегодня нашел в Сети следующий текст: "Обращаю ваше внимание, что датчики SHT21 в зависимости от модификации, могут иметь различный формат представления выходных данных – шина I2C, ШИМ, и аналоговый выход (SDM). Соответственно, они имеют различное обозначение – SHT21D, SHT21P и SHT21S..."
На Вашем сайте много полезного, спасибо.

9 zergus   (03.12.2011 09:23) [Материал]
Вот спасибо за наводку! Попробовал поискать у себя в магазинах DHT22, пока без результатно((

8 exersizze   (01.12.2011 23:52) [Материал]
из недорогих HS1101 - емкостный датчик, измеряет только влажность; DHT11 и DHT22 - цифровые, измеряют температуру и влажность. Сам лично присматриваюсь к этому

7 zergus   (01.12.2011 23:21) [Материал]
Мне вот тоже не достался сей датчик, всегда пропускаю все самое интересное biggrin Есть у него какие-нибудь аналоги, чтоб не дорого и доступно?

6 amv2000   (16.11.2011 08:02) [Материал]
Еще рекомендуется чтобы после пайки, датчик отлежался не менее 12 часов при влажности >75%. Это нужно для регидратации датчика влажности. Иначе он будет врать некоторе время после запуска, но потом показания придут в норму.

5 exersizze   (14.11.2011 21:13) [Материал]
в даташите пункт 4.1 написано про "разрушение оксидного слоя.." а оксид чего там я если честно хз

4 Medved   (14.11.2011 20:25) [Материал]
Это что это за "активный слой" у него там внутри. Растолкуй пожалуйста!

3 exersizze   (12.11.2011 12:17) [Материал]
А что с моим я так и не понял, может убил статикой или перегрел при пайке, но при опросе датчик выдавал всякий мусор вместо значений. Хотел заказать еще один, с другого мыла и на другой адрес, так они уже свернули раздачу.

2 tenevikus   (09.11.2011 21:48) [Материал]
лежит такой в ящичке biggrin
дак, а с твоим-то что в итоге? ninja

1 kestrel   (08.11.2011 19:03) [Материал]
молодца! а мне так и не удалось получить этот датчик-(
(индикация получше на lcd будет)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль: