Тепловизор на ардуино своими руками

Добавил пользователь Валентин П.
Обновлено: 18.09.2024

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

Отписаться от уведомлений вы всегда сможете в профиле автора.

Статья относится к принтерам:

Хочу поделиться своим опытом работы по моделированию и 3D печати корпуса для самодельного тепловизора на ИК модуле AMG8833 с разрешением массива датчиков 8х8. Вот его некоторые наиболее значимые характеристики:

Диапазон точности измерения:
Диапазон измеряемой температуры:
Диапазон рабочей температуры:
Рабочее напряжение питания:
± 2.5 °C;
0. 80 °C;
0… 80 °C;
3…3.6 В.

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

Сам корпус печатался на 3D принтере Flying Bear Ghost 4s и был сделан около 2-ух месяцев назад, самими наработками я ещё тогда хотел поделиться с вами, но то времени не было, то лень одолевала. Пока все данные не были стерты временем всё-таки решил собрать всё воедино и отобразить в этом посте. Сподвигло меня на данную работу вот эта статья , собственно там можно посмотреть электрическую схему сборки и на которой я останавливаться не буду, поскольку там достаточно подробно всё расписано, единственное хочу обратить ваше внимание – что работать будем по интерфейсу I2C и поэтому комплектующие были подобраны соответствующие. По ходу изучения дела выяснилось, что сама тема стара как динозавр и хвост его растет от сюда и от сюда , с чем всех интересующихся данной темой советую ознакомиться. Для этой работы можно было бы использовать любой из модулей: Teency, Raspberry Pi или Arduino, важна сама суть, а она не изменна, сам решил остаться на ESP8266, он чуть помощнее того же Arduino nano, но всё же послабее Teency, однако ESP8266 будет и существеннее дешевле последнего, в рамках данного проекта, а именно для изготовления тепловизора на модуле AMG8833, вкладывать больше средств чем необходимо считаю не целесообразным. Сам ИК модуль можно сказать самый дешевый из тех, что предоставлены на мировом рынке - в начале 2021 г. он стоил порядка 1800 российских рублей, следующий в ценовой категории MLX90640, у него разрешение уже 32х24, но и цена раз так в 6 выше, на который лишних денег у меня не было, а чтобы пощупать, что такое тепловизор считаю хватит и самого дешевого, хотя признаю хотелось и MLX 😊.

2. Исходные данные

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

- Аккумулятор 3.7v 1000mah 43x25x10mm

- Винты потай 3х20

- Шилд зарядки TZT для Wemos D1 mini

- Wemos D1 mini

- Резистор на 130 кОм

- Переключатель движковый ПД 9-1

- Модуль AMG 8833 работающий по I2C

- Дисплей SPI TFT LCD 240x320 ILI9341 2.8"

- Круглые латунные гайки M3 (Knurl-вставки)

- Пучок тонких разноцветных (для удобства) проводов

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

Латунные гайки всем я думаю уже известны, по крайней мере тем, кто уже связывался с изготовлением пластиковых корпусов, выглядят они так:

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

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

3. Разработка корпуса

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

3D модель корпуса разрабатывался в свободном ПО Blender 3D. Почему именно Blender, потому что для меня он удобен и меня полностью устраивает. Задача стояла уложить весь имеющийся бутерброд как можно компактнее, а также, чтобы на нём были два отверстия под microUSB – для зарядки и возможности прошивки устройства. Вот что в итоге у меня получилось:

Внутренняя компоновка получилась двуярусная: на втором - поместился LCD дисплей, ниже - на пластиковой подставке - остальные комплектующие.

Первый ярус: Второй ярус: Общая высота корпуса в итоге получилась около 23 мм.

4. 3D Печать и покраска составных частей корпуса.

Печатал все детали корпуса на 3D принтере FlyingBear Ghost 4s белым пластиком ABS. Покрашена была только верхняя часть акриловой черной краской после грунтовки, нижняя - просто обработана наждачной бумагой. Вот, что в итоге получилось:

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

Итоговый вариант:

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

В прошивке тоже покопался. Если пройтись по ссылкам, которые я выкладывал в вводной части, то можно заметить, что в основе получения сглаженной картинки на LCD дисплее лежит алгоритм билинейной интерполяции, можно было бы остановиться на выводе данных на дисплей 8х8 пикселей, но мы же хотим для удобства наших глаз расширить видимую область. Была идея использовать алгоритм бикубической интерполяции, но потом от неё отказался, поскольку он требует больших мощностей и, по сути, не даст существенного улучшения в отображении температурной карты. В той прошивке, которая перекочевала от варианта с Teency (ссылка во введении) после финальной интерполяции входных данных исходная матрица преобразуется в массив данных 70х70. При этом картинка при отображении на экране идет с небольшим притормаживанием. Я поступил иначе, переписал саму функцию интерполяции в соответствии со статьей , т.е. по факту нашел коэффициенты в функции F(x,y) для единичного квадрата по четырем известным точкам, так мы получаем её значение внутри и на границах этого квадрата, а дальше размножил её через оператор цикла на остальные 63 квадрата. Полученный код был написан сначала в тестовой программе, которая принимала рандомные значения данных в исходной матрице и создавала отдельный текстовый файл с этой матрицей и данными после интерполяции. Вот частичное отображение вывода программы, зеленным отмечены исходные данные массива 8х8, а то что между ними получено путем билинейной интерполяции.

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

