Электрификация

Справочник домашнего мастера

I2c датчик температуры

DHT12 — I2C датчик влажности и температуры

DHT12 — это датчик температуры и влажности предназначен для одновременного замера температуры и влажности. Сенсор состоит из емкостного сенсора влажности и термистора, он также содержит в себе простой 8-битовый микроконтроллер, который хранит калибровочные поправки для датчиков и выполняет функцию АЦП. Данный датчик может быть подключен к любому микроконтроллеру, в том числе к Arduino. Этот датчик является обновлённый DHT11, он меньше по размеру и лучше в точности по сравнению с DHT11. Главное отличие данного датчика от DHT11 — это работа по протоколу I2C. Также поддерживается 1-проводная шина, для этого нужно подключить SCL к земле.

Распиновка DHT12

Получить данные с датчика DHT12 можно по I2C и по 1-проводной шине. По умолчанию датчик работает по протоколу I2C. Если подключить SCL к земле, тогда DHT12 работает по 1-проводной шине. Такой вариант подходит, если микроконтроллер не поддерживает протокол I2C.

Выводы Описание
1 VDD Питание 3-5В
2 SDA Линия данных (Serial Data)
3 GND Общий/Земля
4 SCL Линия тактирования (Serial CLock)

Технические характеристики DHT12

Описание регистров

Ниже в таблице представлен перечень регистров цифрового датчика влажности и температуры DHT12:

Адрес Описание регистра Примечание
00h Целая часть влажности Значения относительной влажности воздуха
01h Дробная часть влажности
02h Целая часть температуры Значения относительной температуры воздуха
03h Дробная часть температуры
04h Байт четности Контрольная сумма

Считывание данных

Данные (все 5 байт) с датчика DHT12 надо считывать последовательно и за одну транзакцию, в противном случае данные не обновляются и вы будите получать одни и те же данные.

Формат данных DHT12

Когда датчик влажности и температуры отправляет данные, он сначала отправляет MSb (Most Significant Bit) — старший значащий бит. Данные от датчика передаются в виде посылки, состоящих из 40 бит данных — это 5 байт из которых первых два влажность, следующие 2 температура и байт четности. Байт четности равен сумме предыдущих байт. 1 и 2 байт содержат соответственно целую и дробную часть информации о влажности, 3 и 4 байт содержат целую и дробную часть информации о температуре. Значение этих байтов заключается в следующем:

Подключаем к ардуино MLX90614 IR-TERMOMETER MODULE 28040 — модуль для бесконтактного измерения температуры

Датчик представляет собой небольшую платку с установленным на ней термочувствительным сенсором, четырех контактным разъемом.
VCC- контакт для подключения напряжения питания 3,3 Вольт.
GND- контакт для подключения общего провода.
SDA- последовательный интерфейс.
SCL- последовательный интерфейс.
Один из примеров использования датчика будет такой:
Подключаем питание 3,3 Вольт к плате сенсора.
SDA вывод платы сенсора подключаем к Arduino на аналоговый вход А4.
SCL вывод платы сенсора подключаем к Arduino на аналоговый вход А5

Arduino pin: MLX90614 pin:
GND GND
+3.3v VCC (+2.8-3.6v)
A5 SCL (I²C Clock)
A4 SDA (I²C Data)

Готовый же модуль с обвязкой выглядит вот так

Голый модуль же можно подключать по следующей схеме но тогда нужно будет указать другие пины в коде (А4,А5)


Купить такой можно дешевле всего на Алиэкспресс MLX90614

Запишем в Arduino вот такой скетч:

Записав скетч в Arduino и включив монитор порта, мы можем видеть как меняются показания датчика в зависимости от его направления. На рисунке представлен результат измерения температуры ладони, поднесенной к датчику на 10 см.

Подписывайся на Geek каналы :

➤ VK — https://vk.com/denis_geek

➤ VK — https://vk.com/club_arduino

Тестируем Инфракрасные датчики MLX90614

Скажу сразу, датчики куплены за свои, но продавец добавил других чтобы я измерил параметры купленных мной (интрига), поэтому я и приписал П18. Протестирую практически всю линейку датчиков на точность, и косвенно на поле «зрения», также приложу тестовый скетч для ардуино чтобы желающие без проблем могли проверить на работоспособность. Также распилю это черную штуку на датчике: ) Характеристики серии MLX90614 (кроме медицинской серии) точность в диапазоне до +60 0.5°C, разрешение 0.01°C, и диапазон измерения -70°C … +380°C.
Прошу под кат (надеюсь эта ссылка появится, или я не умею пользоваться тегом cut)

С того момента когда я узнал о том что существуют инфракрасные датчики температуры, я испытываю к этим «деталькам» большую любовь))) Вот моя коллекция, сверху оставшиеся дома, ниже те что отнес на работу.

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

