全國高級中等學校專業群科
109 年
專題及創意製作競賽
「專題組」作品說明書封面
群別:電機與電子群
作品名稱:校園額溫槍
關鍵詞:額溫槍、紅外溫度感測器
說明:
1.應遵守電機與電子群競賽作品說明書複賽規格製作,請參照本範
例。
2.封面僅可包含群別、參賽作品名稱及關鍵詞。
3.除規定文字外,參賽學生可自行設計說明書封面。
- 1 -
-目錄-
壹、摘要………2
貳、研究動機………2
参、主題與課程之相關性或教學單元之說明………2
肆、 研究方法與過程
(1)、控制流程圖………3
(2)、採用零件清單………3
(3)、研究原理介紹………3
(4)、硬體架構電路………7
(5)、程式說明………11
伍、研究結果………13
陸、討論………14
柒、結論………15
捌、參考資料及其他………15
- 2 -
壹、摘要
本產品名稱是「校園額溫槍」,利用醫療用測溫集成輻射紅外探頭溫度 感測器MLX90615 作為主要元件的專題製作。利用二年級單晶片課程、程 式專題實習實作經驗,設計具數字顯示、聲音警示、開關功能切換、利用 ATMega328 IC 簡化電路與包裝設計,參考老師建議以醫療用感測元件作 為主要元件,經實際校正後檢測,量測誤差介於正負 0.5 度間,可以作為 學校或班級因為體溫計不足之初步快篩,如果體溫超過37.5 度,盡快送至 健康中心作最後檢測。貳、 研究動機
我們這個研究是因為 2019 冠狀病毒病(COVID-19 武漢肺炎)疫情擴散, 台灣許多醫療用品都供不應求,例如:口罩、酒精、消毒水、額溫槍等… 此情況導致我們國人健康受到嚴重的影響。而額溫槍之所以常用的原因是 因為它非接觸、方便快速、衛生,特別適合快速檢測體溫的時候使用。因 為進入學校都要量測體溫因此發想設計。參、主題與課程之相關性或教學單元之說明
隨著感測元件多元發展、Arduino 應用普及,對於感測元件所測得數據 越來越精準,利用課堂老師所講授各種感測元件原理,運用 Arduino 去控 制某一項物品做某件事等實際案例操作經驗。結合高二單晶片實習、程式 設計專題實習與務聯網實習課程,組員們分工合作,由學長領導3 位學弟 在討論主題時想到溫溼度感測器,運用 Arduino 所學與電子學濾波與開關 控制、數字顯示與聲音警示電路,經由老師糾正指導,由麵包版初步製作, 到電路設計確定,完成電路雕刻與包裝設計。配合專題製作的課程,我們 將研習所學與上課課程結合,專題製作這堂課上教了 Arduino 物聯網進階 技術與ATMega328 電路設計,將所學過的知識藉由這個作品串聯起來。- 3 -
肆、研究方法與過程
一、控制流程
二、採用零件清單
元件 數量 元件 數量 小型雙切開關 2 330Ω(1/4W)限流電阻 8 3 號電池盒*3 1 1KΩ(1/4W) 1 Buzzer 有源蜂鳴器 1 10KΩ(1/4W) 4 9013 電晶體 1 100KΩ 可調電阻 1 MLX90615 溫度感測器 1 按鈕開關 1 石英晶體 16MHz 1 ATMEGA328P IC 1 20p 陶瓷電容 2 共陰 4 位元七段顯示器(小) 1 0.1uF 陶瓷電容 1 排針 2三、研究原理介紹
(一)、
MLX90615 原理: 1. MLX90615 又稱為醫療用測溫集成輻射紅外探頭溫度感測器,基於 傳統紅外輻射熱釋電方法集成模數轉換數字控制與輸出,為I2C(積 體電路匯流排)串列通訊界面,將複雜的校準修正算法融入積體電 路,使得傳統模擬電荷輸出的熱釋電感測器,具備了數字讀取的非 接觸測溫功能。而通過校準後的感測器,可測量範圍內在-20 至 115 度,解析度可達到 0.02 度。MLX90615 更在人體溫度 30-40 度 範圍保證高於0.1 度的精度,具備精準醫療測溫能力。- 4 - 2. 熱釋電(Pyroelectric)原理:熱釋電效應為極化強度隨溫度改變而表 現出的電荷釋放現象,也就是溫度的改變是在材料的兩端出現電壓 或產生電流。熱釋電效應與壓電效應類似,熱釋電效應是晶體的一 種自然物理效應。對於具有自發式極化的晶體,當晶體受熱或冷卻 後,由於溫度的變化(△T)而導致自發式極化強度變化(△Ps),從而 在晶體某一定方向產生表面極化電荷的現象稱為熱釋電效應。關係 為:△Ps=P△T △Ps:自髮式極化強度變化量 △T:溫度變化 P:熱釋電係數 3. 熱釋電體,又稱熱電元件,如果在熱電元件兩端並聯上電阻,當元 件受熱時,則電阻上就有電流流過,在電阻兩端也能得到電壓信號。 熱釋電效應在近 10 年被用於熱釋電紅外探測器中,廣泛地用於輻 射和非接觸式溫度測量、紅外光譜測量、雷射參數測量、工業自動 控制、空間技術、紅外攝像中。 4. MLX90615 紅外測溫晶片,簡化模擬前端電路設計無需再增加額外 的運算放大器及ADC 模數轉換器,憑藉 MLX90615 內部集成積體 電路的低噪聲放大器、高解析度 16 位元 ADC 和功能強大的 DSP 單元,可直接將數位訊號送入微控制器(Arduino),通過雙線制串列 SMBus 兼容協議(解析度為 0.02°C)或 10 位元 PWM(脈波寬度 調變)信號進行處理,整個監測裝置的設計得到了極大的簡化,更 方便設計。 圖1 MLX90615 元件連接圖
(二)、ATMEGA328P-PU 微控制器介紹:
這是一顆八位元AVR 精簡指令型微控制器,擁有 32KB ISP 具備寫入 同時讀取能力的快閃記憶體 FlashROM。1KB 的電氣可抹除唯讀記憶體 EEPROM。2KB 隨機存取記憶體 SRAM。23 個通用輸出輸入線。32 個通- 5 - 用工作暫存器。三個具備比對能力的計時計數器。內部與外部中斷。可程 式化的通用非同步收發串列介面(UART)。一組位元組導向的兩線式 I2C 串 列介面。一組SPI 串列埠。6 通道 10 位元類比數位轉換器(TQFP 及 QFN/MLF 包裝中只有8 通道)。一組具有內部震盪器的可程式化看門狗計時器。五組 可選擇的功率節約模式。這個單晶片的工作電壓運作在 1.8V-5.5V 之間。 這個單晶片運作效能達到每百萬赫茲(Hz)有 1 MIPS。ATmega328P-PU 為 低功率消耗元件。常做為Arduino Uno 板的微控制器。
圖 2 ATMEGA328P 與 Arduino Uno 板接腳對應
- 6 -
(三)、ATMEGA328P-PU ISP 燒錄:
一般市售 ATmega328P-PU 晶片,裡頭空空的,需要定義腳位,沒有 Arduino 的 bootloader 也沒有任何 sketch。所以必須利用 Arduino Uno 板, 讓它化身成一台 ISP 燒錄器;把 ATmega328P-PU 放上麵包板,燒錄電路 如圖 4,便可從主機電腦透過 Arduino Uno 板、將 bootloader 或 sketch 燒錄 到麵包板的ATmega328P-PU 晶片裡。
圖 4 ATMEGA328P ISP 燒錄電路圖與市售燒錄器
本實作若用 Arduino Uno 完成,缺點是成本較高且體積較大,解決方 式就僅利用 Arduino Uno 的核心 ATmega328P-PU 晶片,沒有 Arduino 的 bootloader 啟動載入,bootloader 是定義韌體腳位與程式碼開始執行位置, 所以一定要先完成,當 bootloader 完成,可購買市售圖 5DIP 版,直接將 Arduino Uno 板當作燒錄器,若是圖 5SMD 版,則需將 Arduino Uno 板當 做一台ISP 線上燒錄器。
- 7 - 燒錄步驟如下說明: 1. 依序選擇『檔案 → 範例 → 11.ArduinoISP → ArduinoISP』,利用 『工具』設定如圖 6 紅框內選項,然後按 按鈕,當底部看到 『上傳完畢』即可,目的是將 Arduino 當成線上燒錄 ISP 的板子 (圖 4 可以先不接) 2. 將圖 6 電路連接,依序選擇『工具 → 燒錄器 → Arduino as ISP』 (千萬不要選擇 ArduinoISP,兩者都不同,as 是指『當成』) 3. 依 序 選 擇 『 工 具 → 燒 錄 Bootloader 』, 底 部 會 顯 示 , 當 底 部 可 以 看 到 訊息,表示 bootloader 已經燒錄成功。 4. 點 擊 MLX90615to7SEG.ino 或 其 他 AX 範 例 檔 案 , 重 新 開 啟 Arduino,一定要按『草稿碼 → 以燒錄器上傳』,若又按 按鈕, 程式其實是上傳到UNO 喔! 圖 6 步驟 1 設定畫面與步驟 2 設定畫面 圖 7 步驟 4 設定畫面
(四)、硬體架構電路:
每個有熱量的物體一定有所謂的紅外線輻射,那麼這台額溫槍就是把 紅外線感測器所探測到的熱量轉換成電子訊號,並經由電晶體去做放大, 再來由控制 IC 讀取訊號,接著程式會將讀進來的訊號做出運算以及判斷, 運算後的結果會輸出在七段顯示器上面,七段顯示器顯示的數值就是結果, 是以攝氏溫度運算的。當開關被按下去時,程式會判斷開關已被按下,蜂 鳴器會發出嗶一聲,如果受測者溫度大於 37.5 度,程式會判斷這個人可能 有發燒,並通知蜂鳴器嗶一個 3 秒的長音,跟一般情況下做一個區別。- 8 -
圖 8 電路架構圖
圖 9 以 ATmega328P-PU 晶片設計之校園額溫槍電路圖
- 9 -
Arduino Uno 與 ATMEGA328 腳位對應如下: (單獨使用 ATMEGA328 需搭配震盪電路如下 4~7)
1. Arduino 的 數 位 D0~D7 分 別 對 應 到 ATMEGA328 的 pin2(a),3(b),4(SCL),5(SDA),6(c),11(d),12(e),13(f)
2. Arduino 的 數 位 D8~D13 分 別 對 應 到 ATMEGA328 的 pin14(g),15(.),16(D0),17(D1),18(D2),19(D3)
3. Arduino 的類比 A0~A5 分別對應到 ATMEGA328 的 pin23(可調電阻 ),24,25(Buzzer),26,27(SW),28(按鈕) 4. pin1:接限流電阻 10K → Vcc (Reset 腳位) 5. pin7:Vcc 6. pin8:GND 7. pin9、10 接 16MHz 石英晶體震盪 OSC,同時並接 20p 陶瓷電容 到 GND
1.MLX90615 紅外線溫度感測器
MLX90615 硬體連接方式是採用 I2C(Inter-Integrated Circuit 積 體電路匯流排)介面,Serial Clock Line 串列時鐘線 SCL 負責產生同步 時鐘脈衝,Serial Data Line 串列資料線 SDA 負責傳輸串列資料,腳位底 視圖與電路圖如圖 11。兩隻接腳與 ATMEGA328P 溝通,圖中的兩顆 10K 電 阻是當做上拉電阻。 圖11 MLX90615 紅外線溫度感測器2.蜂鳴器
這個電路是使用 NPN 電晶體共射極模組,使電晶體達到飽和區來當 作開關。有源蜂鳴器(內含震盪源),只須加上電壓訊號就會發聲,發出聲音 單一,頻率固定。無源蜂鳴器,無正負極之分類似喇叭,輸入不同頻率可 產身不同音調。- 10 - 圖 12 蜂鳴器
3.開關電路、按鈕電路、可變電阻電路
(1)兩段式開關(左):開關往上撥和電源導通(高準位,量測額溫),往下 撥和地導通(低準位,接觸溫度),這個電路是用來切換溫度感測模 式,透過程式判斷腳位(27)電位高低。 (2)按鈕(中):這個電路目的是用在測量額溫時的確定按鈕,當未按下, 七段顯示器會一直閃爍顯示環境溫度,按下表示量測確定,七段顯示 器的數字停止跳動呈現定值。 (3)可變電阻(右):這個電路是分壓電路,根據歐姆定理 V=IR,電阻越大 分到的電壓越大,再透過腳位(23)類比讀值轉換,這個電路的用意是 調整讀取溫度的誤差值。 圖 13 兩段式開關(左)、按鈕(中)、可變電阻(右)- 11 -
(五)、程式說明:
行 號 MLX90615to7SEG.ino 程式碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 #include "MLX90615.h" // 匯入 MLX90615 模組資料庫#include <I2cMaster.h> // 匯入 I2C 模組資料庫
#define SDA_PIN 3 // 定義 SDA 腳位連接到 D3
#define SCL_PIN 2 // 定義 SCL 腳位連接到 D2
SoftI2cMaster i2c(SDA_PIN, SCL_PIN); // I2C 初始化
MLX90615 mlx90615(DEVICE_ADDR, &i2c); // MLX90615 初始化
int aa,i,b,jj,j,number,count=0;
//---定義 0~9 字型---
const byte num[10]={ B11000000, //0 B11111001, //1 B10100100, //2 B10110000, //3 B10011001, //4 B10010010, //5 B10000010, //6 B11111000, //7 B10000000, //8 B10010000}; //9
const int seg[]={0,1,4,5,6,7,8,9}; // abcdefgp 腳位分別連接到 D0,D1,D4,D5,D6,D7,D8,D9
const int digit[]={10,11,12,13}; // D0-D3 共用腳位分別連接到 D10,D11,D12,D13 //---各腳位初始定義--- void setup() { for(i=0;i<8;i++) pinMode(seg[i],OUTPUT); pinMode(A2,OUTPUT); // Buzzer 有源蜂鳴器 digitalWrite(A2,0); // 關閉 Buzzer for(i=0;i<4;i++) { pinMode(digit[i],OUTPUT); digitalWrite(digit[i],HIGH); // 共陰七段顯示器共用腳為 HIGH,所以全部熄滅 delay(30); } //mlx90615.writeEEPROM(Default_Emissivity);
//write data into EEPROM when you need to adjust emissivity 發射率.
//mlx90615.readEEPROM(); //read EEPROM data to check whether it's a default one.
} //---主程式開始--- void loop() { if ( digitalRead(A5)==HIGH) // 當測試按鈕沒有按下,執行第 42~51 行程式,反覆監測溫度 { if(digitalRead(A4)==LOW) // 模式選擇,SW 往上為測量『額溫』 { b=analogRead(A0)/10; // 讀取可調電阻分壓類比讀值,用來修正因距離產生的溫度差 aa=(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE))*10+b;} // 物件溫度 else // 模式選擇,SW 往下為測量『接觸溫度』,不做修正 { aa=(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE))*10;} // 周圍溫度 for(i=0;i<4;i++){digitalWrite(digit[i],HIGH);} // 七段暗 30ms delay(30); // 造成閃爍狀態,表示目前正在持續監測溫度 for(jj=0;jj<8;jj++) { disp(); }
- 12 - 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 } else // 當測試按鈕按下,執行第 53~68 行程式,以鎖定溫度顯示,以便觀察 { if(digitalRead(A4)==LOW) // 模式選擇,SW 往上為測量『額溫』 { b=analogRead(A0)/10; // 讀取可調電阻分壓類比讀值,用來修正因距離的溫度差 aa=(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE))*10+b; } else // 模式選擇,SW 往下為測量『接觸溫度』,不做修正 { aa=(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE))*10;} digitalWrite(A2,1); delay(111); digitalWrite(A2,0); // 蜂鳴器叫 0.1 秒提醒
if (aa>375) { digitalWrite(A2,1); } // 當讀值大於 37.5 度,蜂鳴器持續發出警示聲響
for(jj=0;jj<111;jj++) { disp(); } // 七段繼續顯示溫度約 1 秒
digitalWrite(A2,1); delay(111); digitalWrite(A2,0); // 蜂鳴器叫 0.1 秒提醒後停止
for(jj=0;jj<666;jj++) // 七段繼續顯示 9 秒,並判斷是否按下按鈕,以提前解除鎖定
{ disp(); if(digitalRead(A5)==LOW) {delay(33); goto aa0;} }
digitalWrite(A2,1); delay(111); digitalWrite(A2,0); // 9 秒之後,蜂鳴器叫 0.1 秒
aa0: if(digitalRead(A5)==LOW) { delay(33); goto aa0; } // 按鈕放開,才會往下執行
delay(111); } } //---七段顯示器掃瞄副程式--- void disp() { number=aa*10; for(i=3;i>=0;i--) { for(j=0;j<8;j++) { if(bitRead(num[number%10],j)) digitalWrite(seg[j],LOW); else digitalWrite(seg[j],HIGH); } digitalWrite(digit[i],LOW); digitalWrite(13,1); // 使七段最後位數遮沒
if (number%10==0 & i==0) {digitalWrite(digit[i],HIGH);} // 千位數=0,使七段遮沒
if (i==1) { digitalWrite(seg[7],HIGH); } // 小數點點亮
if (aa<0 & i==3) {
for(j=0;j<8;j++) { digitalWrite(seg[j],LOW); } digitalWrite(digit[i],LOW); // a-g 遮沒
}
delay(3); digitalWrite(digit[i],HIGH); number=number/10; // 使七段共陰腳遮沒
} }
- 13 -
伍
、
研究成果
當電源開啟後,七段顯示器數字會閃爍,代表正在反覆偵測目前 環境溫度,感測元件與額頭或太陽穴建議保持 0.5~1 公分距離,當按下按 鈕開關會鎖定資料,蜂鳴器Bi 一聲通知,此時七段顯示器不閃爍,經 過1 秒後再 Bi 一聲,表示可以測試下一位,但是要再次按下按鈕開關, 提前解除顯示鎖定,若都不按,則超過10 秒也會 Bi 一聲通知自動解除, 繼續反覆偵測目前環境溫度,七段顯示器又開始閃爍。由於額溫會跟實際 體溫相差1°C 左右,所以當超過37.5°C 代表可能發燒,會持續發出 3 秒鐘 警示聲提醒,不妨多做幾次確認,或另外使用耳溫槍確認較佳。 外觀與元件功能說明: 電源開關(往上 OFF、往下 ON) 測試按鈕開關(鎖定資料 10 秒) 可調電阻,校正溫度用(當距離越遠,測試溫度偏低) 模式選擇,往上為測量『額溫』、往下為測量『接觸溫度』 MLX90615 紅外測溫度感測元件 Buzzer 有源蜂鳴器 (超過 37.5°C 發出警示聲,代表可能發燒) Atmega328 控制 IC (亦可直接使用 Arduino UNO 板)四位元七段顯示器(共陰)
A4
A5
缺
口
朝
上
- 14 -
陸、討論
一、 對於額溫槍使用設定,我們在專題設計了各種假設,也寫了不同版 本程式設計,已被不同需求,如下表一: 表一 不同版本程式設計 按鈕沒按 超過溫度 【不叫】 按鈕沒按 超過溫度 【會叫】 功 能 說 明 MLX9015 A0 MLX9015 A3 按一下叫一聲,鎖定一秒後再叫一聲,再 按不叫,直接進入測量狀態,不按則九秒 後再叫一聲,重新進入測量狀態 MLX9015 A1 MLX9015 A5 按一下叫一聲,鎖定不動,待再按之後叫 兩聲,重新進入測量狀態 MLX9015 A2 MLX9015 A6 按一下叫一聲,鎖定一秒後叫兩聲,繼續 鎖定九秒後叫三聲,進入測量狀態,九秒 期間再按,則叫三聲之後,重新進入測量 狀態 備註 A3~A6 較適合大量學生湧入快速篩選,若有疑似再另外 確認。 二、 一般額溫會容易受周圍環境溫度影響,例如當寒流來襲時,若剛進 入校園前就立刻量測,溫度會偏低許多,即使是使用市售的額溫槍, 也會因為溫度過低而顯示不出來,此時解決方式是量測最接近身體 的脖子或手心較佳,而測量的遠近,也會影響讀值,距離越遠,則 顯示的溫度越低,所以建議以 0.5~1 公分最佳,亦可自行調整可調 電阻,以達更精確的溫度,不過每次測試應與額頭或脖子距離固 定或同一點量測,已達更精確穩定的溫度。 三、 為求更精確與更穩定的量測結果,建議將感測器加上測量嘴,有利 於有效收集紅外輻射,減少環境溫度干擾;或加上超音波測距,更 精確固定距離。 圖14 測量嘴示意圖與各種量測值發燒標準測量嘴
- 15 - 四、 為求量測溫度精準,我們使用 3 支相同品牌額溫槍做量測與校正, 經校正後,實際測量誤差量介於正負 0.5 度間(誤差甚至更低),可以 作為學校或班級因為非接觸式體溫計不足之初步快篩,如果體溫超 過37.5 度,盡快送至健康中心作最後檢測。 五、 對於包裝設計我們一開始是到文具行購買收納盒,雖然便宜但尺寸 較大。所以,老師找機械科老師一起跨域設計,將尺寸縮小變得精 美小巧,方型外殼跟市面不同,未來如果將電路板設計縮小,應該 能夠更攜帶。
柒、結論
我們所製作的額溫槍同時兼顧到精準度及低成本,對於疫情嚴重的當 下,額溫槍缺貨,能夠讓各個地方使用是再好不過的,誰也不曉得疫情什 麼時候才能平緩下來,多準備點防疫物資是正確的事。 雖然我們使用醫療用感測器做出額溫槍並實驗準確量測,但是它並非 醫療用品,必須經醫療檢測單位檢測通過,才能稱之額溫槍。但我們希望 讓更多人看見與簡單量測,對於那些有學過電子電機或資訊相關背景的人, 可以試著實際做看看,程式碼及電路圖都上傳至網路上,所有人都可下載, 測量是否體溫過高作為初步篩檢,為社會盡一份心力,防疫不能有漏洞。 下載點 https://drive.google.com/drive/u/1/folders/1qY_JUCXElUhcp4WEvx-hg0jx6WII3Ke8捌、附錄
參考書本 1.Arduino 微控智學創新(第二版)作者:張義和.程兆龍.出版社:新文京- 16 - 2.8051 入門:C 語言輕鬆學 作者:楊明豐.出版社:碁峰 3.電子學課本第二冊 作者:徐慶堂.黃天祥.出版社:台科大 4.Arduino 微電腦應用實習 作者:施士文.出版社:台科大 5.Arduino 最佳入門與應用 作者:楊明豐.出版社:碁峰 參考網址 1.打破傳統!傳感晶片在智能硬體中還能這樣使用? 原文網址:https://kknews.cc/design/ypmekea.html 2017-12-20 由 電子設計 圈發表于設計 2.華人百科 熱釋電效應 2020.02.20 https://www.itsfun.com.tw/%E7%86%B1%E9%87%8B%E9%9B%BB%E6%9 5%88%E6%87%89/wiki-0875985