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

"А я все частіше помічаю,
Що мене як-будто хтось підмінив.
О морях і не мрію -
Тепловізор мені природу замінив."
   кіт Матроскін

Що це таке? Простий і дешевий тепловізор, який може виготовити будь-який радіолюбитель середньої кваліфікації своїми руками. У якості сенсора застосована матриця 8х8 елементів, яка позиціонується як датчик для систем охорони. Лінійною інтерполяцією з простішою фільтрацією картинка розтягується до розміру 57х57 точок. Кут огляду складає 60 градусів, точність вимірювання температури +-2.5 градуси, діапазон 0..+80 градусів. Швидкість оновлення 10 кадрів на секунду. Окрім класичного відображення теплової картини градієнтами кольору і яскравості, пристрій має додаткові функціональні можливості: автоматичний вибір меж відображення температур з можливістю фіксації або вибору з передустановлених значень, "заморожування" відображуваної картинки, можливість зробити на екрані копію відображуваної картинки, вибір з кількох варіантів палітр для відображення температури на картинці. Пристрій живиться від вбудованого Li-Pol акумулятора і має роз'єм microUSB для підключення зарядного пристрою.

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

Експлуатація. На передній панелі розташовані дві кнопки і дисплей, на задній - сенсор. Зліва на дисплеї є дві зони, на верхній відображається поточна картинка, на нижній - запам'ятована копія картинки. Поряд з картинками зображені стовпчики з градієнтами температур і підписаний масштаб шкал. На верхній картинці є перекрестя, праворуч відображається температура точки під перекрестям. Праворуч відображається напруга на акумуляторі і приблизне, обчислене значення залишкового заряду в відсотках. По кутах праворуч на дисплеї підписані дії по натисканню відповідних кнопок, яскравим - дії по натисканню, тьмяним - дії по утриманню.

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

Схема тепловізора

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

Прошивка. МК тактується від внутрішнього генератора з множником з ФАПЧ (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 мм навпроти сенсора. У силу того, що сенсор достатньо глибоко втоплений вглиб корпусу, було вирішено нічим не закривати цей кут, до того ж будь-який матеріал сильно розсіював випромінювання, що призводило до розмивання картинки. Дисплей приклеєний до друкованої плати пористим двостороннім скотчем товщиною 1 мм. Плата в корпусі розміщується так, щоб роз'єм USB був вставлений у проріз в корпусі, яку потрібно розташувати на такій висоті, щоб дисплей уперся в корпус і злегка стиснув скотч. З боку кнопок плата упирається в гайку на гвинті М3х20 закрученому на передній панелі. Акумулятор також приклеєний до друкованої плати пористим двостороннім скотчем. Роз'єм акумулятора потрібно припаїти до плати злегка під кутом, щоб він не заважав закритися задній кришці. У прикріпленому до статті архіві є програма в 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, для поєднання картинки градієнтів кольору з реальним зображенням об'єктів, як у промислових приладах. Якщо знайдеться хтось для продовження проекту, буду тільки радий.

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

Top