На работе, применение более широкое)))
Подобная штука может очень помочь при различных задачах.
Измерение температуры будет:
• Без контакта с измеряемой поверхностью
• Быстрее
• Точнее (в некоторых случаях)
Конечно есть и недостатки, куда же без них:
• Дорого
• Необходимо учитывать коэффициент излучения разных материалов (черный маркер может помочь в решении этой проблемы)
• Нужно учитывать угол обзора (поле зрения) FOV
Но и с такими недостатками применение таких датчиков довольно обширное, как я понимаю, самая большая область это медицинские термометры для измерения температуры тела.
Дело было так…
Понадобилось измерить температуру (вернее ее изменение) вращающегося металлического объекта, обороты довольно большие, до 1500 в минуту. Изменение температуры небольшое до 10 градусов, время измерения не больше 3 секунд. Температура комнатная и выше. Объект мал, место измерения – плоскость, размером чуть больше спичечного коробка.
Все усложнялось еще тем, что доступ к нагреваемому объекту сложен, поэтому размер датчика имеет значение.
Задача нетривиальная, варианты решения были такими:
1.Термопара рядом с объектом, за счет малого расстояния от объекта, температура слоя воздуха рядом с ним будет коррелировать с его температурой
2.Ик датчик
3.Ртутные контакты, возможно щетки для снятия сигнала с терморезистора или диода (термопара не подойдет в связи с малыми измеряемыми напряжениями которые утонут в шумах).
Все, мои идеи реализации задачи закончились)))
Сначала был испробован вариант термопарой и мультиметром (для связи с компьютером) UT71E, самый быстрый вариант, чтобы попробовать и понять возможности решения задачи.
Эксперимент показал, что изменения рядом с объектом малы и эта реализация не обеспечивает того что мне надо. Воздух захватывается объектом и довольно неплохо перемешивается, что сильно уменьшает температуру даже в 1мм от объекта.
Значит будем искать ИК датчик, в моей коллекции нет термометров с выводом на компьютер, да и встраивать свои «железки» я не хотел, поэтому начал искать на Ali и Ebay.
Сразу захотелось купить mlx90614 в самой топовой «комплектации» с самым малым полем зрения 5 градусов mlx90614 DCI. Чтобы подальше его расположить, угол «зрения» то позволяет. Тем более что если он не подойдет, можно будет замутить уже давнишнюю мечту о примитивном тепловизоре)))) (сейчас желание уже поостыло, так как времени своего уже жалко), Но пока в планах собрать его с ребенком, когда он подрастёт). И тут уже дело не в том, что нужно что-то реально измерить, а в получении опыта и совместном творчестве. Для лучшего понимания ссылочки
geektimes.ru/post/275970/
geektimes.ru/post/257850/ и подобного рода проектов очень много.
Извините, ушел с рельсов, возвращаюсь.
Муки выбора осложнялись еще и тем, что вероятность купить «паленый» датчик на Ali и Ebay довольно большие, я писал много писем продавцам о том лазерная ли маркировка на датчиках, но в ответ тишина. А цена то 1500рублей, а жаба живет в каждом (только ее размеры разные). В общем, выкинул я «мечту» о буковках DCI.
Но датчик то нужен, да и размерчиком поменьше чтобы компенсировать угол зрения, и опять шерстить сайты. Вроде нашел, размер подходит, очень удобно что вершина датчика малого диаметра, но есть одно но, такой комплектации в даташите нет))))) вот это да. В даташите написано что последняя буква (D)зарезервирована для особых пользователей (вероятно вояк, или …..), а у продавца на странице товара угол 10градусов! В общем, беда, и пишу я письма в Melexis и продавцу.
Мелексис ответил копипастом из даташита! Хоть я и ожидал этого, но компания все таки серьезная, надеялся на общение.

Дополнительная информация Dear Mr /////
Ebay is not a distributor of Melexis. The parts which are mentioned could be fake parts.
As mentioned the D is reserved. This is only available for specific customers.
For further questions, I would like to refer you to one of our official distributors. You can find their contact details on www.melexis.com/en/contact/distributors
Kind regards,
Heidi
Вот что ответил продавец (неадаптированный перевод).
Дополнительная информация Скорее всего да, — могут попадать такие несоответствующие на 100% даташиту У меня источник проверенный, но он не хочет сказать мне откуда они у него. Упаковки оригинальные, при том в больших коробках. Я опасался, что может где-то своровали, но он уверил меня, что все в порядке. Ничего не воровано, просто с обанкротившегося предприятия..Откуда я взял, что 10 градусов? Со слов моего источника. К сожалению документации, которая может это подтвердить у меня нет, и гарантировать я это не могу. Спасибо заранее!
В общем, продавец общительный и честный, поэтому я предложил ему измерить характеристики этого датчика в сравнении с другими, которые он мне пришлет, и написать этот обзор. Дело все в том, что на другие датчики информация в даташите есть.
Продавец согласился, этот лот я у него купил, но в посылку он добавил других датчиков, для измерения.
Доставка длилась 19 дней (деталировку трека не выкладываю, так как не понимаю зачем она, если кто захочет проверить мои слова вот трек номер RI222970740BG
Пока датчики были в пути, я придумывал методики измерения их параметров.
Измерение точности показаний температуры требует точного термометра, желательно очень точного, где бы его взять)))) может в Японии))) ага, оттуда родом мой термометр, купленный для замены ртутному (ох и гадость же ртутные термометры, и как только у нас появился ребенок, ртутный был утилизирован а «электронный» куплен). Потом был докуплен ИК ушной, который освободил от работы электронный. Почему медицинский термометр, да потому, что это самый точный прибор измерения температуры в моем арсенале, который проверен мной)) ну люблю я проверять всякие штуки))) (проверен на термометре родом из СССР с ценой деления 0,1градус, показания совпали, и хоть термометр не поверен, но такое совпадение меня успокоило.
Скорость измерения измерять не планировал, так как для работы буду использовать библиотеки для ардуино (я не могу написать код сам, без библиотек) и буду ограничен возможностями библиотеки (и датчика конечно).
А вот методику измерения угла зрения придумать непросто, задача для меня непростая.
Думал много) Остановился на том, что придут датчики у которых этот угол уже измерен, поэтому решил не измерять его значение, а сравнить с известным. Тогда методика упрощается.
И вот долгожданные датчики пришли!!!

