STM32一种基于NTC的控温电路及软件实现
NTC(Negative Temperature Coefficient)是一種隨溫度上升時(shí),電阻值呈指數(shù)關(guān)系減小的熱敏電阻。應(yīng)用廣泛,最近我們就采用了NTC來控制加熱并測溫,并達(dá)到了預(yù)期的效果。
1、硬件設(shè)計(jì)
我們使用三極管作為加熱元件,通過NTC來控制通過三極管的電流,以起到控制溫度的作用,至于溫度控制到多少,可以通過調(diào)節(jié)電位器來控制。同時(shí)使用另一個(gè)NTC來測量當(dāng)前的溫度。電路圖如下:
上圖中我們通過一個(gè)電橋來采集NTC電阻的變化,因?yàn)殡娮璧淖兓瘯餋17兩端電壓的變化。溫度越高NTC電阻越小,C17兩端電壓差就越大,反之越小。我們采用了25攝氏度時(shí),阻值為10K的NTC。不難推斷出輸出電壓與NTC電阻值得關(guān)系。當(dāng)輸出電壓為0V時(shí),電阻約25K,查表可知唯獨(dú)為5攝氏度左右。當(dāng)輸出電壓為5V時(shí),電阻值接近0,查表可知在100攝氏度以上。職業(yè)便是這個(gè)電路的理論測量范圍。
2、軟件設(shè)計(jì)
前面我們設(shè)計(jì)了測量電路,也分析了檢測電壓與NTC電阻制的關(guān)系。接下來我們主要討論一下軟件設(shè)計(jì)。軟件的設(shè)計(jì)我們采用了公式法和查表法兩種方式來獲取溫度值。
2.1、公式法
我們前面已經(jīng)提到過,NTC是一種隨溫度上升時(shí),電阻值呈指數(shù)關(guān)系減小的熱敏電阻。而這種指數(shù)關(guān)系具體如下:
其中,B是NTC的常數(shù),每種為固定值。Rt是NTC的電阻,R為標(biāo)稱25攝氏度時(shí)的電阻。T1是Rt對應(yīng)的開氏溫度,T2是標(biāo)稱的開氏溫度。于是我們就可以推導(dǎo)出有電阻計(jì)算溫度的公式:
根據(jù)以上公式我們可以實(shí)現(xiàn):
/*公式法計(jì)算NTC溫度值*/ static float FormulaNTCTemperature(float resistance) {float temp;float result=0.0;result=resistance/NTC_NOMINAL_RESISTANCE;result=(log(result)/NTC_NOMINAL_CONSTANT)+(1/(NTC_NOMINAL_TEMPERATURE+KELVIN_CONSTANT));temp=1/result-KELVIN_CONSTANT;return temp; }2.2、查表法
查表法顧名思義就是通過電阻分度表來獲取溫度區(qū)間,再做擬合。首先我們需要建立相應(yīng)的表我們定義為數(shù)組。有了分度表實(shí)現(xiàn)也就簡單了,但需要注意兩端極限位置的處理。具體實(shí)現(xiàn)如下:
/*查表法計(jì)算NTC溫度值*/ static float LookupNTCTemperature(float resistance) {float temp;uint16_t index=NTC_TABLE_LENGTH+10;index=FindTargetLocation(resistance);if(index<=0){temp=ntcValueTable[0][0];}else if(index>=NTC_TABLE_LENGTH){temp=ntcValueTable[0][NTC_TABLE_LENGTH-1];}else{float lowT=ntcValueTable[0][index-1]; //??? float highT=ntcValueTable[0][index];float lowR=ntcValueTable[1][index-1];float highR=ntcValueTable[1][index];temp=((resistance-lowR)*0.5)/(highR-lowR)+lowT;}return temp; }/*查找目標(biāo)位置*/ static uint16_t FindTargetLocation(float resistance) {uint16_t position=0;while(ntcValueTable[1][position]>resistance){if(position<NTC_TABLE_LENGTH-1){position++;}else{position++;break;}}return position; }3、小結(jié)
使用NTC作為測溫和控溫的元件所得到的結(jié)果基本與預(yù)期的一致。但在控溫的精度和響應(yīng)速度上略有不足,對于一般的應(yīng)用是完全足夠的。我們的應(yīng)用對溫度的穩(wěn)定性要求比較高所以我們后續(xù)做了一些改進(jìn)。
為了取得更好的控制效果,我們引入一個(gè)類似于專家PID的控制器對加熱電源進(jìn)行PWM調(diào)節(jié),類似于與NTC的控制形成串級控制得到了良好的效果。在比較好的情況下,最終溫度可以穩(wěn)定在0.1度的范圍內(nèi)。
總結(jié)
以上是生活随笔為你收集整理的STM32一种基于NTC的控温电路及软件实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 外设驱动库开发笔记6:AD719x系列A
- 下一篇: PID控制器开发笔记之十一:专家PID控