一.硬體方案
本設計主要以51單片機系統進行溫度采集與控制;溫度信號由數字溫度傳感器DS18B20采集,主控器主動獲取傳感器溫度值,通過PID演算法,與設定溫度進行計算,輸出繼電器的控制狀態,并在LCD顯示屏進行顯示,
主要由51單片機+最小系統+LCD1602液晶顯示模塊+DS18B20溫度傳感器+繼電器電路+蜂鳴器模塊+LED指示燈模塊+按鍵模塊;如圖:

二.設計功能
(1)采用PID控制演算法,對水溫進行實時控制;
(2)設定容器內水的溫度在:水溫–90°;自動平衡,容器內水溫誤差0.5°;
(3)PID演算法容器內水溫上升或下降10°時間不超過10min;
(4)設有三個按鍵,1為復位按鍵,2為目標水溫的加,3為目標水溫的減;
三.設計原理圖
(1)原理圖主要采用AD軟體進行設計,如圖:

(2)PCB圖如下:

四.軟體設計
主程式原始碼
void main()//主函式
{
init();//初始化函式
pid_init (&temp_PID);
InitTimer0();
temp_PID.Proportion =120; // Set PID Coefficients
temp_PID.Integral =5;
temp_PID.Derivative =2;
while(1)
{
temp_control();//控制按鍵函式
if(time_value<PWM) { heatting=1;beep=1;LED1=0;LED2=1;}else { heatting=0;beep=0;LED1=1;LED2=0;}
if(time_value==30)
{
display_real_tenp(temp_m1);
}//顯示函式
if(time_value==60) temp_m=unnormal_proccessing(temp_m1);//溫度轉換函式*100
if(time_value==100)
{
if(set_temp-temp_m>250)
{
PWM=PWM_MAX;
}
else
{
PWM_I=pid_calc(&temp_PID,temp_m);
PWM =PWM_I ;
if( PWM>=100)PWM=100;
else if(PWM<=PWM_MIN) PWM=PWM_MIN;
}
}
if(time_value==120)
{ PWM_P=PWM/2;
LcdWriteCom(0x80+0X40+0x0C);
LcdWriteData('0'+PWM_P/100);
LcdWriteCom(0x80+0X40+0x0D);
LcdWriteData('0'+PWM_P%100/10);
LcdWriteCom(0x80+0X40+0x0E);
LcdWriteData('0'+PWM_P%10);
}
}
}
如需資料請關注公眾號“單片機實體設計”,首頁回復“PID溫控”獲取資料;

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298441.html
標籤:其他
