恒定溫度的設備,被廣泛地應用于生產、生活、實驗等領域。在醫用、水產、特種工業、工業探傷、照相等行業,都需要有穩定而精確的溫度。在本設計中,我們針對培養箱而設計的一個恒溫系統,在系統里,通過對恒溫箱溫度的檢測與變送傳到單片機,與給定值進行比較,單片機對數據進行處理,根據偏差信號的大小輸出驅動PWM輸出,通過改變PWM輸出的周期和幅值,控制發熱絲的功率,從而達到恒溫箱內溫度控制的目的。 本設計是對恒溫箱進行溫度控制。從箱內溫度的檢測、變換到信號的轉換和傳送這一系列的過程都牽扯到很多的知識,在設計過程中我們也遇到很多困難,比如說溫度測量器件的選用,變換成電壓信號還是電流信號,相應的怎么傳送等,都經過了考慮才選擇了這個方案。單片機的設計中,單片機外部線路的設計,端口的分配和選用,復位和內部時鐘的配合和電路的驅動等方面也遇到了不少問題,經過討論我們都基本上解決了。加熱電路我們選擇了IGBT作為開關器件,IGBT可控而且開關頻率很高,適合用在控制頻繁通斷的場合。 這里利用芯片DS18B20作為恒溫箱的溫度檢測元件。DS18B20芯片可以直接把測量的溫度值變換成單片機可以讀取的標準電壓信號。單片機從外部設置兩位撥碼開關進行預置數,讀入的數據與預置數進行比較,根據偏差的大小,單片機執行程序對PWM進行控制,經過對PWM的輸出脈沖進行放大,也就是對恒溫箱內電阻絲的驅動,對恒溫箱進行加熱,使箱內溫度升高,熱電偶連續對恒溫箱進行溫度檢測,當偏差存在時單片機就繼續驅動后繼電路進行加熱,直到偏差為零。 本設計主要完成了熱電恒溫箱單片機微機控制系統的硬件電路設計和控制程序的軟件編寫,對控制系統的主要器件進行了選型和分析,并且對整個控制系統的PID控制程序進行了仿真調試。整個設計基本滿足設計要求。
2 總體方案設計 2.1 方案一  圖2.1 方案一總體圖 利用熱電偶作為恒溫箱的溫度檢測元件,應用橋式電路對熱電偶作為補償。熱電偶出來的電流信號通過轉換變成電壓信號,再進行A/D轉換變換成單片機可以接受的電壓信號,在從單片機讀入進行數據處理。單片機從外部設置兩位撥碼開關進行預置數,讀入的數據與預置數進行比較,根據偏差的大小,單片機執行程序對PWM進行控制,經過對PWM的輸出脈沖進行放大,也就是對恒溫箱內電阻絲的驅動,對恒溫箱進行加熱,使箱內溫度升高,熱電偶連續對恒溫箱進行溫度檢測,當偏差存在時單片機就繼續驅動后繼電路進行加熱,直到偏差為零。在控制過程中,存在著檢測信號與控制信號之間的滯后關系,因此,在單片機的控制程序里加入了數字PID控制算法,是控制更加的準確。單片機的設計包括外部時鐘和上電復位電路計。單片機對溫度的檢測可以通過三個LED進行顯示。 方案二 
圖2.2方案二總體圖 利用DS18B20作為恒溫箱的溫度檢測元件,直接把測量的溫度值變換成單片機可以讀取的標準電壓信號。單片機從外部設置兩位撥碼開關進行預置數,讀入的數據與預置數進行比較,根據偏差的大小,單片機執行程序對PWM進行控制,經過對PWM的輸出脈沖進行放大,也就是對恒溫箱內電阻絲的驅動,對恒溫箱進行加熱,使箱內溫度升高,熱電偶連續對恒溫箱進行溫度檢測,當偏差存在時單片機就繼續驅動后繼電路進行加熱,直到偏差為零。在控制過程中,存在著檢測信號與控制信號之間的滯后關系,因此,在單片機的控制程序里加入了數字PID控制算法,是控制更加的準確。單片機的設計包括外部時鐘和上電復位電路計。單片機對溫度的檢測可以通過1602液晶顯示。 2.2 方案比較與選擇a.方案一用的是熱電偶進行溫度的測量,熱電偶的測量范圍和精度要求都符合本設計的需要,在不同的環境下所需要的補償是不一樣的,而且輸入單片機要進行模數轉換,增加了轉換電路即增加了成本,轉換還需要時間,那往往就給控制帶來了很多麻煩,而且給恒溫巷的使用帶來一定的局限性,使保溫箱不能得到推廣,給廠家大批量的生產也帶來了很多不便。線性化的處理往往是應用熱電偶的約束。而在方案二中,應用的是測量溫度的專用芯片,避免了上述的一些問題,而且應用方案二的芯片使測量的靈敏度增加不少。 b.在方案一中,熱電偶測量出來的信號是電流信號,電流信號適合遠距離傳輸,而到單片機的距離不大,電流信號容易受外界的干擾而影響了測量信號,導致測量的誤差增加,就算可以用其他方法消除干擾信號,也麻煩。而在方案二中,測量出來的是電壓信號,能直接輸入單片機,方便而且準確,不容易受外界干擾。 c.在方案一中,需要進行電流——電壓的轉換,在經過A/D轉換,在經過標準化處理才能的到標準的數字電壓向輸入單片機,而方案二中卻可以直接輸入。 綜上所述:方案二比方案一有更大的優越性,而且方案二只用一個芯片就可以達到目的,而方案一卻要經過多個步驟,從經濟角度看,方案二更加經濟實惠,且使用性強。因此這個設計決定起用方案二來進行綜合設計。
3 系統硬件設計 3.1 溫度采集模塊設計3.1.1數字溫控芯片DS18B20介紹在本設計中,選用的是溫度測量的專用芯片DS18B20。DS18B20、DS1822“一線總線”數字化溫度傳感器同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為-50℃~+125℃,在-10℃~+85℃范圍內,精度為±0.5℃。DS1822的精度較差為±2℃。現場溫度直接以“一線總線”的數字方式傳輸,大大提高了系統的抗干擾性。新一代產品更便宜,體積更小。DS18B20、DS1822的特性DS18B20可以程序設定9~12位的分辨率,精度為±0.5℃。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在EEPROM中,掉電后依然保存。省略可存儲用戶定義報警溫度、分辨率參數的EEPROM, 精度降低為±2℃,適用于對性能要求不高,成本控制嚴格的應用,是經濟型產品。
3.1.2 DS18B20的內部結構DS18B20內部結構主要由四個部分組成:64位光刻ROM、溫度傳感器、非揮發的溫度報警觸發器TH和TL、配置寄存器。DS18B20的內部結構如下圖所示。 
圖3.1 DS18B20的內部結構 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校檢碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。 DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃/LSB形式表達,其中S為符號位。 表3.1 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 這是12位轉化后得到的12位數據,存儲在18B20的兩個比特的RAM中,二進制中的前面5位符號,如果測得的溫度大于0,這5位為0,只要將測到的數值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數值需要取反加1再乘于0.0625即可得到實際溫度. 例如+125℃的數字輸出為07D0H,+25.0625℃的數字輸出為0191H,-25.0625的數字輸出為FF6FH,-55℃的數字輸出為FC90H. 3.1.3 DS18B20的外形及引腳說明外形如圖3.1.2所示。 
圖3.2 DS18B20的外形與引腳圖 1(GND):地
2(DQ):單線運用的數據輸入輸出引腳
3(VDD):可選的電源引腳 實際電路圖:  圖3.3 DS18B20的外形 3.1.4DS18B20的特性及工作原理 DS18B20可以程序設定9~12位的分辨率,精度為±0.5℃。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度,存儲在EEPROM,掉電后依然保存。DS18B20的性能是新一代產品中最好的!性能價格比也非常出色! DS1822與DS18B20軟件兼容,是DS1820的簡化版本,省略了存儲用戶定義報警溫度,分辨率參數的EEPROM,精度降低為±2℃。適用于對性能要求不高,成本控制嚴格的應用,是經濟型產品。 DS18B20工作原理: DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s減為750ms。 圖3.4 DS18B20工作流程圖
 
圖3.3(2) DS18B20讀寫時序圖 3.2 預置數輸入預置數由兩個十進制撥碼開關來完成,如圖7。每一個撥碼開關有四位,由0000到1111,取其中的0000到1010就可以實現十進制中0到10的設定,兩個就可以構成兩位的輸入,就可以實現0到100的置數。 3.2.1撥碼盤介紹由于BCD撥碼盤方便、直觀、實用、易于操作等優點,被廣泛應用于參數設定的監測儀表,機械機床等設備上,具有很大的應用空間。圖3.2.1為撥碼盤的內部原理圖,1、2、4、8四個端子為數據端,com為公共端,當撥碼盤窗口顯示的數值不為零時,其數據線將有一位或幾位與com端接通。例如:當撥碼盤輸出為5時,1、4與com端接通。 
圖3.4 BCD撥碼盤內部原理 讀撥碼盤流程圖: 圖3.7 讀撥碼盤流程圖 實際電路原理圖:  圖3.8實際電路原理圖 3.2.2 時鐘時鐘電路用于產生單片機工作時所需的時鐘信號。單片機本身就是一個復雜的同步時序電路,為保證同步工作方式的實現,單片機應該在唯一的時鐘信號控制下工作,嚴格按照時序執行指令進行工作,而時序所研究的是指令執行中各個信號的關系。 時鐘是單片機的心臟,單片機的各功能部件的運行都是以時鐘頻率為基礎,有條不紊地一拍一拍地工作。因此,常用的時鐘電路有兩種方式,一種是內部時鐘方式,一種是外部時鐘方式。 單片機內部有一個用于構成振蕩器的高增益反相放大器,該增益反相放大器的輸入端為X1,輸出引腳為X2。著兩個引腳跨接晶振和微調電阻,就構成一個穩定的自激振蕩器。   圖3.9 自激振蕩器 3.2.3 復位電路本設計用的是手動復位電路中的按鍵電平復位電路。通過RST端經電阻與電源Vcc 接通而實現。如下圖所示。 
圖3.10 按鍵電平復位電路 3.2.4LCD顯示 單片機對數據進行處理后通過LCD進行顯示。LCD各管腳如下圖所示,接單片機的P0口和P2口。 
圖3.11 1602液晶電路 3.2.5加熱電路 下圖電路供應電源及加熱電路驅動 
圖3.12 整流電路圖 
圖3.13 5V與12V電源 
圖3.14 加熱驅動電路 交流220V電壓通過整流、濾波后得到一個標準的直流電壓,此時,二極管無法導通。當單片機把溫度信號讀進去后,與給定值進行比較,當偏差存在的時候,單片機通過34口輸出一個脈沖,出來后進行信號磁隔離,MOSFET控制電壓,驅動IGBT,使加熱回路導通,這樣,箱內溫度就得到增加。此時單片機繼續從溫度檢測芯片那里讀數據,加熱到當偏差為零時,脈沖變低,加熱回路停止工作。 3.2.6IGBT管介紹 IGBT(絕緣柵雙極晶體管)作為新型電力半導體場控自關斷器件,集功率MOSFET的高速性能與雙極性器件的低電阻于一體,具有輸入阻抗高,電壓控制功耗低,控制電路簡單,耐高壓,承受電流大等特性,在各種電力變換中獲得極廣泛的應用。
4 PID控制 4.1 PID控制原理通過輸入通道將溫度傳感器DS18B20采集到的被控對象當前溫度轉變為數字量并輸入到單片機中,單片機求出輸入的當前溫度值與設定值的偏差,并根據該偏差進行PID運算,最后,根據PID運算的結果由單片機輸出控制數字信號經過磁隔離,經驅動電路控制晶閘管整流電路,控制恒溫箱加熱。本設計分兩個階段: (1)自由升溫階段控制.在這個階段,希望升溫越快越好.所以,控制上只要讓電熱絲以最大的功率加熱也就是單片機輸出脈沖的最大值. 在這個過程中,不斷測溫,當預設溫度與實際測量的溫度之差小于等于10度時進入控溫階段. (2)控溫階段.恒溫箱這個控制對象屬于帶純滯后的慣性環節,所以采用PID控制.根據給定的參數設置.編寫增量式PID算法子程序等.
4.2 PID控制系統框圖 
圖4.1 PID控制系統框圖 4.3 PID算法 增量式算法中,輸出量與執行的變化量相對應,即是前后兩次采樣所計算的位置差值,其算式為:△u(n)=u(n)-u(n-1)在此就不詳細板書了,詳細式子請見附錄. a.中斷子程序流程如下圖所示,它的作用是判斷是否進入控溫階段,若已進入控溫階段,則調用PID算法子程序,否則輸出最大脈沖,使晶閘管整流器以全功率加熱.

圖4.2中斷子程序流程圖 b.增量式PID算法的程序流程圖如下圖所示,計算△u(n)時只需要現時刻以及以前的兩個偏差值e(n)、e(n-1) 、e(n-2),初始化程序置初值e(n-1)=e(n-2)=0,由中斷服務對過程變量進行采樣,并根據參數計算出△u(n).

圖4.3 PID算法子程序
5 軟件設計 5.1 編程平臺簡介KeilSoftware公司推出的uVision3是一款可用于多種8051MCU的集成開發環境(IDE),該IDE同時也是PK51及其它開發套件的一個重要組件。除增加了源代碼、功能導航器、模板編輯以及改進的搜索功能外,uVision3還提供了一個配置向導功能,加速了啟動代碼和配置文件的生成。此外其內置的仿真器可模擬目標MCU,包括指令集、片上外圍設備及外部信號等。uVision3提供邏輯分析器,可監控基于MCUI/O引腳和外設狀態變化下的程序變量。 Keil uVision 系列是一個非常優秀的編譯器,受到廣大單片機設計者的廣泛使用。其主要特點如下: - 支持匯編語言、C51語言等多種單片機及設計語言;
- 可視化的文件管理,界面友好;
- 支持豐富的產品線,除了51及其兼容內核的單片機外,還新增了對ARM內核產品的支持;
- 具有完善的編譯鏈接工具;
- 具備豐富的仿真調試功能,可以仿真串口、并口、A/D、D/A、定時器/計數器以及中斷等資源,同時也可以和外部仿真器聯合進行在線調試
- 支持在一個工作空間中進行多項目的程序設計;
- 支持多級代碼優化。
5.2 程序流程圖設計
圖5.1程序流程圖 5.3 控制系統仿真調試 系統控制程序編寫好以后,要進行單片機控制系統的仿真調試,以驗證程序的正誤,確保系統的安全穩定運行。用Proteus的isis軟件進行仿真,具體步驟如下: 1 進入仿真環境并加載程序 
圖5.2 仿真環境和加載程序界面 2 運行程序且對狀態進行監控 系統運行功能檢測。上電運行時界面如下圖所示:溫度測量系統正常,LCD正常顯示。 
圖5.3 驗證功能狀態圖一 
圖5.4 驗證功能狀態圖之二 經ISIS仿真,數碼撥盤正常。
附錄1:程序設計
根據程序流程圖的設計,以及整個控制系統的輸入輸出信息分析,設計的控制程序如下:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define LCD_DATA P1
-
- sbit LCD_RS=P3^5;
- sbit LCD_RW=P3^6;
- sbit LCD_E =P3^3;
- sbit DQ=P3^1;
- bit presence;
-
- uchar code cdis1[ ] = {" DS18B20 OK "};
- uchar code cdis2[ ] = {" TEMP: . C "};
- uchar code cdis3[ ] = {" DS18B20 ERR0R "};
- uchar code cdis4[ ] = {" PLEASE CHECK "};
- uchar data temp_data[2] = {0x00,0x00};
- uchar data display[5] = {0x00,0x00,0x00,0x00,0x00};
- uchar code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
- uchar code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};
-
- /*初始化lcd1602 */
- /*******************************************************************/
- void LCD_Init()
- {
- LCD_DATA=0;
- LCD_Write_Cmd(0x38,0); //三次顯示模式設置,不檢測忙信號
- LCD_Delay(5);
- LCD_Write_Cmd(0x38,0);
- LCD_Delay(5);
- LCD_Write_Cmd(0x38,0);
- LCD_Delay(5);
- LCD_Write_Cmd(0x38,1); //顯示模式設置,開始要求檢測忙信號:8位、2行、5X7點陣
- LCD_Write_Cmd(0x08,1); //關閉顯示
- LCD_Write_Cmd(0x01,1); //清屏
- LCD_Write_Cmd(0x06,1); //顯示光標移動設置:文字不動,光標自動右移
- LCD_Write_Cmd(0x0C,1); //顯示開及光標設置:光標關、光標不閃爍
- }
- /*初始化ds1820 */
- /*******************************************************************/
- DS18B20_Init(void)
- {
- DQ=1;
- DS18B20_Delay(8);
- DQ=0;
- DS18B20_Delay(255);
- DQ=1;
- DS18B20_Delay(8);
- presence=DQ;
- DS18B20_Delay(100);
- DQ=1;
- return(presence);
- }
- /* 主函數 */
- /************************************/
- void main()
- {
- Ok_Menu();
- do
- {
- DS18B20_Read_Temperature();
- DS18B20_Disp_Temperature();
- }
- while(!presence) ;
- while(1)
- Error_Menu();
- do
- {
- DS18B20_Init();
- }
- while(presence) ;
- }
復制代碼
附錄2:硬件電路原理圖 
以上的的Word格式文檔51黑下載地址:
恒溫箱的設計.doc
(753.5 KB, 下載次數: 66)
2020-4-22 11:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|