0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STC89C52單片機(jī)的智能水溫控制系統(tǒng)設(shè)計(jì)

CHANBAEK ? 來源:電子應(yīng)用學(xué)習(xí)館 ? 作者: 一只會(huì)飛的大魚兒 ? 2023-03-31 14:45 ? 次閱讀

1.概述

本設(shè)計(jì)為基于STC89C52單片機(jī)智能水溫控制系統(tǒng),控制對(duì)象以500mL陶瓷水箱為容器,并使用PID控制算法來調(diào)整水箱中500ml純凈水的溫度。 水溫可以在一定范圍內(nèi)人為設(shè)定,并能實(shí)現(xiàn)在下限溫度到上限溫度之間對(duì)每個(gè)點(diǎn)溫度的控制。

截圖20230301181746.png

主要的功能為:

1.可以通過鍵盤自由設(shè)定上限溫度和下限溫度,通過12864液晶顯示,顯示的最小區(qū)分為1度

2.可以通過DS18B20溫度傳感器測(cè)量水溫并通過12864液晶顯示水的實(shí)際溫度,最小區(qū)分為0.1度

3.系統(tǒng)應(yīng)具有在水溫下限到水溫上限全量程內(nèi)的加熱功能(當(dāng)水溫低于水溫下限時(shí)開始加熱,水溫低于水溫上限時(shí)自動(dòng)斷電停止加熱)

4.使用PID控制算法,調(diào)節(jié)溫度

5.存儲(chǔ)設(shè)定的參數(shù)到EEEPROM中,并記錄升溫曲線(程序中使用DS1302,精確設(shè)定時(shí)間間隔,使用EEPROM記錄升溫曲線)

6.可以記錄3組參數(shù)以及對(duì)應(yīng)的3組升溫曲線(每組250個(gè)溫度數(shù)據(jù))

2.硬件設(shè)計(jì)

本次設(shè)計(jì)的硬件電路是由STC89C52單片機(jī)為控制核心,通過DS18B20溫度傳感器采集的溫度,傳送給單片機(jī)進(jìn)行PID計(jì)算,將結(jié)果作為PWM的占空比來驅(qū)動(dòng)加熱棒; 同時(shí),通過LCD12864顯示屏、按鍵和DS1302時(shí)鐘芯片,可實(shí)現(xiàn)溫度值的顯示和目標(biāo)溫度的設(shè)置。 整體硬件框圖如圖所示:

在這里插入圖片描述

(1)12V轉(zhuǎn)5V穩(wěn)壓電路

由于系統(tǒng)的供電電源采用了4節(jié)18650鋰電池供電,需要使用LM2596-ADJ芯片進(jìn)行穩(wěn)壓,轉(zhuǎn)換成12V電壓,作為加熱棒的加熱電源,并通過LM7805-5.0穩(wěn)壓芯片轉(zhuǎn)換為5V電壓,作為單片機(jī)和其他功能電路的工作電壓。 穩(wěn)壓芯片的電路可根據(jù)芯片技術(shù)手冊(cè)中的參考電路來搭建,其電路圖如圖:

在這里插入圖片描述

(2)按鍵電路

本次設(shè)置了4個(gè)控制按鍵,分別為設(shè)置鍵、增加鍵、減少鍵和OK鍵,通過這四個(gè)按鍵,可以根據(jù)用戶的需求來調(diào)整相應(yīng)的參數(shù)。

在這里插入圖片描述

(3) DS1302時(shí)鐘電路

DS1302時(shí)鐘電路可以為系統(tǒng)提供實(shí)時(shí)年、月、日、星期、時(shí)、分、秒。

在這里插入圖片描述

(4)加熱控制電路

加熱電路主要三極管及功率MOS管搭建而成的,3個(gè)三極管為MOS管的提供可靠的控制電平。 如圖所示,當(dāng)單片機(jī)引腳為高電平時(shí),三極管T3導(dǎo)通,T2導(dǎo)通,T1截止,從而MOS管的G極接地,MOS管截止; 相反,當(dāng)單片機(jī)引腳為低電平時(shí),三極管T3截止,T2截止,T1導(dǎo)通,從而MOS管的G極接電源,MOS管導(dǎo)通,加熱棒加熱。

在這里插入圖片描述

其他電路都相對(duì)簡(jiǎn)單,就不一一解釋了。

(5)總體硬件電路圖

在這里插入圖片描述

3.軟件設(shè)計(jì)

系統(tǒng)軟件所需實(shí)現(xiàn)的功能主要為:

1.按鍵輸入與設(shè)置

