溫度是工業(yè)生產(chǎn)中常見的被控參數(shù)之一。從食品生產(chǎn)到化工生產(chǎn),從燃料生產(chǎn)到鋼鐵生產(chǎn)等等,無不涉及到對溫度的控制,可見,溫度控制在工業(yè)生產(chǎn)中占據(jù)著非常重要的地位,而且隨著工業(yè)生產(chǎn)的現(xiàn)代化,對溫度控制的速度和精度也會越來越高。近年來, 溫度控制領(lǐng)域發(fā)生了很大的變化,工業(yè)生產(chǎn)中對溫度的控制不再局限于近距離或者直接的控制,而是需要進(jìn)行遠(yuǎn)距離的控制,這就產(chǎn)生了遠(yuǎn)程溫度控制。 遠(yuǎn)程溫度控制的通信方式有多種,如通過網(wǎng)絡(luò),無線電等等。每一種方式都有其優(yōu)點和缺點。利用無線電通信,方便、靈活,而且經(jīng)濟(jì)。它不需要像網(wǎng)絡(luò)控制耗費巨大的通信資源,也不受網(wǎng)絡(luò)速度的影響。 在溫度控制的方法上,傳統(tǒng)的控制方法(包括經(jīng)典控制和現(xiàn)代控制)在處理具有非線形或不精確特性的被控對象時十分困難。而溫度系統(tǒng)為大滯后系統(tǒng),較大的純滯后可引起系統(tǒng)不穩(wěn)定。 在溫度采集方法上,通常是利用熱電偶把熱化為電信號,再通過A/D轉(zhuǎn)換得到溫度值。這種方法速度慢,而且精度不是很高。綜合上面的考慮以及自己的愛好,設(shè)計了基于無線電通信的遠(yuǎn)程溫度控制系統(tǒng)。本文詳細(xì)的介紹了系統(tǒng)的硬件設(shè)計,軟件設(shè)計,以及調(diào)試等,希望它能給初級電子制作愛好者帶來一些無線電通信和溫度控制的基本常識,以及應(yīng)該注意的一些事項。 1、溫度控制的發(fā)展及意義 在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。自18世紀(jì)工業(yè)革命以來,工業(yè)發(fā)展對是否能掌握溫度有著絕對的聯(lián)系。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可以說幾乎%80的工業(yè)部門都不得不考慮著溫度的因素。 現(xiàn)代工業(yè)設(shè)計、工程建設(shè)及日常生活中常常需要用到溫度控制,早期溫度控制主要應(yīng)用于工廠中,例如鋼鐵的水溶溫度,不同等級的鋼鐵要通過不同溫度的鐵水來實現(xiàn),這樣就可能有效的利用溫度控制來掌握所需要的產(chǎn)品了。在現(xiàn)代社會中,溫度控制不僅應(yīng)用在工廠生產(chǎn)方面,其作用也體現(xiàn)到了各個方面,隨著人們生活質(zhì)量的提高,酒店廠房及家庭生活中都會見到溫度控制的影子,溫度控制將更好的服務(wù)于社會。 2 總體設(shè)計與可行性分析 2.1 設(shè)計任務(wù) 1、利用所學(xué)的知識設(shè)計遠(yuǎn)程溫度控制系統(tǒng)。電烤箱溫度可在一定范圍內(nèi)由人工設(shè)定,溫度信號檢測方案自行確定,用單片機(jī)采用PID控制算法實現(xiàn)溫度實時控制,靜態(tài)誤差1度,超調(diào)量〈2.5%,系統(tǒng)溫度調(diào)節(jié)時間ts〈4分鐘。控制輸出采用脈沖移相觸發(fā)可控硅來調(diào)節(jié)加熱有效功率。控制溫度范圍室溫--125℃,用十進(jìn)制數(shù)碼顯示箱內(nèi)的溫度。 2、采用PID控制算法實現(xiàn)溫度實時控制,并顯示溫度實際值。 3、了解計算機(jī)控制系統(tǒng)的基本原理和組成; 4、實現(xiàn)無線發(fā)送、接收,編碼、解碼校驗。實現(xiàn)超限報警; 5、掌握計算機(jī)控制系統(tǒng)的軟、硬件設(shè)計與調(diào)試,實現(xiàn)滿足指標(biāo)要求的控制系統(tǒng)。 主要技術(shù)指標(biāo): (1)溫度控制誤差:≤±0.5℃; (2)發(fā)射頻率:≥300MHZ (3)發(fā)射距離:≥500m (4)誤碼率:≤10-6 2.2 總體設(shè)計框圖及概述述 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg 圖 2.0 系統(tǒng)總體設(shè)計框圖 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg 圖 2.1 鍵盤控制面示意圖 如圖2.1所示,鍵盤控制面采用2*4式鍵盤,K0,K1的功能分別是左移一位和右移一位;K4,K5的功能分別是加1和減1;K2,K3,K6分別是向從系統(tǒng)00,01,10發(fā)送溫度設(shè)定值的功能鍵。K7為清楚報警鳴聲且熄滅報警提示紅綠燈。編碼解碼部分采用通用編解芯片PT2262/PT2272。PT2262/PT2272工作電壓低,可進(jìn)行地址編碼,地址碼多達(dá)531441種,數(shù)據(jù)最多可達(dá)6位。發(fā)射接收部分采用F05T,J04T模塊,發(fā)射接收頻率為433M,工作電壓3—12V,頻率穩(wěn)定度為0.00001。溫度傳感器采用“一線總線”數(shù)字溫度傳感器DS18B20,DS18B20測量范圍為-55℃—125℃,測量精度為±0.5℃。 2.3 溫度采集系統(tǒng)的設(shè)計 采用典型的反饋式溫度控制系統(tǒng),如圖2.2所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 圖2.2 溫度采集系統(tǒng)框圖 2.4 數(shù)字PID控制 數(shù)字PID控制在生產(chǎn)過程中是一種最普遍采用的控制方法,在冶金、機(jī)械、化工等行業(yè)中獲得廣泛的應(yīng)用。下面簡單介紹PID控制的基本原理、數(shù)字PID控制算法及其改進(jìn)和PID的參數(shù)整定及其發(fā)展。 2.4.1 PID控制原理 在模擬控制系統(tǒng)中,控制器最常用的控制規(guī)律是PID控制。PID控制器是一種線性控制器,它根據(jù)給定值r(t)與實際輸出值c(t)構(gòu)成控制偏差e(t)=r(t)-c(t)。將偏差的比例、積分和微分通過線形組合構(gòu)成控制量,對被控對象進(jìn)行控制,故稱PID控制器。其控制規(guī)律為: u(t)=Kp[e(t)+1/Ti∫e(t)dt+Tdde(t)/dt] (1) 或?qū)懗蓚鬟f函數(shù)形式 G(S)=U(S)/E(S)=Kp(1+1/TiS+TdS) (2) 式中 Kp是比例系數(shù),Ti是積分時間常數(shù),Td是微分時間常數(shù)。簡單地說,PID控制器各校正環(huán)節(jié)的作用如下: (1)比例環(huán)節(jié):及時成比例地反映控制系統(tǒng)的偏差信號e(t),偏差一旦產(chǎn)生,控制器立即產(chǎn)生控制作用,以減少偏差。 (2)積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用取決于積分時間常數(shù)Ti,Ti越大,積分作用越弱,反之則越強(qiáng)。 (3)微分環(huán)節(jié):能反映偏差信號的變化趨勢(變化速率),并能在偏差信號值變得太大之前,在系統(tǒng)中引入一個有效的早期修正信號,從而加快系統(tǒng)的動作速度,減小調(diào)節(jié)時間。 2.4.2 數(shù)字PID控制算法 在計算機(jī)控制系統(tǒng)中,使用的是數(shù)字PID控制器,數(shù)字PID控制算法通常又分為位置式和增量式控制算法。由于計算機(jī)控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算控制量,因此模擬式中的積分和微分項不能直接使用,需要進(jìn)行離散化處理。以一系列的采樣時刻點kT代表連續(xù)時間t,以和式代替積分,以增量代替微分,作近似變換。采樣周期足夠短,才能保證有足夠的精度。 (1)位置式PID控制算法 由于計算機(jī)輸出的u(k)直接去控制執(zhí)行機(jī)構(gòu),u(k)的值和執(zhí)行機(jī)構(gòu)的位置是一一對應(yīng)的,所以通常稱 u(k)=Kp{e(k)+T/Ti∑e(j)+Td/T[e(k)-e(k-1)]}} (3) 為位置式PID控制算法。 這種算法的缺點是:由于全量輸出,所以每次輸出均與過去的狀態(tài)有關(guān),計算時要對e(k)進(jìn)行累加,計算機(jī)運算工作量大。而且,因為計算機(jī)輸出的u(k)對應(yīng)的是執(zhí)行機(jī)構(gòu)的時間位置,如計算機(jī)出現(xiàn)故障,u(k)大幅度變化,會引起執(zhí)行機(jī)構(gòu)位置的大幅度變化,這種情況往往是生產(chǎn)實踐中不允許的,在某些場合,還可能造成重大的生產(chǎn)事故,因而產(chǎn)生了增量式PID控制的控制算法。 (2)增量式PID控制算法 所謂增量式PID是指數(shù)字控制器的輸出只是控制量的增量。 △u(k)=Ae(k)-Be(k-1)+Ce(k-2) (4) 式中 A=Kp(1+T/Ti+Td/T) B=Kp(1+2Td/T) C=KpKd/T 采用增量式算法時,計算機(jī)輸出的控制增量對應(yīng)的是本次執(zhí)行機(jī)構(gòu)位置的增量。對應(yīng)閥門實際位置的控制量,即控制量的積累需要采用一定的方法來解決,例如用有累積作用的元件來實現(xiàn);而目前較多的是利用算式通過執(zhí)行軟件來完成。 增量式控制雖然只是算法上作了一點改進(jìn),卻帶來了不少優(yōu)點: ①由于計算機(jī)輸出增量,所以誤動作時影響小,必要時可用邏輯判斷的方法去掉。 ②手動/自動切換時沖擊小,便于實現(xiàn)無擾動切換。此外,當(dāng)計算機(jī)發(fā)生故障時,由于輸出通道或執(zhí)行裝置具有信號的鎖存作用,故仍能保持原值。 ③算式中不需要累加。控制增量的確定,僅與最近K次的采樣值有關(guān),所以較容易通過加權(quán)處理而獲得比較好的控制效果。 但增量式控制也有其不足之處:積分截斷效應(yīng)大,有靜態(tài)誤差;益出的影響大。因此,在選擇時不可一概而論,一般認(rèn)為在以晶閘管作為執(zhí)行器或在控制精度要求高的系統(tǒng)中,可采用位置算法,而在以步進(jìn)電機(jī)或電動閥門作為執(zhí)行器的系統(tǒng)中,則可采用增量控制算法。 2.4.3 改進(jìn)的數(shù)字PID控制算法 在計算機(jī)控制系統(tǒng)中,PID控制規(guī)律是用計算機(jī)程序來實現(xiàn)的,因此它的靈活性很大。一些原來在模擬PID控制器中無法實現(xiàn)的問題,在引入計算機(jī)以后,就可以得到解決,于是產(chǎn)生了一系列的改進(jìn)算法:積分分離PID控制算法、遇限削弱積分PID控制算法、不完全微分PID控制算法、微分先行PID控制算法和帶死區(qū)的PID控制算法等。 (1)積分分離PID控制算法 在普通的PID數(shù)字控制器中引入積分環(huán)節(jié)的目的,主要是為了消除靜差、提高精度。但在過程的啟動、結(jié)束或大幅度增減的設(shè)定值時,短時間內(nèi)系統(tǒng)輸出有很大的偏差,會造成PID運算的積分積累,致使算得的控制量超過執(zhí)行機(jī)構(gòu)困難最大的動作范圍對應(yīng)的極限控制量,最終引起系統(tǒng)較大的超調(diào),甚至引起系統(tǒng)的振蕩,這是某些生產(chǎn)過程中絕對不允許的。引進(jìn)積分分離PID控制算法,既保持了積分作用,又減小了超調(diào)量,使得控制性能有了較大的改善。其具體實現(xiàn)如下: ①根據(jù)實際情況,人為設(shè)定一閥值q>0。 ②當(dāng)|e(k)|>q時,也即偏差值|e(k)|比較大時,采用PD控制,可避免過大的超調(diào),又使系統(tǒng)有較快的響應(yīng)。 ③當(dāng)|e(k)|<=q時,也即偏差值|e(k)|比較小時,采用PID控制,可保證系統(tǒng)控制精度。 (2)遇限削弱積分PID控制算法 積分分離PID控制算法在開始時不積分,而遇限削弱積分PID控制算法則正好與之相反,一開始就積分,進(jìn)入限制范圍后即停止積分。遇限削弱積分PID控制算法的基本思想是:當(dāng)控制進(jìn)入飽和區(qū)以后,便不再進(jìn)行積分項的累加,而只執(zhí)行削弱積分的運算。因而,在計算u(k)時,先判斷u(k-1)是否已超出限制值。若u(k-1)>umax,則只累加負(fù)偏差;若u(k-1)<umax,則累加正偏差。遇限削弱積分PID控制算法可以避免控制量長時間停留在飽和區(qū)。 (3)不完全微分PID控制算法 微分環(huán)節(jié)的引入,改善了系統(tǒng)的動態(tài)特性,但對于干擾特別敏感。在誤差擾動突變時微分項有不足之處。即微分項僅在第一個周期有輸出,且幅值為KD=KP×TD/T,以后均為零。該輸出的特點為: ①微分項的輸出僅在第一個周期起激勵作用,對于時間常數(shù)較大的系統(tǒng),其調(diào)節(jié)作用很小,不能達(dá)到超前控制誤差的目的。 ②幅值一般比較大,容易造成計算機(jī)中數(shù)據(jù)溢出。 克服上述缺點的方法之一是,在PID算法中加一個一階慣性環(huán)節(jié)(低通濾波器),既可構(gòu)成不完全微分PID控制。可以將低通濾波器直接加在微分環(huán)節(jié)上,也可將低通濾波器加在整個PID控制器之后。 引入不完全微分后,微分輸出在第一個采用周期內(nèi)的脈沖高度下降,之后又逐漸衰減。所以不完全微分具有較理想的控制特性。盡管不完全微分PID控制算法比普通PID控制算法要復(fù)雜些,但由于其良好的控制特性,近些年來越來越得到廣泛的應(yīng)用。 (4)微分先行PID控制算法 微分先行PID控制的特點是只對輸出量c(t)進(jìn)行微分,而對給定值r(t)不作微分。這樣在改變給定值時,輸出不會改變,而被控量的變化,通常總是比較緩和的。這種輸出量先行微分控制適用于給定值r(t)頻繁升降的場合,可以避免給定值升降時所引起的系統(tǒng)振蕩,明顯地改善了系統(tǒng)的動態(tài)特性。 (5)帶死區(qū)的PID控制算法 在計算機(jī)控制系統(tǒng)中,某些系統(tǒng)為了避免控制作用過于頻繁,消除由于頻繁動作所引起的振蕩,可采用帶死區(qū)的PID控制。設(shè)死區(qū)為e0,當(dāng)|e(k)|≤e0時,令e'(k)=0;當(dāng)|e(k)|>e0時,令e'(k)=e(k)。式中,死區(qū)是一個可調(diào)的參數(shù),其具體數(shù)值可根據(jù)實際控制對象由實驗確定。若e0值太小,使控制動作過于頻繁,達(dá)不到穩(wěn)定被控對象的目的;若e0太大,則系統(tǒng)將產(chǎn)生較大的滯后。此控制系統(tǒng)實際上是一個非線性系統(tǒng)。 2.4.4 PID參數(shù)整定 在數(shù)字控制系統(tǒng)中,PID參數(shù)是影響調(diào)節(jié)品質(zhì)的重要參數(shù),閉環(huán)系統(tǒng)正式使用前,必須對PID參數(shù)進(jìn)行整定,整定點通常設(shè)定在目標(biāo)值。 整定PID參數(shù)的原則: (1)要使控制系統(tǒng)的過程過渡時間盡量短 (2)最大偏差和超調(diào)量要小 (3)擾動作用后減幅振蕩的次數(shù)盡量少 (4)恒溫曲線要求盡可能平直;靜差要小 整定PID參數(shù)的方法主要有: (1)理論整定法:所謂理論整定法是從PID調(diào)節(jié)規(guī)律的概念出發(fā),根據(jù)對象的特性和控制準(zhǔn)確度的要求從理論上得出各參數(shù)的整定數(shù)據(jù)。從PID的理論概念分析可知: ①要使過渡過程盡可能短,應(yīng)選較小的P,較短的Ti和適量的Td ②要使超調(diào)量盡量小,使系統(tǒng)減幅振蕩,應(yīng)選較大的P,較長的Ti和盡可能短Td 整定時既要滿足前者,又不可忽視后者,從優(yōu)選法的觀點出發(fā)考慮到PID參數(shù)的折中選取,故將P和I整定到中間值,而D參數(shù)的整定應(yīng)該根據(jù)爐體的具體使用情況而定。若在系統(tǒng)的調(diào)節(jié)過程中不會有過大的階躍擾動出現(xiàn),D應(yīng)盡可能小,甚至不用 (2)經(jīng)驗法:實際上是一種試湊法。PID參數(shù)預(yù)先放在哪里以及反復(fù)試湊的程序是經(jīng)驗法的核心,整定參數(shù)預(yù)先放置的位置要根據(jù)對象特性及參考儀表的量程而定。對于一般熱處理爐的溫度調(diào)節(jié)系統(tǒng),可按下列參考數(shù)據(jù)進(jìn)行:file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif為20%~70%或更小;Ti為(3~10)min;Td為(0.5~3)min。試湊程序可先用P,再加I,最后再D。爐溫控制的準(zhǔn)確度,不但取決于儀表本身的準(zhǔn)確度和性能,也取決于它所控制對象的特性,要使儀表使用合理,并達(dá)到最佳控制,必須使儀表和爐體很好地配合,正確地調(diào)整。 2.5可行性分析 可行性分析與總體設(shè)計對于實現(xiàn)一個設(shè)計方案來說是必不可少的,而在對一個方案進(jìn)行總體設(shè)計之前必須對其進(jìn)行可行性分析。盲目行動很有可能導(dǎo)致失敗,從而造成不必要的經(jīng)濟(jì)損失和資源的浪費。而進(jìn)行可行性分析與明確所要完成的任務(wù)的目標(biāo)和所選的器件是分不開的。本次遠(yuǎn)程溫度控制的設(shè)計要達(dá)到如下目標(biāo): (1)主系統(tǒng)采用鍵盤輸入方式設(shè)定溫度值并顯示; (2)利用無線電進(jìn)行通信; (3)一對多點通信,對各通信點進(jìn)行編址; (4)對溫度進(jìn)行控制; (5)溫度信號采集。 綜合考慮上面描述的功能并結(jié)合自己的具體情況,選用如下的器件來實現(xiàn): ① 選用常用的89S51單片機(jī)作為控制器; ② 選用帶地址編碼的編碼芯片PT2262以及與之配套的解碼芯片PT2272。 ③ 選用發(fā)射模塊F05T和接收模塊J04T進(jìn)行無線電通信。 ④ 選用數(shù)字溫度傳感器DS18B20進(jìn)行溫度采集。 3 硬件設(shè)計 3.1溫度采集電路設(shè)計DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55℃~+125℃,可編程為9位~12位A/D轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625℃,被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生;多個DS18B20可以并聯(lián)到3根或2根線上,CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。 3.1.1 DS18B20的內(nèi)部結(jié)構(gòu) DS18B20內(nèi)部結(jié)構(gòu)如圖3.1所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 圖3.1 DS18B20的內(nèi)部結(jié)構(gòu) 從圖中可以看出,DS18B20主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如圖3.2所示,DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端。
ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個DS18B20的64位序列號均不相同。64位ROM的排的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg 3.2 DS18B20的管腳排列 DS18B20中的溫度傳感器完成對溫度的測量,用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。 溫度值低字節(jié) MSBLSB 溫度值高字節(jié) 高低溫報警觸發(fā)器TH和TL、配置寄存器均由一個字節(jié)的EEPROM組成,使用一個存儲器功能命令可對TH、TL或配置寄存器寫入。其中配置寄存器的格式如下: MSBLSB R1、R0決定溫度轉(zhuǎn)換的精度位數(shù):R1R0=“00”,9位精度,最大轉(zhuǎn)換時間為93.75ms;R1R0=“01”,10位精度,最大轉(zhuǎn)換時間為187.5ms;R1R0=“10”,11位精度,最大轉(zhuǎn)換時間為375ms;R1R0=“11”,12位精度,最大轉(zhuǎn)換時間為750ms;未編程時默認(rèn)為12位精度。
高速暫存器是一個9字節(jié)的存儲器。開始兩個字節(jié)包含被測溫度的數(shù)字量信息;第3、4、5字節(jié)分別是TH、TL、配置寄存器的臨時拷貝,每一次上電復(fù)位時被刷新;第6、7、8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個字節(jié)的CRC碼,可用來保證通信正確。
3.1.2 DS18B20的工作時序 DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸。其工作時序包括初始化時序、寫時序和讀時序,如圖3.3(a)(b)(c)所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
(a)初始化時序 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg
(b)寫時序 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg
(c)讀時序
圖3.3 DS18B20的工作時序圖 3.1.3 DS18B20與單片機(jī)的典型接口設(shè)計
圖3.4以MCS-51系列單片機(jī)為例,畫出了DS18B20與微處理器的典型連接。圖3.4(a)中DS18B20采用寄生電源方式,其VDD和GND端均接地,圖3.4(b)中DS18B20采用外接電源方式,其VDD端用3V~5.5V電源供電。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg 3.4(a)寄生電源工作方式 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg 3.4(b)外接電源工作方式
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
圖3.4 (c) DS18B20與微處理器的典型連接圖 單片機(jī)系統(tǒng)所用的晶振頻率為11.0592MHz,根據(jù)DS18B20的初始化時序、寫時序和讀時序,編寫了如下的DS18B20驅(qū)動程序: /*========================================================================= 功能:實現(xiàn)對DS18B20的讀取 原理:單總線協(xié)議 注意:單總線協(xié)議對延時要求比較嚴(yán)格,此程序中采用的是11.0592M的晶振, ====================================================================================================*/ //#include"reg51.h" sbitDQ =P1^4; //定義通信端口 //延時函數(shù) /* voiddelay(unsigned int i) { while(i--); } */ //初始化函數(shù) Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ復(fù)位 delay(8); //稍做延時 DQ = 0; //單片機(jī)將DQ拉低 delay(80); //精確延時 大于480us DQ = 1; //拉高總線 delay(14); x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(20); }
//讀一個字節(jié) ReadOneChar(void) { unsignedchar i=0; unsignedchar dat = 0; for(i=8;i>0;i--) { DQ = 0; // 給脈沖信號 dat>>=1; DQ = 1; // 給脈沖信號 if(DQ) dat|=0x80; delay(4); } return(dat); }
//寫一個字節(jié) WriteOneChar(unsignedchar dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; } //delay(4); }
//讀取溫度 ReadTemperature(void) { unsignedchar a=0; unsignedchar b=0; unsignedint t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC);// 跳過讀序號列號的操作 WriteOneChar(0x44);// 啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC);//跳過讀序號列號的操作 WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0625; //t=tt*10+0.5; //放大10倍輸出并四舍五入---此行沒用 return(t); }
main() { unsigned char i=0; while(1) { i=ReadTemperature();//讀溫度 } } ……
子程序ReadTemperature讀取的溫度值高位字節(jié)送WDMSB單元,低位字節(jié)送WDLSB單元,再按照溫度值字節(jié)的表示格式及其符號位,經(jīng)過簡單的變換即可得到實際溫度值。
如果一線上掛接多個DS18B20、采用寄生電源連接方式、需要進(jìn)行轉(zhuǎn)換精度配置、高低限報警等,則子程序ReadTemperature的編寫就要復(fù)雜一些。 3.2單片機(jī)控制電路設(shè)計 3.2.1 AT89S51單片機(jī) AT89S51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器FPEROM的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89S51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。 3.2.1.1 主要特性:
·與MCS-51 兼容 ·128*8位內(nèi)部RAM
·4K字節(jié)可編程閃爍存儲器 ·32可編程I/O線
·壽命:1000寫/擦循環(huán) ·兩個16位定時器/計數(shù)器
·數(shù)據(jù)保留時間:10年 ·5個中斷源
·全靜態(tài)工作:0Hz-24Hz ·可編程串行通道
·三級程序存儲器鎖定 ·低功耗的閑置和掉電模式
·片內(nèi)振蕩器和時鐘電路 3.2.1.2 主要功能介紹
VCC:供電電壓+5V GND:接地
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口同時為閃爍編程和編程校驗接收一些控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。
ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。
/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 3.2.2 鍵盤控制面板 鍵盤控制面板由2*4鍵組成,P2口的P2.2,P2.3口作為鍵盤的行控制位,P2.4,P2.5,P2.6,P2.7口作為鍵盤的列控制位。P2.0,P2.1作為主控系統(tǒng)中編碼解碼芯片的地址控制位。在2*4鍵盤面板中,K0,K1的功能分別是左移一位和右移一位;K4,K5的功能分別是加1和減1;K2,K3,K6分別是向從系統(tǒng)00,01,10發(fā)送溫度設(shè)定值的功能鍵。K7為清楚報警鳴聲且熄滅報警提示紅綠燈。鍵盤、顯示控制板電路如圖3.5所示:
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg 圖3.5 鍵盤、顯示系統(tǒng)控制板 3.2.3 LED數(shù)碼管顯示電路 顯示系統(tǒng)是微機(jī)控制系統(tǒng)的重要組成都分,主要用于顯示各種參數(shù)的值,以便使現(xiàn)場上工作人員能夠及時掌握生產(chǎn)過程。工業(yè)控制系統(tǒng)中常用的顯示器件有CRT、LED、LCD等。CRT不僅可以進(jìn)行字符顯示,而且可以進(jìn)行畫面顯示,和計算機(jī)配合使用,可十分方便地實現(xiàn)生產(chǎn)過程的管理和監(jiān)視。但由于CRT體積較大、價格昂貴,所以只適用于大型微機(jī)控制系統(tǒng)。在中小企業(yè)的生產(chǎn)過程控制中,為了使工作人員能夠在現(xiàn)場直接看到生產(chǎn)情況和報警信號,經(jīng)常選用LCD和LED作為顯示器件。LED具有體積小,功耗低,響應(yīng)速度快,容易匹配,可靠性高和壽命長等優(yōu)點。 LED數(shù)碼管有共陰極和共陽極兩類,如圖3.6所示。共陰極LED數(shù)碼管的發(fā)光二極管的陰極接在一起,某個發(fā)光二極管的陽極電壓為高電平時,二極管發(fā)光:而共陽極LED數(shù)碼管是發(fā)光二極管的陽極連接在一起,當(dāng)某個二極管的陰極電壓為低電平時,二極管發(fā)光。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg 圖3.6 共陰極與共陽極數(shù)碼管 在微機(jī)控制系統(tǒng)中,一般利用N位LED數(shù)碼管組成N位LED顯示器。一般有兩種顯示方法:靜態(tài)顯示和動態(tài)顯示。靜態(tài)顯示的優(yōu)點是數(shù)據(jù)顯示很少占用單片機(jī)時間,在單片機(jī)有大量實時數(shù)據(jù)需要處理時,最好采用這種方法;其缺點是需要顯示碼鎖存電路,增加了硬件的復(fù)雜性。動態(tài)顯示方法是把N位數(shù)碼管的相同名稱的段碼連在一起(即,把所有數(shù)碼管的a段連在一起引出一條線作為段選,其余類同)由8條線控制,而位選線由其它的I/O口控制。比如,4位動態(tài)LED顯示電路只需要12條I/O口線,其中8位用來控制段選碼,另外4位用來控制位選。由于所有位的段選碼用同一個I/O口控制,因此若要位選顯示不同的字符,必須采用掃描顯示方式。即任何時候位選只選通一個顯示位,同時控制段選的I/O口輸出顯示字符對應(yīng)的段選碼,使該位顯示相應(yīng)字符,顯示一段時間后,再選通下一顯示位。如此循環(huán),且每個顯示器件顯示該位應(yīng)顯示的字符,通過程序控制,不斷循環(huán)輸出相應(yīng)的段選碼和位選碼,由于人的視覺殘留效應(yīng),就可以獲得視覺穩(wěn)定的顯示狀態(tài)。 本次設(shè)計采用封裝在一起的4位共陽極數(shù)碼管作為顯示器,外加PNP型三極管作為驅(qū)動,采用動態(tài)顯示方法,由P0口控制段選,P2口控制位選。其電路如圖3.6中右上部分所示。 3.2.4 在線代碼下載電路 Atmel89Sxx芯片都具有在線編程功能(In-SystemProgramming),其串行編程模式更是容易操作,其編程電路如圖3.7所示。在圖3.7中,P1.5是指令串行輸入端,P1.6是數(shù)據(jù)串行輸出端,P1.7是編程時鐘信號輸入端,注意,編程時鐘信號的頻率應(yīng)該低于晶振頻率的1/16,即,如果選用的晶振頻率為33MHz,編程時鐘信號的頻率則不能超過2MHz。如果要將其和電腦連接實現(xiàn)在線編程則還需要外加一些電路。通常的做法是用MAX232芯片實現(xiàn)單片機(jī)TTL電平到電腦RS232電平之間的轉(zhuǎn)換,從而進(jìn)行通信。這里給出一種更為簡單的連接方式,可以不用MAX232芯片,其電路如圖3.8將DB25插頭接在電腦上,通過電阻分壓,P1.5~P1.7和RESET端高電平時電壓在4.8V左右,這時就可以燒寫.Hex文件了(當(dāng)然需要軟件支持)。 本次設(shè)計將單片機(jī)的燒寫電路直接做在控制板上,用起來十分方便,不用拆芯片,為以后的程序調(diào)試提供了很好的支持,加快了程序開發(fā)的速度。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg 圖3.7 AT89s51串行編程模式
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image029.jpg 圖3.8 在線代碼下載電路 3.2.5驅(qū)動電路設(shè)計 電力電子器件的驅(qū)動電路是電力電子主電路與控制電路之間的接口,是電力電子裝置的重要環(huán)節(jié),對整個裝置的性能有很大的影響。采用性能良好的驅(qū)動電路,可使得電力電子器件工作在較理想的開關(guān)狀態(tài),縮短開關(guān)時間,減少開關(guān)損耗,對裝置的運行效率、可靠性和安全性都有重要的意義。另外,對電力電子器件或整個裝置的一些保護(hù)措施也往往就近設(shè)在驅(qū)動電路中,或者通過驅(qū)動電路來實現(xiàn),這使得驅(qū)動電路的設(shè)計更為重要。 簡單的說,驅(qū)動電路的基本任務(wù),就是將信息電子電路傳來的信號按照其控制目標(biāo)的要求,轉(zhuǎn)換為加在電力電子器件控制端和公共端之間,可以使其開通或關(guān)斷的信號。驅(qū)動電路還要提供控制電路與主電路之間的電氣隔離環(huán)節(jié)。一般采用光隔離或磁隔離。光隔離一般采用光偶合器。光偶合器有發(fā)光二極管和光敏晶體管組成,封裝在一個外殼內(nèi)。 3.2.5.1光電偶合器件MOC3021 利用光電耦合器構(gòu)成的交流電控制電路設(shè)計。 方案一:交流電源降壓后用一個電容交連到單片機(jī),從而在單片機(jī)內(nèi)部形成過零檢測信號。其采用電容充放電方式產(chǎn)生方波,波形不夠理想而且安全可靠性差。對單片機(jī)軟件設(shè)計要求較高。 方案二:交流電源的通斷由單片機(jī)通過光電耦合器件控制,避免交流電平干擾,其安全性可靠性高。驅(qū)動控制電路與單片機(jī)的接口設(shè)計電路如圖3.9所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image031.jpg 圖3.9 驅(qū)動控制電路與單片機(jī)的接口設(shè)計 3.2.5.2 雙向可控硅BTA12 (1)雙向可控硅可以認(rèn)為是一對反并聯(lián)聯(lián)接的普通晶閘管組成,其電氣圖形符號如圖3.10中右邊部分,它有兩個主電極1和2,一個門極3。門極使器件在主電極的正反兩個方向均可觸發(fā)導(dǎo)通雙向雙向晶閘管與一對反并聯(lián)晶閘管相比是比較經(jīng)濟(jì)的,而且控制電路比較簡單,所以在交流調(diào)壓電路、固態(tài)繼電器(Solid State Relay—SSR)和交流電動機(jī)調(diào)速等領(lǐng)域應(yīng)用較多。 (2)雙向可控硅驅(qū)動電路:雙向可控硅作為電力控制器件,廣泛應(yīng)用于控制系統(tǒng)中,即可作固態(tài)繼電器進(jìn)行開關(guān)控制,也可用于交流電的移相觸發(fā)調(diào)節(jié)交流電壓。在本課程設(shè)計中作為固態(tài)繼電器進(jìn)光電隔離器件選用雙向可控硅輸出型(如MOC3020、MOC3021),R2選用330Ω的電阻。控制端輸入采用低電平有效的方式。電路如圖3.10所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image033.jpg 圖3.10 可控硅控制電路 觸發(fā)電路使用獨立電源,J1的1腳接+5V電源,2腳接地。J2的2腳接PWM端口,當(dāng)PWM=1時,光電耦合器的輸出端導(dǎo)通,晶體管9013導(dǎo)通,A、B端有觸發(fā)脈沖輸出。反之,晶體管截止,觸發(fā)脈沖結(jié)束。用于觸發(fā)雙向可控硅,不需要另外的觸發(fā)電源,利用雙向晶閘管的工作電源作為觸發(fā)電源。MOC3021是雙向可控硅輸出型的光電耦合器,輸出端的額定電壓為400V,最大輸出電流為1A,最大隔離電壓為7500V,輸入端控制電流小于15mA。J1的1腳輸入高電平時,MOC3021的輸入端有電流流入,輸出端的雙向可控硅導(dǎo)通,觸發(fā)外部的雙向可控硅KS導(dǎo)通。反之,MOC3021輸出端的雙向可控硅關(guān)斷,外部雙向可控硅KS在外部電壓過零后也關(guān)斷。 3.2.6 報警電路設(shè)計 除了顯示電路以外,為了系統(tǒng)運行的安全,設(shè)計了如圖3.11所示的報警電路。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg 圖3.11 報警電路 如圖3.11所示,溫度失控報警的啟動端接P3.3,.H3.7為上限報警指示紅燈,L3.6為下限報警指示綠燈。當(dāng)溫度失控超出上限設(shè)定值時,P3.3輸出高電平,報警鳴聲,同時點亮紅燈。當(dāng)溫度失控超出下限設(shè)定值時,點亮綠燈。 3.3無線收/發(fā)電路設(shè)計 3.3.1 編碼/解碼電路設(shè)計 3.3.1.1編碼電路設(shè)計 PT2262/2272是一種CMOS工藝制造的低功耗低價位通用編解碼電路。PT2262/2272最多可有12位(A0-A11)三態(tài)地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441地址碼,PT2262最多可有6位(D0-D5)數(shù)據(jù)端管腳,設(shè)定的地址碼和數(shù)據(jù)碼從17腳串行輸出,可用于無線遙控發(fā)射電路。D0,D1,D2,D3,D4共五位數(shù)據(jù)位接單片機(jī)I/O口,通過單片機(jī)將數(shù)據(jù)輸送到編碼芯片中進(jìn)行編碼,編碼后數(shù)據(jù)從17腳輸出,從而實現(xiàn)了數(shù)據(jù)的并行輸入,串行輸出。因為單片機(jī)中每一個字節(jié)有8位,而PT2262中的數(shù)據(jù)口最多只有6位,所以需要把每個字節(jié)分為兩半,先發(fā)送高4位,后發(fā)送低4位。為了區(qū)別接收到的是高4位還是低4位,系統(tǒng)中使用了5個數(shù)據(jù)口D0,D1,D2,D3,D4,其中,D4用來表明接收到的數(shù)據(jù)是高4位還是低4位,當(dāng)D4=1時表示接收到的是高4位,D4=0時表示接收到的是低4位。PT2262收到從單片機(jī)傳來的數(shù)據(jù)后,需要同時啟動編碼,否則17腳將不會有數(shù)據(jù)輸出。 PT2262特點: ● CMOS工藝制造,低功耗 ● 外部元器件少 ● Rc振蕩電阻 ●工作電壓范圍寬:2.6-15v ● 數(shù)據(jù)最多可達(dá)6位 ● 地址碼最多達(dá)531441種 應(yīng)用范圍: ●車輛防盜系統(tǒng) ● 家庭防盜系統(tǒng) ● 遙 控 玩 具 ● 其他電器遙控 PT2262的引腳圖如3.12所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image037.jpg 圖3.12 PT2262的引腳圖 PT2262的管腳說明如表3.1。 表3.1 名稱 | | | | | 地址管腳,用于進(jìn)行地址編碼,可置為“0”,“1”,“f”(懸空) | | | 數(shù)據(jù)輸入端,有一個為“1”即有編碼發(fā)出,內(nèi)部下拉 | | | | | | | | | 編碼啟動端,用于多數(shù)據(jù)的編碼發(fā)射,低電平有效 | | | | | | | | | |
PT2262輸出波形以及極限參數(shù)如圖3.13和表3.2所示. file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image039.jpg 圖3.13 PT2262輸出波形 表3.2 PT2262極限參數(shù) 參數(shù) | | | | | | | | | | | | | | | | | | | | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image040.gifC | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image041.gifC |
PT2262的振蕩脈沖與編碼脈沖如圖3.14所示。OSC為PT2262的振蕩頻率,0、1、f分別為PT2262的三種編碼形式。0表示低電平,1表示高電平,懸空時為f。從波形的形狀可以清楚地看出輸入的是低電平,高電平還是懸空。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image043.jpg 圖3.14 振蕩脈沖與編碼脈沖 在具體的應(yīng)用中,外接電阻可根據(jù)需要進(jìn)行適當(dāng)?shù)恼{(diào)節(jié),阻值越大振蕩頻率越慢,編碼的寬度越大,發(fā)碼一幀的時間越長.推薦值:2262/4.7M/2272/820K2262/3.3M/2272/680K,2262/1.2M/2272/200K由于2262/2272目前廠牌較多,外接振蕩電阻也略有不同,下面列出的是PT2262與HS2272及HS2262/HS6672的振蕩電阻數(shù)據(jù)。PT2262/4.7M配HS2272/2M HS2262/4.7M配HS2272/1M。振蕩電阻的阻值必須精確,切不可隨意用一個阻值差不多的電阻來代替,因為振蕩電阻的阻值決定著編碼的頻率。 3.3.1.2 解碼電路設(shè)計 PT2262/2272是一種CMOS工藝制造的低功耗低價位通用編解碼電路PT2262/2272最多可有12位(A0-A11)三態(tài)地址端管腳(懸空,接高電平,接低電平),任意組合可提供531441地址碼,PT2272最多可有6位(D0-D5)數(shù)據(jù)端輸出管腳,17腳為解碼有效指示輸出,PT2272分為鎖存型輸出或非鎖存型輸出,可用于無線遙控接收電路。系統(tǒng)中的地址位只使用了A0,A1組成00,01,10,11與懸空的A2,A3,A4,A5,A6組成地址碼。副系統(tǒng)中,A0A1=00表示副系統(tǒng)2的解碼端PT2272,A0A1=01表示副系統(tǒng)2的編碼端PT2262,A0A1= 10表示副系統(tǒng)1的解碼端PT2272,A0A1=11表示副系統(tǒng)3的解碼端PT2272。這樣,在主控系統(tǒng)端通過改變A0A1的值,就可以向不同的副系統(tǒng)發(fā)送溫度設(shè)定值。 PT2272的引腳如圖3.15所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg 圖3.15 PT2272的引腳圖 PT2272特點: ● CMOS工藝制造,低功耗 ● 外部元器件少 ● Rc振蕩電阻 ● 工作電壓范圍:2.6-15v ● 數(shù)據(jù)最多達(dá)6位 ● 地址碼最多達(dá)531441種 應(yīng)用范圍: ● 車輛防盜系統(tǒng) ● 家庭防盜系統(tǒng) ● 遙 控 玩 具 ● 其他電器遙控 PT2272的管腳說明如表3.3。 表3.3 PT2272的管腳說明 名稱 | | | | | 地址管腳,用于進(jìn)行地址編碼,可置為“0”,“1”,“f”(懸空)必須與2262一致,否則不解碼 | | | 地址或數(shù)據(jù)管腳,當(dāng)做為數(shù)據(jù)管腳時,只有在地址碼與2262一致,數(shù)據(jù)管腳才能輸出與2262數(shù)據(jù)端對應(yīng)的高電平,否則輸出為低電平,鎖存型只有在接收到下一數(shù)據(jù)才能轉(zhuǎn)換 | | | | | | | | | 數(shù)據(jù)信號輸入端,來自接收模塊輸出端 | | | | | | | | | 解碼有效確認(rèn) 輸出端(常低)解碼有效變成高電平 |
編碼芯片PT2272的時序如圖3.16所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image047.jpg 圖3.16 編碼芯片PT2272的時序圖 這里a=2*時鐘周期,為“f”僅對地址碼有效,同步位的長度是4個AD位的長度,含一個1/8AD位的脈沖,見圖3.17。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image049.jpgfile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image050.giffile:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image050.gif 圖3.17 PT2272 時鐘周期與位寬關(guān)系圖 地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來表示,兩個窄脈沖表示“0”;兩個寬脈沖表示“1”;一個窄脈沖和一個寬脈沖表示“F”也就是地址碼的“懸空”。PT2272的極限參數(shù)如表3.4所示。PT2272的電氣參數(shù)如表3.5所示。 表3.4 PT2272極限參數(shù)表 參數(shù) | | | | | | | | | | | | | | | | | | | | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image051.gifC | | | | file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image052.gifC |
表3.5 PT2272的電氣參數(shù)表 從圖3.18可以明顯看到,圖上半部分是一組一組的字碼,每組字碼之間有同步碼隔開,所以我們?nèi)绻脝纹瑱C(jī)軟件解碼時,程序只要判斷出同步碼,然后對后面的字碼進(jìn)行脈沖寬度識別即可。圖下部分是放大的一組字碼:一個字碼由12位AD碼(地址碼加數(shù)據(jù)碼,比如8位地址碼加4位數(shù)據(jù)碼)組成,每個AD位用兩個脈沖來代表:兩個窄脈沖表示“0”;兩個寬脈沖表示“1”;一個窄脈沖和一個寬脈沖表示“F”也就是地址碼的“懸空”。 2262每次發(fā)射時至少發(fā)射4組字碼,2272只有在連續(xù)兩次檢測到相同的地址碼加數(shù)據(jù)碼才會把數(shù)據(jù)碼中的“1”驅(qū)動相應(yīng)的數(shù)據(jù)輸出端為高電平和驅(qū)動VT端同步為高電平。因為無線發(fā)射的特點,第一組字碼非常容易受零電平干擾,往往會產(chǎn)生誤碼,所以程序可以丟棄處理。Din和VT的波形示意圖如圖3.17所示,圖3.19則為瞬態(tài)型和鎖存型PT2272數(shù)據(jù)輸出波形示意圖。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image054.jpg 圖3.18 Din和VT的波形示意圖 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image056.jpg 圖3.19 瞬態(tài)型和鎖存型PT2272數(shù)據(jù)輸出波形示意圖 PT2272解碼芯片有不同的后綴,表示不同的功能,有L4/M4/L6/M6之分,其中L表示鎖存輸出,數(shù)據(jù)只要成功接收就能一直保持對應(yīng)的電平狀態(tài),直到下次遙控數(shù)據(jù)發(fā)生變化時改變。M表示非鎖存輸出,數(shù)據(jù)腳輸出的電平是瞬時的而且和發(fā)射端是否發(fā)射相對應(yīng),可以用于類似點動的控制。后綴的6和4表示有幾路并行的控制通道,當(dāng)采用4路并行數(shù)據(jù)時(PT2272-M4),對應(yīng)的地址編碼應(yīng)該是8位,如果采用6路的并行數(shù)據(jù)時(PT2272-M6),對應(yīng)的地址編碼應(yīng)該是6位,系統(tǒng)中采用的都是PT2272-L4。 需要注意的一點是,解碼端的地址必須和編碼端的地址一致,否則將無法解碼。這是需要特別注意的地方,也是無線收發(fā)能否成功的關(guān)鍵之一。 3.3.2發(fā)射/接收電路設(shè)計 3.3.2.1發(fā)射電路設(shè)計 發(fā)射模塊F05T的頻率有兩種433M和315M兩種型號,系統(tǒng)中選用433M,頻率穩(wěn)定度達(dá)10-5。F05T的引腳功能如圖3.20所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image058.jpg 圖3.20 F05T的引腳功能圖 1、F05T的性能參數(shù)及引腳功能如表3.6所示。 表3.6 F05T的性能參數(shù)及引腳功能 2、F05T的典型應(yīng)用電路設(shè)計如圖3.21所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image060.jpg 圖3.21 F05T典型應(yīng)用電路設(shè)計 在圖3.21 F05T典型應(yīng)用電路中,編碼器采用PT2262,振蕩電阻取3.3M效果較好,17腳無信號輸出時,F(xiàn)O5不工作.發(fā)射電流為零;當(dāng)14腳為低電平時,17腳輸出已設(shè)定的編碼脈沖對FO5進(jìn)行調(diào)制發(fā)射,通過測試F05工作電流可大致判斷F05是否處于正常發(fā)射狀態(tài),空碼時加天線時發(fā)射電流約6mA左右,調(diào)整R2可調(diào)整發(fā)射電流,R2取值小可提高發(fā)射距離,但易引起過調(diào)制甚至停振。 3、F05T的應(yīng)用說明: F05系列采用SMT工藝,樹脂封裝,聲表諧振器穩(wěn)頻,免調(diào)試,特別適合短距離無線遙控及數(shù)據(jù)傳輸。 F05T具有較寬的工作電壓范圍及低功耗特性,可以根據(jù)需要調(diào)整發(fā)射電流,當(dāng)發(fā)射電壓為3V時,發(fā)射電流約2mA。12V具有較好的發(fā)射效果,發(fā)射電流約5-8mA。F05T為OOK方式調(diào)制,需要輸入數(shù)據(jù)信號才能工作,數(shù)據(jù)信號停止,發(fā)射電流為零,但停止?fàn)顟B(tài)時必須為低電平。不合適的數(shù)據(jù)信號會引起調(diào)制效率下降,收發(fā)距離變近。當(dāng)?shù)陀?00HZ或高于10K的頻率信號發(fā)射效率會變的很差。 直流電平及模擬信號是不能發(fā)射的。如采用單片機(jī)請選用F05P或F05C,在無數(shù)據(jù)時須將單片機(jī)輸出口設(shè)為低電平狀態(tài),如在數(shù)據(jù)位前加一些亂碼可以抑制接收機(jī)的零電平燥聲干擾。若采用通用編解碼器,發(fā)射效果比單片機(jī)要好得多,因為通用編解碼器的數(shù)據(jù)無論怎么變但每一位的脈寬是不變的,即使出現(xiàn)一點干擾,解碼器的寬容性也會解碼輸出高電平。而單片機(jī)則不同了,脈寬是隨著數(shù)據(jù)變化的,過寬過窄的脈沖會引起過調(diào)制或調(diào)制不足,接收到的數(shù)據(jù)便會出現(xiàn)錯誤。所以單片機(jī)必須要工作在可靠的收發(fā)區(qū)域。 F05T有4個功能引腳,因為體積小,無天線只能滿足短距離使用,而天線對距離起著很大的作用,天線能否匹配也是很關(guān)鍵,匹配良好的天線能增加幾倍的距離,匹配不好的天線效果很差甚至?xí)痤l率漂移。天線的長度取發(fā)射頻率的1/4,可以用一根直徑0.5-1毫米,長度(433M)18厘米 (315M)24厘米的漆包線代替。但天線必須拉直,指向無所謂。短于1/4波長或彎曲的天線效果會很差。 FO5T 應(yīng)垂直安裝在印板邊部,應(yīng)離開周圍器件5mm以上,以免受分布參數(shù)影晌而停振。FO5T發(fā)射距離與輸入信號,發(fā)射電壓,電池容量,發(fā)射天線及環(huán)境有關(guān)。在障礙區(qū)由于折射反射會形成一些死區(qū)及不穩(wěn)定區(qū)域, 不同的收發(fā)環(huán)境會有不同的收發(fā)距離。 F05T調(diào)整輸入端限流電阻可調(diào)整發(fā)射電流。 3.3.2.2 接收電路設(shè)計 1、射頻接收模塊J04T的主要參數(shù)及引腳功能如表3.7所示。 表3.7J04T的主要參數(shù)及引腳功能 2、接收模塊J04T內(nèi)部結(jié)構(gòu)如3.22所示: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image062.jpg 圖3.22 接收模塊J04T內(nèi)部結(jié)構(gòu)圖 3、J04T典型應(yīng)用電路如圖3.23所示。J04T的數(shù)據(jù)輸出2腳接解碼芯片的數(shù)據(jù)輸入腳(14)。PT2272的17腳接一個發(fā)光二極管,解碼有效時,17腳輸出高電平,二極管不斷閃爍。只有當(dāng)PT2262與PT2272的地址碼相同時,PT2272才會解碼,輸出與PT2262相對應(yīng)的高電平。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image064.jpg 圖3.23 接收模塊典型應(yīng)用電路設(shè)計 4、J04T應(yīng)用說明: (1)J04T工作頻率分為315 M及433M二種,在模塊的右上角有標(biāo)記,圈內(nèi)有點為 315M。 (2)J04T性能與J04R相同,與J04V引腳完全兼容,可直接替換。為方便后級電路的電平接口增加了數(shù)據(jù)反相輸出端,無數(shù)據(jù)時2腳輸出為高電平,3腳為低電平,可輸出2mA的驅(qū)動電流。若驅(qū)動低阻抗負(fù)載會引起工作電壓的不穩(wěn)定。 (3)J04T最佳工作電壓為3---3.5V(處于最高接收靈敏區(qū)) 工作電壓范圍:2.5V-3.5V (4)J04T不適合開關(guān)電源。適合電池或線性電源,可采用3.7K電阻從5V取得 3.3V 再加 220UF電解電容濾波給J04T供電,此時J04T輸出能力可驅(qū)動一支發(fā)光二極管。如果從6V以上的電壓用電阻降壓會引起工作電壓的不穩(wěn)定。也可以從220V用電容降壓 整流濾波后用7805取得 5V再用3.7K電阻降壓濾波取得 3.3V。不適合用穩(wěn)壓管串聯(lián)分壓。接收模塊的電源直接影響到接收電路的穩(wěn)定性,也是接收電路的只要干擾源。 (5)J04T頂部鍍銀電感不要碰壓,否則會引起頻率偏移距離變近。 (6)J04T無接收數(shù)據(jù)時輸出為零電平狀態(tài),與J04T接口的器件無數(shù)據(jù)時也必須處于零電平狀態(tài)。如果是高阻抗負(fù)載可直接連接,如CMOS電路。 (7)J04T內(nèi)部具有放大整形電路,只適合數(shù)據(jù)信號的接收而不適合模擬信號。 (8)J04T引腳之間A點可根據(jù)需要接入一支470K-1M的電阻可使J04V輸出更干凈,但接收靈敏度會降低。 (9)J04T應(yīng)按裝在印板邊部并應(yīng)離開周圍器件5mm以上,要垂直于線路板,否則會引起頻率偏移。如果器件較多還必須要注意地線布局要合理,否則會引起很多無法排除的干擾致使接收電路無法正常工作。 3.4 硬件最后實施方案 根據(jù)以上分析,采用如下方案: (1)控制面板采用2*4式鍵盤;顯示部分采用4位共陽極數(shù)碼管,分時顯示溫度設(shè)定值,檢測值,簡單直觀。 (2)溫度測量部分采用“一線總線”數(shù)字溫度傳感器DS18B20,加上軟件非線性補(bǔ)償來實現(xiàn)高精度測量。 (3)驅(qū)動控制部分采用脈沖移相觸發(fā)可控硅改變電烤箱的有效功率。 (4)發(fā)射部分采用F05T,接收部分采用與F05T配套的J04T,頻率都為433M。 (5)編碼解碼部分采用PT2262/PT2272,由于其編解碼脈沖是固定不變的,所以比用單片機(jī)實現(xiàn)編解碼要好得多。且PT2262/PT2272有大量的地址碼可以選擇,可實現(xiàn)系統(tǒng)的一對多控制。 4 軟件設(shè)計 4.1 模塊化設(shè)計 (1)鍵盤控制模塊設(shè)計; K0,K1的功能分別是左移一位和右移一位;K4,K5的功能分別是加1和減1;K2,K3,K6分別是向從系統(tǒng)00,01,10發(fā)送溫度設(shè)定值的功能鍵。K7為清楚報警鳴聲且熄滅報警提示紅綠燈。溫度設(shè)定范圍為室溫——125℃,本設(shè)計中設(shè)置初始溫度值為35℃。 (2)顯示模塊設(shè)計; (3)系統(tǒng)主控模塊設(shè)計; (4)溫度采集模塊設(shè)計; (5)控制PID算法模塊設(shè)計 ,即結(jié)合硬件使系統(tǒng)的上升時間和超調(diào)量可調(diào)。 PID控制算法原理 設(shè)計原理:采用單片機(jī)作為控制器的自動控制系統(tǒng)圖6,它是由89C51單片機(jī)系統(tǒng)通過A/D電路過程變量y,并根據(jù)有關(guān)的算法控制變量u,通過PWM輸出到執(zhí)行機(jī)構(gòu),使過程變量穩(wěn)定在設(shè)定的值上。 在采樣時刻t=I×T(T為采樣周期,I為正整數(shù)),PID調(diào)節(jié)規(guī)律可以通過數(shù)值公式 Ui=Kp[ei+T/Ti(e0+e1+e2+……)+Td /T(ei-e (i-1))]+u0 近似計算,如果T取得足夠小,這種逼近可相當(dāng)準(zhǔn)確,被控過程與連續(xù)過程十分接近。 △u=Ki*e0+Kp*(e0-e1)+Kd*(e0-2*e1+e2) =Ki*(r-y0)+Kp(y1-y0)+Kd*(y2+2*y1+y0) =Ki*r-Ki*y0+Kp*y1-Kp*y0+Kd*y2-2*Kd*y1+Kd*y0 其中:Ki、Kp、Kd為PID參數(shù),y0、y1、y2為采樣值,r為設(shè)定值,△u為控制量的增量。增量型PID運算流程如圖4.0所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image066.jpg 圖4.0 增量型PID運算流程圖 4.2 并行鍵盤顯示面板驅(qū)動程序 (1)鍵盤控制面板采用2*4式鍵盤,P2.2,P2.3為行控制口,P2.4,2.5,2.6,2.7為列控制口。 ;********************************************** ;鍵盤掃描程序, ;********************************************** //--------------------------------------------------------------------- //函數(shù):鍵盤程序 //功能:實現(xiàn)Ctal_Data的加一減一功能 //入口參數(shù):無 //出口參數(shù):無 //--------------------------------------------------------------------- void keyboard() { uchar smao,i,shifter; smao=0xbf; P2=smao; for(i=0;i<3;i++) { if(P2==0xdb) /* up 鍵功能:pid參數(shù)加一*/ {Ctrl_Data[Disp_Ptr]++;} P2 = smao; if(P2==0xe7) /* left 鍵功能:顯示指針減一*/ {Disp_Ptr--; if(Disp_Ptr==0xff) Disp_Ptr=5;} if(P2==0xb7) /*reset鍵功能:停止*/ {} if(P2==0xd7) /* right 鍵功能:顯示指針加一*/ {Disp_Ptr++; if(Disp_Ptr>5) Disp_Ptr=0;} if(P2==0xeb) /* down 鍵功能:pid參數(shù)減一*/ {Ctrl_Data[Disp_Ptr]--;} if(P2==0xbb) /* run 鍵功能:開始*/ {} P2 = 0xff;
receive(); display(Disp_Ptr); /*disp()調(diào)用作為延時*/ receive(); display(Disp_Ptr); /*disp()調(diào)用作為延時*/
shifter=smao<<7; //右移一位,準(zhǔn)備顯示下一位 smao=smao>>1; smao=smao|shifter; P2=smao; } } (2)顯示子程序 ;*************************************************** ;LED顯示電路采用4位共陽極數(shù)碼管 //------------------------------------------------------------------------- //函數(shù):顯示碼轉(zhuǎn)換子程序 //功能:將Ctrl_Data[Disp_Ptr]轉(zhuǎn)化為三位BCD存入Disp_Buff[3][2][1]中 //入口參數(shù):顯示指針 Disp_Ptr //出口參數(shù):無 //------------------------------------------------------------------------- voidtras(uchar i) { uchar j = Ctrl_Data; Disp_Buff[2] = Disp_Tab[(j/100)%10];//百位 Disp_Buff[1] = Disp_Tab[(j/10)%10];//十位 Disp_Buff[0] = Disp_Tab[j%10];//個位 Disp_Buff[3] = Information;//提示信息 } //------------------------------------------------------------------------- //函數(shù):顯示子程序 //功能:顯示數(shù)組Ctrl_Data[Disp_Ptr]并加上提示信息 //入口參數(shù):顯示指針 Disp_Ptr //出口參數(shù):無 //------------------------------------------------------------------------- voiddisplay(uchar i) { uchar j; uchar begin = 0x7f,shifer; tras(i); for(j=0;j<4;j++) { P0 = Disp_Buff[j];//段選 P2 = begin; //位選 delay(100); //延時 1535 shifer=begin<<7; begin=begin>>1; begin=begin|shifer; } P0=0xff;// 關(guān)顯示 P2=0xff; } 4.3 DS18B20驅(qū)動程序————————————— /*========================================================================= 功能:實現(xiàn)對DS18B20的讀取 原理:單總線協(xié)議 注意:單總線協(xié)議對延時要求比較嚴(yán)格,此程序中采用的是11.0592M的晶振, ====================================================================================================*/ //#include"reg51.h" sbit DQ =P1^4; //定義通信端口 //延時函數(shù) /* void delay(unsigned int i) { while(i--); } */ //初始化函數(shù) Init_DS18B20(void) { unsigned char x=0; DQ = 1; //DQ復(fù)位 delay(8); //稍做延時 DQ = 0; //單片機(jī)將DQ拉低 delay(80); //精確延時 大于 480us DQ = 1; //拉高總線 delay(14); x=DQ; //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay(20); } //讀一個字節(jié) ReadOneChar(void) { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 給脈沖信號 dat>>=1; DQ = 1; // 給脈沖信號 if(DQ) dat|=0x80; delay(4); } return(dat); } //寫一個字節(jié) WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; } //delay(4); } //讀取溫度 ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); // 跳過讀序號列號的操作 WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; tt=t*0.0625; //t= tt*10+0.5; //放大10倍輸出并四舍五入---此行沒用 return(t); } main() { unsigned char i=0; while(1) { i=ReadTemperature();//讀溫度 } } 4.4 控制電路PWM驅(qū)動程序設(shè)計——————————— PWM的波形圖如圖4.1所示. file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image068.jpg 圖4.1 PWM波形 其中,T為PWM周期,T1為高電平時間,T2為低電平時間,叫做占空比。對于pwm來說占空比是一個重要參數(shù)。 1、改變占空比的4種方法: (1)定寬調(diào)頻法 這種方法是保持t1不變,只改變t2,這種使周期T(或頻率)也隨之改變。 (2)調(diào)寬調(diào)頻法 這種方法是保持t2不變,而改變t1,這種使周期(或頻率)也隨之改變。 (3)調(diào)寬調(diào)頻法 這種方法是同時改變t1,t2。這種使周期也隨之改變。 (4)定頻調(diào)寬法 這種方法是使用周期T(或頻率)保持不變,而同時改變t1和t2。前兩種方法由于在調(diào)速時改變了控制脈沖的周期,當(dāng)控制脈沖的頻率與系統(tǒng)的固有頻率接近時,就會引起振蕩,所以應(yīng)該盡量避免。 2、PWM控制信號的產(chǎn)生方法有如下四種: (1)分立元件組成的PWM信號發(fā)生器 這種方法是利用分立的電子元件組成的PWM信號電路。他是早期的方式,現(xiàn)在已經(jīng)不用了。 (2)軟件模擬法利用單片機(jī)的一個I/O引腳,通過軟件對該引腳不斷的輸出高低電平來實現(xiàn)PWM波輸出。這種方法要占用CPU的一定量時間。 (3)專用PWM集成電路 從PWM控制技術(shù)出現(xiàn)之日起,就有芯片制造商生產(chǎn)專用的PWM集成電路芯片,現(xiàn)在市場上已有許多種。這些芯片除了有信號發(fā)生功能外,還有“死區(qū)”調(diào)節(jié)功能,保護(hù)功能。在用單片機(jī)控制直流電動機(jī)中,使用專用PWM集成電路可以減輕單片機(jī)負(fù)擔(dān),工作更可靠,但價格貴。 (4)單片機(jī)的PWM口 新一代的單片機(jī)增加了許多功能,其中包括PWM功能。單片機(jī)通過初始化設(shè)置,使其能自動地發(fā)出PWM脈沖波,只有改變占空比時,CPU才進(jìn)行干預(yù),但價格比較貴。 //----------------------------------------------------------- //函數(shù):定時器0中斷 //功能:輸出pwm波形 //----------------------------------------------------------- void timer0() interrupt 1 { TH0=tim0>>8; TL0=tim0; if(Pwm_Ctrl++>Pwm_H)PWM_OUT = 1; else PWM_OUT = 0; } 4.5 數(shù)字PID子程序設(shè)計 //----------------------------------------------------------- //函數(shù):數(shù)字PID子程序 //功能:計算偏差,產(chǎn)生控制量,即PWM高電平時間 //----------------------------------------------------------- voidPID() { e2 = e1; e1 = e0; e0 = Expect_T-Actual_T; u += Ki*e0+Kp*(e0-e1)+Kd*(e0-2*e1+e2); if(u<0) u = 0; //限幅 if(u>255) u = 255; Pwm_H = u; //計算pwm高電平時間 } 4.6 程序流程圖———————————————— (1)主系統(tǒng)程序流程圖如圖4.2所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image070.jpg 圖4.2 主系統(tǒng)程序流程圖 (2)溫度報警處理子程序流程圖如圖4.3所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image072.jpg 圖4.3 溫度報警處理子程序流程圖 (3)副系統(tǒng)程序流程圖: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image074.jpg 圖4.4 從系統(tǒng)程序流程圖 5 系統(tǒng)調(diào)試 本系統(tǒng)中有軟件和硬件的協(xié)調(diào)工作。由于系統(tǒng)模塊較多且各模塊間獨立性較強(qiáng)、軟件設(shè)計靈活的特點,我們采用先設(shè)計硬件,再設(shè)計軟件;先分模塊調(diào)試,再聯(lián)起來整體調(diào)試的方法進(jìn)行調(diào)試。 5.1 調(diào)試步驟 由于硬件電路模塊比較多,結(jié)構(gòu)復(fù)雜,不可能第一步就進(jìn)行聯(lián)機(jī)調(diào)試。在進(jìn)行硬件功能調(diào)試以前,先對硬件電路調(diào)試和檢查。首先要檢查電路板,看看電路板上的線路是否有短路或者是斷路的情況,如果有則要修正它。檢測各芯片的電源連接是否正確,確保連線正確后,加上電源,看電路板上元件是否有異常反應(yīng),若有,立即斷開電源,再次進(jìn)行電路檢查,糾正錯誤。直到電路各器件在上電工作情況下無異常反應(yīng)。確保電路設(shè)計正確后,進(jìn)行分模塊調(diào)試。 系統(tǒng)調(diào)試步驟如下:(1)控制模塊與顯示模塊調(diào)試;(2)編碼/解碼模塊調(diào)試;(3)編/解碼模塊與收/發(fā)模塊聯(lián)合調(diào)試;(4)驅(qū)動電路模塊調(diào)試;(5)溫度采集模塊調(diào)試;(6)整體調(diào)試。 5.2模塊調(diào)試 5.2.1 控制模塊與顯示模塊調(diào)試 鍵盤控制模塊和顯示模塊是需要聯(lián)合調(diào)試的,不能分開來調(diào)試。鍵盤控制面板上共有8個按鍵,每個鍵有不同的功能。K0,K1的功能分別是左移一位和右移一位;K4,K5的功能分別是加1和減1;K2,K3,K6分別是向從系統(tǒng)00,01,10發(fā)送溫度設(shè)定值的功能鍵;K7為清楚報警鳴聲且熄滅報警提示紅綠燈。編寫鍵盤掃描程序和顯示子程序,按鍵盤上的按鍵,看看每個鍵是否實現(xiàn)期望的功能,若不能實現(xiàn),則修改程序重新調(diào)試。這樣反復(fù)地調(diào)試,直到各個按鍵能夠?qū)崿F(xiàn)期望的功能為止。在此模塊調(diào)試時,因為還沒涉及到向副系統(tǒng)發(fā)數(shù)據(jù),所以只能調(diào)試0號,1號,4號,5號共4個鍵,其余幾個鍵到整體調(diào)試時才調(diào)試。 5.2.2 編碼/解碼模塊調(diào)試 編碼、解碼模塊的調(diào)試主要調(diào)試它的編碼解碼是否正確,如不正確,則檢查是電路問題,還是芯片燒壞問題。調(diào)試編碼解碼電路的連接方法如圖5.1所示。把經(jīng)過PT2262編碼的數(shù)據(jù)直接接到PT2272數(shù)據(jù)輸入口,觀察PT2272的解碼有效指示燈是否閃亮,如不亮則檢查PT2262和PT2272地址是否對應(yīng),只有二者的地址完全一致時,PT2272才會解碼。解碼指示燈閃亮后,觀察如圖5.1左右兩邊點亮的發(fā)光二極管是否一致,如一致,則編碼、解碼模塊調(diào)試完畢。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image076.jpg 圖5.1 編碼/解碼模塊調(diào)試連接電路 5.2.3 編/解碼模塊與收/發(fā)模塊聯(lián)合調(diào)試 完成上面5.2.2調(diào)試后,下一步是編/解碼模塊與收/發(fā)模塊聯(lián)合調(diào)試,這一步主要是檢查發(fā)射接收模塊是否能夠正常發(fā)射或接收。在調(diào)試發(fā)射、接收模塊時,注意不要碰壓這些模塊上的金屬條,否則會使發(fā)射頻率產(chǎn)生漂移,也有可能引起發(fā)射距離變近。編、解碼模塊與接收、發(fā)射模塊聯(lián)合調(diào)試時,電路接法如圖5.2所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image078.jpg 圖5.2 編/解碼模塊與收/發(fā)模塊聯(lián)合調(diào)試連接電路 按上圖連接電路后,用示波器測量PT2262的17腳(數(shù)據(jù)輸出腳)將會看到如圖5.3所示的波形。如果發(fā)射、接收模塊正常工作,在PT2272的數(shù)據(jù)輸入端(即J04T數(shù)據(jù)輸出引腳將會看到圖5.4所示的波形。比較這兩者的波形,可以看出這部分聯(lián)合電路是正常的。再看兩邊的發(fā)光二極管的亮和暗是否一致,如一致,則表示調(diào)試成功。也有不一致的情況,這時候問題一般是二極管的接觸不好,或者損壞了,用萬用表仔細(xì)檢查即可解決問題。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image080.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image082.jpg 圖5.3 編碼輸出波形 圖5.4 解碼輸出波形 5.2.4 驅(qū)動電路模塊調(diào)試 驅(qū)動電路是溫度控制系統(tǒng)中非常重要的部分,這部分如果不能正常工作,溫度控制也就失去了意義。驅(qū)動電路模塊調(diào)試連接方法如圖5.5所示。因為這部分電路用到220V的交流電,調(diào)試時一定要注意安全,待所有的線路連接后再接上交流電源。首先利用示波器測量PWM的波形,正確的PWM波形如圖5.6所示。如果PWM無輸出,則不用再接上220V file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image084.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image086.jpg 圖5.5 驅(qū)動電路模塊線路連接圖 圖5.6 PWM波形圖 交流電,應(yīng)檢查PWM程序是否正確。待PWM輸出波形正確后接上交流電,這時,電烤箱的電源指示燈會閃亮起來,驅(qū)動電路調(diào)試完畢。 5.2.5 溫度采集模塊調(diào)試 溫度采集模塊的調(diào)試主要是軟件的調(diào)試。系統(tǒng)采用“一線總線”數(shù)字式溫度傳感器DS18B20,其硬件結(jié)構(gòu)比較簡單,總共只有三個引腳:數(shù)據(jù)、地、電源,但簡單的硬件需要復(fù)雜的軟件來支持。DS18B20的程序設(shè)計在前面已經(jīng)敘述,要注意的是,根據(jù)DS18B20的通信協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行操作。 5.3整體調(diào)試 經(jīng)過前面的調(diào)試,系統(tǒng)大部分功能已經(jīng)實現(xiàn)了。至此,需要對系統(tǒng)進(jìn)行整體調(diào)試了。整體調(diào)試最重要的還是軟件的調(diào)試,說到底就是發(fā)送接收子程序的調(diào)試。這部分程序調(diào)試的難度最大,在調(diào)試過程中常常會出現(xiàn)接收的數(shù)據(jù)與發(fā)送不一致的現(xiàn)象,或者接收到的數(shù)據(jù)全為0,這是就需要不斷修改程序。首先,在主系統(tǒng)中設(shè)定副系統(tǒng)1的地址并向其發(fā)送一些變化的數(shù)據(jù),觀察其數(shù)據(jù)輸出口的發(fā)光二極管是否發(fā)光并不斷變化,如果變化則表明主系統(tǒng)正常向副發(fā)送數(shù)據(jù)。接著,修改地址調(diào)試其余兩個副系統(tǒng)。 完成主系統(tǒng)向副系統(tǒng)發(fā)送數(shù)據(jù)調(diào)試后,接著調(diào)試副系統(tǒng)向主系統(tǒng)發(fā)送數(shù)據(jù),這部分調(diào)試比較直觀。因為副系統(tǒng)向主系統(tǒng)發(fā)送的數(shù)據(jù)能夠顯示模塊中顯示出來,輕易的看出接收到的數(shù)據(jù)是否正確。調(diào)試方法與主系統(tǒng)向副系統(tǒng)發(fā)送數(shù)據(jù)時的調(diào)試方法一樣。至此,系統(tǒng)所有的調(diào)試完畢。 整個系統(tǒng)綜合有如下幾個特點: 1、89S51單片機(jī)的采用,不僅便于數(shù)據(jù)采集,而且擴(kuò)展了各種功能,比如顯示、外部中斷等。 2、編碼解碼電路采用通用的PT2262/PT2272,編碼解碼有固定的脈沖,即使出現(xiàn)一點干擾,解碼器的寬容性也會解碼輸出高電平,非常可靠,誤碼率也很低,足以滿足系統(tǒng)設(shè)計的指標(biāo)要求。 3、“一線”數(shù)字溫度傳感器DS18B20與軟件處理相結(jié)合,進(jìn)一步提高了系統(tǒng)的測溫精度。 4、在電路的設(shè)計中充分考慮了系統(tǒng)的可靠性和安全性。經(jīng)過精心同時達(dá)到各項設(shè)計要求,動態(tài)性能也達(dá)到較高指標(biāo) 6 系統(tǒng)性能指標(biāo)測試 6.1誤碼率測試 6.1.1誤碼儀測試原理 誤碼儀由發(fā)端模塊和收端模塊兩部分組成。發(fā)端模塊產(chǎn)生連續(xù)或者突發(fā)的比特流,作為通信系統(tǒng)的信源數(shù)據(jù);收端模塊接收通信系統(tǒng)輸出的比特流,并將其與本地產(chǎn)生的、與發(fā)端形式相同的比特流進(jìn)行比較,從而完成誤碼測試。從邏輯上看,誤碼儀的工作過程大致可以分成以下幾個步驟: (1)發(fā)端模塊產(chǎn)生原始數(shù)據(jù),并使其通過被測通信系統(tǒng)構(gòu)成的信道; (2)收端模塊產(chǎn)生與發(fā)端相同碼型、相同相位的數(shù)據(jù)流; (3)將收到的數(shù)據(jù)流與收端產(chǎn)生的本地數(shù)據(jù)流逐比特地比較,并進(jìn)行誤碼統(tǒng)計; (4)根據(jù)誤碼統(tǒng)計結(jié)果,計算出相應(yīng)的誤碼率,并輸出誤碼指示。 6.1.2 誤碼率測試 誤碼率Pe: 二進(jìn)制數(shù)據(jù)位傳輸時出錯的概率。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image088.gif 誤碼儀測試原理如圖6.1所示。只要對兩個序列逐位比較,就可以進(jìn)行誤碼統(tǒng)計了。在誤碼測試邏輯中,接收到的總比特數(shù)與誤碼個數(shù)均以二進(jìn)制方式存儲在內(nèi)部的邏輯向量中。它們最高非0比特所處的位置之差實際上反映了誤碼率的指標(biāo)不,只要根據(jù)這個差值就可以大致估計出誤碼率,本系統(tǒng)的誤碼率≤10-6。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image090.jpg 圖 6.1 誤碼儀測試原理圖 6.2 發(fā)射/接收頻率測試 在前面說過,發(fā)射接收模塊期望頻率都為433M,但由于制作過程存在誤差,實際應(yīng)用中的頻率不一定為433M,現(xiàn)做了如圖6.2所示的測試。經(jīng)過測試,系統(tǒng)的發(fā)射、接收頻率都約為430M,與期望的433M基本接近。注意,因為頻率比較高,用一般的低頻示波器是無法測出頻率來的,圖6.2只是一個測試示意圖,實際測試中發(fā)射、接收模塊頻率測試是不共地的。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image092.jpg 圖6.2 發(fā)射、接收模塊測試示意圖 6.3 數(shù)據(jù)傳輸速率測試 (1)數(shù)據(jù)傳輸速率是 指通信線上傳輸信息的速度。有兩種表示方法,即信號速率和調(diào)制速率。①信號速率S:指單位時間內(nèi)所傳送的二制位代碼的有效位數(shù),以每秒多少比特數(shù)計,即bit/s、b/p、位/秒。信號速率的高低,由每位所占的時間決定,若一位數(shù)據(jù)所占的時間越小,則信號速率越高。設(shè)T為傳輸?shù)碾娒}沖信號的寬度或周期,N為電脈沖信號所有可能的狀態(tài)數(shù),則信號速率為S=1/T×log2N(bps)。② 調(diào)制速率B:是脈沖信號經(jīng)過調(diào)制后的傳輸速率,以波特(BAUD)為單位,通常用于表示調(diào)制器之間傳輸信號的速率。表示每分鐘傳送多少電信號單元,若T(秒)表示調(diào)制周期,則調(diào)制速率為:B=1/T 。 (2)利用高頻示波器觀察編碼輸出(發(fā)射模塊輸入)和解碼模塊輸入(接收模塊輸出)的波形,記錄波形的周期,并通過計算,得到發(fā)射接收速率都約為1200bit/s。 7 操作說明: file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image094.jpg KEY0,KEY1的功能分別是左移一位和右移一位;KEY4,KEY5的功能分別是加1和減1;KEY2,KEY3,KEY6分別是向從系統(tǒng)00,01,10發(fā)送溫度設(shè)定值的功能鍵。K7為清楚報警鳴聲且熄滅報警提示紅綠燈。溫度傳感器的測溫范圍在-55度——125度,而實際上低于室內(nèi)的溫度在調(diào)試環(huán)境下是不存在的,所以鍵盤控制輸入應(yīng)在室內(nèi)溫度(大約25℃)到125℃之間。鍵盤設(shè)定值設(shè)定并在數(shù)碼管上顯示后,選擇要控制的從系統(tǒng),按2號鍵向從系統(tǒng)00發(fā)送溫度設(shè)定值,按3號鍵向從系統(tǒng)01發(fā)送溫度設(shè)定值,按6號鍵向從系統(tǒng)10發(fā)送溫度設(shè)定值,對各從系統(tǒng)進(jìn)行分時控制。從系統(tǒng)收到設(shè)定值后對電烤箱的溫度進(jìn)行控制,并把實際檢測到的溫度值送主控系統(tǒng),并顯示出來。7號鍵用于清除失控報警鳴聲,同時熄滅報警指示燈。 經(jīng)過幾天的連續(xù)反復(fù)測定并校準(zhǔn),在設(shè)定范圍內(nèi)都能達(dá)到指標(biāo)的要求,可控,誤差不是太大,但是因為溫度信號的檢測滯后使得無論是電烤箱內(nèi)的溫度還是經(jīng)過溫度傳感器DS18B20測量,單片機(jī)計算控制顯示的數(shù)值總是有一定的滯后和超調(diào),但是最后都能穩(wěn)定在設(shè)定的溫度值左右,不會超過誤差范圍,也就意味著該畢業(yè)設(shè)計的制作達(dá)到了設(shè)計的要求——可控,可調(diào)。 主系統(tǒng)的單片機(jī)是一個可直接在線燒寫程序的系統(tǒng),左邊6個插腳用于連接計算機(jī)在線燒寫程序。三腳開關(guān)撥向右邊時只能燒寫程序,不能執(zhí)行任何控制操作。撥向左邊時單片機(jī)開始執(zhí)行操作,此時如果要進(jìn)行燒寫程序,則系統(tǒng)拒絕燒寫。 8 總結(jié) 8.1技術(shù)優(yōu)點與缺點 8.1.1技術(shù)優(yōu)點 系統(tǒng)采用的技術(shù)有如下的優(yōu)點: (1)利用無線電進(jìn)行遠(yuǎn)程雙工通信,靈活、方便,而且比較經(jīng)濟(jì);(2)利用AT89S51單片機(jī)的軟件編程來實現(xiàn)大量硬件的功能,減少元件使用,減少許多干擾因素,從而增加了測量的精度;(3)采用通用編解碼器PT2262/PT2272,發(fā)射效果比單片機(jī)編碼解碼好得多,因為通用編解碼器的數(shù)據(jù)無論怎么變但每一位的脈寬是不變的,即使出現(xiàn)一點干擾,解碼器的寬容性也會解碼輸出高電平;(4)溫度采集部分采用“一線總線”數(shù)字化溫度傳感器DS18B20,測量精度可達(dá)到±0.5℃;(5)系統(tǒng)是“一對多點”控制,控制效率大大提高。 8.1.2技術(shù)缺點 采用無線電進(jìn)行遠(yuǎn)程溫度控制有氣球優(yōu)點但同時也存在著下面的缺點: (1)系統(tǒng)無線電通信距離短,不適合超遠(yuǎn)距離的信號傳輸;(2)無線電通信距離受樓房等障礙物的影響。 所以,采用一種技術(shù)時必須充分考慮它的優(yōu)點和缺點才能更好地掌握和利用它。 8.2 提高測量精度的幾項措施 1、制作電路板時注意元件布局,線與線之間的距離,盡可能減少外來的干擾 2、減少干擾源,提高測量精度; 3、通過軟件提高溫度的測量精度; 4、用單片機(jī)進(jìn)行數(shù)據(jù)存儲和運算處理,很容易實現(xiàn)溫度自動補(bǔ)償、斜率自動校正、多次測量平均等技術(shù)。 8.3問題及解決方法 1、系統(tǒng)整體調(diào)試過程中,最難以調(diào)試的是無線電發(fā)射接收部分。無線發(fā)射接收部分,頻率高,容易受到干擾。在調(diào)試時,為了下載程序方便,把系統(tǒng)放在電腦旁邊,但無論怎么調(diào)試,原來能夠解碼的子系統(tǒng)統(tǒng)統(tǒng)無法解碼,忙了一天也毫無結(jié)果。后來無意中把系統(tǒng)板拿到遠(yuǎn)離電腦的桌子上,接收部分解碼馬上有效了。所以調(diào)試時應(yīng)該遠(yuǎn)離干擾源。 2、在面包板上調(diào)試編碼解碼電路時,出現(xiàn)了解碼有效,但輸入數(shù)據(jù)跟輸出數(shù)據(jù)始終不能一致。在這種情況下,一般都會懷疑解碼電路有問題,或者解碼芯片壞了,或者編碼解碼地址設(shè)置不一致。仔細(xì)檢查后還是沒有解決問題,找同學(xué),找老師幫忙都毫無進(jìn)展。在化了大量的時間和精力后才發(fā)現(xiàn),編碼電路只有在連續(xù)兩次檢查到與編碼電路相同的地址后才會解出與輸入端相同的數(shù)據(jù)。所謂編碼解碼電路地址一致并不僅僅是檢查到系統(tǒng)的地址就可以了,而必須是連續(xù)兩次檢查到相同的地址,否則系統(tǒng)解碼后的數(shù)據(jù)將與輸入的數(shù)據(jù)不一致。在面包板上調(diào)試時,由于不是利用單片機(jī)或按鍵連續(xù)發(fā)數(shù)據(jù),當(dāng)然就會造成輸入與輸出不一致了,也就會出現(xiàn)亂碼。 3、在安裝元件的時候,要特別注意三極管的安裝。同一種型號不同廠家的三極管的極性也有可能不一樣,安裝的時候不注意,在調(diào)試時就難以發(fā)現(xiàn)問題所在了。當(dāng)發(fā)現(xiàn)問題所在時,還得把三極管拆下重新安裝。這樣,電路板往往會被弄得面目全非。 4、系統(tǒng)設(shè)計的是一對多控制,電源插腳比較多,供電時很容易出現(xiàn)把電源正負(fù)極插反以至燒了芯片。解決問題的最好辦法是用墨筆在板上標(biāo)明電源的正負(fù)極,每個電源用固定的接線。 5、由于系統(tǒng)應(yīng)用了高頻電路,設(shè)計電路時應(yīng)該在電源旁邊放置適當(dāng)值的電容,以減少電源對系統(tǒng)的干擾,數(shù)據(jù)輸入輸出的波形也會比較“干凈”。總之,要設(shè)計出一個性能良好的控制系統(tǒng)需要注意許多問題,在硬件設(shè)計的時候為減少外干擾應(yīng)加入濾波。 8.4 整體測試結(jié)論 (1)發(fā)射、接收頻率均約為433M;頻率穩(wěn)定度:10-5;發(fā)射電流:0.2-10mA 發(fā)射功率:10mW。 (2)編碼、解碼效果如圖8.1,8.2所示; 單片機(jī)輸出的并行數(shù)據(jù)經(jīng)過編碼電路編碼后的串行數(shù)據(jù)波形如圖8.1所示。編碼后的數(shù)據(jù)輸入到發(fā)射模塊進(jìn)行調(diào)制發(fā)射,副系統(tǒng)接收數(shù)據(jù)并解碼后的波形如圖8.2所示。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image095.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image096.jpg 圖8.1 編碼輸出波形 圖8.2 解碼輸出波形 從上面兩個圖可以看出,采用PT2262和PT2272進(jìn)行編碼、解碼效果很好。 (3)溫度采樣誤差:≤±0.5℃; 溫度設(shè)定值和采樣值以及實際值的比較如表8.1所示。表中,實際溫度值是指用溫度計測量到的值,采樣最大值是指從副系統(tǒng)返回主系統(tǒng)的溫度檢測最大值。 表8.1 溫度設(shè)定值和采樣值以及實際值的比較 從以上的數(shù)據(jù)可以知道各段的數(shù)據(jù)沒有超過要求的2.5%,達(dá)到了很好的效果。 (4)溫度調(diào)節(jié)時間:ts<4min; (5)數(shù)據(jù)傳輸速率:<10kbps; (6)發(fā)射距離:約400米; (7)誤碼率:≤10-6。
謝 辭
歲月匆匆,愉快、充實而又短暫的大學(xué)四年生活隨著畢業(yè)設(shè)計的完成而將圓滿結(jié)束。畢業(yè)設(shè)計是對大學(xué)四年所學(xué)專業(yè)知識的鞏固和深化,理論知識和實際操作相結(jié)合,學(xué)以致用,使我們學(xué)會了提出問題,分析問題,解決問題的能力。這對我們以后的工作和人生將產(chǎn)生深遠(yuǎn)的影響。在此,感謝母校無私的培養(yǎng),特別感謝我的導(dǎo)師龍超老師在整個畢業(yè)設(shè)計過程中的諄諄教導(dǎo),耐心指導(dǎo)。同時也感謝系其他老師和系領(lǐng)導(dǎo)為我們做畢業(yè)設(shè)計提供的幫助。在未來人生的工作崗位上,我將用在母校里學(xué)會的學(xué)習(xí)思維方法和做人的行為準(zhǔn)則來嚴(yán)格要求自己,為母校爭光。謝謝!
參考文獻(xiàn): [1] 于海生,潘松峰,于培仁等.微型計算機(jī)控制技術(shù)[M].北京:清華大學(xué)出版社,1999.3 [2] 徐 煒,姜 暉,崔 琛.通信電子技術(shù)[M] 西安:西安電子科技大學(xué)出版社,2003.8 [3] 朱定華. 微機(jī)原理與接口技術(shù)[M] 北京:清華大學(xué)出版社 北方交通大學(xué)出版社,2002.6 [4] 李斯偉,雷新生.數(shù)據(jù)通信技術(shù)[M] 北京:人民郵電出版社,2004.2 [5] 揚振江,蔡德芳.新型集成電路使用指南與典型應(yīng)用[M] 西安:西安電子科技大學(xué)出版社 2004.7 [6] 潘新民 ,王燕芳等. 微型計算機(jī)控制技術(shù)[M]北京:高等教育出版社, 2001.7 [7] 謝自美. 電子線路設(shè)計.實驗.測試[M] 武漢:華中科技大學(xué)出版社,2000.7 [8] 梁廷貴.遙控電路 可控硅觸發(fā)電路 語音電路分冊[M] 北京:科學(xué)技術(shù)文獻(xiàn)出版社,2002.2 [9] 吳金戊,沈慶陽,郭庭吉.8051單片機(jī)實踐與應(yīng)用[M],北京:清華大學(xué)出版社,2002.9 [10] 黃賢武,鄭筱霞.傳感器原理及其應(yīng)用[M] 成都:電子科技大學(xué)出版社, 2002.7 [11] 張積東.單片機(jī)51/98開發(fā)與應(yīng)用[M],北京:北京電子工業(yè)出版社, 1994.01 [12] Control SystemsTheory with Engineering Applications[M] Boston.Basel.berlin 2001 [13] Linear Control System Analysis and Design[M] John J.D’azzo Constantine H.Houpis 2002.6
附 錄:
附錄(一):所需主要儀器設(shè)備: (1)微機(jī)一臺; (2)示波器; (3)萬用表; (4)直流穩(wěn)壓電源; (5)單片機(jī)開發(fā)系統(tǒng)一套。 附錄(二):電路原理圖及PCB 圖
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image098.jpg 圖1 主系統(tǒng)部分原理圖 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image100.jpg 圖2 副系統(tǒng)部分原理圖 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image102.jpg file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image104.jpg 圖3 副系統(tǒng)PCB圖 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image106.jpg 圖4 副系統(tǒng)PCB圖 附錄(三):系統(tǒng)源程序 (1)主系統(tǒng)部分程序(部分) ;*********************************************; ;*****************主系統(tǒng)程序******************; ;*********************************************; TEMJ EQU 50H ;溫度檢測值存放單元 TEMS EQU 51H ;溫度設(shè)定值存放單元 ORG 0000H ; LJMP MAIN ;**********************************************主系統(tǒng)主程序 MAIN: MOV 51H,#25 MAIN1:NOP LCALL KEYB LCALL BCD LCALL DISP LCALL DISP LCALL DISP LCALL DISP LCALL DISP LCALL DISP LCALL DISP LJMP MAIN1
;---------------------------------------------- ;鍵盤掃描程序,P2.2,P2.3為行控制口, ;P2.4,2.5,2.6,2.7為列控制口 ;---------------------------------------------- KEYB: MOV P2,#0F4H JB P2.4,PROM0 MOV A,#10 ADD A,51H MOV 51H,A PROM0:JB P2.5,PROM1 INC 51H PROM1:JB P2.6,PROM2 LCALL SEND1 PROM2:JB P2.7,PROM3 LCALL SEND2 PROM3:MOV P2,#0F8H JB P2.4,PROM4 MOV A,51H CLR C SUBB A,#10 MOV 51H,A PROM4:JB P2.5,PROM5 DEC 51H PROM5:JB P2.6,PROM6 LCALL SEND3 PROM6:JB P2.7,PROM7 CLR P3.0 ;清除報警音樂 CLR P3.6 ;清下限報警綠燈 CLR P3.7 ;清上限報警紅燈 PROM7:RET ; ;、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 ;------------------------------ D100MS: MOV R7,#0FFH LOOP0:MOV R6,#0FFH LOOP1:MOV R5,#0FH LOOP2:NOP NOP DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP0 RET ;-------------------------------
;**********************************************顯示子程序 DISP: MOV A,40H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV P2,#0DFH ACALL DL1MS MOV A,41H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV P2,#0BFH ACALL DL1MS MOV A,42H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV P2,#7FH ACALL DL1MS MOV A,43H MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A MOV P2,#0EFH ACALL DL1MS RET
;----------------------------- ;顯示10ms子程序 ;----------------------------- DL1MS:MOV R7,#0FFH DL0: MOV R6,#0FH DL1: DJNZ R6,DL1 DJNZ R7,DL0 RET
;------------------------------------------------------------- BCD: MOV A,51H MOV B,#100 DIV AB MOV 40H,A ;(50H)/100送40H,百位 MOV A,B MOV B,#10 DIV AB MOV 41H,A ;(50H)%100/10送41H,十位 MOV 42H,B ;(50H)%10送4242H,個位 MOV 43H,#00H ;末位置0(未用) RET ;--------------------------------------------------------------
;------------------------------------------------- TAB: DB 28H ;0 DB 0EEH ;1 DB 32H ;2 DB 0A2H ;3 DB 0E4H ;4 DB 0A1H ;5 DB 21H ;6 DB 0EAH ;7 DB 20H ;8 DB 0A0H ;9 ;------------------------------------------------- END (2)副系統(tǒng)程序(部分) //======================================================================== //副系統(tǒng)接收發(fā)送程序 //======================================================================== #include<reg51.H> #defineuchar unsigned char #defineuint unsigned int sbitadd1 = P3^6; sbitadd2 = P3^7; //接收數(shù)據(jù) P0.0-P0.3 sbitR_ENABLE = P0^6; //解碼有效 sbitDTAT_R_PTR = P0^4; //接收數(shù)據(jù)高低位指示 //發(fā)送數(shù)據(jù) P2.1-P2.4 sbitT_ENABLE = P2^0; //編碼啟動 sbitDTAT_T_PTR = P2^5; //發(fā)送數(shù)據(jù)高低位 bitHIGH,LOW; ucharth,tl; ucharExpect_T,Actual_T; //------------------------------------------------------------------------- //長(16位)延時子程序 //------------------------------------------------------------------------- voiddelay(uint i){ uint j; for(j=0;j<i;j++); } //----------------------------------------------------------- //函數(shù):發(fā)送子程序 //功能:發(fā)送當(dāng)前溫度 //----------------------------------------------------------- voidtransmit() { uchar i;
th = Actual_T&0xf0;th = th>>3;th =th|0x20; tl = Actual_T&0x0f;tl = tl<<1; for(i=0;i<=3;i++) { P2 = th; delay(1500); T_ENABLE = 1; delay(1500); } for(i=0;i<=3;i++) { P2 = tl; delay(1500); T_ENABLE = 1; delay(1500); } } //******************************************** //主程序 //******************************************** voidmain() { Actual_T = 123; while(1) { transmit(); } }
|