MLX90614 紅外測溫模塊
MLX90614 簡介
MLX90614是一款由邁來芯公司提供的低成本,無接觸溫度計。輸出數(shù)據(jù)和物體溫度呈線性比例,具有高精度和高分辨率。TO-39金屬封裝里同時集成了紅外感應(yīng)熱電堆探測器芯片MLX81101(溫度是通過PTC或是PTAT元件測量)和信號處理專用集成芯片MLX90302,專門用于處理紅外傳感器輸出信號。用以阻礙可見光和近紅外光輻射的光學濾波器(可傳播長波)集成在封裝內(nèi)提供對環(huán)境和日光的免疫。濾波器的波長通帶為5.5到14μm。由于集成了低噪聲放大器、17位模數(shù)轉(zhuǎn)換器和強大的數(shù)字信號處理芯片 MLX90302,使得高精度和高分辨度的溫度計得以實現(xiàn)。一個附加的片上溫度傳感器用來測量芯片的溫度。測量完兩個傳感器的輸出后,對應(yīng)的環(huán)境溫度和物體溫度被計算出。計算所得物體溫度和環(huán)境溫度存儲在MLX90302的RAM單元,溫度分辨率為0.01℃,并可通過兩線 SMBus(系統(tǒng)管理總線)兼容協(xié)議接口(IIC與之兼容)(0.02℃分辨率)或是10位PWM(脈寬調(diào)制)輸出模式輸出。MLX90614出廠溫度范圍都進行過校準,傳感器測量的溫度為視場里所有物體溫度的平均值。
MLX90614 參數(shù)
探頭直徑8.2mm
數(shù)字接口類型:IIC(從模式)
溫度測量范圍:-70℃~382.2℃
溫度測量誤差:±0.5℃ (室溫下)分辨率0.02℃
工作電壓:3.3V~5V
使用環(huán)境溫度-40~125℃
項目介紹
本項目將以Arduino作為主控,按鍵觸發(fā),搭配MLX90614紅外測溫傳感器制作一個非接觸式,測溫距離在1CM左右的人體手腕測溫儀,測量到的溫度用OLED顯示屏打印出來 。

項目搭建
接線
Arduino | MLX90614 | OLED | 按鍵 |
---|---|---|---|
A4 | SDA | ||
A5 | SCL | ||
5V | VIN | VCC | |
GND | GND | GND | OUT |
D3 | IN | ||
D8 | RES | ||
D9 | DC | ||
D10 | CS | ||
D11 | D1 | ||
D12 | D2 |
開發(fā)
為了方便開發(fā)本項目會用到MLX90614庫和U8g2庫
#include <U8g2lib.h>
#include <Adafruit_MLX90614.h>
項目上電后初始化完成后,在串口和OLED屏幕上打印項目名稱"Contactless Temperature Measurement",由于屏幕寬度有限,使用OLED顯示器分行打印
Serial.println("Contactless Temperature Measurement"); //串口打印項目名稱
u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
u8g2.setFont(u8g2_font_ncenB14_tr); //字體選擇
u8g2.setFontDirection(0); //繪制/顯示方向
u8g2.clear(); //清空顯示和緩沖
u8g2.setCursor(7, 15); //移動光標位置
u8g2.print("Contactless"); //OLED打印內(nèi)容
u8g2.setCursor(0, 35);
u8g2.print("Temperature");
u8g2.setCursor(0, 55);
u8g2.print("Measurement");
u8g2.sendBuffer();
通過按下按鍵改變D3引腳電平狀態(tài)觸發(fā)測溫
int Start()
{
int B=1;
B=digitalRead(Bottom);
delay(30);
return B;
}
獲取溫度—為了提高溫度的可靠性 讀取了5次溫度存放在一個數(shù)組里,數(shù)組里的輸出通過可靠性判斷和處理后就可以打印輸出了
void gTemp()
{
for (int i = 0; i < 5; i++)
{
t[i] = mlx.readObjectTempC();
Serial.println(t[i]);
delay(300);
}
}
主程序
void loop(void) {
while(!Start()) //測溫循環(huán)
{
u8g2.clear();
Serial.println("start"); //串口打印開始信息
delay(1000);
gTemp(); //測溫 讀取5次溫度值 保存再t數(shù)組里面
if(dTemp()>0) // 判斷數(shù)據(jù)有效性
{
u8g2.clear(); //清屏
u8g2.setCursor(3, 20);
u8g2.print("temperature");
u8g2.setCursor(40, 50);
u8g2.print(prantTemp()); //打印溫度值
Serial.println(prantTemp()); -
u8g2.sendBuffer();
}
else
{
Serial.println("read fail"); //串口打印測溫錯誤信息//五次溫度處理后判斷為無效數(shù)據(jù)
u8g2.clear(); //清屏
u8g2.setCursor(23 ,17); //OLED打印位置
u8g2.print("read fail"); //OLED打印讀取失敗信息 OLED打印測溫錯誤信息//五次溫度處理后判斷為無效數(shù)據(jù)
u8g2.setCursor(19, 37); //OLED打印位置
u8g2.print("please try"); //OLED打印讀取失敗信息
u8g2.setCursor(35, 55); //OLED打印位置
u8g2.print("again"); //OLED打印讀取失敗信息
u8g2.sendBuffer();
}
delay(5000);
u8g2.clear(); //清屏
break;
}
}
項目驗證展示
- 點擊開始測溫后被測溫目標再進入測溫區(qū)域,判斷為測溫失敗
測溫失敗演示文章來源:http://www.zghlxwxcb.cn/news/detail-780283.html
- 正確測溫演示
Arduino - MLX90614非接觸式測溫文章來源地址http://www.zghlxwxcb.cn/news/detail-780283.html
測得溫度為36.25攝氏度
到了這里,關(guān)于MLX90614紅外測溫傳感器使用arduino采集溫度數(shù)據(jù)OLED顯示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!