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

«А я все чаще замечаю,
Что меня как-будто кто-то подменил.
О морях и не мечтаю —
Тепловиз0р мне природу заменил.»
   кот Матроскин

Что это такое ? Простой и дешевый тепловизор, который может изготовить любой радиолюбитель средней квалификации своими руками. В качестве сенсора применена матрица 8х8 элементов, которая позиционируется как датчик для систем охраны. Линейной интерполяцией с простейшей фильтрацией картинка растягивается до размера 57х57 точек. Угол обзора составляет 60 градусов, точность измерения температуры +-2.5 градуса, диапазон 0..+80 градусов. Скорость обновления 10 кадров в секунду. Кроме классического отображения тепловой картины градиентами цвета и яркости, прибор имеет дополнительные функциональные возможности: автоматический выбор пределов отображения температур с возможностью фиксации или выбора из предустановленных значений, «заморозка» отображаемой картинки, возможность сделать на экране копию отображаемой картинки, выбор из нескольких вариантов палитр для отображения температуры на картинке. Прибор питается от встроенного Li-Pol аккумулятора и имеет разъем microUSB для подключения зарядного устройства.

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

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

Функции кнопок:
— нажатие верхней останавливает/запускает обновление текущей картинки.
— удержание верхней копирует текущую картинку со шкалой градиента в текущей палитре и масштабом температур в нижнюю зону.
— нажатие нижней переключает по кругу типы шкал: автоматическое вычисление, фиксация текущей, фиксированная +40..+16 градусов, фиксированная +80..-5 градусов.
— удержание нижней включает/выключает прибор.
— удержание 2-х кнопок переключает варианты палитры.
Через несколько минут бездействия подсветка пригасает, при этом по нажатию на любую кнопку сначала произойдет восстановления полной яркости подсветки, а непосредственно действие кнопки произойдет лишь по следующему нажатию.

Схемотехника. Прибор собран на 32-разрядном микроконтроллере с ARM архитектурой. TFT дисплей 320х240 с диагональю 2.4 дюйма подключен через 8-ми разрядную параллельную шину и имеет ключ для управления подсветкой ШИМ. Сенсор включен по схеме из даташита и опрашивается МК через шину I2C. Подсистема питания состоит из нескольких узлов. Контроллер заряда аккумулятора имеет светодиод, индицирующий процесс заряда. Кнопка управления питанием развязана диодами с МК так, что ей можно и включать устройство, и управлять МК. Преобразователь, повышающий напряжение на аккумуляторе до величины +5В, нужен для более полного использования емкости аккумулятора. Но он при применении линейного стабилизатора с малым перепадом между входом и выходом, дает не слишком большой прирост времени работы, поэтому преобразователь можно не устанавливать, заменив его перемычкой (5-6 ноги). Линейный стабилизатор понижает напряжение до +3.3В. Делитель для измерения напряжения на аккумуляторе включен после ключа, поэтому не разряжает аккумулятор в выключенном состоянии. Бузер с ключем обеспечивает отзвук при нажатии на кнопки.

Прошивка. МК тактируется от внутреннего генератора с умножителем с ФАПЧ (PLL) частотой 72 МГц. С периодом 100 мС происходит опрос сенсора, далее принятые данные нормируются, интерполируются, фильтруются, вычисляется масштаб шкалы, вычисляется цвет пикселей, и сформированная картинка выводится на дисплей. Каждый элемент из матрицы 57х57 на дисплее отображается четырьмя пикселями. Для ускорения работы, часть процесса обмена данными по I2C убрана в прерывания, а процесс вычислений разбит на этапы для организации подобия конвейера. С определенной периодичностью происходит опрос кнопок и измерение напряжения на аккумуляторе.

Используемый компилятор Keil uVision 4, прошивка написана с использованием библиотеки STM32F30x/31x DSP and Standard Peripherals Firmware Library V1.2.3. Прошивается МК через SWD, например программатором ST-LINK/V2, который присутствует на недорогих отладочных платах DISCOVERY. Прошивка и исходник прилагаются.

Конструкция. Конструктив выбирался по критериям максимальной простоты и дешевизны. На дне пластиковой коробки прорезается прямоугольная зона для дисплея 37х50 мм и два отверстия под толкатели кнопок диаметром 4 мм. Сбоку прорезается зона под USB разъем и отверстие диаметром 1 мм для светодиода заряда. На крышке срезается угол 18х20 мм напротив сенсора. В силу того, что сенсор достаточно глубоко утоплен вглубь корпуса, было решено ни чем не закрывать этот угол, к тому же любой материал сильно рассеивал излучение, что приводило к смазыванию картинки. Дисплей приклеен к печатной плате пористым 2-хсторонним скотчем толщиной 1 мм. Плата в корпусе размещается так, чтобы разъем USB был вставлен в прорезь в корпусе, которую нужно расположить на такой высоте, чтобы дисплей уперся в корпус и слегка сжал скотч. Со стороны кнопок плата упирается в гайку на винте М3х20 завинченном на передней панели. Аккумулятор тоже приклеен к печатной плате пористым 2-хсторонним скотчем. Разъем аккумулятора нужно припаять к плате слегка под углом, чтобы он не мешал закрыться задней крышке. В прикрепленном к статье архиве есть программа в G-кодах для резки корпуса на 3х-координатном станке, полная спецификация примененных компонентов, печатная плата в формате PCAD2006 и в виде картинки для ее изготовления по лазерно-утюговой технологии.

Компоненты. МК STM32F303CBT в корпусе LQFP-48. МЭМС сенсор серии Grid-EYE компании Panasonic AMG8833, цена на алиэкспресс менее 2к рублей. Дисплей TFT 2.4 дюйма 320х240@262k на контроллере ILI9341 с 37-выводным шлейфом. Названий у них много разных, я брал вот эти.
Корпус Sanhe 20-22 размером 92х58х23 мм. Бузер любой со встроенным генератором на 3-5В. Разъем MICROUSB KLS1-233-0-0-1-T (Micro USB 5S-B). Аккумулятор любой Li-Ion, подходящих размеров.

Перспективы. Можно добавить микросхему энергонезависимой памяти 24Cxx для долговременного хранения картинок. МК имеет на борту модуль USB, который можно использовать для выгрузки картинок или скриншотов на компьютер, а также для прошивки МК через загрузчик (DFU). Применение более серьезного сенсора не целесообразно, т.к. резко увеличивает цену, а также потребует применение более мощного МК. Можно подумать над подключением недорогой VGA-камеры, например ov7670, для совмещения картинки градиентов цвета с реальным изображением объектов, как в промышленных приборах. Если найдется кто, для продолжения проекта, буду лишь рад.

Прикрепленные файлы:

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

Ваш адрес email не будет опубликован.