Датчик температуры для человека ардуино

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Инфракрасный термометр на Arduino и MLX90614 своими руками

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

В этом проекте мы создадим бесконтактный ИК термометр используя Arduino и инфракрасный температурный датчик. Эта конструкция будет создана с использованием бесконтактного датчика температуры под названием MLX90614; следовательно, его можно использовать не только для измерения температуры тела, но также для измерения температуры компонентов, температуры поверхности, в системах вентиляции с подогревом и многого другого. Конечно, эти тепловые пистолеты легко доступны на рынке от известных производителей, таких как Fluke, Flir и т. д. но они довольно дорогие и, кроме того, интереснее, создавать свои собственные гаджеты.

Перед тем как приступить к проекту, важно знать, как работает датчик MLX90614. На рынке доступно много датчиков температуры, и мы широко используем датчики DHT11 и LM35 для многих применений, где необходимо измерять температуру воздуха. Но здесь для теплового пистолета нам нужен датчик, который мог бы измерять температуру конкретного объекта (не окружающей среды) без непосредственного контакта с объектом. Для этого у нас есть бесконтактные датчики температуры, которые используют лазер или ИК для расчета температуры объекта. MLX90614 – один из таких датчиков, который использует ИК-энергию для определения температуры объекта.

Датчик MLX90614 компанией Melexis Microelectronics, в него встроено два устройства: одно – инфракрасный термобатарея (датчик), а другое – устройство обработки сигналов DSP (вычислительный модуль). Он работает на основе закона Стефана-Больцмана, который гласит, что все объекты излучают инфракрасную энергию, и интенсивность этой энергии будет прямо пропорциональна температуре этого объекта. Чувствительный элемент в датчике измеряет, сколько ИК-энергии излучается целевым объектом, и вычислительный модуль преобразует ее в значение температуры с использованием встроенного 17-разрядного АЦП и выводит данные через протокол связи I2C. Датчик измеряет как температуру объекта, так и температуру окружающей среды для калибровки значения температуры объекта. Особенности датчика MLX90614 следующие.

  • Рабочее напряжение: от 3,6 В до 5 В
  • Диапазон температур объекта: от -70° C до 382,2° C
  • Диапазон температур окружающей среды: от -40° C до 125° C
  • Разрешение / Точность: 0,02° C

Одним из вопросов, на который технические характеристики не дают прямого ответа, является измерение расстояния между датчиком и объектом. Значение этого расстояния задается термином Поле зрения (FOV), для нашего датчика поле зрения составляет около 80°.

Диапазон чувствительности должен быть в конической форме от точки датчика, как показано выше. Таким образом, по мере удаления от измерительного объекта зона чувствительности увеличивается в два раза. То есть на каждый 1 см мы удаляемся от объекта, зона чувствительности увеличивается на 2 см. В нашем тепловом пистолете мы поместили лазерный диод на верхнюю часть датчика, чтобы знать, куда в данный момент направлена чувствительная область датчика. В ходе тестов обнаружено, что значения были достоверными, если пистолет удален на расстоянии 2 см от объекта, и по мере удаления точность снижается.

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

Вся схема питается от батареи 9 В через кнопку. При нажатии кнопки батарея 9 В подключается к выводу RAW Arduino, который затем регулируется до 5 В с помощью встроенного регулятора напряжения. Эти 5 В затем используется для питания модуля OLED, датчика и лазерного диода.

