陳誠,何錦清,孫華
(西華大學(xué)機(jī)械工程學(xué)院,四川成都,610039)
溫度這一參數(shù)無論是在工業(yè)生產(chǎn)還是日常起居方面都被廣泛測量和使用,在農(nóng)業(yè)、軍事、電力、科學(xué)研究等多領(lǐng)域都被視為一個(gè)重要的參數(shù)。目前日常使用的測溫方式分為接觸式和非接觸式兩種,MLX90640探頭的熱成像測溫方式屬于非接觸式測溫。其又屬于紅外溫度傳感器,具有測量速度快、測溫范圍寬、不用直接接觸物體測溫的特點(diǎn)。對(duì)基于MLX90640探頭的熱成像圖進(jìn)行區(qū)域劃分可實(shí)現(xiàn)一個(gè)探頭對(duì)多個(gè)設(shè)備的測溫監(jiān)控,提高設(shè)備利用率,減少溫度監(jiān)控成本。
系統(tǒng)主要由MLX90640紅外傳感器探頭、樹莓派等主要部分構(gòu)成。MLX90640探頭將測得的數(shù)據(jù)通過串口通信傳給樹莓派,通過對(duì)幀頭幀尾的檢測,獲取中間的有效數(shù)據(jù),并判斷數(shù)據(jù)的完整性和可用性,無誤后,樹莓派依照探頭模塊的數(shù)據(jù)溫度轉(zhuǎn)換公式進(jìn)行處理后,將溫度數(shù)據(jù)存入一個(gè)列表進(jìn)行畫圖,再將數(shù)據(jù)按照預(yù)劃分區(qū)域數(shù)據(jù)的大小,存入相應(yīng)大小的多個(gè)數(shù)組中,對(duì)每一個(gè)區(qū)域內(nèi)采用尋找最大值及最大溫度值位置的措施,在圖像上顯示三個(gè)區(qū)域溫度最大值的位置,以此完成區(qū)域劃分,便于對(duì)被測視場內(nèi)所有物體溫度進(jìn)行監(jiān)測,尋找發(fā)熱點(diǎn)位置。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
MLX90640模塊是一個(gè)24×32像素紅外陣列傳感器,共有768個(gè)測量像素點(diǎn),尺寸小,功耗低。溫度測量范圍廣,在0℃~50℃的工作溫度范圍內(nèi)可監(jiān)測-40℃~300℃的被測物溫度,在0℃~100℃范圍內(nèi)測量精度達(dá)到±2攝氏度。能直接顯示中心點(diǎn)以及最高最低溫度。本實(shí)驗(yàn)使用的MLX90640探頭序列號(hào)為0AB1435207,其表示的含義為該MLX90640探頭無熱梯度補(bǔ)償,其場視角為35°x55°,后續(xù)編號(hào)表示生產(chǎn)批號(hào)及批號(hào)補(bǔ)充碼。探頭每個(gè)基本像元采集的數(shù)據(jù)經(jīng)過相應(yīng)公式轉(zhuǎn)換后得到的溫度值是其視場內(nèi)物體溫度的平均值。本實(shí)驗(yàn)使用MLX90640BAB,接入轉(zhuǎn)換芯片后采用串口輸出格式,每幀包含1544個(gè)字節(jié)(16進(jìn)制),其中包含幀頭、幀尾各4位數(shù)據(jù)。使用時(shí)用Micro USB線,5V/1A電源供電,可以很方便地接在樹莓派上。MLX90640是一種由傳感器、模擬信號(hào)部分、數(shù)字部分和 I/O 電路組成的混合信號(hào)器件,為了保持低噪聲,需要對(duì)電源開關(guān)噪聲進(jìn)行退耦。外部電路的高噪聲也會(huì)影響器件的噪聲性能。通常用一個(gè) 100nF+1μF 陶瓷電容器就近與 VDD 和 Vss 連接,而與 VDD 管腳和Vss 管腳的距離需要盡量短。MLX90640在啟動(dòng)后需要一定的時(shí)間達(dá)到熱平衡,熱平衡后才具有相對(duì)穩(wěn)定和高精度性能。除此之外,紅外傳感器天生易受熱梯度引起的誤差影響,所以使用時(shí)盡量避免使傳感器受熱以及瞬態(tài)溫度環(huán)境的影響。
主控芯片為:STM32F301。STM32F301x6/8系列是基于高性能ARM Cortex -M4 32-bit RISC核心操作的,頻率可達(dá)72 MHz,具有一個(gè)嵌入浮點(diǎn)單元(FPU)。該系列集成了高速嵌入式存儲(chǔ)器(高達(dá)64k字節(jié)的閃存,16k字節(jié)的SRAM),以及廣泛的增強(qiáng)I/O和連接到兩個(gè)APB總線的外設(shè)。設(shè)備提供了一個(gè)快速的12位ADC(5 Msps),三個(gè)比較器、一個(gè)運(yùn)算放大器,多達(dá)18個(gè)電容感測通道,一個(gè)DAC通道,低功耗RTC,一個(gè)通用的32位定時(shí)器,三個(gè)通用的16位定時(shí)器,定時(shí)器驅(qū)動(dòng)DAC。此外還具有標(biāo)準(zhǔn)和先進(jìn)的通信接口:3個(gè)I2C,多達(dá)3個(gè)USARTs,多達(dá)2個(gè)具有多路全雙工I2S的spi和一個(gè)紅外發(fā)射機(jī)。STM32F301x6/8系列分別工作在-40 ~ +85°C和-40 ~ +105°C的溫度范圍,在2.0 ~ 3.6 V電源下使用。
340E910 USB轉(zhuǎn)TTL芯片:電腦端USB是USB電平,單片機(jī)的信號(hào)是TTL電平,兩者的電平不同是無法進(jìn)行通訊的,需要通過轉(zhuǎn)換才能實(shí)現(xiàn)互相通訊。此芯片實(shí)現(xiàn)了USB電平與TTL電平的相互轉(zhuǎn)換。從而實(shí)現(xiàn)將輸出用micro USB-USB線與樹莓派相連接。
除此之外,該模塊上還有一個(gè)標(biāo)稱中心頻率為8.00MHz的晶振。
本設(shè)計(jì)使用樹莓派3B作為CPU系統(tǒng),Linux系統(tǒng)版本為Linux raspberrypi 5.4.51-v7,可以在樹莓派官網(wǎng)https://www.raspberrypi.org/software/operatingsystems/ 下載樹莓派OS,如帶有樹莓派操作系統(tǒng)與桌面和推薦的軟件的最新系統(tǒng)版本下載鏈接為:https://downloads.raspberrypi.org/raspios_full_armhf/images/raspios_full_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-full.zip ,本鏈接所下載系統(tǒng)兼容所有樹莓派型號(hào)。樹莓派是一款基于ARM的微型電腦主板,以SD/MicroSD卡為內(nèi)存硬盤,卡片主板周圍有1/2/4個(gè)USB接口和一個(gè)10/100 以太網(wǎng)接口(A型沒有網(wǎng)口),可連接鍵盤、鼠標(biāo)和網(wǎng)線,同時(shí)擁有視頻模擬信號(hào)的電視輸出接口和HDMI高清視頻輸出接口,以上部件全部整合在一塊很小的主板上,具備所有PC的基本功能只需接通電視機(jī)和鍵盤,就能執(zhí)行如電子表格、文字處理、玩游戲、播放高清視頻等諸多功能。樹莓派以其低能耗、移動(dòng)便攜性、GPIO等特性,可以用來控制硬件、電機(jī),加載傳感器實(shí)現(xiàn)環(huán)境監(jiān)控,還能涉足物聯(lián)網(wǎng)。樹莓派上自帶有Thonny軟件,它是基于python內(nèi)置圖形庫tkinter開發(fā)出來的支持多平臺(tái)(windows,Mac,Linux)的python IDE,支持語法著色、代碼自動(dòng)補(bǔ)全、debug等功能,是一種“輕量級(jí)”的python IDE。實(shí)驗(yàn)的代碼編寫和調(diào)試在此軟件內(nèi)進(jìn)行。
本實(shí)驗(yàn)需要額外添加的類庫及其安裝命令如下:
(1)serial是關(guān)于串口通信的類庫,pyserial模塊封裝了對(duì)串口的訪問,用戶調(diào)用就能實(shí)現(xiàn)對(duì)串口的訪問和數(shù)據(jù)的讀取。python里面使用serial庫來操作串口,serial的使用流程跟平常的類似,具有打開、關(guān)閉串口,設(shè)置端口和波特率等串行口狀態(tài),讀、寫數(shù)據(jù)等功能。在樹莓派中,其安裝命令為:
sudo apt-get install python3-serial
(2)matplotlib是關(guān)于python繪圖工具的類庫,在樹莓派中使用以下兩行命令完成對(duì)numpy和scipy庫的安裝:
sudo apt-get install python-numpy
sudo apt-get install python-scipy
在安裝好前兩個(gè)庫的前提下再安裝matplotlib類庫,安裝命令為:
import matplotlib: sudo apt-get python-matplotlib
本實(shí)驗(yàn)使用代碼:draw_data = np.array(list_768).reshape(24,32),即可對(duì)熱成像探頭采集并經(jīng)過轉(zhuǎn)換后的768個(gè)溫度數(shù)據(jù),繪制生成24×32分辨率的整張熱成像圖。使用代碼imax,jmax = np.unravel_index(draw_data.argmax(), draw_data.shape)可以在整幅圖像中尋找溫度最大值的位置。
本文將對(duì)一瓶熱水、正在加熱的電烙鐵、正在運(yùn)行的樹莓派三個(gè)物體進(jìn)行測溫,并繪制劃分區(qū)域后的熱成像圖,以此為例,對(duì)各功能模塊運(yùn)行結(jié)果情況進(jìn)行展示。測溫場景如圖2所示。
圖2 對(duì)三個(gè)物體的溫度監(jiān)測
正常情況下,MLX90640模塊每一次測量被測物溫度信息后將發(fā)送給樹莓派一幀共有1544位的數(shù)據(jù),其中有效的包含完整溫度信息的數(shù)據(jù)個(gè)數(shù)是1536個(gè),本實(shí)驗(yàn)中使用list_1536裝有效數(shù)據(jù)。MLX90640模塊將測得的數(shù)據(jù)通過串口通信傳給樹莓派,樹莓派先獲取系統(tǒng)當(dāng)前時(shí)間,為了保證無論數(shù)據(jù)從當(dāng)前幀的哪一位開始傳輸,樹莓派都能接收到至少一幀完整數(shù)據(jù),待一切就緒后一次接收3200個(gè)來自傳感器的數(shù)據(jù)。
本實(shí)驗(yàn)的幀頭為[90,90,2,6],判斷樹莓派是否完整接收到一幀數(shù)據(jù)的方法如下所述:在接受到的3200個(gè)數(shù)據(jù)中開始幀頭檢測,從第一個(gè)幀頭到第二個(gè)幀頭之間包含了一幀想要獲取的數(shù)據(jù)信息,將這一段數(shù)據(jù)減去首位各兩位的兩幀數(shù)據(jù)的幀頭后,再減去剩余數(shù)據(jù)最末的四位幀尾,由此可以從這3200個(gè)數(shù)據(jù)中獲取來自探頭模塊發(fā)送的與溫度信息相關(guān)的完整數(shù)據(jù)。而串口數(shù)據(jù)的發(fā)送不可能保證不存在數(shù)據(jù)的丟失問題,因此可以自己設(shè)置一個(gè)幀的數(shù)據(jù)用于檢測數(shù)據(jù)是否完整,其具體思路如下所述:本實(shí)驗(yàn)檢驗(yàn)數(shù)據(jù)完整性的思路是判斷接收到的數(shù)據(jù)個(gè)數(shù)是否符合要求,即實(shí)際接受到的數(shù)據(jù)個(gè)數(shù)是否等于理論接收數(shù)據(jù)1544個(gè),由此判斷數(shù)據(jù)的完整性。例如自己設(shè)置一幀數(shù)據(jù)list_2=[自設(shè)幀頭1,自設(shè)幀頭2,理論接收數(shù)據(jù)個(gè)數(shù),有效數(shù)據(jù)開始的位數(shù),有效位數(shù)截止的位數(shù),自設(shè)幀尾1~3],共計(jì)八位數(shù)據(jù),list_1裝入接收到的一幀數(shù)據(jù)中不包含幀頭幀尾的數(shù)據(jù),用list_2+list_1作為返回值裝到list_1536。
在溫度轉(zhuǎn)換處理時(shí),先判斷l(xiāng)ist_1536中第三個(gè)數(shù)據(jù)是否為1544,即判斷數(shù)據(jù)接收是否完整,滿足條件則視為樹莓派接受的數(shù)據(jù)完整性好,可以用于熱成像圖的繪制。然后再忽略list_1536的前八個(gè)數(shù)據(jù),即忽略用于校驗(yàn)數(shù)據(jù)完整性的list_2里面的數(shù)據(jù),只對(duì)list_1中的數(shù)據(jù)進(jìn)行溫度轉(zhuǎn)換。在這1536個(gè)有效溫度數(shù)據(jù)中,每兩個(gè)數(shù)據(jù)可以轉(zhuǎn)換成一個(gè)溫度值,根據(jù)溫度轉(zhuǎn)換公式將數(shù)據(jù)轉(zhuǎn)化為768個(gè)溫度數(shù)據(jù)存入list_768中,再將這768個(gè)溫度數(shù)據(jù)分別存入到三個(gè)不同的數(shù)組中去,以便于在繪制的整張熱成像圖中求得每個(gè)區(qū)域最高溫度的大小以及整張圖片最大溫度值的位置。
3.2.1 溫度的獲取
例如一幀數(shù)據(jù)
<5A5A-0206-6EOE-690E-5AOE-XXXX-050E-8DOE-D540>
Byte0~Byte 1---0x5A0x5A表示幀頭;
Byte2~Byte3---0x0206 表示數(shù)據(jù)量 =0x06*256+0x02=1538個(gè)溫度數(shù)據(jù)(包括目標(biāo)數(shù)據(jù)和MLX90640自身溫度數(shù)據(jù));
Byte4~ Byte1539---表示圖中768個(gè)點(diǎn)的溫度數(shù)據(jù),輸出順序一次為:
(Col 1,Row 1) →(Col 32,Row 1) →(Col 1,Row 2) →(Col 32,Row 2)
→ (C o l 1,R o w XX)→(Col 32,Row XX)→(Col 1,Row 24) →(Col 32,Row 24)
注:(Col 1,Row 1)為上圖中右上角開始,轉(zhuǎn)換后所得溫度均為放大100倍后輸出。
圖3 數(shù)據(jù)采集示意圖
3.2.2 溫度的轉(zhuǎn)化
從數(shù)據(jù)到溫度的轉(zhuǎn)換通過以下公式進(jìn)行:
其中Tnum轉(zhuǎn)化后的768個(gè)溫度數(shù)據(jù),列表list_1536表示接收到探頭發(fā)送的完整的1536個(gè)數(shù)據(jù),開始時(shí)num=0,num0=0,每次轉(zhuǎn)換后num=num+1,num0=num0+2。
Byte1540~ Byte1541表示MLX90640自身溫度數(shù)據(jù),也由轉(zhuǎn)換公式計(jì)算得到。
Byte1542~ Byte1543表示前771個(gè)字的累加和,每個(gè)字為16bit。
Word1=0x5A5A,Word2=0x0602( 即 數(shù) 據(jù) 量 ),Word3=0x0E6E(即點(diǎn)1的溫度數(shù)據(jù)),……,Word770=0x0E05(即點(diǎn)768的溫度數(shù)據(jù)),Word771=0x0E8D(即MLX 90640的溫度數(shù)據(jù)),校驗(yàn)和=Word1+Word2+Word3+…+Word700+Word771= Byte 1543*256+Byte1542。
本實(shí)驗(yàn)由于原本設(shè)定輸出圖像尺寸為24×32,由于圖片在水平方向長度更長,固采用縱向區(qū)域劃分,縱向區(qū)域劃分適用于對(duì)左右排列的物體或設(shè)備的溫度監(jiān)控,其具體步驟如下:將一幀去掉幀頭幀尾的有效數(shù)據(jù)進(jìn)行溫度轉(zhuǎn)化后的768個(gè)溫度數(shù)據(jù),先進(jìn)行整體繪圖,得到一個(gè)24×32分辨率的圖像。然后將其分別裝入大小為24×11、24×11、24×10的A、B、C三個(gè)數(shù)組中, 從而實(shí)現(xiàn)每十一列(最后一個(gè)區(qū)域是十列)劃分一個(gè)區(qū)域得到三個(gè)有效監(jiān)控區(qū)。將每個(gè)區(qū)域的數(shù)組A、B、C分別使用函數(shù)統(tǒng)計(jì)出最大值max1、max2、max3,找出最大值點(diǎn)的位置并顯示在圖片上,即可對(duì)三個(gè)區(qū)域的最大值進(jìn)行監(jiān)控。最后將最大溫度值位置標(biāo)注在圖片上,以便對(duì)整體進(jìn)行監(jiān)控管理。
若希望對(duì)圖像區(qū)域進(jìn)行橫向劃分,例如,將32×24的圖像從上至下劃分三個(gè)區(qū)域,設(shè)計(jì)思路為將溫度轉(zhuǎn)換后的數(shù)據(jù)分別裝入大小為32×8的三個(gè)數(shù)組D、E、F中,后續(xù)步驟類似,通過對(duì)D、E、F三個(gè)區(qū)域的獨(dú)立最大值監(jiān)測以實(shí)現(xiàn)疊放式設(shè)備或物體的溫度監(jiān)測工作。
從圖4可以看到,圖片被縱向分割為左、中、右三個(gè)區(qū)域。左邊裝有熱水的瓶子最高溫度為60.0℃,正在加熱的電烙鐵最高溫度為77.09℃,正在運(yùn)行的樹莓派圖像邊緣被掩蓋,最高溫度為19.89℃。并標(biāo)記出整張熱成像圖最大溫度點(diǎn)的位置在正在加熱的電烙鐵頭部。
圖4 縱向劃分區(qū)域后的熱成像圖
本文基于MLX90640探頭的熱成像圖劃分區(qū)域的研究過程進(jìn)行闡述。紅外溫度探頭MLX90640將測得數(shù)據(jù)用串口通信方式發(fā)送給樹莓派,樹莓派首先將接收到的數(shù)據(jù)進(jìn)行完整性判斷后,再對(duì)接收到的完整數(shù)據(jù)進(jìn)行數(shù)據(jù)到溫度值的轉(zhuǎn)換,然后將所得的768個(gè)溫度數(shù)據(jù)進(jìn)行圖像繪制,再將其分為三個(gè)數(shù)組,針對(duì)每個(gè)數(shù)組求取其最大溫度點(diǎn)的位置和大小,標(biāo)記整幅圖像中的最大溫度點(diǎn)位置。相比于傳統(tǒng)測溫系統(tǒng)一對(duì)一的監(jiān)控模式,本設(shè)計(jì)在此方面有所提升,以一個(gè)探頭同時(shí)監(jiān)控多個(gè)設(shè)備,提高了資源利用率,也為用戶節(jié)省成本,便于用戶進(jìn)行整體監(jiān)控和管理。除此之外,還可以在生成的熱成像圖中直接明了地發(fā)現(xiàn)探頭檢測到最大溫度點(diǎn)的位置,便于人工復(fù)查尋找到發(fā)熱點(diǎn)。