Видно, что датчкики на 5 вольт и 3 вольта, первая буква говорит о рабочем напряжении А-5 вольт, В-3 вольта, вторая © о том что они градиент компенсированные, то есть на них приклеена черная алюминиевая «втулочка» с нормированными размерами и датчики под нее откалиброваны. (когда я распилил ее виден датчик, без какой либо маркировки, дальше пилить я не стал, так как точно лишился бы защитного стёклышка).


Таким образом, датчиков много, но у них рабочие напряжения разные, а у ардуинки нано, 5 вольт на цифровых линиях. Можно было пробовать использовать делители, или преобразователи уровней, или просто поставить ограничивающие резисторы на 7,5 кОм, на цифровые линии SDA и SCL и запитать датчик от 3,3 вольт взятых с ардуино нано. Я выбрал последний вариант.
Скачал первую попавшуюся библиотеку для такого рода датчиков на гитхабе, подключил, и все заработало без танцев с бубном). Всегда бы так. Библиотеку и мой тестовый скетч я прикреплю ниже.
Теперь о методике сравнения полей зрения датчиков (или углов обзора, не знаю как писать правильно, пишу и так и так))), мне же надо было узнать, что за датчики я купил (BCD). Скажу сразу, что методика может непростая, но эксклюзивная.
Вот что нам для это понадобится.

Берем часть принтера (какой был), подставку для штатива (дно которой заботливо выкрашено черной краской для точного измерения, а вместо «палки» штатива вкручен болт с просверленным отверстием, 4,5мм), керамический нагреватель от паяльника (вставляется в болт) и подключаем его к лабораторному блоку питания выставляя мощность примерно ватт 10-15 (конечно я выставлял напряжение, просто его величина непринципиальна), главное чтобы подставка для штатива нагревалась, но не сильно и через какое то время наступило равновесие с охлаждением (естественным) и температура была близка к постоянной
К шаговику принтера подключаем драйвер с ардуинкой (из другого проекта, чтобы было быстрее, но так как проект уже смонтирован на стенде часть его видна на фото и все выглядит страшно). Думаю, никто повторять это не будет, поэтому красотой можно пренебречь.
Подставка для штатива (массивная черная железка в которую вставлен нагреватель) закреплена в штативе на одной оси с датчиком угол обзора которого измеряется. Сам датчик закреплен на каретке принтера на макетной плате вместе с ардуинкой нано, которая посылает информацию в последовательный порт компьютера. Каретка принтера едет по направляющей за счет родного шагового двигателя, скорость которого регулируется.(для этого и понадобился драйвер шаговика с ардуинкой из другого проекта). Рядом стоит волшебная бутыль с цифрами 6,86 (интересно, есть кто в теме, что там внутри; ) ).

Отодвигаем датчик (каретку) на максимальное расстояние (около 20 сантиметров) включаем питание, открываем ком порт и видим на нем данные по температуре линейки (которой я закрываю датчик до его движения, чтобы показывал «комнатную» температуру и на него не влияла нагретая железка), запускаю шаговик привода каретки, убираю линейку ( хочется видео, но уверен что повторения не будет, а поржать и по фоткам можно). При приближении к круглой плоской железяке, которая хорошо нагрета, измеряемая датчиком температура начинает расти (за счет увеличения площади железки попадаемой в поле зрения датчика) и достигает максимума при заходе всей детали в поле зрения. Методика сложная, в принципе просто сравнить углы обзора можно было и без движения просто на одинаковом расстоянии, но эта реализация могла помочь определить реальное поле зрения датчика (но я плюнул на это когда датчики пришли и я увидел качество их изготовления и лазерную маркировку, скажем так, я поверил что они оригинальные, а бельгийской конторе мелексис, все таки доверие есть).

Вот результаты измерений:

По оси абсцисс (Х) отложено количество измерений температуры (можно пересчитать на пройденное расстояние к нагретой плоскости, но так как дальнейших расчетов я не проводил, решил оставить количество измерений), по оси ординат (У) измеренное датчиками значение температуры. Каждая кривая соответствует одному датчику (в подписях к кривым указаны последние цифры маркировки). Видно что температура нагретой «железки» изменяется при смене датчиков, но для нашего измерения это нормально, не поверка же).
Проверка точности, чуть менее заморочена, но все же непроста, так как термометр измеряет температуру со значения 32 или 34 градуса. Вот что я придумал, в пластиковую емкость на 0,5 литра наливается горячая вода, градусов так 60, кладется моя черная железка, плоскостью вверх, подливается вода, чтобы уровень был на уровне измеряемой плоскости.
Остается только ждать, пока вода нагреет железку и начнет плавно остывать. При остывании до 40 градусов, включается медицинский термометр и начинается съем показаний длительностью одна секунда. Так как смена датчика занимает некоторое время, а медицинский термометр показывает максимальную температуру, то перед каждым датчиком, термометр доставался из воды и выключался-включался. Для того, чтобы сравнивать каждый раз с реальным значением температуры воды. Ничего не могу сказать о реальной точности этой реализации, но все датчики легко вписались в заявленную погрешность +-0,5 градуса. По результатам усредненным за 1 секунду (для датчиков запитанных от 3,3 вольт для расчета точной температуры вычитал из показаний 0,16 градуса (график 24 в даташите 2015 года Rev 009) так как по данным из даташита в связи с тем, что датчики откалиброваны на 3,0 вольта, и плывут на 0,6градуса на вольт).
Ссылка на библиотеку от адафрут и тестовый скетч drive.google.com/file/d/0B8TqTRtqyboHbGxyTUVSbGZZNGM/view?usp=sharing
Вот в принципе и все измерения. Не судите строго.
Выводы:
1) Лично я считаю, что датчики оригинальные, так как есть лазерная маркировка, выводы позолочены (на золото не проверял, но покрытие очень похоже), качество изготовления на высоте.
2) Угол обзора моих датчиков 35 градусов. Это не то что я хотел, но так как у меня на тестировании был один 10 градусный датчик, меня все устроило. Датчик уже трудится в моем проекте.
3) Точность температуры входит в пределы указанной производителем, причем при моем способе измерения.
P.S. Если обзор понравился, можно и плюс обзору поставить)
Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Тепловизор своими руками с датчиками MLX90614

13 августа 2016

Купить

MLX90614 – это инфракрасный термометр в корпусе TO-39 для бесконтактного измерения температуры.
Датчики измеряют две температуры: температуру объекта и температуру окружающей среды. Измерение температуры объекта происходит бесконтактным способом, а температура среды измеряется на кристалле датчика.
Температура объекта измеряется в диапазоне от -70 до 380 градусов с 17-битным разрешением посредством считывания инфракрасного излучения, исходящего от него. Такая точность позволяет датчику различать температуру между 25°С и 25.02°С.

В корпусе объединены ИК детектор (MLX81101) и микросхема обработки сигнала (MLX90302). Благодаря применению малошумящего усилителя, 17-битного АЦП и мощного DSP процессора датчики имеют высокую точность и разрешение. Результатом измерений является усредненная температура всех объектов, попадающих в рабочую область датчика. Точность стандартных моделей составляет -0.5°С, а точность моделей для медицинского применения (MLX90614ESF-DCI) доходит от 0.2°С. Следует учитывать, что данная точность может быть достигнута только в том случае, если датчик находится в состоянии термического равновесия. На его изменение могут влиять находящиеся рядом горячие или холодные объекты.

ИК датчики MLX90614 калиброваны на заводе-изготовителе с цифровым ШИМ и SMBus выходом в диапазоне от -40 до 125°С для температуры окружающей среды и в диапазоне -70…380°С для измеряемых объектов.

Датчики MLX90614 поддерживают два интерфейса, однако достаточно иметь один, чтобы получить доступ к другому. Первичное подключение к ИК датчику происходит по 2-проводному SMBus интерфейсу, очень простому и близкому к I2С. Если он уже настроен, то позже можно сконфигурировать датчик на ШИМ выход. Два выходных сигнала — SDA и SCL – передают данные и сигнал синхронизации.

Каждый датчик имеет I2C адрес по умолчанию 0x5A, но очень может быть изменен, это является одним из главных преимуществ датчика. Посредством конфигурации адреса можно добавлять до 127 датчиков к одной шине и получать широкую температурную карту.

ШИМ выход конфигурируется поверх SMBus, его тяжело использовать с микроконтроллером, но он очень удобен для использования датчика для прямого управления реле или другим устройством срабатывания. ШИМ сигнал может быть легко настроен на любой требуемый диапазон посредством изменения содержания двух EEPROM ячеек. Это не повлияет на заводскую калибровку датчика. ШИМ выход также может быть настроен как термореле в приложниях, где датчик используется как термостат или сигнализатор пороговой температуры. Пороги срабатывания настраиваются пользоватетелем программным методом.