Для упрощения конструирования корпуса термометра можно воспользоваться 3D моделью (https://www.thingiverse.com/thing:3706609).

Программа для Arduino должна прочитать значение температуры с MLX90614 и отобразить его на OLED-дисплее. К счастью для нас, программа будет очень простой, поскольку Adafruit предоставила нам библиотеку (https://github.com/sparkfun/SparkFun_MLX90614_Arduino_Library) для удобного чтения данных с MLX90614. Полный код инфракрасного термометра на Arduino представлен далее.

Как только код Arduino будет готов, мы можем загрузить его в наше оборудование с помощью внешнего программатора TTL или платы FTDI, поскольку у Arduino pro mini нет встроенного программатора. Затем просто нажмите кнопку, чтобы активировать тепловую пушку, и вы заметите, что лазерный луч падает на объект, а температура объекта отображается на OLED-экране, как показано на следующем изображении.

Источник

Создаем беспроводной термометр на Arduino

Узнайте, как использовать RF модуль 433 МГц совместно с ATMega328P-PU. В данной статье мы соберем схему из датчика DHT11 и радиочастотного передатчика. А также соберем приемное устройство с радиоприемником 433 МГц и LCD дисплеем.

Что нам потребуется

  • компьютер с установленной Arduino IDE (я использую версию 1.6.5);
  • библиотека VirtualWire (ссылка ниже);
  • Arduino Mega;
  • ATMega328P;
  • программатор AVR MKII ISP;
  • LCD дисплей;
  • датчик температуры и относительной влажности воздуха DHT11;
  • радиочастотные модули 433 МГц;
  • перемычки;
  • макетная плата;
  • компоненты из перечня элементов, приведенного ниже.

Введение

В данной статье я покажу вам, как собрать устройство, которое измеряет температуру и относительную влажность воздуха и посылает измеренные значения с помощью стандартного радиочастотного модуля 433 МГц. Датчик температуры и влажности, используемый в устройстве, – это DHT11.

Существует множество способов передачи небольшого объема данных с помощью Arduino или контроллеров ATMega. Один из них использует уже готовую библиотеку, подобную RCSwitch, Radiohead или VirtualWire. Кроме того, можно отправить необработанные данные с помощью встроенного в микроконтроллер модуля UART. Но использовать встроенный модуль UART не рекомендуется, так как приемник будет собирать и все помехи, и микроконтроллер будет работать не так, как предполагалось. В данной статье для передачи и приема данных я использую библиотеку VirtualWire. Эта библиотека работает с Arduino IDE 1.6.2 и 1.6.5.

Модуль передатчика 433 МГц, когда не передает данные, всё равно излучает радиочастотные колебания и передает шум. Он также может создавать помехи другим радиочастотным устройствам. Чтобы не допустить этого, я включаю его, когда необходимо передать данные, и выключаю его, когда передача закончена.

Аппаратная часть

Нам необходимы две структурные схемы. Одна для передающего устройства, вторая для приемного.

Передатчик

  • способ прошивки микроконтроллера → ISP;
  • датчик для измерения температуры и влажности → DHT11;
  • микроконтроллер для обработки данных → ATMega32p;
  • способ беспроводной передачи данных → радиочастотный модуль 433 МГц.

Приемник

  • способ приема радиосигнала → радиочастотный модуль 433 МГц;
  • способ обработки принятых данных → Arduino Mega;
  • способ отображения температуры и влажности → 16×2 LCD.

Принципиальные схемы

Передатчик

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

Приемник

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

Перечень элементов

Передатчик

Приемник

Программа

Программа передатчика

Сперва рассмотрим программу передающей части:

Для передачи влажности и температуры в одном сообщении я соединяю их вместе. Сначала данные считываются в переменную как целые числа, потом целые числа преобразовываются в массив символов, а затем они соединяются друг с другом. На приемной стороне данные будут разделены на отдельные символы. Делая это, я ограничиваю себя двумя цифрами градусов. Если датчик находится в среде с температурой менее 10°C, я буду получать на дисплее символы мусора. Например, если температура составляет 20°C, а влажность – 45%, то будет передаваться сообщение 2045, и всё хорошо. Если температура равна 9°C, а влажность – 78%, то передастся сообщение 978x, где «x» – случайный символ. Поэтому, если вы будете собирать данный беспроводной термометр, я советую вам изменить программу для передачи правильных данных, когда температура будет меньше 10°C.

Программа приемника

Интересный способ использования библиотеки LiquidCrystal – это создание пользовательских символов. С помощью createChar я создал символ градусов. Таким же способом вы можете создать и свои собственные символы. Чтобы создать пользовательский символ или значок, вам необходимо объявить его, как массив из восьми байт, и «нарисовать», какие пиксели будут включены (1 – включен, 0 – выключен).

В функции setup() вы создаете его с помощью createChar . createChar принимает два аргумента: номер позиции для хранения символа и массив байт, в котором определено, какие пиксели будут отображаться. В нашем случае это lcd.createChar(1, degreesymbol) . Затем символ выводится на LCD с помощью функции lcd.write .

Заключение

В данной статье я использовал датчик температуры и влажности DHT11. Температура и влажность были преобразованы в массив символов, а затем переданы с помощью передатчика 433 МГц. На приемной стороне массив символов был разделен на пары и выведен на LCD. Для получения символа градусов я использовал функцию createChar библиотеки LiquidCrystal.

Загрузки

  • Библиотека VirtualWire версия 1.6 (библиотека для Arduino для организации связи через радиомодули с использованием амплитудной манипуляции).
  • Описание библиотеки VirtualWire.

Фото и видео

Передатчик

Приемник

Видео

Источник

Бесконтактный инфракрасный термометр на Arduino и датчике температуры MLX90614

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

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

Необходимые компоненты

  1. Плата Arduino Pro Mini (купить на AliExpress), но можно использовать и Arduino Nano (купить на AliExpress) с небольшими изменениями в проекте.
  2. Инфракрасный датчик температуры (Infrared Temperature Sensor) MLX90614 (купить на AliExpress).
  3. OLED дисплей SSD1306 (купить на AliExpress).
  4. Лазерный диод (купить на AliExpress).
  5. Батарейка 9V.
  6. Кнопка.
  7. Зажим для батарейки.
  8. Соединительные провода.

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

В настоящее время в электронных схемах широкое применение находят датчики температуры DHT11 и LM35. На нашем сайте вы можете посмотреть следующие примеры использования данных датчиков:

Но в нашем проекте нам нужен совершенно иной датчик температуры, который мог бы определять температуру конкретного объекта (не температуру окружающей среды вокруг него) без непосредственного контакта с ним. Для этой цели могут быть использованы бесконтактные датчики температуры, которые используют лазерное или инфракрасное излучение для определения температуры объекта. К числу подобных датчиков относится и MLX90614, использующий инфракрасную энергию для определения температуры объекта. Внешний вид данного датчика показан на следующем рисунке.

Датчик MLX90614 производится компанией Melexis Microelectronics Integrated system. В своем составе он содержит два устройства: инфракрасный термоэлектрический детектор (обнаруживающий элемент) и вычислительное устройство, построенное на принципах цифровой обработки сигналов. Принцип работы датчика основан на законе Стефана – Больцмана, который говорит о том, что каждое нагретое тело излучает инфракрасную энергию, интенсивность которой прямо пропорционально температуре этого тела. Обнаруживающий элемент датчика измеряет какое количество энергии инфракрасной энергии излучается выбранным объектом, а вычислительный блок конвертирует это значение энергии в значение температуры используя встроенный 17-битный АЦП (аналого-цифровой преобразователь). На выход датчика информация о температуре передается по интерфейсу I2C.

Краткие технические характеристики датчика температуры MLX90614:

  • рабочее напряжение: от 3.6V до 5V;
  • измеряемый диапазон температур: от -70°C до 382.2°C;
  • температура окружающей среды: от -40°C до 125°C;
  • точность измерения температуры: 0.02°C.

Более полную информацию о датчике MLX90614 вы можете посмотреть в даташите на него.

Какой должна быть дистанция между датчиком и объектом?

К сожалению, ответ на этот вопрос не содержится напрямую в даташите на датчик MLX90614. Для нашего экземпляра датчика мы экспериментальным путем установили, что его рабочая дистанция определяется его полем зрения, которое для нашего датчика составляет примерно 80°.

Логично предположить, что диапазон работы датчика представляет собой конус с вершиной в датчике как показано на приведенном рисунке. Соответственно, чем дальше мы удаляемся от измеряемого объекта, тем больше увеличивается площадь зоны, в которой он может производить измерения. То есть при удалении от объекта на 1 см радиус зоны работы датчика увеличивается примерно на 2 см. В нашем проекте бесконтактного термометра мы разместили лазерный диод сверху над датчиком температуры MLX90614 чтобы правильно определять в какой точке объекта мы будем измерять температуру. Экспериментально мы обнаружили, что максимальная точность работы датчика обеспечивается на расстояниях до 2 см от измеряемого объекта, а с увеличением расстояния свыше 2 см точность работы датчика начинает падать.

Схема проекта

Схема бесконтактного термометра на основе платы Arduino и датчике температуры MLX90614 представлена на следующем рисунке.

Схема была нарисована с использованием программы Fritzing. Поскольку эта программа не поддерживает датчик MLX90614, мы вместо него на схеме использовали соответствующим образом подписанный прямоугольник, также на схеме мы использовали светодиод красного цвета вместо лазерного диода. Вся схема запитывается от батарейки 9V через кнопку. При нажатии кнопки контакт батарейки подключается к контакту RAW платы Arduino. Это напряжение 9V с помощью встроенного регулятора напряжения платы Arduino преобразуется в стабилизированное напряжение 5V, которое используется для питания OLED дисплея, датчика температуры и лазерного диода.

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

Внешний вид конструкции нашего бесконтактного термометра показан на следующем рисунке.

Если вы раньше не работали с OLED дисплеями, то на нашем сайте вы можете прочитать статью о подключении OLED дисплея SSD1306 к плате Arduino. Приведенную схему можно усовершенствовать, используя отдельную схему для управления лазерным диодом, чтобы сделать лазерный луч более мощным.

Дизайн корпуса для термометра

Мы в нашем проекте для изготовления корпуса нашего бесконтактного термометра использовали 3D принтер. Корпус термометра состоит из двух частей. Верхняя часть термометра содержит все его основные компоненты: плату Arduino, OLED дисплей, датчик температуры и лазерный диод. Нижняя часть термометра представляет собой ручку, в которой размещены батарейка и кнопка включения термометра. Внешний вид корпуса термометра показан на следующем рисунке.

Файлы дизайна для печати компонентов корпуса термометра на 3D принтере вы можете скачать по следующей ссылке: Thermal Gun 3D Model.

3D печать компонентов термометра

Представленная 3D модель затем была сохранена в виде STL файлов и конвертирована в G-code (G-код) с помощью программного обеспечения Cura. Для печати компонентов термометра мы использовали 3D принтер Tevo tarantula. После печати компонентов мы скрепили их вместе с помощью шурупов. Если ваш принтер поддерживает возможность печати корпуса термометра целиком, то тогда ваша задача упрощается.

Напечатанные нами элементы корпуса термометра с размещенными внутри электронными компонентами показаны на следующих рисунках.

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

Объяснение программы для Arduino

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

Программа для нашего бесконтактного термометра должна считывать значение температуры с датчика MLX90614 и отображать ее на экране OLED дисплея. К счастью для нас программа будет достаточно простой благодаря специальной библиотеке для работы с датчиком MLX90614, разработанной компанией Adafruit. Эту библиотеку можно скачать по следующей ссылке — Arduino MLX90614 Library.

По этой ссылке вы скачаете библиотеку в виде ZIP архива. После этого вы можете добавить ее в Arduino IDE с помощью команды Sketch -> Include Library -> Add .ZIP Library. Также убедитесь в том, что у вас уже есть библиотеки, необходимые для работы с OLED дисплеем, ссылки для их скачивания есть в этой статье.

Первым делом в программе мы должны подключить необходимые заголовочные файлы. В нашей программе мы будем использовать встроенную в Arduino IDE библиотеку Wire для задействования возможностей протокола I2C, библиотека SparkFunML90614 (ее мы скачали ранее) используется для работы с датчиком температуры. Библиотеки SPI, GFX и SSD1306 используются для взаимодействия по 4-х проводному интерфейсу SPI с модулем OLED дисплея.

Источник

Adblock
detector