Je vůbec možné navrhnout poměrně levnou termokameru s nízkým rozlišením a využít přitom osmibitového mikrokontroléru?
U nás v Arizoně je veřejnost stále více znepokojena řidiči jedoucími na hlavních tazích v opačném směru. Rozrušení nebo rozptýlení šoféři se někdy ocitnou tam, kde nemají co dělat, a ohrožují přitom životy ostatních účastníků provozu. Ve snaze o nápravu místní resort dopravy staví a testuje teplotní detekční systém navržený tak, aby vozidla ve špatném směru odhalil a upozornil na ně ostatní řidiče, včetně mužů zákona. Termokamery jsou umístěny na sjezdech z dálnice a také podél samotné silnice. Když pak dojde k vyhodnocení řidiče pohybujícího se v nesprávném směru, termokamery sledují vozidlo, odesílají policii údaje o jeho poloze a varují ostatní motoristy prostřednictvím informačních tabulí a osvětlených značek s blikajícími světly.
Termografická kamera, kterou rovněž známe jako infračervenou (IR) kameru či kameru pro teplotní zobrazování, využívá při vytváření obrazu, který lze pozorovat ve viditelné části spektra, infračerveného záření. Termokamery byly původně vyvinuty pro vojenské účely během korejské války a v současné době se s nimi potkáváme nejen v armádě, ale také v komerčních, průmyslových či ryze soukromých aplikacích.
Zmíněné kamery bývají často navrhovány s využitím nejmodernějších mikroprocesorů, 16- nebo též 32bitových mikrokontrolérů (MCU) či v kombinaci obou z nich. Vzhledem k tomu, že autor článku pracuje ve skupině zabývající se ve společnosti Microchip Technology osmibitovými aplikacemi, chtěl zjistit, zda je vůbec možné navrhnout levnou termokameru s nízkým rozlišením, a zapracovat u toho právě 8bitový mikrokontrolér.
Abychom lépe pochopili, jak taková termokamera pracuje, potřebujeme dobře porozumět principům elektromagnetického a také infračerveného vyzařování. Každá běžná hmota při teplotě nad absolutní nulou, tj. větší než –273,15 °C, vydává elektromagnetické záření. Zmíněné vyzařování, které rovněž označujeme jako teplotní, pak představuje přeměnu tepelné energie hmoty na energii elektromagnetickou a může přitom zahrnovat jak viditelné, tak též infračervené spektrum.
Viditelné záření, resp. viditelné světlo, je elektromagnetickým zářením zjevným lidskému oku a bude obvykle definováno vlnovými délkami v rozsahu od 400 až do 700 nanometrů (nm). Infračervené záření již nevidíme a provázet jej budou vlnové délky od 700 nm až do jednoho milimetru (mm). V případě tepelného vyzařování generovaného obyčejnými předměty nacházejícími se v termodynamické rovnováze s okolním prostředím lze uvažovat vyzařování černého tělesa. Objekty nacházející se nedaleko pokojové teploty (+25 °C) emitují tepelné záření v infračervené oblasti.
Předměty typu černého tělesa rozumíme idealizované fyzické objekty pohlcující veškeré dopadající elektromagnetické záření, což znamená, že veškeré záření působící na takovou věc bude absorbováno. V přírodě se pochopitelně nic takto vzorového nenachází. Ideálu černého tělesa se přibližují černé díry, protože pohlcují veškeré dopadající záření. Nelze ale říci, že by byly v dokonalé termodynamické rovnováze s okolním prostředím.
Bude-li se černé těleso nacházet v tepelné rovnováze (konstantní teplota), dochází k vyzařování dle Planckova zákona popisujícího rozložení výkonu elektromagnetického vyzařování s ohledem na kmitočtové složky při dané teplotě. Jinými slovy, předmět na způsob černého tělesa bude za předpokladu udržování neměnné teploty emitovat záření o určité velikosti a kmitočtu pouze v závislosti na teplotě předmětu a nikoli jeho tvaru nebo složení.
Vzhledem k tomu, že se s opravdovými černými tělesy fyzicky nesetkáme, zavádíme při vyzařování energie u skutečných předmětů poměrové vyjádření známé též jako emisivita. Poslouží nám při stanovení skutečné účinnosti tepelného vyzařování předmětu. Povrch ideálního černého tělesa bude mít emisivitu rovnající se jedné, což znamená, že veškeré záření působící na povrch bude předmětem pohlceno. Vyleštěné stříbro bude mít na druhou stranu emisivitu na úrovni 0,02, takže prakticky u celé dávky dochází k rozptylu nebo odrazu od povrchu a pouze malá část může být absorbována.
Infračervené vyzařování je typem elektromagnetického záření v rozmezí vlnových délek mezi 700 nm a 1 mm. Lidské oko je sice již nedokáže postřehnout, ale mohou být stále pociťovány jako teplo. Uveďme si příklad. Zhruba polovinu své energie Slunce vyzařuje v podobě infračerveného záření, a přestože to pouhým okem nevidíme, stačí se jen zastavit a tepelné účinky snadno pocítíme.
Osmibitová termokamera se bude skládat z následujících tří stěžejních hardwarových součástí:
K detekci v infračerveném spektru dochází na základě čidla Grid-EYE®. Jedná se o pole IR senzorů v konfiguraci 8 × 8 pixelů (celkem tedy 64 bodů), navržené na základě technologie infratermočlánků MEMS (Micro-Electro-Mechanical Systems). Takové pole se pak bude skládat z řady samostatných termočlánků. Každý z nich je přitom složen ze dvou tenkých pásků a z hlediska teploty využívá různých materiálů. Dva pásky jsou pak na jednom konci spojeny dohromady (tzv. „horký konec“), zatímco další konce se propojí s chladičem. „Horký spoj“ bude dále napojen na velmi tenkou společnou membránu pohlcující infračervené záření, která je sdílena všemi 64 termočlánky. Vyskytne-li se mezi dvěma spoji rozdíl v teplotě, způsobuje to vznik nepatrného elektromotorického napětí EMF (Electromotive Force), které již umíme změřit a převést na teplotu (hovoříme také o Seebeckově jevu). Čidlo komunikuje pomocí sběrnice I²C provozované na maximu v podobě 400 kHz. Senzor dále zahrnuje vlastní zesilovač, analogově-číslicový převodník ADC nebo termistor, viz také obr. 1.
Obr. 1 Základní blokový diagram zachycující hlavní součásti uvnitř senzoru Grid-EYE®
Svou činnost senzor začíná vstřebáním infračervené tepelné energie poplatně svému „výhledu“ popsanému úhlem FOV 60°. IR energie prochází přes integrované čočky sloužící jako optický filtr umožňující absorpci pro vlnové délky mezi 5 a 13 μm ve vzdálené infračervené oblasti. Jakmile IR energie projde čočkami, bude pohlcena každým ze 64 snímacích prvků výše zmiňovaného pole. Úkol každého snímacího elementu pak spočívá v převodu pohlcené infračervené energie na analogový výstupní signál. Analogové napětí se zpravidla nachází v nízkém milivoltovém rozsahu, což pro účely přesného vyhodnocení malých změn energie nemusí vůbec postačovat. K nápravě vzniklé situace tedy poslouží zesilovač, přes který necháme procházet každý analogový výstup snímacího prvku. Rozlišení veškerých elementů tak bude možné efektivně navýšit. Když už je tedy každý signál zesílen, dostává konečně prostor A/D převodník. Využije se hodnota teploty zjištěná přítomným termistorem a výsledný číslicový ekvivalent pak bude mít po převodu celkem 12 bitů (11 plus jeden znaménkový bit). Každý ze 64 pixelů má svůj vlastní specifický teplotní registr obsahující převedený, číslicově vyjádřený teplotní ekvivalent. Ke čtení z těchto registrů pak může mikrokontrolér přistupovat pomocí sběrnice I²C.
LCD modul se vyznačuje technologií CSTN (Color Super-Twist Nematic) využívající adresování pasivní matice. V rámci CSTN LCD budou signály pro řádky a sloupce sloužit k přímému adresování pixelu, zatímco obrazový bod musí být schopen udržet svůj stav zapnuto či vypnuto bez použití spínače nebo kapacity. Každý pixel se pak dělí na tři fyzické subpixely, přičemž každý ze subpixelů za účelem zobrazení barvy upotřebí buď červený, modrý, nebo též zelený filtr. Pro účely podsvětlení zde slouží bílá LED, jejíž světlo prochází každým subpixelem. Intenzita výstupu bude u každého subpixelu ovládána LCD driverem podporujícím až 65 tisíc jedinečných barev. Budičem se přitom stává S6B3306 od Samsungu vestavěný přímo do modulu displeje. Zjednodušuje tak rozhraní mezi mikrokontrolérem a displejem a my si díky tomu vystačíme s menším počtem spojů.
LCD je nakonfigurován pro práci v režimu s 65 tisíci barvami. V tomto módu je pak 16bitové slovo rozděleno poplatně standardnímu formátu barev RGB565. Jedná se tedy o 16bitové vyjádření, ve kterém bity <15:11> (5 bitů) definují intenzitu červené barvy, bity <10:5> (6 bitů) intenzitu zelené a konečně bity <4:0> (5 bitů) „promlouvají“ do úrovně modré – viz také obr. 2. Další bit pro zelenou barvu přidává formát RGB565 z důvodu lidského zraku, který bude citlivější na vlnové délky odpovídající ve viditelném spektru právě zelené barvě.
Obr. 2 16bitové slovo rozdělené poplatně standardnímu formátu barev RGB565
Za účelem čtení teplotních údajů ze senzoru, zpracování takového obrazu a přenosu dat spojených s barvou do LCD využijeme mikrokontroléru PIC18F27K42. Ve zmíněné kameře se tak uplatní následující periférie:
Timer1 zde představuje 16bitový inkrementální čítač, který termokamera využije při zajišťování zpoždění v délce 15 vteřin. Bude-li kamera nejprve zapnuta a senzor Grid-EYE® se připravuje na práci, vyžádá si stabilizace zmíněných 15 sekund. Spíše než abychom využili funkce „delay“, která během takového cyklu dočasně přeruší běh programu, spolehneme se při vykonávání stejné úlohy raději na Timer1. Vzhledem k tomu, že pracuje na pozadí, provádění instrukcí se nezastavuje a jádro se tak místo toho, aby jen 15 vteřin vyčkávalo, dokáže věnovat i jiným úkolům.
Modul DMA (Direct Memory Access) podporuje přenos dat mezi paměťovými oblastmi mikrokontroléru PIC® bez jakéhokoli zásahu CPU. CPU se tak díky systému DMA obejde bez přerušení vyhrazených ke sledování datových přenosů a souběžně s těmito přenosy může proto vykonávat i další úlohy. Možností DMA využívá kamera k přenosu obrazového souboru uloženého v paměti do LCD během stabilizační prodlevy v délce 15 sekund vyžadované ze strany senzoru Grid-EYE®.
Modul I²C zajišťuje synchronní sériové rozhraní mezi mikrokontrolérem a dalšími obvody kompatibilními s I²C. Bude zde využito ke konfiguraci a čtení teplotních údajů ze senzoru Grid-EYE® a pracuje s rychlostí sběrnice 100 kHz. Abychom obdrželi obrazová data, neobejdeme se přitom bez blokového čtení registrů pixelu. Každý pixel obsahuje 12bitový údaj o teplotě rozdělený do dvou samostatných bajtů. Vzhledem k tomu, že zde máme celkem 64 pixelů, bude v případě I²C nutné přečíst blok o velikosti 128 bajtů. Oblast pro obrazová data je naštěstí konfigurována sekvenčně. I²C tak může vysílat jedinou slave adresu následovanou jedinou adresou registru, ale přesto najednou obdržíme všech 128 bajtů. Po přečtení informace z každého registru pixelu senzor automaticky ukazuje na následující registr a není proto nutné pokaždé spouštět novou komunikaci.
Modul SPI slouží u obvodu PIC18F27K42 ke konfiguraci a zápisu informace o barvě pro LCD. Je nastaven pouze v režimu vysílání a s kmitočtem SCK na úrovni 8 MHz. Docílíme tak jednosměrných přenosů z bloku Master směrem ke Slave, aniž by přitom jednotka Master potřebovala číst svůj vstup SDI. Každý snímek zde bude tvořen 17 434 16bitovými wordy a od sběrnice SPI se tak pokaždé očekává přenos 34 868 (8bitových) bajtů. Jak můžeme vidět, úspora byť jen jednoho instrukčního cyklu při každém zápisu datového bajtu může v případě SPI představovat 34 868 ušetřených instrukcí a prostřednictvím rozhraní tak dosáhneme daleko rychlejšího zápisu dat. U výsledného obrazu to pak napomáhá zabránit zpoždění mezi jednotlivými snímky.
Jakmile mikrokontrolér PIC® obdrží ze senzoru údaje o teplotě, bude je muset zpracovat a vytvořit přitom obraz, který pak odesílá do LCD. Software zde přitom pracuje s daty odpovídajícími senzoru a jeho 64 bodům, od kterých se také vše odvíjí. Pokud však budeme na displeji s úhlopříčkou 1,44 palce pozorovat pole složené ze 64 pixelů, bude se výsledek jevit jako příliš malý. Za účelem korektního zobrazení musí proto ještě dojít k roztažení.
Lineární interpolací rozumíme proces, při kterém hledáme mezi dvěma známými hodnotami v řadě hodnotu neznámou. Jinak řečeno, díky lineární interpolaci využijeme již dostupných informací k doplnění chybějících údajů nezbytných ke zvětšení obrazu. Pro účely této kamery použijeme metodu bilineární interpolace. Software v takovém případě upotřebí hodnoty ze čtyř sousedních pixelů, dále pak příslušný činitel pro každý z nich, průměr ze čtyř takto vzniklých bodů a vše pak spojí s nově definovaným místem. Konkrétní činitel bude přitom záviset na vzdálenosti mezi nově vytvářeným a také původním bodem, přičemž s rostoucím odstupem nového pixelu se úměrně tomu i zmenšuje – viz také obr. 3. Lineární interpolace nás tedy k neznámé hodnotě přibližuje na základě známých vstupů, nicméně už nedokáže zajistit, že vypočtená hodnota bude přesná. Neznámá oblast mezi dvěma body může kupříkladu obsahovat hranu předmětu a místo výsledku v podobě pevně definované hranice tak můžeme díky interpolaci obdržet méně zřetelné meze.
Obr. 3 Příklad lineární interpolace rozšiřující pole dat o velikosti 8 × 8 na výsledek čítající 32 × 32 bodů
Zájemce o stavbu zmíněné kamery ještě odkazujeme na aplikační poznámku AN2773 od společnosti Microchip Technology. Jednotlivé součásti kamery, včetně její samotné činnosti, totiž popisuje podrobněji. Autor článku dále zpřístupnil kompletní zdrojový kód na webových stránkách Microchipu (MPLAB® Xpress Code Examples).