Датчики выпускаются в нескольких модификациях, с индексом DCI или BCI. Оба датчика имеют входное напряжение 3В, совместимое с батарейным питанием. Индекс I обозначает тип модификацю корпуса, который имеет насадку для обеспечения узкого поля зрения в 5°.
Помимо датчика и микросхемы обработки сигнала в корпусе расположен оптический фильтр, который отрезает видимый и близкий к инфракрасному излучению поток. Такой фильтр обеспечивает нечувствительность датчика к солнечному свету и внешней засветке. Полоса пропускания фильтра составляет 5.5…14 мкм.
Датчики MLX90614 выпускаются в 4-выводном ТО-39 корпусе, два для питания и два для SMBus интерфейса.

Маленький «зубец» в нижней части корпуса позволяет быстро определить распиновку ног.

Особенности и премущества

—малые размеры, небольшая стоимость
—легкость интеграции
—заводская калибровка в широком температурном диапазоне: -40…125°С для датчика и -70…380°С для измеряемого объекта
—высокая точность 0.5°С в широком температурном диапазоне (0…50°С)
—высокоточная (медицинская) калибровка
—разрешение измерений 0.02°С
—SMBus совместимый интерфейс
—ШИМ выход для получения непрерывных результатов измерений
—модели с напряжением питания 3 и 5 В
—модели с одной и двумя зонами (датчиками)
—простая адаптация для приложений на 8-16В
—режим пониженного энергопотребления для экономии питания
—различные модификации корпуса для специализированного применения

Возможные сферы применения

—прецизионные бесконтактные измерения температуры
—датчик температурного комфорта для мобильных систем кондиционирования
—температурный датчик для бытовых и промышленных систем кондиционирования
—предотвращение запотевания лобового стекла
—детектирование угла мертвой волны
—промышленный температурный датчик движущихся объектов
—термоконтроль в принтерах и копировательных аппаратах
—бытовые приборы с температурным контролем
—мониторинг скота в животноводстве
—детектирование перемещений
—медицинское оборудование
—температурный контроль нескольких зон – возможен опрос до 127 датчиков через 2-проводной интерфейс
—термореле и сигнализации
—измерения температуры человеческого тела

Примеры подключения датчика

Подключение к SMBus шине Подключение SMBus + ШИМ
Подключение к ШИМ контроллеру

Система обозначений

MLX90614 E SF D C I
1 2 3 4 5 6
1. Серия
2. Температурный диапазон:
Е – -40…85°С
К – -40…125°С
3. Тип корпуса: SF – ТО-39
4. Напряжение питания:
А – 5 В
В – 3 В
D – 3 В с медиц. точностью
5. Количество зон:
А – одна
В – две
С – одна с градиентной компенсацией
6. Модификация корпуса:
A – стандартный корпус
I – с насадкой для обеспечения узкого поля зрения в 5°

Применение пирометрического датчика MLX90614 с интерфейсом I2C


Пирометр, он же бесконтактный или дистанционный термометр, можно рассматривать как простейший тепловизор всего с одним пикселем. Подобно тепловизору, он ничего не излучает (если в нём есть примитивный лазерный «прицел», он не имеет отношения к датчику, в служит лишь для удобства), а принимает длинноволновое инфракрасное излучение, исходящее от всех тел, нагретых до температуры выше абсолютного нуля (а других и не бывает). Этим длинноволновое ИК-излучение отличается от коротковолнового, применяемого в оптопарах, пультах ДУ, для приёма которого подойдут и более простые датчики — фотодиоды. Наиболее массовыми, а значит — доступными по цене, являются пирометры, предлагаемые в качестве замены медицинских термометров. Они имеются в продаже во многих аптеках. Но такой прибор — вещь в себе, из которой невозможно вытащить данные во внешнее устройство для дальнейшей обработки.
Совсем другое дело — модуль MLX90614 с интерфейсом I2C. Вы можете подключить его к Arduino, Raspberry Pi, любым другим платформам, если сможете обеспечить программную поддержку. Но удобнее всего подключать его к Arduino, так для этой платформы есть готовая библиотека фирмы Adafruit, обеспечивающая поддержку данного модуля.
MLX90614 — это устройство «два в одном»: помимо пирометрического датчика, он содержит датчик температуры наружного воздуха. Работают они независимо друг от друга. Диапазон измерения температур пирометрическим датчиком — от -70 до +380 °C, датчиком температуры воздуха — от -40 до +125 °C.
Автор Instructables под ником Michal Choma написал простой скетч для Arduino, который совместно с упомянутой выше библиотекой позволяет проверить датчик. Текст скетча:
#include <Wire.h> #include <Adafruit_MLX90614.h> mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); mlx.begin(); } void loop() { Serial.println(«Temperature from MLX90614:»); Serial.print(«Ambient: «); Serial.print(mlx.readAmbientTempC()); Serial.println(» °C»); Serial.print(«Contactless: «); Serial.print(mlx.readObjectTempC()); Serial.println(» °C»); Serial.println(); delay(1000); }

