Главная » Arduino
Призовой фонд
на январь 2017 г.
1. 5000 руб.
Академия Благородных Металлов
2. 1000 руб.
Radio-Sale
3. Регулируемый паяльник 60 Вт
Паяльник
4. 600 руб.
От пользователей
5. Тестер компонентов LCR-T4
Паяльник

Недорогой тепловизор своими руками

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

Тепловизор

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

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

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

Сканирование монитора

Сканирование двигателя авто

Список используемых элементов:

Модуль датчика температуры MLX90614ESF-DCI или MLX90614ESF-BCI:
Поиск MLX90614ESF на Aliexpress
futureelectronics.com ~47$ (DCI версия) или digikey.com ~37$ (BCI версия)

Arduino UNO (или аналог) - 5$
Корпус с батарейным отсеком для Arduino - 6.5$

Серво двигатель (средний) - 11$
Серво двигатель (большой) - 13$

Модуль Laser Card - 8$ (можно заменить лазерной указкой):
Поиск модуля на AliExpress, модуль на Sparkfun

Вебкамера Microsoft LifeCam VX-700

Поворотное устройство (2 координаты) Lynxmotion Pan and Tilt Kit:
Aliexpress 5-7$, Robotshop.com 9.95$, lynxmotion.com 9.95$ 

Датчик MLX90614

MLX90614

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

Распиновка MLX90614

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

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

Скачать скетч для конфигурирования датчика. После заливки данного скетча в Arduino, откройте Serial Monitor и нажмите клавишу. Программа изменит настройки EEPROM датчика. Это требуется сделать только один раз. После того, как увидите надпись "Finish" отсоедините Arduino от ПК и присоедините его снова.

Скачать главный рабочий скетч Arduino.

Дополнительно, понадобится библиотека I2CMaster.

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

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

Скачать все одним архивом (7 МБайт).

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Uno
1 Поиск в FivelВ блокнот
Датчик температуры
MLX90614
1 MLX90614ESF-DCI или MLX90614ESF-BCIПоиск в FivelВ блокнот
Резистор
4.7 кОм
2 Поиск в FivelВ блокнот
Серво двигательСредний1 Поиск в FivelВ блокнот
Серво двигательБольшой1 Поиск в FivelВ блокнот
Модуль Laser Card1 Поиск в FivelВ блокнот
Вебкамера1 Поиск в FivelВ блокнот
Поворотное устройство (2 координаты)1 Pan and TiltПоиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Теги:

Колтыков А.В. Опубликована: 2011 г. 0 2
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (51) | Я собрал (0) | Подписаться

0
andry #
Проект интересный, только вот корпуса, поворотники и т.п. можно изготовить самому, а вот где эти датчики искать у нас?
Ответить
0
Black27512 #
В качестве датчика можно купить пирометр и вытягивать из него инфу о температуре...
Ответить
0
Роман #
Не вижу проблемы покупать за рубежом. Во первых есть eBay, во вторых многие зарубежные интернет-магазины доставляют в Россию, в третьих есть посредники. Я последние 2 года покупаю только за рубежом. Даже с доставкой и посредниками выходит все в 2 раза дешевле чем у нас. Про ассортимент там и здесь промолчу.
Ответить
0
D #
Как вернуть оригинальный EERPOM датчика?
Ответить
0
Neit #
Придется читать даташит, потом писать программку подобную той, что сделал автор. Я тоже интересуюсь этой проблемой, после перепрошивки датчик сильно врет. К сожалению с программированием не дружу и ничего путного пока сделать не могу.
Ответить
0
D #
Считал перед залитием нового EERPOM оригинальные значения, вот для возврата к оригиналу (у моего такие значения были)
http://dl.dropbox.com/u/43215472/Thermocam_EEPROM_original.txt

Вот для считывания: http://dl.dropbox.com/u/43215472/Thermocam_EEPROM_read.txt

Если у Вас другие значения то просто так их подставлять нельзя. Сначала нужно их перевести в HEX. Например оригинальные значения фильтра получились 40404. Переводим в HEX = 9DD4. Смотрим код для заливки, там где фильтр, подставляем свои значения, только с конца:
i2c_write(0x25); //Register Address to write to
i2c_write(0xD4); //New filter settings (B374) 9FB0
i2c_write(0x9D);
i2c_write(0x18); //Send PEC
Теперь нужно найти FEC
Переходим на http://smbus.org/faq/crc8Applet.htm и вводим 25D49D
Получаем B7
дописываем и получаем:
i2c_write(0x25); //Register Address to write to
i2c_write(0xD4); //New filter settings (B374) 9FB0
i2c_write(0x9D);
i2c_write(0xB7); //Send PEC

Оригинальные значения моего датчика были:
фильтра 9FB0
Максимальная температура 9993
Минимальная 62E3
Ответить
0
Neit #
Спасибо огромное!
У меня такие же начальные настройки. Больше с температурой не обманывает. Неплохо было бы в статью добавить указание на то, что датчик не всегда надо перешивать. А то кто-нибудь еще наступит на эти грабли.
Ответить
0
Владимир #
А зачем так сложно?

Не проще было бы через диск Нипкова?

Диск + стабильные обороты + и один датчик.

И никаких сервов.

Развёртывание сигнала в картинку было бы элементарным программным кодом.
Ответить
0
Иван #
А им можно будет увидеть проводку в стене?
Ответить
0
алексей #
Если в ней потечет ток, достаточный для разогрева проводки до температуры видимой датчиком
Ответить
0
Neit #
С диском Нипкова очень интересная идея! Однако не пострадает ли разрешение изображения?
Насчет проводки могу сказать, что в большинстве случаев она греется в местах соединения: распайках, узлах, скрутках и.т.п., поэтому обычно проверять провод внутри стен нет надобности - в ближайшей распайке все видно. А на вопрос ответ да - если греется, это будет видно. В остальных случаях провод надо искать металлоискателями, трассировщиками и индикаторами.
Ответить
0
Petrotator #
1. Скажите, какое время считывания с датчика?
2. Вы не рассматривали вариант установки перед датчиком ИК линзы?
Ответить
0
Neit #
1. Время считывания зависит от программного обеспечения. В данной статье указана ссылка на ПО, которое позволяет использовать время: 3мин, 1,5 мин, 46 сек и 12 сек. Соответственно, чем меньше время сканирования, тем хуже разрешение картинки.
Однако автор давно уже сделал новое ПО, поддерживающее только время 6 мин и 1,5 мин. К несчастью мой аппарат с ним работать не хочет.
Сам копаюсь в исходниках, попутно изучая Java, чтобы сделать нормальное ПО. Пока результат не очень.
2. Даже не знал, что такие бывают (мне стыдно :) )
Весьма вероятно, что она поможет увеличить оптическое разрешение, но с настройкой фокуса будут проблемы.
Ответить
0
Neit #
На сайте автора проекта есть информация о скором выходе новой версии дешевого тепловизора!
В частности, будет использован датчик MLX90620 который позволит сократить время сканирования до трех секунд! Также появится независимость от компьютера, собственный дисплей и запись на карту памяти. Ожидаемый релиз: сентябрь / октябрь 2012 года.
Ответить
0
talibanich #
Как выйдет статья - пишите нам, переведем
Ответить
0
Artur #
Здравствуйте. А датчик MLX90614ESF-AAA подойдет?
Ответить
0
Игорь #
Лучше не использовать, у него катастрофически широкий угол обзора, точнее у него нет линзы... Это приводит к тому, что непонятно, что именно видит датчик.
Соответственно как элемент тепловизора не вариант. Проверено.
Ответить
0
Arrra32 #
Нашел датчик MLX90614ESF-DC. Нужен совет по сервоприводу. Как его выбрать? С такими параметрами подойдет?
Скорость работы: 0.17sec / 60 градусов (4.8V без нагрузки)
Рабочая скорость: 0.13sec / 60 градусов (6.0V нет нагрузки)
Stall Крутящий момент: 13 кг-см (180,5 унций-в) на 4,8
Крутящий момент опрокидывания: 15 кг-см (208,3 унций-в) на 6V
Рабочее напряжение: 4,8 - 7.2Volts
Ответить
0
ligor73 #
А где брали датчик?
Ответить
0
Arrra32 #
Я только собираюсь делать. Датчик и все остальное заказывал по инету. Теперь жду комплектуху
Ответить
0
Евгений #
Возможно ли этим прибором увидеть протечку трубы отопления в стене ?
Ответить
0
lexa74021 #
Возможно, но вряд ли.
Ответить
0
Антон #
Я собрал тепловизор, детали брал те, которые предлагаются на оригинальном сайте. Возникла следующая проблема: запускаю измерения, сервопривод left-right движется нормально, а сервопривод up-down неподвижен. По отдельности все компоненты работают. В чем может быть проблема?
Ответить
0
Neit #
Проверьте к какому порту подключен сервопривод и какой прописан в скетче для микроконтроллера. А вообще причин может быть масса, тут не скажешь точно.
Ответить
0
Юрий #
А у меня все изображение вверх ногами и с права налево. Так же непонятки в механике: жму стрелку вниз при настройте, серва ползет вверх
Ответить
0
Neit #
Вы неправильно поставили сервопривод, отвечающий за вертикальное перемещение. Его просто надо переставить другой стороной.
Ответить
+1
oleg #
Странно у меня не работает, когда запускаю сканирование все время висит на 0%
Ответить
0
oleg #
Также еще серво приводы просто заходят в ступор и жужат не возвращаясь в исходное положение. Подозреваю, что не рабочий датчик, как бы его проверить?
Ответить
0
Иван #
Датчик DCI питается от 3.3В по схеме. Без подтяжек напрямую работает идеально. С подтяжками 4.7к к 3.3В отзывается по адресу 0x5A, но не обменивается данными, программа не сканирует. Даже если поставить подтяжки 4.7к, соединить в общую точку и НЕ подавать 3.3В - не работает. Пробовал поставить проверенный LLC PCA9306 с подтяжками - тоже не работает!
Сейчас напаял на 2 ноги датчика керамику по питанию, ничего не изменилось. Такое ощущение, что датчик требует I2C 5В.
Filter settings: 46965
Maximum temp: 39315
Minimum temp: 25315
Было до перепрошивки
После нее точность повысилась, особенно, с t > 100C - лампами, паяльником, двигателями.
Ответить
0
Назар #
Подойдет ли такой тепловизор для диагностики неисправностей на платах?
Ответить
0
evgen43rus #
Очень интересно, а какова дальность действия данного тепловизора? Может кто в курсе?
Ответить
+1
Neit #
Не совсем корректно говорить о дальности. Просто чем дальше вы поставите датчик от объекта измерения тем больше будет "пятно" с которого будет сниматься температура. Можно привести аналогию с фонариком. Чем дальше светите тем меньше видно. Разрешение у датчика BCI будет порядка нескольких миллиметров на расстоянии в 1 метр. Угол его обзора пять градусов, из этого можно рассчитать примерную величину "пятна" в зависимости от расстояния.
Кстати, авторы проекта все-таки сделали новую версию. Она работает автономно от компьютера, имеет собственный дисплей и пишет результат на sd карту, однако время сканирования осталось большим (3мин), хотя изначально они планировали уменьшить его за счет использования другого датчика. Таким образом, самое главное к сожалению так и осталось без внимания.
Однако уже идет продажа версии 2.0 по 200 евро за штуку (тоже мне дешевая камера). И похоже выкладывать исходники проекта 2.0 авторы не собираются, что печально. Если SD карту подключить к ардуино нетрудно, то как они добились работы с дисплеем уже действительно интересно.
Ответить
0
morkovka #
А не подскажите, как подсчитать? И как узнать изначальное пятно более точно. Что-то в даташите не могу разобрать.
Ответить
0
Дима #
Продолжая разговор о дальности применения. Про пятно понятно. Теперь вопрос, какая линза способна приблизить тепловой объект к датчику? Это обычная световая линза как для фонарика или это линза с каким-то специальным напылением?
Просто изначально форумчанин привёл ссылку на этот же сенсор, только в другом корпусе, который регистрирует тепло в фокусе 90 градусов.Соответственно, если на него прикрутить трубочку или трубочку с линзой самостоятельно, то поможет ли это сфокусировать его на необходимый участок?
Ответить
0
Алексей #
Помогите чайнику с прошивкой и компиляцией рабочей программы.
Я скачал архив "Всё в одном", но там только исходники и библиотеки. А программы для компьютера нет. Если программа компилируется, то из чего и как?
Вообще, поделитесь, пожалуйста, технологией программирования данного устройства.
Ответить
0
Валерий #
Доброго времени, замечательный проект, благодарю. Мысль. Можно ли использовать механику планшетного сканера для такого проекта, например для создания термограмм частей тела человека, в медицинских так сказать целях.
Ответить
+1
Neit #
А почему бы и нет, но не стоит забывать, что инфракрасный датчик фиксирует температуру именно поверхности объекта, а не внутреннюю. Не знаю, насколько это актуально в медицинских целях
Ответить
0
Сергей #
Скачал прогу и пытаюсь ее запустить. Не получается никак. Нужно обязательное подключение платы? Или и без нее должно запуститься? Все поставил как написано. А Run.bat запускается и ничего. Ява стоит. Подскажите как запустить прогу. Хочу посмотреть на интерфейс пока детали прийдут.
Ответить
0
Эдуард #
А подойдет ли обычный MLX90614ESF? Он дешевле.
Ответить
0
Grigman1 #
Как вернуть оригинальный EERPOM датчика? Мой датчик BCI и честно говоря перепрошивал его неоднократно разными скетчами по изменению EEPROM! Сейчас он показывает разную температуру в зависимости от дальности обьекта измерения!
Ответить
0
Neit #
Выше в комментариях было
"Считал перед залитием нового EERPOM оригинальные значения, вот для возврата к оригиналу (у моего такие значения были)
http://dl.dropbox.com/u/43215472/Thermocam_EEPROM_original.txt"
Ответить
0
Алексей #
Какова максимальная дальность у MLX90614 для определение температуры объекта?
Ответить
0
У меня такая проблема: в программе при нажатии старт не происходит ничего, просто стоит на месте прогресс загрузки и сервоприводы тоже стоят, хотя откалиброван прибор правильно точки и лазер совпадают. И когда в проге выбираю live temperature, то тоже стоит нету данных. Думал надо перепрошить не помогло совсем. Думаю, что датчик не исправен или резисторы. Кто знает, что делать?
Прикрепленный файл: 20150706_153924.jpg
Прикрепленный файл: 20150706_153822.jpg
Ответить
0
Neit #
Проверьте все подключения датчика к плате и порты, которые прописаны в скетче.
Еще как вариант можно попробовать использовать более новую версию ПО и прошивки Arduino (ее можно нагуглить на сайте авторов проекта). Например старое ПО не работает с новым скетчем и наоборот.
Ответить
0
Но у меня появилась такая проблема- когда я захожу в программу, которая на java, то я могу управлять серводвиготелями , тем самым калибруя прибор, но при нажатии на кнопку старт , просто висит на 0% и не движется загрузка. И когда я захожу в LIVE TEMPERATURE, в место данных просто прочерк. Я думал, что не исправен датчик и поэтому решил проверить его. Я нашел и скачал скетч здесь - ( http://bildr.org/2011/02/mlx90614-arduino/ ), который работает просто с одним датчиком, и о чудо , захожу в программу arduino в монитор последовательного порта и туда сыпятся данные с датчика , причем верные. Значит датчик рабочий! Записываю в arduino скетч с сайта разработчика проекта на (схем. нет) и снова нет данных с датчика не в программе на java, не в мониторе последовательного порта. В чем может быть проблема?
Подключение датчика в любом случае только на 4 и 5 аналоговый порт. Новую прогу тоже пробовал , все тоже висит. Я думаю , что проблема с двойной связью между компом и ардуино .
Ответить
0
Neit #
Возможно, проблема может быть в установленном Java Runtime Environment. Я пару раз наблюдал у себя похожие глюки. Можно попробовать обновить его, либо проверить, как работает Java- программа на другом компьютере. Проверьте этот скетч - я его обрезал до двух функций - он должен выводить температуру в Serial Monitor. Если выводит - проблема с Java, если нет - вопрос с датчиком. На моем устройстве работает.
Прикрепленный файл: sketch_mlx.ino
Ответить
0
sergeipolivaev #
Спасибо! Но я сегодня решил свою проблему. Проблема была в том , что у меня на ноутбуке и пк стоит windows 10 64bit , а когда поставил на ноут windows 10 32bit, все вроде заработало , в программу стали идти данные с датчика и пошёл прогресс загрузки, но это все работает только, когда я отключаю сервы. Если их подключить, то в момент сканирования вырубается ардуинка от компа, я думал, что не хватает питания от usb и подключил блок питания к ардуино от шуруповерта на 12 Вольт, короче, я сжег тем самым ардуино. Теперь жду новую и надеюсь, что датчик жив. Вот такой я неудачник!
Ответить
0
Дима #
Ты скорее не блоком сжёг, а тем что сервы видимо запитал от ардуины, которые в пике дают 300 мА, а порты рассчитаны на 40мА. Сервы должны быть запитаны от источника, а ардуино лишь служит для подачи сигнала к их активации.
Ответить
0
morkovka #
Подскажите, а можно ли это улучшить в качестве.
Какой датчик можно использовать, чтобы доставал до 17 этажа? Какую вебку для этого надо?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Осциллограф DSO138 DC-DC регулируемый преобразователь 1.5-37В 2А с индикатором
вверх