版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 2009級電子信息工程</p><p> 基于單片機溫度控制電路課程設(shè)計報告</p><p><b> 目 錄 </b></p><p><b> 1引言1</b></p><p><b> 2 設(shè)計任務(wù)2</b></p>&l
2、t;p> 2.1 設(shè)計內(nèi)容2</p><p> 2.2 技術(shù)指標2</p><p> 2.3 各部分的設(shè)計2</p><p> 3 方案的分析與選擇3</p><p> 3.1 方案的分析3</p><p> 3.2 方案的選擇3</p><p> 3.3 設(shè)計框
3、圖4</p><p> 4 硬件部分理論設(shè)計5</p><p> 4.1 AT89C51單片機的引腳功能說明5</p><p> 4.2 AT89C51單片機最小系統(tǒng)6</p><p> 4.3 LED顯示器接口原理7</p><p> 4.4按鍵部分的設(shè)計8</p><p&g
4、t; 4.5數(shù)字溫度傳感器DS18B20的發(fā)展9</p><p> 4.6 DS18B20的主要特性9</p><p> 4.7 DS18B20工作原理10</p><p> 4.8 DS18B20主要的數(shù)據(jù)部件11</p><p> 4.9高速暫存存儲器11</p><p> 4.10 本設(shè)計中
5、DS18B20使用中注意事項12</p><p> 4.11 固態(tài)繼電器的分析與選擇13</p><p><b> 4.12電源14</b></p><p> 5 軟件部分的理論設(shè)計15</p><p> 5.1 硬件的整合15</p><p> 5.2 軟件的設(shè)計
6、15</p><p><b> 參考文獻17</b></p><p><b> 致謝18</b></p><p><b> 摘 要</b></p><p> 本文是一個關(guān)于恒溫控制器的設(shè)計,本文單片機控制部分采用AT89C51單片機為核心,單片機具有功能強,體積小,
7、成本低等優(yōu)點,設(shè)計采用DS18B20數(shù)字式溫度傳感器,溫度精度可以控制在1℃以內(nèi),采用軟件編程,使用C語言來編寫程序,用控制電爐的加熱來實現(xiàn)對水溫溫度的控制。適用于環(huán)境參數(shù)經(jīng)常變化的小型溫度控制電路。恒溫溫度控制在日常生活中有很重要的作用,尤其是水溫的溫度恒定,恒定的水溫對水產(chǎn)養(yǎng)殖,工廠污水的處理,家庭生活用水等有重要的意義。</p><p> 關(guān)鍵詞:恒溫控制器;AT89C51單片機;DS18B20溫度傳感器
8、;C語言編程</p><p><b> Abstract</b></p><p> I use the AT89C51SCM design a constant temperature constant water temperature controller of control, the design of single-chip microcomputer
9、control AT89C51 microcontroller as the core, SCM has strong function, small volume, low cost, this design using digital temperature sensor DS18B20, temperature control precision of 1℃ in May, within the software programm
10、ing, using C language program, with the control of electric heating water temperature to realize the control of the temperature. Apply to e</p><p> Keyword: Constant temperature controller; AT89C51SCM; The
11、temperature sensor DS18B20; The C programming language. </p><p><b> 1引言</b></p><p> 溫度是工業(yè)對象中一個主要的被控參數(shù),它是一種常見的過程變量,因為它直接影響燃燒、化學反應(yīng)、發(fā)酵、烘烤、煅燒、蒸餾、濃度、擠壓成形,結(jié)晶以及空氣流動等物理和化學過程。溫度控制不好就可能引起生產(chǎn)安
12、全,產(chǎn)品質(zhì)量和產(chǎn)量等一系列問題。溫度控制是許多設(shè)備的重要的構(gòu)成部分,它的功能是將溫度控制在所需要的溫度范圍內(nèi),以利于進行工件的加工與處理。不論是在生活中還是在工業(yè)生產(chǎn)過程中,溫度的變化對生活、生產(chǎn)的某些細節(jié)環(huán)節(jié)都會造成不同程度的影響,所以適時地對溫度進行控制具有重要的意義。</p><p> 溫度是日常生活中無時不在的物理量,溫度的控制在各個領(lǐng)域都有積極的意義。很多行業(yè)中都有大量的用電加熱設(shè)備,如用于熱處理的加
13、熱爐,用于融化金屬的坩鍋電阻爐及各種不同用途的溫度箱等,采用單片機對它們進行控制不僅具有控制方便、簡單、靈活性大等特點,而且還可以大幅度提高被控溫度的技術(shù)指標,從而能夠大大提高產(chǎn)品的質(zhì)量。因此,智能化溫度控制技術(shù)正被廣泛地采用。水溫控制在工業(yè)及日常生活中應(yīng)用廣泛,分類較多,不同水溫控制系統(tǒng)的控制方法也不盡相同,其中以PID控制法最為常見。單片機控制部分采用AT89C51單片機為核心,采用軟件編程,實現(xiàn)用PID算法來控制PWM波的產(chǎn)生,進
14、而控制電爐的加熱來實現(xiàn)溫度控制。然而,單純的PID算法無法適應(yīng)不同的溫度環(huán)境,在某個特定場合運行性能非常良好的溫度控制器,到了新環(huán)境往往無法很好勝任,甚至使系統(tǒng)變得不穩(wěn)定,需要重新改變 PID 調(diào)節(jié)參數(shù)值以取得佳性能。</p><p> 本文以MCS-51單片機為控制核心,采用DS18B20數(shù)字式溫度傳感器,以及恒定溫度的鍵盤設(shè)定,溫度的及時顯示,高于設(shè)定溫度時報警,系統(tǒng)復位功能,來達到控制電爐對水加熱的目的,
15、討論了控制水溫的恒定對人們的日常生活,以及工業(yè)生產(chǎn)的重要性。</p><p><b> 2 設(shè)計任務(wù)</b></p><p><b> 2.1 設(shè)計內(nèi)容</b></p><p> 本論文的內(nèi)容是基于單片機設(shè)計的一個電爐對水加熱的控制器。要求顯示實際溫度和設(shè)定的溫度,并且要求設(shè)定水溫可以由人工通過鍵盤來設(shè)定。電路可以通
16、過對實際溫度和設(shè)定溫度的差值的處理來控制繼電器的通斷,進而控制電爐的開關(guān),從而對水溫進行控制,使水溫保持在設(shè)定的溫度上。</p><p><b> 2.2 技術(shù)指標</b></p><p><b> ?。?)基本要求</b></p><p> ①以單片機為控制核心;②水溫控制范圍:40℃-100℃可調(diào);③誤差:<
17、2℃;</p><p> ?、軠仫@示:LED或LCD;⑤加熱部件:800W220V電熱管。</p><p><b> (2)發(fā)揮部分</b></p><p> ?、貾WM控制方式;水溫采樣記錄功能;PID調(diào)節(jié)控制;②自制穩(wěn)壓電壓。</p><p> 2.3 各部分的設(shè)計</p><p> ⑴
18、電爐接上220V 交流電,由繼電器控制其開關(guān),對水進行加熱;</p><p> ⑵DS18B20溫度傳感器對水溫進行實時檢測,輸出溫度信號給單片機;</p><p><b> ⑶單片機基本系統(tǒng) </b></p><p> a.要采集溫度傳感器傳過來的信號,進行相應(yīng)的處理,送往顯示部分;</p><p> b.接受
19、鍵盤輸入的信號,進行相應(yīng)的處理,送往顯示部分;</p><p> c.實測溫度與設(shè)定溫度比較由控制信號控制繼電器的通斷來控制電爐開關(guān);</p><p> ?、蕊@示:由2個七段數(shù)碼管以及數(shù)碼管的驅(qū)動電路組成,2位數(shù)碼管顯示出測量結(jié)果,2位數(shù)碼管顯示出設(shè)定的溫度;</p><p> ⑸按鍵與報警電路: 鍵入需要恒定的溫度,當水的溫度高于設(shè)定的溫度時,報警電路報警。&
20、lt;/p><p> 3 方案的分析與選擇</p><p><b> 3.1 方案的分析</b></p><p> 本方案是一個基于單片機的恒溫溫度控制之水溫控制電路,需要完成的功能是溫度的設(shè)定、檢測與顯示以及的溫度的控制和報警等。當溫度小于設(shè)定溫度時電爐工作,當溫度大于設(shè)定溫度時電爐不工作。 </p><p> 本
21、方案在軟、硬件功能劃分時,電路功能的軟、硬件劃分往往是由應(yīng)用電路對控制速度的要求決定的,在沒有速度限制的情況下可以依靠軟件換取硬件電路的簡化,以求降低硬件成本。</p><p><b> 3.2 方案的選擇</b></p><p> 分析設(shè)計要求,要選擇一個CPU控制芯片。由于電路控制方案簡單,在運行過程中需要存放的中間變量只有給定溫度、實測溫度、PI運算中間結(jié)果
22、及輸出結(jié)果等十幾個變量,因此選用AT89C51微控制器作為電路的核心,由于AT89C51的片內(nèi)RAM已能滿足存放要求,可不必再擴充外部RAM。</p><p> 分析設(shè)計要求,要選擇一個溫度敏感元件,它能夠很靈敏的根據(jù)溫度變化輸出一定的信號。這樣的器件種類很多,本設(shè)計選用的數(shù)字式集成溫度傳感器DS18B20。這是由于本設(shè)計中單片機除了要完成數(shù)據(jù)采集、處理、控制和顯示任務(wù)外,還要完成按鍵值得采集、處理。如果用常規(guī)
23、的數(shù)字加模擬電路實現(xiàn)就會相對困難一些。DS18B20是DALLAS半導體公司(現(xiàn)屬MAXIM公司)設(shè)計生產(chǎn)的單總線數(shù)字溫度傳感器,其測量溫度范圍為-55℃~+128℃,在-10~+85℃時精度為±0.5℃,這個精度已可以滿足普通型的環(huán)境溫度控制或測溫類消費產(chǎn)品的要求。這個傳感器最大的特點就是能夠從一根總線直接輸出二進制的溫度信號,不需要A/D轉(zhuǎn)換和信號放大。這樣的選擇使得整個電路的硬件設(shè)計更為簡化,節(jié)省了單片機的資源。<
24、/p><p> 設(shè)計顯示部分、按鍵部分和報警。顯示部分的設(shè)計考慮到在軟件設(shè)計過程中實際溫度和設(shè)定溫度之間會有影響,本設(shè)計采用實際溫度和門限溫度單獨顯示,共用一組I/O口。選用的是一組共陰極數(shù)碼管,采用一塊同相器74LS07集成塊來驅(qū)動。動態(tài)掃描顯示。按鍵部分的設(shè)計考慮到單片機I/O資源不足的緣故,本文采用四個按鍵分別用來設(shè)定和顯示溫度。設(shè)定的溫度在高于設(shè)定溫度時或在40℃至99℃范圍外就要報警。</p>
25、<p> 控制部分的設(shè)計,這一部分主要就是繼電器的選擇。本設(shè)計選擇的是固態(tài)繼電器。固態(tài)繼電器(Solid state Relay-SSR)是近幾年發(fā)展起來的一種新型電子繼電器,其輸入控制電流小,容易驅(qū)動,其輸出利用晶體管或可控硅驅(qū)動,無觸點。與普通的電磁式繼電器和磁力開關(guān)相比,具有無機械噪聲、無抖動和回跳、開關(guān)速度快、體積小質(zhì)量輕、壽命長、工作可靠等特點,并且耐沖擊、抗潮濕、抗腐蝕,本設(shè)計采用固態(tài)繼電器。另外在選擇繼電器
26、時還要注意它的供電電壓和帶負載能力。本設(shè)計中繼電器是由單片機控制的所以它的供電電壓選擇5V直流電。繼電器所帶的負載為一個額定功率800W,接220V交流電的電爐。所以繼電器的要選用交流型(AC-SSR),耐壓在220V以上,電流為1 A以上。本設(shè)計選用的是5V供電,2A 250VAC的固態(tài)繼電器。 </p><p><b> 3.3 設(shè)計框圖</b></p>
27、;<p> 電路框圖如下圖所示:</p><p> 圖 3-1 水溫控制電路總體框圖</p><p> 4 硬件部分理論設(shè)計</p><p> 理論設(shè)計包括硬件部分的設(shè)計和軟件部分的設(shè)計,硬件部分的設(shè)計包括AT89C51單片機引腳功能說明,AT89C51單片機最小系統(tǒng),包括單片機的基本供電、時鐘電路和復位電路,LED顯示器接口原理,按鍵部分的設(shè)
28、計與鍵盤接口技術(shù),數(shù)字溫度傳感器DS18B20的發(fā)展,DS18B20的主要特性,DS18B20的工作原理,DS18B20主要的數(shù)據(jù)部件,DS18B20的高速暫存存儲器,以及DS18B20的供電方式。本次設(shè)計中DS18B20使用中注意事項,固態(tài)繼電器的分析與選擇,以及本次畢業(yè)論文設(shè)計的電源。</p><p> 4.1 AT89C51單片機的引腳功能說明</p><p> 圖4-1 AT
29、89C51引腳圖</p><p> 引腳功能說明,AT89C51是雙列制插封裝形式的器件,AT89C51的引腳P00~P07、P10~P17、P20~P27、P30~P37為四個8位并行輸入/輸出口,其中P3口、P0口、P2口為雙功能口,可以作為普通輸入/輸出口(第一功能),也可以作為特殊輸入/輸出口。RST為復位輸入線,ALE、、為系統(tǒng)擴展控制線,XTAL1和XTAL2為時鐘電路輸入/輸出線, VCC、VSS
30、為電源輸入線,一般接+5V和地。</p><p> 4.2 AT89C51單片機最小系統(tǒng)</p><p> 時鐘和時鐘電路,時鐘電路是單片機的心臟,它控制著單片機的工作節(jié)奏。AT89C51單片允許的時鐘頻率的典型值12MHZ,也可以是6MHZ。本設(shè)計采用12MHZ。單片機時鐘電路圖如圖4-2 </p><p> 圖4-2 晶體振蕩電路</p>&
31、lt;p> 圖4-2中晶振頻率選擇12MHZ。接到晶振兩端的瓷片電容作用是使振蕩器起振和對f 微調(diào)補償,典型值為30PF,本設(shè)計中選用20PF瓷片電容。當單片機加電以后延遲約10ms的時間振蕩器起振產(chǎn)生時鐘,不受軟件控制(XTAL2輸出幅度為3V左右的正弦波)。</p><p> 復位和復位電路,單片機在啟動運行時都需要復位,使中央處理器CPU和系統(tǒng)中的其它部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始
32、工作。單片機的復位引腳是RST,當振蕩器起振后,該引腳上出現(xiàn)2個周期的高電平,是器件復位,只要RST保持高電平,單片機保持復位狀態(tài)。單片機復位方式有二種:上電復位(如圖4-3)、人工復位(如圖4-4)。</p><p> 圖4-3 上電自動復位電路 圖4-4 上電及按鍵復位電路</p><p> RESET與VCC之間的那個電阻在NMOS型單片機種需要
33、接,但是在CMOS型單片機中不接。其中電容一般為10UF的電解電容。</p><p> 4.3 LED顯示器接口原理</p><p> LED(Light Emitting Diode)是發(fā)光二極管的縮寫。LED顯示器是由發(fā)光二極管構(gòu)成的。LED顯示器在單片機中的應(yīng)用非常普遍。常用的LED顯示器為8段(或7段,8段比7段多了一個小數(shù)點“dip”段)。每一個段對應(yīng)一個發(fā)光二極管。這種顯示
34、器有共陰極和共陽極兩種,共陰極LED顯示器的發(fā)光二極管的陰極連結(jié)在一起,通常此公共陰極接地。當某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應(yīng)的段被顯示。同樣,共陽極LED顯示器的發(fā)光二極管的陽極連結(jié)在一起,通常此公共陽極接正電壓,當某個發(fā)光二極管的陽極為低電平時,發(fā)光二極管點亮,相應(yīng)的段被顯示。</p><p> LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種顯示方式。LED動態(tài)顯示方式,所謂的動態(tài)顯示,就是一位一
35、位地輪流點亮各位顯示器(掃描)。在多位LED顯示時,為簡化硬件電路,節(jié)省I/O口資源,通常將所有位的段碼線相應(yīng)的并聯(lián)在一起,由一個8位I/O口控制,而各位的共陽極或共陰極分別由相應(yīng)的I/O線控制,形成各位的分時選通。如圖4-5用AT89C51單片機控制LED動態(tài)顯示方式接口。</p><p> 圖4-5 AT89C51單片機控制LED動態(tài)顯示電路</p><p> 其中8550是同相
36、器集成塊,它是用來驅(qū)動共陰極數(shù)碼管的。</p><p> 圖4-6 顯示的位選電路</p><p> 在使用動態(tài)顯示電路的時候,由于各位的段碼線并聯(lián),8位I/O口輸出的段碼對各個顯示位來說都是相同的。因此要在同一時刻,如果各位的位選線都處于選通狀態(tài)的話那兩位LED將顯示相同的字符。若要各位LED能夠同時顯示出與本位相應(yīng)的顯示字符,就必須采用動態(tài)顯示方式,即在某一時刻,只讓某一位的位選線
37、處于選通狀態(tài),而其他各位的位選線處于關(guān)閉狀態(tài),同時,段碼線上輸出相應(yīng)位要顯示的字符的段碼。這樣在同一時刻2位LED中只有選通的那一位顯示出字符,而其它的LED則是熄滅的。同樣在下一時刻,只讓下一位的位選線處于選通狀態(tài)。也就是說在同一時刻只有選通位才能顯示出相應(yīng)的字符,而其它位是熄滅的。如此循環(huán)下去就可以使各位顯示出將要顯示的字符。雖然這些字符是不在同一時刻出現(xiàn)的,但由于LED顯示器的余輝和人眼的“視覺暫留”作用,只要每位顯示間隔足夠短,
38、則可以造成“多位同時亮”的假象,達到同時顯示的效果。這是用軟件來實現(xiàn)的。</p><p> 4.4按鍵部分的設(shè)計</p><p> 鍵盤是一組按鍵組合,它是最常用的單片機輸入設(shè)備。鍵盤分編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識別由專用的硬件譯碼器實現(xiàn),并產(chǎn)生鍵編碼或鍵值的稱為編碼鍵盤??寇浖R別的稱為非編碼鍵盤。本設(shè)計使用非編碼鍵盤,下面主要介紹非編碼鍵盤的原理、接口技術(shù)和程序設(shè)計。&l
39、t;/p><p> 鍵盤工作原理:鍵盤中每個按鍵都是一個常開開關(guān)電路,如圖3-8所示。當按鍵K未被按下時,P1.0輸入高電平;當K閉合時,P1.0輸入低電平。通常按鍵所用的開關(guān)為機械彈性開關(guān),當機械觸點端來、閉合時,電壓信號波形如圖3-12所示。由于機械觸點的彈性作用,一個按鍵開關(guān)在閉合時不會馬上穩(wěn)定的接通,在斷開時也不會一下子斷開。因而在閉合及斷開的瞬間均伴隨有一連串的抖動,如圖3-12所示。抖動的時間的長短由按
40、鍵的機械特性決定,一般為5~10ms。按鍵穩(wěn)定閉合時間的長短則是由操作人員的按鍵動作決定的,一般為零點幾秒。四個按鍵分別做為顯示設(shè)定溫度,設(shè)定溫度加,設(shè)定溫度減,顯示實際溫度。</p><p> 圖4-7 按鍵電路圖</p><p> 按鍵抖動會引起一次按鍵被誤讀多次。為確保CPU對按鍵的一次閉合僅做一次處理,必須去除鍵抖動。在鍵閉合穩(wěn)定時,讀取鍵的狀態(tài),并且必須判別鍵號;當鍵釋放穩(wěn)定
41、后,再做處理。按鍵的抖動,可用硬件或軟件兩種方法消除。本設(shè)計使用的是軟件。如果按鍵較多,常用軟件方法去抖動,及檢測出鍵閉合后執(zhí)行一個延時程序,產(chǎn)生5~10ms的延時;讓前沿抖動消失后,再一次檢測按鍵的狀態(tài),如果仍保持閉合狀態(tài)電平則確定真正有鍵按下。當檢測到按鍵釋放后,也要經(jīng)過5~10ms的延時,待后沿抖動消失后,才能轉(zhuǎn)入該鍵的處理程序。</p><p> 4.5數(shù)字溫度傳感器DS18B20的發(fā)展</p&g
42、t;<p> 美國Dallas半導體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持 "一線總線"接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨特而且經(jīng)濟的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念?,F(xiàn)在,新一代的DS18B20體積更小、更經(jīng)濟、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點。目
43、前DS18B20批量采購價格僅10元左右。</p><p> 4.6 DS18B20的主要特性</p><p> 適應(yīng)電壓范圍更寬,電壓范圍:3.0V~5.5V,在寄生電源的方式下可由數(shù)據(jù)線供電。</p><p> 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。DS18B20支持多點組網(wǎng)功能,多個
44、DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。溫度范圍-55℃~+128℃,在-10~+85℃時精度為±0.5℃。可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫。在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把
45、溫度值轉(zhuǎn)換為數(shù)字,速度更快。測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。 </p><p> 4.7 DS18B20工作原理</p><p> DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延
46、時時間由2s減為750ms。 DS18B20測溫原理如圖</p><p> 圖4-8 DS18B20測溫原理</p><p> 圖4-8中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信
47、號進行減法計數(shù),當計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預(yù)置值。</p><p> 4.8 DS18B20主要的數(shù)據(jù)部件</p><p>
48、; 光刻ROM中的64位序列號是出廠前被光刻好的,他可以看作是該DS18B20的地址序列碼。64為光刻ROM的排列是:開始八位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:|<< <&l
49、t; < 1 2 3 4 5 6 7 8 9 10 > >> >>| 用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達,其中S為符號位。DS18B20溫度傳感器的存儲器,DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。配置寄存器該字節(jié)各位的意義所示:低5位一直都是"
50、1",TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設(shè)置為0,用戶不要去改動。R1和R0用來設(shè)置分辨率。</p><p> 4.9高速暫存存儲器</p><p> 高速暫存存儲器由9個字節(jié)組成,當溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低
51、位在前,高位在后,DS18B20還有兩個用于儲存溫度的RAM,編號為0和1,1號儲存器用于存放溫度值的符號,當溫度為負,則1號存儲器8位全為1,否則全為0,0號儲存器用于存放溫度值的補碼,LSB最低位的1表示0.5℃,將存儲器中的2進制數(shù)求補,再轉(zhuǎn)換成十進制數(shù),并除以2就得到被測溫度值,數(shù)據(jù)格式如表1所示。對應(yīng)的溫度計算:DS18B20用12個字節(jié)存儲溫度,最高位為符號位S,S=0時,直接將二進制位轉(zhuǎn)換為十進制;當S=1時,先將補碼變?yōu)?/p>
52、原碼,再計算十進制值。例如:0550H 最高位為0,按照DS18B20讀數(shù)方式直接轉(zhuǎn)換為十進制溫度為85℃。</p><p> 根據(jù)DS18B20的通訊協(xié)議,
53、單片機控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進行復位操作,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預(yù)定的操作。復位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。</p><p> DS18B20寄生電源強上拉供電方
54、式電路如圖4-9,改進的寄生電源供電方式如下面圖所示,為了使DS18B20在動態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應(yīng),當進行溫度轉(zhuǎn)換或拷貝到E2存儲器操作時,用MOSFET把I/O線直接拉到VCC就可提供足夠的電流,在發(fā)出任何涉及到拷貝到E2存儲器或啟動溫度轉(zhuǎn)換的指令后,必須在最多10μS內(nèi)把I/O線轉(zhuǎn)換到強上拉狀態(tài)。在強上拉方式下可以解決電流供應(yīng)不走的問題,因此也適合于多點測溫應(yīng)用,缺點就是要多占用一根I/O口線進行強上拉切換。在外部供電的方
55、式下,DS18B20的GND引腳不能懸空,否則不能轉(zhuǎn)換溫度。</p><p> 圖4-9 DS18B20的外部電源供電方式</p><p> 4.10 本設(shè)計中DS18B20使用中注意事項</p><p> DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應(yīng)用中也應(yīng)注意一些問題,下面列出本設(shè)計中使用DS18B20應(yīng)注意的問題
56、,連接DS18B20的總線電纜是由長度限制的。當采用普通型號電纜傳輸長度超過50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用DS18B20進行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。在DS18B20測溫程序設(shè)計中,向DS18B20發(fā)出溫度轉(zhuǎn)
57、換命令后,程序總要等待DS1820的返回信號,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設(shè)計時也要給予一定的重視。測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點接地。由于本設(shè)計要求不高,所以只采用了簡單的電源線。</p><p> 4.11 固態(tài)繼電器的分析與選擇<
58、;/p><p> 為了實現(xiàn)水溫的PID控制,電路的輸出不能是一個簡單的開關(guān)量,輸入電爐的功率必須連續(xù)可調(diào)。一般來說改變輸入電爐的電壓平均值就可以改變電爐的輸出功率,而較簡單的調(diào)壓方法有相位控制調(diào)壓和通斷控制調(diào)壓法。本設(shè)計采用的脈寬調(diào)制輸出控制電爐與電源的接通和斷開的比例,以通斷控制調(diào)壓法控制電爐的輸入功率。這種方法不僅十輸出通道省去了D/A轉(zhuǎn)換器和移向觸發(fā)電路,大大簡化了硬件系統(tǒng)。</p><p
59、> 在后向通道的控制中,一般采用繼電器、可控硅等開關(guān)器件。繼電器又有電磁繼電器和固態(tài)繼電器之分。一些常用的小型電磁繼電器,由于受電流大小的限制,只能控制功率較小的負載。在實際的工程項目設(shè)計中,由于繼電器控制的負載多為感性或容性負載(比如本設(shè)計中的電爐就是感性負載),如果電磁隔離不好,這些負載所產(chǎn)生的高次諧波信號便會串進單片機控制電路產(chǎn)生各種干擾。這種干擾信號往往會導致系統(tǒng)的可靠性降低,具體表現(xiàn)有系統(tǒng)死機、CPU反復復位、控制失靈
60、等,也就是常說的“程序的跑飛”。因此對于大功率負載的控制,信號的隔離是電路設(shè)計中的一個非常重要的環(huán)節(jié)。我們可以采用光耦對電路進行隔離。由于電磁繼電器啟動瞬間會產(chǎn)生電磁火花干擾,所以在實際應(yīng)用中如本設(shè)計類似的控制一般都選用固態(tài)繼電器SSR。下面我就重點介紹一下固態(tài)繼電器。</p><p> 固態(tài)繼電器(Solid state Relay-SSR)是近幾年發(fā)展起來的一種新型電子繼電器,其輸入控制電流小,用TTL、H
61、TL、CMOS等集成電路或加簡單的輔助電路就可直接驅(qū)動,因此適宜于單片機測控系統(tǒng)中作為輸出通道的控制元件;其輸出利用晶體管或可控硅驅(qū)動,無觸點。與普通的電磁式繼電器和磁力開關(guān)相比,具有無機械噪聲、無抖動和回跳、開關(guān)速度快、體積小質(zhì)量輕、壽命長、工作可靠等特點,并且耐沖擊、抗潮濕、抗腐蝕,因此在單片機測控等領(lǐng)域中,已逐漸取代傳統(tǒng)的電磁式繼電器和磁力開關(guān)作為開關(guān)量輸出控制元件。</p><p> 由于固態(tài)繼電器的輸
62、出采用的光電耦合器對信號進行了隔離,本設(shè)計無需再接光電耦合器了。接口驅(qū)動本設(shè)計使用的是集成塊7407。具體連接如圖4-10所示。</p><p> 圖4-10 繼電器輸出控制電路</p><p> 本設(shè)計中繼電器是由單片機控制的所以它的供電電壓選擇5V直流電。繼電器所帶的負載為一個額定功率300W,接220V交流電的電爐。所以繼電器的要選用交流型(AC-SSR),耐壓在220V以上,電
63、流為1 A以上。本設(shè)計選用的是5V供電,2A 250VAC的固態(tài)繼電器。</p><p><b> 4.12電源</b></p><p> 電源電路如圖3-15所示,+5V的直流電源由220V的交流電經(jīng)EMI濾波器、變壓器、整流濾波電路、三端集成穩(wěn)壓器獲得。EMI濾波器能濾除從交流電網(wǎng)引入的噪聲干擾,改善系統(tǒng)的電磁兼容性;整流濾波電路將經(jīng)變壓器降壓后的
64、交流電變?yōu)閹Ъy波的直流電;三端穩(wěn)壓器7805可以產(chǎn)生穩(wěn)定的+5V直流電壓,給系統(tǒng)提供電能。</p><p> 5 軟件部分的理論設(shè)計</p><p><b> 5.1 硬件的整合</b></p><p> 水溫控制電路的原理圖見附錄,根據(jù)原理圖,實際水溫顯示的字型碼是由P0口送出,十位、個位分別由P2.0、P2.1選通;溫度傳感
65、器輸入到P1.6口,單片機的輸出控制信號由P3.0輸出。</p><p><b> 5.2 軟件的設(shè)計</b></p><p> 預(yù)置溫度非法報警程序流程圖如圖5-1</p><p> 圖5-1 預(yù)置溫度非法報警程序流程圖</p><p> 固態(tài)繼電器程序流程,當溫度低于參考值時,p3.0端口值低電位,導通。電熱
66、管加熱。當所測溫度到達參考值時,p3.0端口值高電平。達到自動控制電熱管。</p><p><b> 6結(jié)束語</b></p><p> 本文結(jié)合實際應(yīng)用了單片機AT89C51實現(xiàn)了實驗室恒溫控制設(shè)計的工作原理,以及軟硬件的設(shè)計方法及實現(xiàn)過程。本文重點論述了實驗室恒溫控制系統(tǒng)電路的設(shè)計,主要是硬件電路的設(shè)計及軟件程序的實現(xiàn)。對于單片機的應(yīng)用及控制領(lǐng)域,實現(xiàn)工業(yè)生產(chǎn)
67、過程的自動化和管理現(xiàn)代化有一定的意義。在控制精確度方面,采用先進的PID控制算法,對加熱時間進行精確控制,提高準確度。</p><p> 本設(shè)計采用了了市場上最先進的電子器件,電路設(shè)計簡單,成本低,系統(tǒng)具有較小的超調(diào)量,控制精度高。在軟件方面使用模塊化編程,使程序簡潔、可移植性強。</p><p> 單片機是目前控制系統(tǒng)使用最多的器件和芯片,單片機廣泛的應(yīng)用及其產(chǎn)生的效率令人矚目,在將
68、來的各個領(lǐng)域有著廣闊的應(yīng)用前景。</p><p><b> 參考文獻</b></p><p> [1]金發(fā)慶等編. 傳感器技術(shù)與應(yīng)用.北京機械工業(yè)出版社,2002</p><p> [2]楊旭編著. C語言程序設(shè)計案例教程. 人民郵電出版社,2005.1</p><p> [3]何力民編. 單片機高級教程. 北
69、京:北京航空大學出版社,2000</p><p> [4]曹巧媛主編. 單片機原理及應(yīng)用(第二版). 北京:電子工業(yè)出版社,2002</p><p> [5]王錦標,方崇智.過程計算機控制.清華大學出版社,1997,36~40.</p><p> [6]邵惠鶴.工業(yè)過程高級控制.上海交大出版社,1997;58—62,78—101</p><
70、p> [7]謝德芳. 數(shù)字信號處理, , 版本: 第1版, 科學出版社,2005</p><p> [8]王兢,王洪玉,數(shù)字電路與系統(tǒng), 版本: 第1版, 電子工業(yè)出版社,2007</p><p> [9]顧文郁編譯. 現(xiàn)代光電測試技術(shù).上??茖W技術(shù)文獻出版社, 1994</p><p> [10]何立民主編. 單片機應(yīng)用技術(shù)選編 7.北京航空航天大學
71、出版社, 1999</p><p> [11]全國大學生電子設(shè)計競賽組委會編.第五屆全國大學生電子設(shè)計競賽獲獎作品選編(2001), 北京:北京理工大學出版社,2003</p><p> [12]耿德根、宋建國、馬潮、葉永建編著.AVR高速嵌入式單片機原理與應(yīng)用(修訂版).北京航空航天大學出版社,2002.10</p><p><b> 致謝<
72、;/b></p><p> 衷心感謝許立志老師在論文的寫作過程中對我的悉心指導,他嚴謹精細的治學態(tài)度,淵博的知識,孜孜不倦的工作熱忱和誨人不倦的精神,我們將銘記在心!感謝工程技術(shù)學院的老師對我們成長的關(guān)心和幫助。</p><p> 附錄(含原理圖及實驗軟件程序)</p><p><b> 原理圖:</b></p>&l
73、t;p><b> pcb:</b></p><p><b> 程序:</b></p><p> /********************************************************************</p><p> * 名稱 : 恒溫控制器</p><
74、p> ***********************************************************************/</p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned
75、 int</p><p> #define jump_ROM 0xCC</p><p> #define start 0x44</p><p> #define read_EEROM 0xBE</p><p> sbit KEY1 = P1^0; //獨立按鍵</p><p> sbit KEY2
76、 = P1^1; //獨立按鍵</p><p> sbit KEY3 = P1^2; //獨立按鍵</p><p> sbit KEY4=P1^3; //獨立按鍵</p><p> sbit P3_0=P3^0; //ssr控制端口</p><p> sbit P3_7=P3^7; //蜂鳴器端口&
77、lt;/p><p> sbit DQ = P1^6; //DS18B20數(shù)據(jù)口</p><p> uchar TMPH,TMPL; </p><p> uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p>
78、 uchar disbuff[2];</p><p> uchar cankao=40;</p><p> uchar ten[2]={0x02,0x01};</p><p> uchar X0=40,X1=100;</p><p> uchar D0,D1,D2,D3;</p><p> uchar fl
79、ag=0;</p><p> /********************************************************************</p><p> * 名稱 : delay()</p><p> * 功能 : 延時,延時時間大概為140US。</p><p> /****************
80、*******************************************************/</p><p> void delay_1()</p><p><b> {</b></p><p><b> int i,j;</b></p><p> for(i=0; i&
81、lt;=10; i++)</p><p> for(j=0; j<=2; j++);</p><p><b> }</b></p><p> /********************************************************************</p><p> * 名稱
82、 : delay()</p><p> * 功能 : 延時函數(shù)</p><p><b> * 輸入 : 無</b></p><p><b> * 輸出 : 無</b></p><p> *****************************************************
83、******************/</p><p> void delay(uint N)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0; i<N; i++);</p><p><
84、;b> }</b></p><p> /********************************************************************</p><p> * 名稱 : Delay_1ms()</p><p> * 功能 : 延時子程序,延時時間為 1ms * x</p><p&g
85、t; ***********************************************************************/</p><p> void Delay_1ms(uint i)//1ms延時</p><p><b> {</b></p><p> uchar x,j;</p><
86、p> for(j=0;j<i;j++)</p><p> for(x=0;x<=148;x++);</p><p><b> }</b></p><p> /********************************************************************</p>
87、<p> * 名稱 : Reset()</p><p> * 功能 : 復位DS18B20</p><p> ***********************************************************************/</p><p> uchar Reset(void)</p><p>
88、<b> {</b></p><p> uchar deceive_ready;</p><p><b> DQ = 0;</b></p><p> delay(29);</p><p><b> DQ = 1;</b></p><p><
89、;b> delay(3);</b></p><p> deceive_ready = DQ;</p><p> delay(25);</p><p> return(deceive_ready);</p><p><b> }</b></p><p> /******
90、**************************************************************</p><p> * 名稱 : read_bit()</p><p> * 功能 : 從DS18B20讀一個位值</p><p> ****************************************************
91、*******************/</p><p> uchar read_bit(void)</p><p><b> {</b></p><p><b> uchar i;</b></p><p><b> DQ = 0;</b></p><
92、;p><b> DQ = 1;</b></p><p> for(i=0; i<3; i++);</p><p> return(DQ);</p><p><b> }</b></p><p> /****************************************
93、****************************</p><p> * 名稱 : write_bit()</p><p> * 功能 : 向DS18B20寫一位</p><p> ***********************************************************************/</p><
94、;p> void write_bit(uchar bitval)</p><p><b> {</b></p><p> DQ=0;if(bitval==1)</p><p><b> DQ=1;</b></p><p><b> delay(5);</b>&l
95、t;/p><p><b> DQ=1;</b></p><p><b> }</b></p><p> /********************************************************************</p><p> * 名稱 : read_byte(
96、)</p><p> * 功能 : 從DS18B20讀一個字節(jié)</p><p> ***********************************************************************/</p><p> uchar read_byte(void)</p><p><b> {<
97、/b></p><p> uchar i,m,receive_data;</p><p><b> m = 1;</b></p><p> receive_data = 0;</p><p> for(i=0; i<8; i++)</p><p><b> {<
98、;/b></p><p> if(read_bit())</p><p><b> {</b></p><p> receive_data = receive_data + (m << i);</p><p><b> }</b></p><p>&
99、lt;b> delay(6);</b></p><p><b> }</b></p><p> return(receive_data);</p><p><b> }</b></p><p> /*************************************
100、*******************************</p><p> * 名稱 : write_byte()</p><p> * 功能 : 向DS18B20寫一個字節(jié)</p><p> ***********************************************************************/</p>
101、;<p> void write_byte(uchar val)</p><p><b> {</b></p><p> uchar i,temp;</p><p> for(i=0; i<8; i++)</p><p><b> {</b></p>&l
102、t;p> temp = val >> i;</p><p> temp = temp & 0x01;</p><p> write_bit(temp);</p><p><b> delay(5);</b></p><p><b> }</b></p>
103、<p><b> }</b></p><p> /********************************************************************</p><p> * 名稱 : LED_W1()</p><p> * 功能 : 向disbuff[]輸入當前溫度值</p>
104、<p> ***********************************************************************/</p><p> void LED_W1()</p><p><b> {</b></p><p> uint temp;</p><p>&l
105、t;b> Reset();</b></p><p> write_byte(jump_ROM);</p><p> write_byte(start);</p><p><b> Reset();</b></p><p> write_byte(jump_ROM);</p>&l
106、t;p> write_byte(read_EEROM);</p><p> TMPL = read_byte();</p><p> TMPH = read_byte();</p><p> temp = TMPL / 16 + TMPH * 16;</p><p> D0=temp/10%10;</p>&l
107、t;p> D1=temp%10;</p><p> disbuff[0]= table[temp/10%10];</p><p> disbuff[1]= table[temp%10]; </p><p><b> }</b></p><p> /*************************
108、*******************************************</p><p> * 名稱 : LED_W2()</p><p> * 功能 : 向disbuff[]輸入?yún)⒖紲囟戎?lt;/p><p> *********************************************************************
109、**/</p><p> void LED_W2() </p><p><b> {</b></p><p> D2=cankao/10;</p><p> D3=cankao%10;</p><p> disbuff[0]= table[cankao/10];</p>
110、<p> disbuff[1]= table[cankao%10];</p><p><b> }</b></p><p> /********************************************************************</p><p> * 名稱 : display()</p
111、><p> * 功能 : 數(shù)碼管顯示</p><p> ***********************************************************************/</p><p> void display()</p><p><b> { </b></p><
112、;p><b> uchar i;</b></p><p> for(i=0;i<2;i++)</p><p><b> {</b></p><p> P0=disbuff[i];</p><p> P2=~(ten[i]) ;</p><p> De
113、lay_1ms(2); }</p><p><b> }</b></p><p> /********************************************************************</p><p> * 名稱 : display()</p><p> * 功能 : 獨立按
114、鍵的功能:當前溫度值與參考值的切換、參考值得+、——</p><p> ***********************************************************************/</p><p> void KEY()</p><p><b> {</b></p><p>
115、; if(KEY1==0 )</p><p><b> {</b></p><p> Delay_1ms(20); //20毫秒軟件防抖</p><p> if(KEY1==0 )</p><p><b> {</b></p><p> LED_W
116、1();</p><p> flag=1; </p><p><b> } </b></p><p><b> }</b></p><p> if( KEY2==0 )</p><p><b> { </b
117、></p><p> Delay_1ms(20); //20毫秒軟件防抖</p><p> if(KEY2==0 )</p><p><b> {</b></p><p><b> LED_W2();</b></p><p> flag=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 恒溫控制課程設(shè)計---恒溫控制電路的設(shè)計
- 單片機課程設(shè)計---水溫控制器設(shè)計
- 單片機課程設(shè)計--水溫控制器設(shè)計
- 單片機畢業(yè)設(shè)計---基于單片機的恒溫控制器的設(shè)計
- 單片機課程設(shè)計--溫度控制器的設(shè)計
- 單片機課程設(shè)計-恒溫控制模擬設(shè)計
- 基于單片機實現(xiàn)的溫度控制器課程設(shè)計
- 單片機課程設(shè)計---基于單片機控制的時鐘控制器
- 單片機控制技術(shù)課程設(shè)計--定時器控制電路
- 單片機課程設(shè)計----空調(diào)溫度控制器的設(shè)計
- 單片機課程設(shè)計---基于單片機的定時控制器設(shè)計
- 基于單片機水溫控制器的設(shè)計設(shè)計
- 單片機課程設(shè)計——基于單片機的步進電機控制器設(shè)計
- 單片機課程設(shè)計--基于單片機的純水機控制電路板設(shè)計
- 恒溫控制電路設(shè)計
- 單片機數(shù)字傳感器課程設(shè)計-- 溫度控制器
- 單片機課程設(shè)計-時間控制器
- 單片機課程設(shè)計——基于單片機的步進電機控制器設(shè)計
- 單片機課程設(shè)計--基于單片計算機的溫度控制器
- 基于單片機的水溫控制器的設(shè)計
評論
0/150
提交評論