Тепловизор - прибор для измерения распределения температуры поверхностей, бесконтактным, визуальным способом. Как правило, карта распределения температуры отображается на встроенном в тепловизор цветном дисплее (или последующая передача данных в компьютер) в виде цветного изображения, где красный цвет обозначает наиболее высокотемпературные участки, а черный или синий - низкотемпературные участки. Такие приборы стоят очень дорого (несколько тысяч долларов) и позволяют определять температуры динамических (движущихся объектов) в режиме реального времени.
Но, такой функционал нужен не всегда и в данной статье описывается процесс изготовления самодельного сканирующего тепловизора, стоимость которого не превышает 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 - инфракрасный термометр в корпусе 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
Скачать скетч для конфигурирования датчика. После заливки данного скетча в 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 | Поиск в магазине Отрон | |||
Датчик температуры | MLX90614 | 1 | MLX90614ESF-DCI или MLX90614ESF-BCI | Поиск в магазине Отрон | ||
Резистор | 4.7 кОм | 2 | Поиск в магазине Отрон | |||
Серво двигатель | Средний | 1 | Поиск в магазине Отрон | |||
Серво двигатель | Большой | 1 | Поиск в магазине Отрон | |||
Модуль Laser Card | 1 | Поиск в магазине Отрон | ||||
Вебкамера | 1 | Поиск в магазине Отрон | ||||
Поворотное устройство (2 координаты) | 1 | Pan and Tilt | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Комментарии (59) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
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
У меня такие же начальные настройки. Больше с температурой не обманывает. Неплохо было бы в статью добавить указание на то, что датчик не всегда надо перешивать. А то кто-нибудь еще наступит на эти грабли.
Не проще было бы через диск Нипкова?
Диск + стабильные обороты + и один датчик.
И никаких сервов.
Развёртывание сигнала в картинку было бы элементарным программным кодом.
Насчет проводки могу сказать, что в большинстве случаев она греется в местах соединения: распайках, узлах, скрутках и.т.п., поэтому обычно проверять провод внутри стен нет надобности - в ближайшей распайке все видно. А на вопрос ответ да - если греется, это будет видно. В остальных случаях провод надо искать металлоискателями, трассировщиками и индикаторами.
2. Вы не рассматривали вариант установки перед датчиком ИК линзы?
Однако автор давно уже сделал новое ПО, поддерживающее только время 6 мин и 1,5 мин. К несчастью мой аппарат с ним работать не хочет.
Сам копаюсь в исходниках, попутно изучая Java, чтобы сделать нормальное ПО. Пока результат не очень.
2. Даже не знал, что такие бывают (мне стыдно :) )
Весьма вероятно, что она поможет увеличить оптическое разрешение, но с настройкой фокуса будут проблемы.
В частности, будет использован датчик MLX90620 который позволит сократить время сканирования до трех секунд! Также появится независимость от компьютера, собственный дисплей и запись на карту памяти. Ожидаемый релиз: сентябрь / октябрь 2012 года.
Соответственно как элемент тепловизора не вариант. Проверено.
Скорость работы: 0.17sec / 60 градусов (4.8V без нагрузки)
Рабочая скорость: 0.13sec / 60 градусов (6.0V нет нагрузки)
Stall Крутящий момент: 13 кг-см (180,5 унций-в) на 4,8
Крутящий момент опрокидывания: 15 кг-см (208,3 унций-в) на 6V
Рабочее напряжение: 4,8 - 7.2Volts
Сейчас напаял на 2 ноги датчика керамику по питанию, ничего не изменилось. Такое ощущение, что датчик требует I2C 5В.
Maximum temp: 39315
Minimum temp: 25315
После нее точность повысилась, особенно, с t > 100C - лампами, паяльником, двигателями.
Кстати, авторы проекта все-таки сделали новую версию. Она работает автономно от компьютера, имеет собственный дисплей и пишет результат на sd карту, однако время сканирования осталось большим (3мин), хотя изначально они планировали уменьшить его за счет использования другого датчика. Таким образом, самое главное к сожалению так и осталось без внимания.
Однако уже идет продажа версии 2.0 по 200 евро за штуку (тоже мне дешевая камера). И похоже выкладывать исходники проекта 2.0 авторы не собираются, что печально. Если SD карту подключить к ардуино нетрудно, то как они добились работы с дисплеем уже действительно интересно.
Просто изначально форумчанин привёл ссылку на этот же сенсор, только в другом корпусе, который регистрирует тепло в фокусе 90 градусов.Соответственно, если на него прикрутить трубочку или трубочку с линзой самостоятельно, то поможет ли это сфокусировать его на необходимый участок?
Я скачал архив "Всё в одном", но там только исходники и библиотеки. А программы для компьютера нет. Если программа компилируется, то из чего и как?
Вообще, поделитесь, пожалуйста, технологией программирования данного устройства.
"Считал перед залитием нового EERPOM оригинальные значения, вот для возврата к оригиналу (у моего такие значения были)
http://dl.dropbox.com/u/43215472/Thermocam_EEPROM_original.txt"
Еще как вариант можно попробовать использовать более новую версию ПО и прошивки Arduino (ее можно нагуглить на сайте авторов проекта). Например старое ПО не работает с новым скетчем и наоборот.
Подключение датчика в любом случае только на 4 и 5 аналоговый порт. Новую прогу тоже пробовал , все тоже висит. Я думаю , что проблема с двойной связью между компом и ардуино .
Какой датчик можно использовать, чтобы доставал до 17 этажа? Какую вебку для этого надо?