2.顯示屏界面顯示

3.PID算法調(diào)節(jié)

4.時(shí)鐘讀取及顯示

由于代碼較多,這里僅列出PID及主函數(shù)部分代碼

注:PID算法的難點(diǎn)在于需要根據(jù) 具體的環(huán)境調(diào)試出性能較的PID參數(shù),因此程序用在其他環(huán)境上需要調(diào)整PID參數(shù)。

(1) PID算法調(diào)節(jié)函數(shù)

int16 Proportion  = 64;  // 比例常數(shù) Proportional Const   
int16 Integral    = 0;  // 積分常數(shù) Integral Const   
int16 Derivative  = 54;  // 微分常數(shù) Derivative Const   
float LastError;      // Error[-1]   
float PrevError;      // Error[-2]   
float SumError;        // Sums of Errors

float Now_temp;
float Target_temp;
float Temp_Out;


float PID_Calc(float NextPoint ,float SetPoint)
{
  float D_Error,Error;
  float II;
  Error = SetPoint-NextPoint;      //偏差
  SumError+=Error;          // 積分
  D_Error =LastError-PrevError;    // 當(dāng)前微分
  PrevError =  LastError;
  LastError =  Error;
  II = Integral*SumError/10000.0;    //積分縮小10000倍
  if(II>30)       //積分飽和限制
  {
    II=30;  
  }
  return (Proportion*Error+II+Derivative*D_Error);
}


void Control_Temp(void)
{
  Now_temp = Temp_numbe;
  Target_temp =  Set_temp;
  if(Now_temp>High_temp)
  {
    PWM_duty = 0;  
  }
  else
  {
    Temp_Out = PID_Calc(Now_temp,Target_temp);  
    if(Temp_Out >= 100)   Temp_Out = 100;
    else if(Temp_Out <=0)  Temp_Out = 0;
    //不同的溫度設(shè)置不同的比例補(bǔ)償熱量損失
    //Temp_Out = Temp_Out+Target_temp/80.0*20;     
    PWM_duty = (int)Temp_Out;
  }
}

(2)主函數(shù)

void main(void)
{
  int16 temp;             //溫度緩存值
  System_Init();      //系統(tǒng)初始化
  while (1)
  {
    LED2 = 0;
    Ds1302_time();
    real_time = readtime[12]*10+readtime[13];      //從1302中讀取秒值
    real_time = real_time%temp_cycle;  
    Temp_numbe = Temp_collect();               //采集溫度
    if(temp_save_flag == 1 && start_warm_flag == 1)                //按下了存儲(chǔ)按鍵
    {
      if((real_time == start_time)&&(real_time- last_real_time!=0)) //每隔10S記錄一次時(shí)間
      {
        temp = (int16)(Temp_numbe*100+0.5);      //將溫度值增大100倍,保留兩位小數(shù)
        Write_DATA_EEPROM(temp,Write_add,time);    //將溫度寫入EEPROM中保存
        time++;
        if(time >= 250)                //最多記錄250組的值
        {
          time = 250;
        }
      }

    }
    last_real_time = real_time;
    if(start_warm_flag == 1)
    {
      Control_Temp();                    //溫度控制函數(shù)
    }
    else
    {
      PWM_duty = 0;
    }
    //上限報(bào)警
    if(Temp_numbe > High_temp)  LED0 = 0;    
    else LED0 = 1;
    //下限報(bào)警
    if(Temp_numbe < Low_temp) LED1 = 0;
    else   LED1 = 1;
    Init_LCD12864_Set();                //LCD12864液晶顯示數(shù)據(jù)的標(biāo)識(shí)
    LCD12864_Show_DATA();                  //LCD12864液晶顯示數(shù)據(jù)
    UART_Send_temp();                  //將采集溫度并通過串口發(fā)送到上位機(jī)
    //Uart_Send_time();                  //將DS1302的時(shí)間發(fā)送給電腦
    UART_Send_PWM();                  //將控制加熱棒的PEM占空比實(shí)時(shí)發(fā)送監(jiān)控
    UART_SendData('
');

  }      
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628294
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6417

    瀏覽量

    110092
  • STC89C52
    +關(guān)注

    關(guān)注

    41

    文章

    330

    瀏覽量

    81816
  • 穩(wěn)壓電路
    +關(guān)注

    關(guān)注

    28

    文章

    381

    瀏覽量

    56424
  • 按鍵電路
    +關(guān)注

    關(guān)注

    1

    文章

    35

    瀏覽量

    21710
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STC89C52智能全自動(dòng)洗衣機(jī)控制系統(tǒng)設(shè)計(jì)

    的穩(wěn)定性、降低制造成本以及更方便的操作,設(shè)計(jì)了一種基于STC89C52單片機(jī)的全自動(dòng)洗衣機(jī)控制系統(tǒng)。該控制系統(tǒng)由藍(lán)牙部分、紅外熱釋部分、LC
    發(fā)表于 09-10 07:05

    怎樣去設(shè)計(jì)一個(gè)基于STC89C52單片機(jī)智能水溫控制系統(tǒng)

    1.概述本設(shè)計(jì)為基于STC89C52單片機(jī)智能水溫控制系統(tǒng),控制對(duì)象以500mL陶瓷水箱為容器,并使用PID
    發(fā)表于 12-07 11:37

    基于單片機(jī)STC89C52的搖搖棒

    基于單片機(jī)STC89C52的搖搖棒設(shè)計(jì),有電路圖和源程序
    發(fā)表于 11-23 14:38 ?28次下載

    基于STC89C52單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)

    基于STC89C52單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì) 論文類
    發(fā)表于 12-14 15:44 ?167次下載

    基于STC89C52單片機(jī)控制的溫度控制系統(tǒng)課程設(shè)計(jì)

    基于STC89C52單片機(jī)控制的溫度控制系統(tǒng)
    發(fā)表于 01-06 17:00 ?152次下載

    單片機(jī)STC89C52程序

    單片機(jī)STC89C52源程序。
    發(fā)表于 01-11 18:16 ?110次下載

    基于STC89C52單片機(jī)智能交通燈控系統(tǒng)設(shè)計(jì)

    基于STC89C52單片機(jī)智能交通燈控系統(tǒng)設(shè)計(jì)
    發(fā)表于 02-22 11:37 ?106次下載

    基于STC89C52單片機(jī)智能窗簾控制系統(tǒng)

    基于STC89C52單片機(jī)智能窗簾控制,但沒有程序圖和連線圖。
    發(fā)表于 04-28 18:02 ?31次下載

    STC89C52單片機(jī)介紹

    STC89C52單片機(jī)介紹。
    發(fā)表于 05-20 13:55 ?257次下載

    基于單片機(jī)STC89c52 GSM的智能家居報(bào)警系統(tǒng)設(shè)計(jì)

    基于單片機(jī)STC89c52 GSM的智能家居報(bào)警系統(tǒng)設(shè)計(jì),分享給大家。
    發(fā)表于 05-05 08:40 ?81次下載

    基于STC89C52單片機(jī)控制系統(tǒng)設(shè)計(jì)

    本文主要介紹了基于STC89C52單片機(jī)控制系統(tǒng)設(shè)計(jì)。
    發(fā)表于 06-24 08:00 ?112次下載
    基于<b class='flag-5'>STC89C52</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>控制系統(tǒng)</b>設(shè)計(jì)

    基于STC89C52單片機(jī)智能小車設(shè)計(jì)

    基于STC89C52單片機(jī)智能小車設(shè)計(jì)方法介紹。
    發(fā)表于 05-28 10:57 ?102次下載

    基于單片機(jī)STC89C52控制智能小車簡(jiǎn)介

    基于單片機(jī)STC89C52控制智能小車簡(jiǎn)介(單片機(jī)原理圖)-該文檔為基于單片機(jī)
    發(fā)表于 07-22 14:21 ?68次下載
    基于<b class='flag-5'>單片機(jī)</b><b class='flag-5'>STC89C52</b><b class='flag-5'>控制</b>的<b class='flag-5'>智能</b>小車簡(jiǎn)介

    基于PID算法的水箱溫度控制系統(tǒng)

    1. 概述本設(shè)計(jì)為基于STC89C52單片機(jī)智能水溫控制系統(tǒng),控制對(duì)象以500mL陶瓷水箱為容器,并使用PID
    發(fā)表于 11-24 20:51 ?25次下載
    基于PID算法的水箱溫度<b class='flag-5'>控制系統(tǒng)</b>

    基于STC89C52單片機(jī)溫控風(fēng)扇系統(tǒng)設(shè)計(jì)

    本設(shè)計(jì)為一種溫控風(fēng)扇系統(tǒng),具有靈敏的溫度感測(cè)和顯示功能,系統(tǒng)選用STC89C52單片機(jī)作為控制
    發(fā)表于 07-25 17:37 ?1485次閱讀
    基于<b class='flag-5'>STC89C52</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>溫控</b>風(fēng)扇<b class='flag-5'>系統(tǒng)</b>設(shè)計(jì)