李琦 施艷紅
摘要:熱敏電阻的阻值會(huì)隨溫度的變化而變化,它是接觸式溫度傳感器的核心元件。能否準(zhǔn)確得到阻值與溫度的關(guān)系直接影響到溫度傳感器測量值是否準(zhǔn)確。但是阻值與溫度的關(guān)系并非簡單的線性關(guān)系,本文討論了基于實(shí)驗(yàn)數(shù)據(jù)采集與多項(xiàng)式回歸的方法建立熱敏電阻阻值與溫度關(guān)系數(shù)學(xué)模型,并得到對應(yīng)解析表達(dá)式的過程。
關(guān)鍵詞:熱敏電阻;掌控板;數(shù)據(jù)
中圖分類號:G434? 文獻(xiàn)標(biāo)識碼:A? 論文編號:1674-2117(2021)08-0077-04
熱敏電阻一般由電阻溫度系數(shù)(TCR)較大的材料制成,根據(jù)其電阻與溫度變化關(guān)系,可以分為正溫度系數(shù)(PTC)熱敏電阻和負(fù)溫度系數(shù)(NTC)熱敏電阻。接觸式溫度傳感器一般以熱敏電阻作為核心元件,通過如圖1所示的電路得到隨溫度變化的電壓信號。
其中,VCC接電源正極,GND接電源負(fù)極,RT為熱敏電阻,R為對溫度變化不敏感的定值電阻。RT與R形成分壓電路,根據(jù)歐姆定律,此時(shí)OUT端與GND之間的電壓U與電源電壓Vcc、熱敏電阻阻值Rt、定值電阻阻值Rs之間存在如下關(guān)系:
將上式整理后可得到:
Vcc、Rs可以看作是定值,因此通過測量U的值可以計(jì)算得到熱敏電阻當(dāng)前阻值Rt。若該熱敏電阻的溫度-阻值變化規(guī)律已知,則可以進(jìn)一步計(jì)算得到對應(yīng)的溫度。為了得到某熱敏電阻其溫度-阻值變化關(guān)系,可以通過實(shí)驗(yàn)采集數(shù)據(jù),并通過分析數(shù)據(jù)來開展探究。
● 設(shè)計(jì)實(shí)驗(yàn),采集數(shù)據(jù)
一般地,開源硬件中的模擬輸入口是一個(gè)模-數(shù)轉(zhuǎn)換器,并且默認(rèn)會(huì)以Vcc作為基準(zhǔn)電壓,如掌控板的P0口就支持12位模-數(shù)轉(zhuǎn)換,且基準(zhǔn)電壓為3.3V。若P0口讀取到的模擬值為2047,則表示當(dāng)前P0口的電壓為≈1.65V。
準(zhǔn)備掌控板、1KΩ定值電阻、燒杯、玻璃溫度計(jì)、待測熱敏電阻以及若干導(dǎo)線,其中待測熱敏電阻的金屬引腳需要用絕緣材料進(jìn)行包裹,以避免金屬引腳與水接觸造成測量不準(zhǔn)確。根據(jù)圖2所示電路將各部分進(jìn)行連接,為了導(dǎo)線連接方便,本案例實(shí)驗(yàn)裝置使用了掌控?cái)U(kuò)展板。實(shí)驗(yàn)裝置實(shí)物如下頁圖3所示。
為了讓掌控板記錄數(shù)據(jù),在掌控板中上傳如圖4所示的代碼。
實(shí)驗(yàn)時(shí),先打開掌控板,將熱敏電阻和玻璃溫度計(jì)放置到燒杯內(nèi),在燒杯內(nèi)倒入開水直至浸沒熱敏電阻和溫度計(jì),等待玻璃溫度計(jì)讀數(shù)上升到80℃以上后按下掌控板A鍵。時(shí)刻觀察玻璃溫度計(jì)讀數(shù),每次玻璃溫度計(jì)到達(dá)掌控板上顯示的目標(biāo)溫度,就按下B鍵。
實(shí)驗(yàn)結(jié)束后,在mpython軟件中連接掌控板,并在控制臺(tái)中輸入rec,便可以得到記錄的數(shù)據(jù),如圖5所示。
● 數(shù)據(jù)整理與分析
有許多軟件支持?jǐn)?shù)據(jù)整理與分析。相比之下,使用Python編程進(jìn)行數(shù)據(jù)整理與分析可以更加靈活、深入,利用Python的pandas模塊、numpy模塊和matplotlib模塊可以方便、高效地開展數(shù)據(jù)處理與分析。Jupyter Notebook是一個(gè)交互式筆記本程序,它支持Python程序的分段編寫與運(yùn)行,并實(shí)時(shí)顯示輸出結(jié)果,因此非常適合應(yīng)用在數(shù)據(jù)分析領(lǐng)域。
1.實(shí)驗(yàn)數(shù)據(jù)讀取與整理
將mpython軟件切換到Jupyter模式,并新建一個(gè)Jupyter項(xiàng)目。運(yùn)行如圖6所示的代碼可以將實(shí)驗(yàn)數(shù)據(jù)保存到data對象中。其中rec字符串的值可以從圖5所示的mpython控制臺(tái)中復(fù)制得到。
data是一個(gè)DataFrame對象,溫度值記錄在data對象的temp列中,對應(yīng)的模擬值記錄在vot列中。根據(jù)模擬值計(jì)算阻值,并將結(jié)果保存到resis列中。此外,為了方便查看數(shù)據(jù),還需要根據(jù)溫度值對數(shù)據(jù)進(jìn)行升序排序。具體代碼如圖7所示。
2.繪制散點(diǎn)圖,觀察數(shù)據(jù)規(guī)律
為了直觀地看到數(shù)據(jù)的分布規(guī)律,以data中的溫度值作為橫坐標(biāo)數(shù)據(jù),對應(yīng)的電阻值作為縱坐標(biāo)數(shù)據(jù),利用matplotlib模塊繪制散點(diǎn)圖。參考代碼與運(yùn)行結(jié)果如圖8所示。
從散點(diǎn)圖中可以看出,該熱敏電阻阻值隨溫度增加而增加,屬于正溫度系數(shù)熱敏電阻(PTC),且阻值與溫度存在非線性關(guān)系。
● 建立多項(xiàng)式回歸數(shù)學(xué)模型
為了得到熱敏電阻阻值與溫度的數(shù)學(xué)關(guān)系,需要通過回歸分析的方法得出電阻關(guān)于溫度變化的函數(shù)表達(dá)式?;貧w分析的方法有很多,其中研究一個(gè)因變量與一個(gè)或多個(gè)自變量之間多項(xiàng)式的回歸分析方法,稱為多項(xiàng)式回歸(Polynomial Regression),當(dāng)自變量只有一個(gè)時(shí),稱為一元多項(xiàng)式回歸。一元多次多項(xiàng)式的回歸方程為:
其中y為因變量,x為自變量,b_i為回歸系數(shù)。多項(xiàng)式回歸方程可以通過增加自變量x的高次項(xiàng)來逼近,因此在某個(gè)確定的定義域范圍內(nèi),任意連續(xù)可導(dǎo)函數(shù)都可以用多項(xiàng)式來擬合。
在本案例熱敏電阻的阻值與溫度的關(guān)系中,熱敏電阻的阻值可以看作自變量,溫度則作為因變量。因此,可通過一元多項(xiàng)式來進(jìn)行回歸。一元多項(xiàng)式回歸的核心,就是找到合適的回歸系數(shù)b0...bi,使得阻值樣本數(shù)據(jù)R下通過一元多項(xiàng)式計(jì)算得到的溫度預(yù)測值Tp與樣本數(shù)據(jù)中真實(shí)溫度值Tr的均方誤差(MSE)最小。從圖像上看,就是讓回歸方程的圖像盡可能地逼近所有的樣本數(shù)據(jù)點(diǎn)。
利用numpy模塊的polyfit方法可以快速地進(jìn)行一元多項(xiàng)式回歸。在圖9所示的代碼中,利用溫度值作為x值、電阻值作為y值進(jìn)行了最高次為2次多項(xiàng)式回歸。
多項(xiàng)式回歸的系數(shù)保存在coef列表中,具體的系數(shù)采用了科學(xué)記數(shù)法。根據(jù)coef參數(shù)值,回歸方程為:
可以通過如圖10所示的代碼定義predict函數(shù),以方便回歸方程的計(jì)算。
為了直觀地了解回歸結(jié)果,可以利用predict函數(shù)預(yù)測20~100℃時(shí)熱敏電阻的阻值,并將圖像與觀測數(shù)據(jù)一起繪制到同一張圖表中,代碼與運(yùn)行結(jié)果如圖11所示。
● 模型評估與修正
得到數(shù)學(xué)模型后還需要對模型進(jìn)行評估與修正。從圖11中可以看出,該多項(xiàng)式回歸模型與觀測數(shù)據(jù)的擬合程度并不是很好,特別是低溫段。除了觀察圖表,還可以通過均方誤差來評價(jià)模型。如圖12所示的代碼定義了rmse函數(shù)并計(jì)算預(yù)測值與觀測數(shù)據(jù)的均方誤差。
嘗試在圖9所示的代碼中修改polyfit函數(shù)的參數(shù),逐個(gè)增加多項(xiàng)式的高次項(xiàng),當(dāng)最高次為3次時(shí),模型圖像與均方誤差如圖13所示,無論是圖像表現(xiàn)還是均方誤差都有改觀。
逐步增加高次項(xiàng)可以進(jìn)一步提高模型的擬合程度,本案例中最高次與均方誤差的關(guān)系如下表所示。
但是,多項(xiàng)式最高次數(shù)并非越大越好,隨著次數(shù)的增加,多項(xiàng)式回歸模型容易出現(xiàn)“過擬合”現(xiàn)象,所謂的過擬合是指回歸模型與觀測數(shù)據(jù)的擬合程度很好,但預(yù)測數(shù)據(jù)的表現(xiàn)很差。如圖14所示的是多項(xiàng)式最高次數(shù)為8時(shí)的函數(shù)圖像,可以明顯看出模型在高溫段失效。
因此,本案例中的熱敏電阻阻值R與溫度T的關(guān)系可以通過一個(gè)7次多項(xiàng)式方程來表示:
R=(4.89005432e-11)+(1.21358405e-07)*T-(3.49422507e-05)*T2+(3.98052301e-03)*T3-(2.31129452e-01)*T4+(7.36089221e+00)*T5-(1.22738958e+02)*T6+(1.53919756e+03)*T7
事實(shí)上,多項(xiàng)式回歸模型也有其局限性,它在觀測數(shù)據(jù)范圍內(nèi)表現(xiàn)較好,而在觀測數(shù)據(jù)范圍之外則容易失效。例如,上述方程在定義域[0,100]的函數(shù)圖像如圖15所示。可以看到利用該回歸模型并不能準(zhǔn)確預(yù)測低于20℃時(shí)的熱敏電阻阻值。
與傳統(tǒng)教學(xué)方式相比,項(xiàng)目式教學(xué)更有助于培養(yǎng)學(xué)生的動(dòng)手能力、創(chuàng)新能力和探究精神,可以讓學(xué)生更深入地掌握、理解、應(yīng)用學(xué)科知識。但項(xiàng)目活動(dòng)的開展往往涉及多學(xué)科的知識,利用開源硬件采集實(shí)驗(yàn)數(shù)據(jù)并結(jié)合數(shù)學(xué)建模與Python編程,可以開展許多學(xué)科實(shí)驗(yàn)探究活動(dòng)。本案例涉及信息技術(shù)、數(shù)學(xué)、物理等學(xué)科內(nèi)容,體現(xiàn)了信息技術(shù)學(xué)科計(jì)算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新,數(shù)學(xué)學(xué)科數(shù)學(xué)建模,物理學(xué)科實(shí)驗(yàn)探究等學(xué)科核心素養(yǎng)。希望通過本案例能給大家?guī)砀嗟膯l(fā)。
參考文獻(xiàn):
[1]史麗萍,孫寶元,于浩洋.多項(xiàng)式回歸分析在傳感器測試中的應(yīng)用[J].河北工業(yè)大學(xué)學(xué)報(bào),2003,32(03):41-44.
[2]伊德里斯.Python數(shù)據(jù)分析基礎(chǔ)教程:NumPy學(xué)習(xí)指南:第2版[M].北京:人民郵電出版社,2014,1.