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