Главная » Статьи » Как подключить |
Работа с датчиком влажности 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
T = Dataw * 175.72
T = T / 65536
T = 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
H = Dataw * 125
H = H / 65536
H = H - 6
Print " T " ; Fusing(t , "#.##") ; " H " ; Fusing(h , "#.#")
Полный листинг программы можно скачать в конце статьи, там же находиться откомпилированный файл.
А вот измерения устройством в сравнении с метеостанцией:
Как видно качество измерений не уступает фирменному аналогу.
Еще пара фоток устройства от автора:
UPD. От сенсирион прикатил еще один конверт с таким же датчиком, так что как появится время выложу свой похожий проект на этой крохе. | |
Просмотров: 28946 | Комментарии: 16
| Теги: |
Всего комментариев: 16 | |||||||||||||||
| |||||||||||||||
авторизация
рубрики
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |
метки