Шины питания модуля (плюс и общий провод) мастер подключает параллельно соответствующим шинам Arduino. Питать датчик можно напряжением как 3,3, так и 5 В. Линию SDA (данные) шины I2C мастер подключает к выводу A4 Arduino, линию SCL (тактовые импульсы) — к выводу A5. На схеме это выглядит так:

А в реале — так:

В упомянутом выше пирометре из аптеки есть специальная оптика, пропускающая длинноволновые ИК-лучи. Она позволяет фокусироваться на предметах, расположенных довольно далеко от прибора. Здесь её нет, поэтому приходится подносить датчик к предмету на расстояние около 10 мм.
Мастер испытывает свзяку из схемы, библиотеки и скетча, запустив эмулятор терминала и подключив его к устройству /dev/ttyUSB2 (у вас это устройство может получить другое название в зависимости от ОС и её настроек). Под управлением скетча Arduino считывает данные из модуля, преобразует их в текстовый вид и выводит в порт:

Сначала мастер ничего не делал, а затем приблизил к датчику мороженое. Его температура тут же оказалась измерена пирометрическим датчиком модуля, но датчик температуры окружающей среды в нём же охладиться не успел. Конечно, лучше перед этим опытом направить датчик вбок и подносить мороженое сбоку.
Испытав модуль и убедившись в его работоспособности, можно подумать о его практическом применении. Просто измерять им дистанционно температуру человеческого тела, паяльника или того же мороженого неинтересно — для этого сгодится и пирометр из аптеки. Нужно задействовать именно способность датчика передавать данные во внешние устройства для дальнейшей обработки. Можно, например, сделать робота, «боящегося» слишком холодных или, наоборот, слишком горячих предметов, и уезжающего от них подальше. Любые другие температурные датчики, кроме пирометрического, для этого не годятся из-за инерционности. Или попробуйте сконструировать сенсорную кнопку, реагирующую только на прикосновение пальцем, но не любым другим предметом, в том числе токопроводящим. Но особенно хорош такой модуль для мониторинга температуры вращающихся предметов, сам датчик при этом остаётся неподвижным. Вообразите дрель, автоматически останавливающуюся при перегреве сверла и не дающую его «сжечь». Да много чего ещё можно придумать такого, для чего любые другие температурные датчики не годятся, если напрячь фантазию. Доставка новых самоделок на почту

Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!

*Заполняя форму вы соглашаетесь на обработку персональных данных

MLX90614ESF-BAA-000-TU

MLX90614 — это инфракрасный термометр для бесконтактных измерений температуры. Датчик измеряет температуру объекта бесконтактным способом и температуру окружающей среды на кристалле датчика. В MLX90614 интегрированы ИК-детектор, малошумящий усилитель, 17-разрядный АЦП и мощный блок DSP, что обеспечивает высокую точность и разрешение термометра.
Термометр поставляется с заводской калибровкой и цифровым выходом SMBus с разрешением 0.02 °C. Пользователь может настроить цифровой выход на режим широтно-импульсной модуляции (PWM) для непрерывной передачи измеренной температуры в диапазоне от -20 до 120 °С с выходным разрешением 0.14 °С.
Особенности:
Небольшие размеры и низкая стоимость;
Легко интегрировать;
Заводская калибровка в широком температурном диапазоне:
от -40 до 125 °C для температуры датчика;
от -70 до 380 °C для температуры объекта;
Высокая точность 0.5 °C в широком температурном диапазоне (0… + 50 °C для Ta и To);
Разрешение измерений: 0.02 °C;
Совместимый с SMBus цифровой интерфейс для быстрого считывания температуры и построения сенсорных сетей;
Настраиваемый выход PWM для непрерывного считывания;
Питание: 3 В;
Режим энергосбережения
Корпус TO394

Датчик температуры
Кол-во в упаковке: 55, корпус: TO394

В этом проекте мы создадим цифровой лазерный инфракрасный термометр на основе Ардуино и в распечатанном 3D-корпусе.

Шаг 1. Вступление

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

Инфракрасное излучение — это просто еще один тип излучения, которое существует в электромагнитном спектре. Мы этого не видим, но если бы вы поместили руку рядом с чем-то горячим, например, с плитой, вы бы почувствовали воздействие инфракрасного излучения. Все объекты излучают энергию в виде инфракрасного излучения. Большинство ручных термометров используют линзы для фокусировки света от одного объекта на термобатарею, которая поглощает инфракрасное излучение. Чем больше инфракрасной энергии поглощается, тем больше она нагревается и уровень тепла преобразуется в электрический сигнал, который в конечном итоге преобразуется в показание температуры.

Я работал на трассе на днях, и у меня был компонент, который был очень горячим. Я хотел узнать его температуру, но, поскольку у меня не было инфракрасного термометра под рукой, то было принято решение создать свой собственный. Устройство будет иметь специальный 3D-корпус, который можно распечатать и собрать прямо у себя дома.

Это простой проект, который можно использовать как отличное введение в сенсоры, 3D дизайн или печать, электронику и программирование.

Шаг 2. Необходимые компоненты

Компоненты, необходимые для сборки нашего инфракрасного термометра Ардуино приведены ниже:

  1. Кнопка-переключатель
  2. Резисторы 5 кОм, 200 Ом
  3. 5В лазер
  4. Ардуино Нано
  5. Переключатель Вкл/Выкл
  6. Дисплей OLED 0,96″
  7. Датчик температуры GY-906 или датчик MLX90614 с соответствующими конденсаторами/резисторами
  8. Аккумулятор 9В
  9. 3D-принтер и нить (например, Hatchbox PLA)

Многие компоненты можно приобрести в большинстве интернет-магазинов.

Шаг 3. Инфракрасный датчик температуры GY-906

Я использовал датчик инфракрасного термометра GY-906, который является переходной платой для бесконтактного инфракрасного термометра MLX90614 от Melexis.

По теме: Инфракрасный датчик температуры MLX90614

Выносная плата очень недорогая и ее легко интегрировать, поставляется с подтягивающими резисторами 10К для интерфейса I2C.

Из Википедии: Подтягивающий резистор — резистор, включённый между проводником, по которому распространяется электрический сигнал, и питанием (pull-up resistor — подтягивающий вверх резистор), либо между проводником и землёй (pull-down resistor — подтягивающий вниз резистор).

Подтягивающий резистор нужен, чтобы гарантировать на логическом входе, с которым соединён проводник, высокий (в первом случае) либо низкий (во втором случае) уровень в случаях:

  • проводник не соединён с логическим выходом;
  • присоединённый логический выход находится в высокоимпедансном состоянии;
  • когда разомкнут ключевой элемент на присоединённом логическом выходе, который устроен как открытый вывод ключевого элемента.

GY-906 поставляется с заводской калибровкой в диапазоне от -40 до +125 градусов по Цельсию для температуры датчика и от -70 до 380 градусов по Цельсию для температуры объекта. Точность этого датчика составляет примерно 0,5 градуса Цельсия.

Шаг 4. Электроника

Теперь, когда вы собрали все необходимые компоненты, пришло время начать сборку всего вместе. Я бы порекомендовал сначала подключить все на макете, а затем, как только все заработало, приступить к пайке.

Схема нашего устройства (нажмите на схему для увеличения):

Слева у нас есть наш лазер с токоограничивающим резистором 200 Ом, управляемый от цифрового выхода 5. Также есть стандартная кнопка, которая подключена между 5 В и цифровым входом 2. Есть подтягивающий резистор 5 кОм, чтобы когда переключатель разомкнут, на вход ничего не идет, а вместо этого устанавливается на 0 В.

Справа у нас есть основной выключатель, который соединяет нашу батарею 9 В с выводами VIN и GND на Arduino Nano. Дисплей OLED и инфракрасный датчик температуры GY-906 подключены к 3,3 В, а линии SDA подключены к A4, а SCL к A5. На дисплее и GY-906 уже есть подтягивающие резисторы на линиях I2C.

По теме: Инфракрасный датчик температуры MLX90614

Шаг 5. Программирование

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

  1. Adafruits SSD1306
  2. Adafruits MLX90614

Программа постоянно считывает данные о температуре с MLX90614, но отображается на OLED только при нажатии кнопки триггера. Если нажать на курок, лазер также включается, чтобы помочь определить, какой объект измеряется.

Код для нашего инфракрасного термометра Ардуино ниже:

#include <Wire.h> #include <Adafruit_MLX90614.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // Ширина дисплея, в пикселях #define SCREEN_HEIGHT 64 // Высота дисплея, в пикселях const int Laser_Pin=5; //Laser Pin int buttonState = 0; const int buttonPin = 2; // количество пинов кнопки // Декларация для дисплея SSD1306, подключенного к I2C (выводы SDA, SCL) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); Adafruit_MLX90614 mlx = Adafruit_MLX90614(); void setup() { Serial.begin(9600); Serial.println(«Adafruit MLX90614 test»); pinMode(Laser_Pin,OUTPUT); pinMode(buttonPin, INPUT); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Адрес 0x3D для 128×64 Serial.println(F(«SSD1306 allocation failed»)); for(;;); } display.clearDisplay(); display.setRotation(2); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 35); display.println(«Initializing Temp»); display.display(); delay(250); display.clearDisplay(); mlx.begin(); } void loop() { buttonState = digitalRead(buttonPin); Serial.println(buttonState); Serial.print(«Ambient = «); Serial.print(mlx.readAmbientTempC()); Serial.print(«*C\tObject = «); Serial.print(mlx.readObjectTempC()); Serial.println(«*C»); Serial.print(«Ambient = «); Serial.print(mlx.readAmbientTempF()); Serial.print(«*F\tObject = «); Serial.print(mlx.readObjectTempF()); Serial.println(«*F»); // проверяем, нажата ли кнопка и если это так, то buttonState — HIGH: if (buttonState == HIGH) { // включаем LED (светодиод): digitalWrite(Laser_Pin, HIGH); display.clearDisplay(); display.setTextSize(2); // Размер 2 означает, что каждый пиксель имеет ширину 12 и высоту 16 display.setCursor(25, 10); display.print(mlx.readObjectTempC()); display.setCursor(95, 10); display.print(«C»); display.setTextSize(2); display.setCursor(25, 36); display.print(mlx.readObjectTempF()); display.setCursor(95, 36); display.print(«F»); display.display(); } else { // turn LED off: digitalWrite(Laser_Pin, LOW); display.clearDisplay(); display.setTextSize(2); // Размер 2 означает, что каждый пиксель имеет ширину 12 и высоту 16 display.setCursor(35, 10); display.print(«——«); display.setCursor(105, 10); display.print(«»); display.setTextSize(2); display.setCursor(35, 36); display.print(«——«); display.setCursor(105, 36); display.print(«»); display.display(); } Serial.println(); delay(500); }