На самом устройстве были перебраны варианты для итоговых матриц со значениями: 35x35, 42x42, 70x70 и оставлен средний вариант как наиболее оптимальный, учитывая мощность микроконтроллера ESP8266 и качества получаемой картинки. В прошивке все варианты присутствуют, только у тех которые не используются - закомментированы соответствующие строки.

Также была изменена функция автоматического масштабирования цветовой шкалы на основе минимальной и максимальной видимой температуры SetTempScale, выведены на экран значения минимальной и максимальной температуры попадающие в область наблюдения (в исходной прошивке что-то выводилось непонятное, полагаю значения АЦП), среднее значение между этой минимальной и максимальной температурой, значения температур соответствующие минимальной и максимальной на температурной шкале.

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

На этой картинке: слева – бутылка минералки с холодильника, справа горячая тарелка с супом:

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

6. Тестирование

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

При тестировании устройства использовал подогреваемый столик своего 3D принтера и термометр у которого датчик вывел на верхнюю поверхность стола. Как показали замеры – точность соответствует действительности с погрешностью порядка 1°C, однако само устройство должно находится на не большом расстоянии от измеряемого объекта – около 15-20 см, при увеличении расстояния погрешность сильно увеличивается, но относительно среднего значения температуры на картинке различимы как более теплые, так и более холодные объекты.

Разработка корпуса для тепловизора на основе ИК модуля AMG8833 и микроконтроллера ESP8266

Годится ли устройство в профессиональной деятельности для поиска, например, нагреваемых smd компонентов, или мест утечки тепла в комнате и т.д. думаю нет, на любительском уровне – да, п.к. игрушкой по правде его тоже назвать нельзя, ведь данные он передает вполне реальные, другое дело матрица модуля имеет низкое разрешение и за счет этого на больших расстояниях картинка получается сильно расплывчатой, математически можно лишь сгладить огрехи аппаратной части, но не убрать полностью, однако если уменьшить расстояние между наблюдаемым объектом и матрицей, то какую-то первичную визуальную информацию получить можно. Само устройство имеет низкое потребление питания, использую его уже где-то два месяца, а заряд уменьшился только на половину, правда пользуюсь редко, помогает контролировать процесс нагревания стола 3D принтера, если вижу, что температура держится в нужном диапазоне, то можно ставить на печать 😊 . Спасибо за внимание.

Ссылка на исходник, прошивку и stl файлы.

Подпишитесь на автора

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

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

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


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

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

Образец изображений карты температуры поверхностей, которые получены с этого тепловизора



Требуемые элементы (цены и ссылки)


MLX90614 — ИК термометр в корпусе TO-39. Даташит PDF.Данные с датчика считываться с помощью шины SMBus либо ШИМ. В данном случае применяется датчик с индексом DCI либо BCI. Питание 3 Вольта. Индекс I указывает на тип форм — фактора, I — с насадкой для создания узкого поля зрения в 5° (смотрите рисунок выше).


Приступаем к сборке нашего тепловизора

  1. Сначала нужно установить плату Arduino в корпус с батарейным отсеком.
  2. С помощью суперклея либо эпоксидного нужно закрепить серводвигатель в пустом пространстве спереди Arduino.
  3. Разместить второй серводвигатель в поворотное устройство и закрепить всю конструкцию на серводвигателе.
  4. Подключите MLX90614 к Arduino. Для этого подсоединяйте Ground к GND, Vin к 3.3V, SDA к pin 4 и SCL к pin 5. Устанавливайте резистор 4.7 кОм от SDA к 3.3V, а второй от SCL к 3.3V. Смотреть схему представленную ниже.


5. Подключайте Laser Card либо лазерную указку. Лазер необходим для того, чтобы можно было видеть, в каком месте в данный момент тепловизор производит сканирование.

6. Затем нужно установить вебкамеру и сориентировать её в точности с инфракрасным датчиком и лазером, чтобы они были направлены в одну точку. Всё, изготовление тепловизора закончено.

Программное обеспечение Arduino

Программное обеспечение для компьютера

