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