Как построить восьмибитную тепловизионную камеру.
Растет общественное беспокойство по поводу водителей, которые едут по дорогам не в том направлении.
Водители, которые отвлекаются или находятся в состоянии опьянения, иногда оказываются на неправильной стороне дороги, подвергая опасности жизни других водителей.
Для борьбы с вождением в неправильном направлении разработали систему теплового обнаружения водителей, едущих не в том направлении, которая предназначена для обнаружения транспортных средств, движущихся в неправильном направлении, и предупреждения других водителей и сотрудников правоохранительных органов о них.
Тепловизионные камеры размещаются на съездах и вдоль самой автомагистрали, и при обнаружении водителя, движущегося по неправильному пути, они отслеживают транспортное средство, отправляя данные о местонахождении транспортного средства в правоохранительные органы и уведомляя других автомобилистов через доски объявлений и светящиеся знаки с мигающие огни.
Возможно будут интересны статьи: |
Термографическая камера, также известная как инфракрасная (ИК) камера или тепловизионная камера, использует инфракрасное излучение для создания изображения, которое мы можем видеть в спектре видимого света.
Тепловизионные камеры изначально разрабатывались для военных целей во время Корейской войны.
Сегодня они используются в военных, коммерческих, промышленных и личных целях.
Часто эти камеры разрабатываются с использованием современных микропроцессоров, 16- или 32-разрядных микроконтроллеров (MCU) или их комбинации.
Можно ли создать недорогую тепловизионную камеру с низким разрешением с использованием 8-разрядного микроконтроллера?
Электромагнитное излучение
Чтобы понять, как работает тепловизионная камера, необходимо хорошее понимание того, что такое электромагнитное и инфракрасное излучение.
Вся нормальная материя излучает электромагнитное излучение, когда ее температура выше абсолютного нуля (-273,15°C).
Это излучение, также известное как тепловое излучение, представляет собой преобразование тепловой энергии вещества в электромагнитную энергию и может включать как видимое, так и инфракрасное излучение.
Видимое излучение или видимый свет — это электромагнитное излучение, видимое человеческому глазу, и обычно оно определяется как имеющее длину волны в диапазоне от 400 до 700 нанометров (нм).
Инфракрасное излучение невидимо для человеческого глаза и определяется как имеющее длину волны в диапазоне от 700 нм до 1 миллиметра (мм).
Тепловое излучение, испускаемое обычными объектами, находящимися в термодинамическом равновесии с окружающей их средой, можно считать излучением черного тела.
Объекты, температура которых близка к комнатной (25°C), излучают тепловое излучение в инфракрасном спектре.
Объекты черного тела — это идеализированные физические объекты, которые поглощают все падающее электромагнитное излучение, а это означает, что все излучение, взаимодействующее с объектом, поглощается.
Конечно, в природе не существует идеальных чернотелых объектов — черные дыры являются почти идеальными черными телами, поскольку они поглощают все падающее на них излучение, но могут не находиться в идеальном термодинамическом равновесии с окружающей средой.
Когда черное тело находится в тепловом равновесии (постоянная температура), тело излучает излучение черного тела в соответствии с законом Планка, который описывает распределение мощности электромагнитного излучения по частотным компонентам при данной температуре.
Другими словами, объект черного тела, поддерживаемый при постоянной температуре, будет излучать излучение определенной величины и частоты, которые зависят только от температуры объекта, а не от его формы или состава.
Объекты реального мира — поскольку настоящие объекты черного тела физически не существуют — излучают энергию в несколько раз меньше, чем объекты черного тела.
Эта доля известна как коэффициент излучения объекта и используется для определения фактической эффективности объекта в излучении теплового излучения.
Идеальная поверхность черного тела имеет коэффициент излучения «1», что означает, что все излучение, взаимодействующее с поверхностью, поглощается объектом.
Полированное серебро, с другой стороны, имеет коэффициент излучения «0,02», что означает, что почти все излучение рассеивается или отражается от поверхности и очень мало поглощается.
Инфракрасное излучение — это вид электромагнитного излучения с длиной волны от 700 нм до 1 мм.
Эти длины волн невидимы для человеческого глаза; однако их можно почувствовать как тепло.
Например, солнце излучает примерно половину своей энергии в виде инфракрасного излучения, и хотя мы не можем видеть излучение невооруженным глазом, тепло можно почувствовать, просто стоя на солнце.
Компоненты тепловизора
8-битная тепловизионная камера состоит из следующих трех основных аппаратных компонентов:
- Инфракрасный датчик Panasonic Grid-EYE
- ЖК-модуль графического дисплея Varitronix COG-C144MVGI-08
- PIC18F27K42 8-битный микроконтроллер
Инфракрасное обнаружение осуществляется с помощью датчика Grid-EYE.
Grid-EYE представляет собой инфракрасный матричный датчик размером 8 x 8 пикселей (всего 64), разработанный с использованием технологии термобатарей Micro-Electro-Mechanical Systems (MEMS).
Массив термобатарей состоит из ряда отдельно стоящих термопар. Каждая термопара состоит из двух тонких проводов из разных термоматериалов.
Два провода соединены вместе на одном конце, известном как горячий спай, а другие концы подключены к радиатору.
Горячий спай соединен с очень тонкой общей мембраной, поглощающей ИК-излучение, которая является общей для всех 64 термопар.
Если между двумя переходами есть разница в температуре, создается крошечное напряжение электродвижущей силы (ЭДС), которое можно измерить и преобразовать в температуру.
Это явление называется эффектом Зеебека.
Датчик обменивается данными через шину I 2 C, работающую на максимальной частоте 400 кГц.
Датчик также имеет встроенный усилитель усиления, аналого-цифровой преобразователь (АЦП) и термистор (см. рис. 1).
Рис. 1: Здесь показана базовая блок-схема основных внутренних компонентов датчика Grid-EYE.Датчик начинает свою работу, поглощая инфракрасную тепловую энергию в поле зрения 60°.
ИК-энергия проходит через встроенную кремниевую линзу, которая действует как оптический фильтр, позволяя поглощать ИК-энергию для длин волн от 5 до 13 мкм (дальний инфракрасный диапазон).
Как только ИК-энергия проходит через линзу, она поглощается каждым из 64 чувствительных элементов массива термобатарей.
Каждый из чувствительных элементов преобразует поглощенную им ИК-энергию в аналоговый выходной сигнал.
Аналоговое напряжение обычно находится в диапазоне низких милливольт, что может быть слишком мало для точного обнаружения небольших изменений энергии.
Чтобы исправить это, аналоговый выход каждого чувствительного элемента пропускается через усилитель усиления, что эффективно увеличивает разрешение каждого элемента.
Как только каждый сигнал усиливается, он проходит через АЦП, где сравнивается со значением температуры встроенного термистора и преобразуется в 12-битный (11 бит + 1 бит знака) цифровой эквивалент.
Каждый из 64 пикселей имеет свой собственный уникальный регистр температуры, в котором хранится преобразованный цифровой эквивалент температуры.
Эти регистры температуры могут считываться микроконтроллером по шине I2C.
В ЖК-модуле используется ЖК-технология Color Super-Twist Nematic (CSTN), использующая адресацию с пассивной матрицей.
В ЖК-дисплее CSTN сигналы строки и столбца используются для прямой адресации пикселя, и пиксель должен поддерживать свое состояние ВКЛ/ВЫКЛ без использования переключателя или конденсатора.
Каждый визуальный пиксель разделен на три физических субпикселя, и каждый субпиксель использует красный, синий или зеленый фильтр для отображения цвета.
В дисплее используется белая светодиодная подсветка, свет которой проходит через каждый субпиксель.
Интенсивность вывода каждого субпикселя контролируется драйвером ЖК-дисплея, создавая до 65 тысяч уникальных цветов.
Драйвер представляет собой ЖК-драйвер Samsung S6B3306, встроенный в дисплейный модуль.
Драйвер упрощает интерфейс между микроконтроллером и дисплеем, а это означает, что требуется меньше соединений.
ЖК-дисплей настроен на режим 65000 цветов. В цветовом режиме 65k 16-битное слово делится на стандартный цветовой формат RGB565.
Формат RGB565 представляет собой 16-битную цветовую схему, в которой биты <15:11> (5 бит) определяют интенсивность красного, биты <10:5> (6 бит) определяют интенсивность зеленого, а биты <4:0> ( 5 бит) определяют интенсивность синего (см. рис. 2).
Формат RGB565 дает дополнительный бит зеленому цвету, поскольку человеческое зрение более чувствительно к зеленым длинам волн спектра видимого света.
Микроконтроллер PIC18F27K42 используется для считывания данных о температуре с датчика, выполнения обработки изображения и передачи данных о цвете на ЖК-дисплей.
В этой камере использовались следующие периферийные устройства:
- Таймер1
- Прямой доступ к памяти (DMA)
- я 2 С
- СПИ
Timer1 — это 16-разрядный инкрементный счетчик, реализованный в приложении тепловизионной камеры для создания 15-секундной задержки.
При первом включении камеры и настройке датчика Grid-EYE для стабилизации требуется 15-секундная задержка. Вместо использования функции «задержки», которая приостанавливает выполнение программы во время цикла задержки, Timer1 можно использовать для выполнения той же задачи.
Поскольку Timer1 работает в фоновом режиме, выполнение кода продолжается, позволяя ядру сосредоточиться на других задачах, а не приостанавливать выполнение кода на 15-секундную «задержку».
Модуль прямого доступа к памяти (DMA) позволяет передавать данные между областями памяти микроконтроллера PIC без вмешательства центрального процессора.
DMA устраняет необходимость обработки ЦП прерываний, предназначенных для отслеживания передачи данных, позволяя ЦП выполнять другие задачи во время передачи.
Камера использует DMA для передачи файла изображения, хранящегося в памяти программ, на ЖК-дисплей во время требуемой 15-секундной задержки стабилизации датчика Grid-EYE.
Модуль I 2 C обеспечивает синхронный последовательный интерфейс между микроконтроллером и другими устройствами, совместимыми с I 2 C.
Модуль I 2 C используется для настройки и считывания данных о температуре с датчика Grid-EYE и работает на частоте шины 100 кГц.
Чтение пиксельных данных сенсора требует блочного считывания пиксельных регистров. Каждый пиксель содержит 12-битное значение температуры, разбитое на два отдельных байта, и, поскольку всего имеется 64 пикселя, I 2 C выполняет чтение блока из 128 байтов.
К счастью, область пиксельных данных конфигурируется последовательно, а это означает, что I 2C может передавать один адрес ведомого устройства, за которым следует один адрес регистра, но получит все 128 байтов за одну транзакцию.
После считывания каждого пиксельного регистра датчик автоматически указывает на следующий регистр, поэтому нет необходимости запускать новый пакет связи каждый раз, когда пиксельный регистр считывается.
SPI-модуль PIC18F27K42 используется для настройки и записи цветовой информации на ЖК-дисплей. Модуль настроен в режиме только передачи на скорости SCK 8 МГц.
Конфигурация только для передачи позволяет осуществлять одностороннюю передачу от ведущего к ведомому устройству без необходимости считывания ведущим устройством своего входа SDI.
Каждый кадр изображения состоит из 17 434 16-битных слов, что означает, что каждый кадр потребует от SPI передачи 34 868 8-битных байтов для каждого кадра.
Как видите, даже сохранение одного командного цикла каждый раз, когда SPI записывает байт данных, составляет 34 868 сохраненных инструкций, что означает, что SPI может записывать свои данные намного быстрее.
Это помогает предотвратить задержку изображения от кадра к кадру.
Как только микроконтроллер PIC считывает данные о температуре с датчика, он должен выполнить обработку изображения для создания изображения, которое передается на ЖК-дисплей.
Программное обеспечение для обработки изображений использует данные датчика для создания изображения на основе 64 пикселей, содержащихся в датчике.
Если бы мы наблюдали за этим 64-пиксельным массивом на 1,44-дюймовом ЖК-дисплее, изображение было бы слишком маленьким, чтобы его можно было увидеть. Для правильного просмотра изображения его необходимо развернуть.
Линейная интерполяция — это процесс нахождения неизвестного значения между двумя известными значениями на линии.
Другими словами, линейная интерполяция использует информацию, которую мы уже должны заполнить, недостающую информацию, необходимую для расширения изображения.
Для этой камеры используется метод билинейной интерполяции.
В этом случае программное обеспечение берет значения четырех соседних пикселей, применяет коэффициент масштабирования к каждому из четырех пикселей, берет среднее значение четырех масштабированных пикселей и применяет это значение к вновь созданному пикселю.
Коэффициент масштабирования зависит от расстояния вновь созданного пикселя от исходного пикселя; чем дальше новый пиксель, тем меньше коэффициент масштабирования (см. рис. 3).
Линейная интерполяция аппроксимирует неизвестное значение на основе известных значений, но не может гарантировать точность вычисленного значения.
Другими словами, неизвестная область между двумя пикселями может содержать край объекта, и вместо создания «жесткой» границы объекта интерполяция может сделать границу менее определенной.
Если вы хотите собрать эту камеру самостоятельно, ознакомьтесь с примечаниями по применению Microchip AN2773.
AN2773 более подробно описывает компоненты и работу камеры.
Исходный код можно посмотреть на веб-сайте Microchip MPLAB® Xpress Code Examples.