解正坤,王鵬,何汶華
廣州市增城勁輝五金塑料廠
溫度梯度儀器設(shè)備的電氣控制實現(xiàn)
解正坤,王鵬,何汶華
廣州市增城勁輝五金塑料廠
為了測量乳液、涂料、及塑料用聚合物的成膜溫度,我們設(shè)計了一種可以產(chǎn)生溫度梯度的設(shè)備,設(shè)備的溫度采集點共19點,控溫精度±1℃,溫度范圍-10-70℃。
數(shù)控可調(diào)開關(guān)電源;PID控制;STM32;數(shù)字溫度傳感器
為了測量乳液、涂料、及塑料用聚合物的最低成膜溫度,我們設(shè)計了一種可以產(chǎn)生溫度梯度的設(shè)備,其主要結(jié)構(gòu)為一個金屬梯度板,該金屬板的兩端分別設(shè)置制冷源和加熱源,并通過金屬熱傳導(dǎo),在板上形成連續(xù)變化的溫度梯度。在該溫度梯度板上涂布乳液或聚合物分濕膜,可觀察得樣品在不同溫度下的固化狀態(tài);讀出對應(yīng)梯度板上的溫度,可得樣品的最低成膜溫度。
設(shè)備開發(fā)前經(jīng)過分析論證,采用STM32單片機做中央處理器,STM32強大的核心功能以及眾多的外設(shè)為設(shè)備開發(fā)提供了大量的可選項,經(jīng)過設(shè)計規(guī)劃,需要采集和控制的數(shù)量如下:
1.溫度采集共19個點,其中16個點為溫度梯度板的采集(采集點數(shù)越多,溫度分辨率越高),半導(dǎo)體制冷片冷卻水溫1個點,冷端和熱端各一個采集點,由于需要的溫度控制范圍僅為-10℃-70℃,所以溫度傳感器全部采用數(shù)字式溫度傳感器AD592CN;
2.PID控制信號2個,采用PWM,其中一個用來控制制冷,一個用來加熱;
3.水流傳感器1個,為脈沖信號,隔離后直接進(jìn)單片機;
4.繼電器控制1個,通斷電源;
5.液晶屏采用某成熟品牌串口屏節(jié)省IO,提高硬件效率;
統(tǒng)計下來共有如下控制量:19個溫度信號(模擬量)輸入,2個PWM輸出,1個開關(guān)量輸出;還有一個RS232標(biāo)準(zhǔn)串口;
綜合上面的要求,最終選定STM32F103RBT6作為MCU,只有64個引腳非常便于小批量設(shè)備生產(chǎn)焊接,而且可以提供16個模擬量輸入通道,只要稍微擴展一下就可以滿足要求了,所以再使用一片ADS1115四通道AD擴展模擬量輸入,CPU原理圖略。
1.STM32自帶12位AD,其采樣速度最高可達(dá)1M/S,利用它采樣速度較高的原理,可以進(jìn)行過采樣來提高A/D轉(zhuǎn)換的分辨率及精度,由于我們選用的單片機STM32F103RBT6只有64個引腳,沒有單獨的電壓參考輸入VREF,只有一個內(nèi)部電壓參考VREFINT,內(nèi)部參照電壓VREFINT與一般AD參考電壓源不是一回事。ADC的參考電壓一般都是通過專用電壓參考引腳提供精密電壓源并作為ADC的電壓基準(zhǔn)。我們使用的這款STM32單片機實際上是直接把VCC電壓當(dāng)成參考源,這樣帶來的缺點就是ADC的轉(zhuǎn)換精度受到VCC電壓很大的影響,可以借用STM32的內(nèi)部參照電壓VREFINT校正測量精度,其運算原理如下:
以測量ADC1通道的電壓值為例,先讀出參考電壓的ADC測量結(jié)果,記為ADC_REF;再讀出要測量通道的ADC轉(zhuǎn)換結(jié)果,記為AD_chx;則要測量的電壓為:
temp_x=VREFINT*(((AD_chx*(VREF/4096))/(ADC_REF*(VREF/4096)))
注:VREFINT=1.2V,VREF為參考電壓值=3.3V。
公式簡化:
temp_x=VREFINT*(AD_chx/AdC_REF)
外部參考電壓在最終的計算公司里面消失了,這種方法等于間接將內(nèi)部參照電壓VREFINT當(dāng)成是ADC參考電壓,也就是說,此時外部參考電壓的準(zhǔn)確度已在此已對結(jié)果影響消除了,ADC的轉(zhuǎn)換結(jié)果基本由VREFINT的精度決定。
STM32F103RBT6單片機可以配置16路模擬輸入,對應(yīng)的引腳分別是:
PA0-PA7(AI0-AI7共8個);PB0,PB1(AI8-AI9共2個);PC0-PC5(AI10-AI15共6個);采用DMA模式讀取數(shù)據(jù),配置函數(shù)略。
經(jīng)過實測,單片機自帶AD效果很不錯,溫度顯示分辨率達(dá)到0.1℃。
2.另外還有三個通道經(jīng)過外置ADS1115進(jìn)行轉(zhuǎn)換,ADS1115是4通道16位A/D模數(shù)轉(zhuǎn)換芯片,最大轉(zhuǎn)換速度860SPS/S,由于其精度較高,且內(nèi)置高精密參考電壓源,使用的效果很好,具體代碼由于篇幅有限,不詳細(xì)解說;
3.溫度傳感器AD592是一種數(shù)字式溫度傳感器,其工作電壓4-30V,溫度測量范圍-25-125℃,最大誤差±0.5℃,它的輸出電流和溫度有非常好的線性關(guān)系,是一個恒流器件。
程序最主要的是對冷端和熱端進(jìn)行PID控制,PID核心代碼摘錄如下:
PID主要代碼如下:
PID計算部分
float PIDCalc(PID*pid,float NextPoint)
{
float dError,Error;
Error_value=pid->Setvalue-Nextvalue;//偏差
pid->SumError+=Error_value;//積分
Error_d=Error_value-pid->LastError;//當(dāng)前微分
pid->PrevError=pp->LastError;
pid->LastError=Error_value;
①寶雞市市民大多數(shù)經(jīng)歷過至少一次較大的城市內(nèi)澇災(zāi)害,最主要的原因是城市排水系統(tǒng)不完善,其次是地勢低洼和降雨的影響。但是,關(guān)于內(nèi)澇的主要成因,不同城區(qū)的居民對此有不同的認(rèn)知。在可能造成的災(zāi)害方面,多數(shù)認(rèn)為嚴(yán)重的城市內(nèi)澇會造成道路堵塞,甚至坍塌,進(jìn)而影響居民的出行安全。但不同職業(yè)的市民認(rèn)知表現(xiàn)出很大的差異性。
if(pid->SumError>500)pid->SumError=500;
else if(pid->SumError<-500)pp->SumError=-500;
return(pid->Proportion*Error_value//比例項
+pid->Integral*pid->SumError//積分項
+pid->Derivative*Error_d//微分項
);
}
///////////////////////////////////////////////////////////////////
void ZeroPID(void)
{
ColdPID.LastError=0;
ColdPID.PrevError=0;
ColdPID.SumError=0;
HotPID.LastError=0;
HotPID.PrevError=0;
HotPID.SumError=0;
ColdOutVal=0;
HotOutVal=0;
}
其它程序略……