Шаг 6. Делаем 3D-корпус

Все создано в Fusion 360. В основании термометра есть место для батареи 9 В, переключателя Вкл/Выкл и спускового механизма (триггера), который представляет собой простую кратковременную кнопку. Крышка основания защелкивается на месте. Есть также пространство для прокладки проводки базовых компонентов в верхней части термометра.

Имеется отверстие для 0,96-дюймового OLED-дисплея и передняя часть на конце термометра для лазера и датчика MLX90614. Как лазер, так и датчик могут быть запрессованы в отверстие. Верхняя часть предназначена для Arduino Nano, и, честно говоря, я действительно недооценил количество проводов, необходимое для подключения в небольшом пространстве.

Все файлы можно скачать по .

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

Теперь, когда у вас есть лазерный инфракрасный термометр, собранный и запрограммированный, пришло время проверить его!

Нажмите кнопку питания и подождите пока загрузится дисплей.

Пирометр своими руками схема

Техника измерений

Главная Статьи, аналитика Техника измерений

Пирометр – это бесконтактный измеритель температуры объектов. Принцип его работы основывается на том, что все тела при нагревании излучают волны в ИК и световом диапазоне, интенсивность этого излучения и регистрирует прибор соотнося с температурой, для которой свойственно это излучение.

Аналогично работают тепловизоры.

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

В бытовых пирометрах (в том числе и в медицинских ИК-термометрах) чаще всего используются радиационные датчики, измеряющие мощность излучения от тела в ИК-диапазоне.

В каких случаях будет полезен пирометр

Ввиду того, что измерение температуры с помощью пирометров происходит очень быстро и без контакта с объектом, то сфер применения таких приборов масса:

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

2. Системы пожаротушения и безопасности (в датчиках возгорания и др.);

3. Строительные технологии (например, измерение теплопотерь);

4. В быту (температура тела, пищи в процессе приготовления);

5. Исследовательские лаборатории и медицинские учреждения;

6. И т.д.

Устройство пирометра и типовые реализации

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

Если задача «поиграться», то можно даже купить специальные модули для смартфонов (например, приставки Seek Thermal, подключаемые через USB-разъем), они сделают из вашего телефона настоящий тепловизор.

Но если вам нужно специфичное устройство, спроектированное с нуля и собранное своими руками, то этот материал для вас.

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

1. PIR-D203S;

2. Ira-e710st1;

3. ФТ-3 (подойдет только для сильно разогретых объектов);

4. IRA-E500;

5. RE200B;

6. И другие.

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

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

Пирометр своими руками

Наиболее точный и универсальный в плане применения способ – реализация пирометра на программируемых микроконтроллерах, таких как Arduino.

Ниже будет рассмотрен пример на датчике MLX90614 (диапазон измерения от -70 до +382 °C) и Arduino Nano.

Все что понадобится:

1. Arduino Nano;

2. MLX90614-BCI (приставка BCI означает исполнение с узконаправленным датчиком);

3. 2 резистора по 4,7 кОм;

4. Дисплей Nokia 5110;

5. Аккумуляторы или батареи питания;

6. Кнопка или выключатель.

Сборка:

1. Прошивается микросхема

2. Датчик подключается к плате через 2 резистора (схема ниже);

3. Подключается дисплей;

4. Батарея.

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

Рис. 1. Схема подключения датчика

Дисплей Nokia так:

  • 7 пин – SCLK;
  • 6 пин – DIN;
  • 5 пин — D/C;
  • 4 пин – CS;
  • 3 пин – RST.

В цепь питания включается выключатель.

Устройство в готовом собранном виде может выглядеть, например, так.

Рис. 2. Устройство в готовом собранном вид

Самый ответственный шаг – прошивка.

Все необходимые файлы (в том числе и драйвера для LCD дисплея от Нокии) можно скачать с открытого проекта на GitHub здесь — https://github.com/cxemnet/Arduino_IR_Temp

В листинге команд для Arduino примечания на английском и русском языках. При необходимости может быть изменена логика работы или используемые выводы платы.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх