基于89C51單片機(jī)和CAN總線的供熱溫度控制器的設(shè)計(jì)研究
1 系統(tǒng)總體結(jié)構(gòu)及方案設(shè)計(jì)
本文引用地址:http://m.butianyuan.cn/article/201612/326433.htm一個(gè)完整的大型公建節(jié)能型供熱溫度控制器由兩部分組成:溫度測(cè)控系統(tǒng)和通信模塊系統(tǒng)。系統(tǒng)總體結(jié)構(gòu)如圖1所示。系統(tǒng)溫度測(cè)控的硬件包括:單片機(jī)、溫度傳感器、信號(hào)放大器、A/D轉(zhuǎn)換器及D/A轉(zhuǎn)換器、穩(wěn)壓器、顯示驅(qū)動(dòng)芯片和數(shù)碼管等。系統(tǒng)通信模塊的硬件包括CAN控制器和CAN收發(fā)器。
1.1 溫度控制的工作原理
在溫度測(cè)控系統(tǒng)中,穩(wěn)壓器完成對(duì)單片機(jī)的供電,數(shù)碼管完成溫度的顯示。系統(tǒng)的被測(cè)參數(shù)是溫度,被測(cè)溫度首先由傳感器測(cè)量后得到mV信號(hào),再經(jīng)放大器放大后變?yōu)?~5 V電壓信號(hào),送入A/D轉(zhuǎn)換器轉(zhuǎn)換后,將模擬信號(hào)變?yōu)閿?shù)字信號(hào)供給單片機(jī),在單片機(jī)內(nèi)進(jìn)行數(shù)據(jù)處理。一方面,與所設(shè)定的溫度值進(jìn)行比較產(chǎn)生偏差信號(hào),單片機(jī)根據(jù)預(yù)定的PID算法計(jì)算出相應(yīng)的控制量,用控制量控制電氣閥的導(dǎo)通和關(guān)斷,實(shí)現(xiàn)溫度控制;另一方面,將實(shí)時(shí)測(cè)量得到的溫度送至數(shù)碼管顯示,同時(shí)用戶也可通過(guò)鍵盤來(lái)設(shè)定理想溫度。
1.2 CAN通信模塊的工作原理
當(dāng)CAN總線上的一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),其以報(bào)文形式廣播給網(wǎng)絡(luò)中所有節(jié)點(diǎn)。對(duì)每個(gè)節(jié)點(diǎn)而言,無(wú)論數(shù)據(jù)是否是發(fā)給自己的,均對(duì)其進(jìn)行接收。每組報(bào)文開頭有11位字符作為標(biāo)識(shí)符,其規(guī)定了報(bào)文的優(yōu)先級(jí),這種格式稱為面向內(nèi)容的編址方案。在同一系統(tǒng)中標(biāo)識(shí)符是唯一的,不可能有兩個(gè)站發(fā)送具有相同標(biāo)識(shí)符的報(bào)文。當(dāng)幾個(gè)站同時(shí)競(jìng)爭(zhēng)總線讀取時(shí),這種配置尤為重要。當(dāng)一個(gè)站要向其他站發(fā)送數(shù)據(jù)時(shí),該站的CPU要將發(fā)送的數(shù)據(jù)和自身的標(biāo)識(shí)符傳送給本站的CAN控制器,并處于準(zhǔn)備狀態(tài);當(dāng)收到總線分配時(shí),轉(zhuǎn)為發(fā)送報(bào)文狀態(tài)。CAN控制器將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報(bào)文格式發(fā)出,此時(shí)網(wǎng)上的其他站點(diǎn)處于接收狀態(tài)。每個(gè)處于接收狀態(tài)的站對(duì)接收到的報(bào)文進(jìn)行檢測(cè),判斷是否接收這些報(bào)文。通常每個(gè)CAN模塊都是南不同的功能單元構(gòu)成。CAN控制器與物理總線間需要一個(gè)接口CAN接收發(fā)送器,CAN接收發(fā)送器將來(lái)自CAN控制器的邏輯電平信號(hào)轉(zhuǎn)換為總線上的物理電平。再將總線上的物理電平轉(zhuǎn)換為CAN控制器能接收的邏輯電平信號(hào)。CAN接收發(fā)送器的上一層是CAN控制器,該控制器執(zhí)行完整的CAN協(xié)議,包括信息緩沖和接收濾波。
2 各部分模塊設(shè)計(jì)
2.1 主要芯片選擇
系統(tǒng)單片機(jī)采用8位AT89C51,因控制器所需的單片機(jī),無(wú)需在語(yǔ)音、圖像進(jìn)行大規(guī)模的數(shù)據(jù)處理,且對(duì)速度要求較低,無(wú)需高位單片機(jī)。溫度傳感器該產(chǎn)品采用美國(guó)Dallas公司生產(chǎn)的DS18B20數(shù)字式溫度傳感器。選用此類溫度傳感器可省去信號(hào)放大部分及A/D轉(zhuǎn)換器,使得該溫度控制器結(jié)構(gòu)變得簡(jiǎn)單、清晰。穩(wěn)壓器采用三端LM7805供給單片機(jī)電源。LM7805為正穩(wěn)壓電路,TO-220封裝,可提供多種固定的輸出電壓,應(yīng)用范圍廣。D/A轉(zhuǎn)換器選擇DAC0832.其是8分辨率的D/A轉(zhuǎn)換集成芯片與微處理器完全兼容。顯示芯片采用PS7219,是一種新型的串行接口的8位數(shù)字靜態(tài)顯示芯片,可與任何單片機(jī)方便接口,并可同時(shí)驅(qū)動(dòng)8位LED.
2.2 單片機(jī)溫度采集電路
溫控系統(tǒng)包括單片機(jī)最小系統(tǒng)和測(cè)溫傳感器。單片機(jī)最小系統(tǒng)中,復(fù)位電路采用12 MHz晶振,復(fù)位電路由復(fù)位按鈕控制,同時(shí)提供單片機(jī)AT89C51、CAN控制器SJA1000和顯示接口器件PS7219的復(fù)位信號(hào)。單片機(jī)溫度采集電路如圖2所示,從RST引出線,分別與各芯片的復(fù)位信號(hào)線相連采用上電復(fù)位模式。
2.3 數(shù)模轉(zhuǎn)換電路
對(duì)輸出信號(hào)進(jìn)行數(shù)模轉(zhuǎn)換中,DAC0832采用單緩沖工作方式。DAC0832的兩級(jí)寄存器的寫信號(hào)WR1和WR2均由單片機(jī)的WR引腳控制。當(dāng)單片機(jī)的地址線選擇DAC0832后,只要輸出WR控制信號(hào),便可同時(shí)完成數(shù)字陽(yáng)的輸入鎖存和D/A轉(zhuǎn)換輸出。由于DAC0832是電流輸出型,所以為了得到電壓信號(hào),需在DAC0832的輸出端接入運(yùn)算放大器。接入一級(jí)運(yùn)算放大器可得到負(fù)的電壓信號(hào),接入二級(jí)運(yùn)算放大器,得到正的電壓信號(hào)。數(shù)模轉(zhuǎn)換電路如圖3所示。
2.4 CAN通信模塊電路
SJA1000作為CAN的控制部分,在與單片機(jī)連接時(shí),其數(shù)據(jù)線AD0~AD7與單片機(jī)的輸入輸出管腳P0口連接,片選信號(hào)CS接地,低電壓允許訪問(wèn),RST、1NT、WR、WD、ALE管腳分別與單片機(jī)的相應(yīng)管腳連接,控制器的收發(fā)端RX0、TX0分別接收發(fā)器CTM1050的收發(fā)端RXD、TXD引腳相連。系統(tǒng)通信模塊電路如圖4所示。
2.5 電源電路及溫度顯示、按鍵電路
當(dāng)穩(wěn)壓器LM7805對(duì)單片機(jī)進(jìn)行供電時(shí),220 V交流市電通過(guò)電源變壓器變換為交流低壓,再經(jīng)橋式整流電路和濾波電容C1的整流和濾波,在固定式三端穩(wěn)壓器LM7805的Vin和GND兩端形成一個(gè)并不穩(wěn)定的直流電壓。此直流電壓經(jīng)LM7805的穩(wěn)壓和C3的濾波便在穩(wěn)壓電源的輸出端產(chǎn)生了精度高、穩(wěn)定度好的直流輸出電壓。單片機(jī)AT89C51的P1.6作串行數(shù)據(jù)輸出,連接到PS7219的DIN腳,P1.7和P1.5通過(guò)程序分別模擬PS7219的時(shí)鐘脈沖CLK及數(shù)據(jù)加載LOAD信號(hào)。PS7219的SA~SG,SDP端連接到各LED數(shù)碼管對(duì)應(yīng)的a~f及dp端,DIG1~DIG3分別接3位LED數(shù)碼管的共陰極,從而實(shí)現(xiàn)位選。PS7219應(yīng)緊靠LED顯示器放置,且連線盡可能短,兩個(gè)GND引腳均必須連接到地線上。系統(tǒng)只設(shè)4個(gè)按鍵,分別是功能鍵、增加鍵、減小鍵和確定鍵。在按鍵的線路連接中,每個(gè)按鍵并聯(lián)一個(gè)0.1μF電容,目的是實(shí)現(xiàn)消抖。
3 程序設(shè)計(jì)
3.1 系統(tǒng)主程序設(shè)計(jì)
主程序模塊的主要工作是上電后對(duì)系統(tǒng)初始化和構(gòu)建系統(tǒng)整體軟件框架,其中初始化包括對(duì)單片機(jī)的初始化、D/A芯片初始化和溫度傳感器初始化等。隨后等待溫度設(shè)定,若溫度設(shè)定后,判斷系統(tǒng)運(yùn)行鍵是否按下,若系統(tǒng)運(yùn)行,則依次調(diào)用各相關(guān)模塊,循環(huán)控制直到系統(tǒng)停止運(yùn)行。圖5所示為主程序流程圖。
由于常規(guī)PID控制器控制效果不佳,溫度測(cè)量控制中存在非線性、時(shí)變、干擾和純滯后問(wèn)題,而增量式PID算法具有計(jì)算誤差小、切換無(wú)沖擊和可靠性高的特點(diǎn),所以本系統(tǒng)采用該算法。數(shù)字增量式PID的輸出為:
△u(k)=a0e(k)-a1e(k-1)+a2e(k-2) (1)
其中,Kp為比例系數(shù);TI為積分時(shí)間常數(shù);TD為微分時(shí)間常數(shù)
3.2 溫度傳感器測(cè)溫子程序
溫度傳感器DS18B20的操作協(xié)議:初始化DS1820(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。其操作程序流程如圖6所示。其中任何一步失敗時(shí)自動(dòng)重新初始化。
3.3 CAN通信模塊子程序
CAN通信的軟件設(shè)計(jì)主要包括3部分:CAN節(jié)點(diǎn)初始化、報(bào)文發(fā)送和報(bào)文接收。AT89C51通電或復(fù)位后,調(diào)用復(fù)位程序給SJA1000的復(fù)位端RST提供復(fù)位信號(hào),使SJA1000進(jìn)入復(fù)位模式,SJA1000的初始化只有在復(fù)位模式下才可進(jìn)行。初始化程序主要包括以下寄存器的設(shè)計(jì):(1)通過(guò)時(shí)鐘分頻寄存器定義:是使用BasIC CAN模式或Peli CAN模式;是否能使CLKOUT輸出時(shí)鐘頻率;是否旁路CAN輸入比較器;TX1輸出是否用專門的接收中斷輸出。(2)通過(guò)驗(yàn)收碼寄存器和屏蔽寄存器定義接收?qǐng)?bào)文的驗(yàn)收碼與對(duì)報(bào)文之間進(jìn)行比較的相關(guān)位定義驗(yàn)收屏蔽碼。(3)通過(guò)總線定時(shí)寄存器定義總線的位速率、位周期內(nèi)的采樣點(diǎn)和一個(gè)位周期內(nèi)的采樣數(shù)量。(4)通過(guò)輸出寄存器定義CAN總線輸出管腳TX0、TX1的輸出模式、配置。最后,要清除SJA1000的復(fù)位請(qǐng)求標(biāo)志進(jìn)入工作模式,方可進(jìn)行報(bào)文的發(fā)送和接收。
單片機(jī)將要發(fā)送的報(bào)文送到SAJ1000發(fā)送緩沖區(qū),然后將SJA1000命令寄存器的發(fā)送請(qǐng)求標(biāo)志位(TR)置位,發(fā)送過(guò)程南其獨(dú)立完成。在新報(bào)文寫入發(fā)送緩沖區(qū)前,必須先檢查狀態(tài)寄存器的發(fā)送緩沖器狀態(tài)標(biāo)志(TBS),若為“1”,發(fā)送緩沖器被釋放,可將新的報(bào)文寫入發(fā)送緩沖器。否則,發(fā)送緩沖器被鎖定,新報(bào)文不能被寫入。
報(bào)文接收也由SJA1000獨(dú)立完成。收到的報(bào)文通過(guò)接收濾波器放在FIFO隊(duì)列中,第1條報(bào)文進(jìn)入接收緩沖器,由狀態(tài)寄存器的接收緩沖器狀態(tài)標(biāo)志位(RBS)和接收中斷標(biāo)志位(RI)標(biāo)出。單片機(jī)從接收緩沖器取走1條報(bào)文后,通過(guò)置位SAJ1000的命令寄存器來(lái)釋放接收緩沖器。
4 軟件調(diào)試
在硬件設(shè)計(jì)和軟件的編程后,將針對(duì)要實(shí)現(xiàn)的功能編寫程序在Keil C51中將編譯無(wú)誤的程序運(yùn)行,對(duì)整個(gè)系統(tǒng)而言,首先要對(duì)鍵盤輸入和數(shù)碼顯示進(jìn)行調(diào)試,就是整個(gè)硬件電路對(duì)照電路圖進(jìn)行檢查,查找錯(cuò)焊、虛焊、漏焊等錯(cuò)誤。檢查無(wú)誤后,便開始運(yùn)行電路,為保證穩(wěn)定的電源供給,給PC機(jī)的USB接口提供5 V直流電源。將結(jié)果與要實(shí)現(xiàn)的理想狀態(tài)對(duì)照,再通過(guò)結(jié)果對(duì)硬件電路進(jìn)行檢驗(yàn)和修改,并將所編程序進(jìn)行適當(dāng)優(yōu)化,如圖7所示。運(yùn)行結(jié)果證明整個(gè)系統(tǒng)穩(wěn)定、可靠,滿足了設(shè)計(jì)要求。
5 結(jié)束語(yǔ)
本方案采用了基于89C51單片機(jī)和CAN總線的設(shè)計(jì)方法,給出了供熱溫度控制器的總體設(shè)計(jì)方案,以及主要電路原理圖的引腳連接,并根據(jù)功能要求和實(shí)際電路設(shè)計(jì)了系統(tǒng)軟件,給出了主要程序的流程圖。最終對(duì)單片杌進(jìn)行了軟硬件聯(lián)調(diào),實(shí)現(xiàn)了相應(yīng)功能。
評(píng)論