MLX90640 紅外熱成像儀測溫模塊開發(fā)筆記(三)工作流程和操作MLX90640 的一般步驟
河北穩(wěn)控科技MLX90640 紅外熱成像傳感器
默認參數(shù)時
MLX90640 的工作流程
(1) 上電,內(nèi)部初始化(約 40ms)
(2) 讀取工作參數(shù)到控制和狀態(tài)寄存器
(3) 開始以 2Hz 的速率測量實時數(shù)據(jù)并更新到 RAM,自動更新狀態(tài)寄存器。
測量幀解釋
MLX90640 共有 768 個測量像素點,每次測量其中的一半,稱為 1 幀,故此完成 768 像
素需要測量 2 幀,用幀 0 和幀 1 來表示。即:所謂的 1 幀數(shù)據(jù)其實是完整像素的一半。
可以修改的參數(shù)
可以修改的參數(shù)有以下幾個方面:
? 自動測量:默認為自動測量,即自動循環(huán)測量幀 0 和幀 1 更新到RAM 中。與其對應(yīng)的是手動測量,即:用指令來控制測量幀 0 還是幀 1。手動測量已經(jīng)在官方的數(shù)據(jù)手冊中被刪除,看來 MLX 也不喜歡別人用,所以我們也就別用了。自動測量保持默認值,不要改就好。
? 幀分布:前面已經(jīng)說了,1 幀實際上是測量完成了一半的像素點,這一半像素有兩種分布模式,手冊上稱為 TV 模式和 Chess 模式,TV 模式以行為單位,是指每幀只測量奇數(shù)行或者偶數(shù)行,Chess 模式是指以像素為單位,每次交錯著像素測 384 個像素點。我們可以稱之為“行交錯模式”和“像素交錯模式”。
在這方面,手冊上又說了,出廠時是以 Chess 模式校準的,具有最好的精度(言下之意就是說如果修改為了 TV 模式時會不準),鑒于此,這個參數(shù)也不要動。
? 測量分辨率:可選的有 16~19 位 AD 轉(zhuǎn)換精度,默認是 18 位,轉(zhuǎn)換位數(shù)當然是越
高越好了,但 18 和 19 位經(jīng)過測試也沒有發(fā)現(xiàn)有什么實際區(qū)別,這個參數(shù)可改可不改。
? 測量速率:每秒測量幾幀數(shù)據(jù),這個參數(shù)很有用處,畢竟我們希望成像后是連續(xù)的
動畫,每秒 2 次一定是不好的,我們可以調(diào)用 API 將這個參數(shù)修改為 8Hz 或者 16Hz 甚至 32Hz,64Hz 是不建議的,因為測量速率太快時噪聲特別大,圖像特別亂。普通相機的刷新速率也就 15Hz 左右,所以建議最高設(shè)置為 16Hz 吧。
所以,雖然數(shù)據(jù)手冊上寫的感覺好像可修改的參數(shù)挺多,這么一分析,其實只有 1 個測量速率是有用處的,其它都是浮云(雞肋)。
參數(shù)修改方法討論:
有兩種修改方法,修改寄存器和修改 EEPROM。
(1) 修改寄存器(推薦)
傳感器上電后會自動從 EEPROM 讀取參數(shù)到寄存器,寄存器內(nèi)的參數(shù)值是運行時實際執(zhí)行的參數(shù),直接通過 I2C 修改寄存器值即可,隨用隨改、立即生效。寄存器的值是掉電遺失的, 所以每次上電后都要修改一次。
(2) 修改 EEPROM
EEPROM 是掉電不丟失的,所以修改 EEPROM 內(nèi)的運行參數(shù)只需要一次,下次啟動生效。但
EEPROM 內(nèi)存儲的不僅只是同步到運行寄存器的幾個參數(shù),大部分的是 768 個像素的校準參數(shù),這些參數(shù)是出廠時寫入的,特別重要,所以我的建議還是不要對 EEPROM 有任何的寫操作,以免發(fā)生意外,EEPROM 里的像素校正參數(shù)一旦被意外修改就再也找不回來了。
MLX90640 底層驅(qū)動Keil 項目(STC 單片機)下載
建議的操作流程
unsigned short EE[832]; unsigned short Frame[834]; paramsMLX90640 MLXPars; float Vdd,Ta,Tr;
float Temp[768];
IIC_Init(); //I2C 初始化
MLX90640_I2CInit(); //MLX 傳感器初始化
Delay_ms(50); //預(yù)留一點時間讓 MLX 傳感器完成自己的初始化
MLX90640_SetRefreshRate(0); //測量速率 1Hz(0~7 對應(yīng) 0.5,1,2,4,8,16,32,64Hz)
MLX90640_I2CRead(0x2400, 832, EE); //讀取像素校正參數(shù)MLX90640_ExtractParameters(EE, &MLXPars); //解析校正參數(shù)(計算溫度時需要)
while (1)
{
Delay_ms(5);
if (MLX90640_GetFrameData(Frame)==0) //有轉(zhuǎn)換完成的幀
{
Vdd=MLX90640_GetVdd(Frame, MLXPars); //計算 Vdd(這句可有可無) Ta=MLX90640_GetTa(Frame, MLXPars); //計算實時外殼溫度
Tr=Ta-8.0; //計算環(huán)境溫度用于溫度補償
//手冊上說的環(huán)境溫度可以用外殼溫度-8℃ MLX90640_CalculateTo(Frame, MLXPars, 0.95, Tr, Temp); //計算像素點溫度
/*
Temp 數(shù)組內(nèi)即是轉(zhuǎn)換完成的實時溫度值,單位℃
可以在這里對得到的 32*24=768 個溫度值進行處理、轉(zhuǎn)換為顏色值、顯示關(guān)于溫度轉(zhuǎn)顏色方法,在后續(xù)的文章中會有專門介紹
*/
}
}
一點疑問
校正參數(shù)存儲于傳感器內(nèi)部的 EEPROM,實時數(shù)據(jù)也來自傳感器,如何利用實時數(shù)據(jù)和校正
參數(shù)計算溫度的方法也是事先規(guī)定好的,MLX 為什么不直接在內(nèi)部完成這個溫度計算讓用戶直接讀取溫度值?為了體現(xiàn)這個傳感器的復(fù)雜性或者是讓用戶有成就感嗎?
本來可以在傳感器內(nèi)部解決的問題被廠家要求在外部完成,對 MCU 的性能要求是特別高的, 大量的浮點運算,大量的RAM 消耗,較低的效率。
河北穩(wěn)控科技MLX90640 紅外熱成像傳感器成果
-
紅外熱成像儀
+關(guān)注
關(guān)注
1文章
127瀏覽量
15469 -
測溫模塊
+關(guān)注
關(guān)注
0文章
13瀏覽量
3069 -
MLX90640
+關(guān)注
關(guān)注
3文章
22瀏覽量
1680
發(fā)布評論請先 登錄
【開源分享】用 ESP32 DIY 一個紅外熱成像儀
紅外熱成像儀的技術(shù)原理及應(yīng)用
紅外熱成像+汽車保養(yǎng):讓故障隱患“無處遁形”
格物優(yōu)信推出PCB專用高清熱成像儀
功率器件熱設(shè)計基礎(chǔ)(十四)----熱成像儀測溫度概述
浮思特 | 紅外熱成像儀可以檢查什么?用途比你想的還多!
紅外熱成像機芯:測溫集成的得力之選
Raythink燧石紅外熱成像儀在電力巡檢中的應(yīng)用
如何構(gòu)建帶有VGA輸出的低分辨率熱成像
普冉EEPROM在工業(yè)紅外熱成像儀中的應(yīng)用
Made with KiCad(102):DIY 一個紅外熱成像儀
紅外熱成像儀+AI:Raythink燧石技術(shù)為機場安防裝上不眠的智慧之眼
為什么紅外熱成像采用微測輻射熱計技術(shù)?
MLX90640紅外熱成像儀測溫模塊開發(fā)筆記(三)
評論