ПО для компа написано на JAVA, по этой причине вам будет нужно Java Runtime Environement. ПО работает под Windows, Linux или Mac OSX в 32-bit & 64-bit. Но, если запускаете под Windows 64 бит, то желательно поставить 32-битную версию JAVA.

Тепловизор на платформе Arduino UNO

2016-05-18 в 8:37, admin , рубрики: arduino, arduino uno, diy или сделай сам, БГУИР, ВМСиС, схемотехника, тепловизор

Предисловие

Тепловизор на платформе Arduino UNO - 1

Шел 6-й семестр обучения, перед нами (т.к. над проектом работали 3 человека) стала серьёзная задача — необходимо сделать аппаратный курсовой проект. Было много различных идей: автопилот для автомобиля, прибор ночного видения и др. Но выбор пал на тепловизор, так как он получался не сильно простым и не сильно затратным. Да и кто не мечтал о своем личном тепловизоре? В данной статье мы расскажем о том, как нам удалось собрать тепловизор с довольно неплохими характеристиками в домашних условиях.

Подготовка

Разработка схемы

Тепловизор на платформе Arduino UNO - 2

Для воплощения нашей задумки мы решили остановиться на Arduino UNO. Мы решили выбрать именно её, так как у нас уже был опыт работы с этой платформой и требовалась быстрота сборки устройства. На схеме в качестве подтягивающих резисторов R1 и R2 используются резисторы номиналом 4.7 кОм. В качестве ИК-датчика был выбран MLX90614 bci. В основном из-за того, что у него узкое поле зрения, а также из-за его легкости в эксплуатации. Также датчик достаточно компактный и мало весит, что облегчает работу сервоприводам, которые и так работали с небольшими заеданиями. Для лазера и сервокронштейна были выбраны первые приглянувшиеся, совместимые с arduino, модули. С лазером повезло (да и что могло быть не так с лазером), а сервоприводы, как уже упоминалось, пришли не очень хорошие — плохо реагировали на короткие передвижения, часто заедали. Пришлось раскручивать и смазывать, что немного улучшило ситуацию.

Сборка тепловизора

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

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

Тепловизор на платформе Arduino UNO - 3

Так выглядело наше устройство на пути к полной готовности:

Тепловизор на платформе Arduino UNO - 4

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

Тепловизор на платформе Arduino UNO - 5

Работа с тепловизором

Самым простым способом управлять устройством является управление с компьютера. Питание также осуществляется от компьютера. Датчик посылает данные измерений в com-порт. Поэтому была написана программа для подачи команд устройству и считывания данных с датчика.
Алгоритм работы тепловизора довольно прост:

Интерфейс программы

Тепловизор на платформе Arduino UNO - 6

Как можно видеть на скриншоте, интерфейс программы выполнен в минималистичном стиле — только всё самое необходимое для работы. Названия кнопок говорят сами за себя. При нажатии на определённый пиксель тепловой карты будет выведена соответствующая ему температура. Цвета для температуры выбираются относительно текущих результатов сканирования, т.е. самая высокая температура будет обозначена красным, а самая низкая — синим, пусть даже эти значения будут отличаться на 2-3 градуса.
Как можно проверить работоспособность тепловизора? Конечно же просканировав одного из его создателей! Как можно видеть из представленной выше тепловой карты, самым горячим местом является лоб – аж 33,42 ºС. Существуют определенные проблемы с “дальнобойностью” датчика – на расстоянии более чем в 50 см результаты имеют довольно большую погрешность. Но на близком расстоянии показатели температуры определяются очень точно.

Ниже можно увидеть ещё один пример работы устройства:

Тепловизор на платформе Arduino UNO - 7

Как показывает сканирование, температура воды внутри стакана находится на уровне 38 ºС.

Тепловизор на платформе Arduino UNO - 8

А вот и видео с демонстрацией работы тепловизора:

Для интересующихся представлены ссылки на исходный код прошивки и приложение:

Итоги

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

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

В нашем проекте используется инфракрасный термометр MLX90614 в специальном корпусе TO-39

Внешний вид датчика MLX90614

Датчик MLX90614

Распиновка датчика MLX90614

Распиновка датчика MLX90614

Схема тепловизора своими руками на Arduino

Схема тепловизора своими руками

  • платы Arduino– (все равно какая модель );
  • двух сервоприводов;
  • инфракрасного датчика;
  • лазерного модуля.

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

mlx90614-results

Требуемое программное обеспечение

Заливка программы на Arduino

Далее качаем основной скетч и также заливаем его на плату. На этом настройки программы на стороне Arduino закончены.

Для работы вам еще понадобиться библиотека I2CMaster

Настройка программы на ПК

Сама программа для ПК написана на языка программирования JAVA, поэтому для ее работы вам понадобиться Ява виртуальная машина – JVM. Ее можно скачать с официального сайте. После установки вы можете запустить программу тепловизора через jar файл.

Читайте также: