




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、畢 業(yè) 論 文論文題目: 水溫控制系統(tǒng)題 目 基于PLC的水溫模糊控制班 級 專 業(yè) 學(xué)生姓名 指導(dǎo)教師 日 期 2011 年 06 月 19 日基于的水溫模糊控制摘要了實現(xiàn)高精度的水溫控制,本文介紹了一種以SPCE061A單片機為控制核心、以PID算法控制以及PID參數(shù)整定相結(jié)合的控制方法來實現(xiàn)的水溫控制系統(tǒng)。文章著重介紹核心器件的選擇、控制算法的確定、各部份電路及軟件的設(shè)計。SPCE061A單片機完善的內(nèi)部結(jié)構(gòu)、優(yōu)良的性能和強大的中斷處理能力,決定了該控制系統(tǒng)的特點:電路結(jié)構(gòu)簡單、程序簡短、系統(tǒng)可靠性高等。本次設(shè)計還充分利用了SPCE061A單片機成熟的語音處理技術(shù)和PC機的圖形處理功能,
2、來實現(xiàn)了語音播報溫度和打印溫度變化曲線的要求為。關(guān)鍵詞:SPCE061A單片機;Pt1000;PID目錄第一章 前言1第二章系統(tǒng)方案22.1水溫控制系統(tǒng)設(shè)計任務(wù)和要求22.2水溫控制系統(tǒng)關(guān)鍵部分確定2第三章系統(tǒng)硬件設(shè)計63.1總體設(shè)計框圖及說明63.2部分外部電路設(shè)計7第四章系統(tǒng)軟件設(shè)計134.1程序結(jié)構(gòu)說明134.2程序流程圖及部分程序14第五章 系統(tǒng)測試31結(jié)論33參 考 文 獻33致謝35第 36 頁 共 40 頁第一章 前言自70年代以來,由于工業(yè)過程控制的需要,特別是在電子技術(shù)的迅猛發(fā)展,以及自動控制理論和設(shè)計方法發(fā)展的推動下,國外溫度控制系統(tǒng)發(fā)展迅速,并在智能化自適應(yīng)參數(shù)自整定等方
3、面取得成果。在這方面以日本、美國、德國、瑞典等國技術(shù)領(lǐng)先,并且都生產(chǎn)出了一批商品化的性能優(yōu)異的溫度控制器及儀器儀表,在各行業(yè)廣泛應(yīng)用。 目前,國外溫度控制系統(tǒng)及儀表正朝著高精度智能化、小型化等方面快速發(fā)展。 溫度控制系統(tǒng)在國內(nèi)各行各業(yè)的應(yīng)用雖然已經(jīng)十分廣泛,但從國內(nèi)生產(chǎn)的溫度控制器來講,總體發(fā)展水平仍然不高,同國外的日本、美國、德國等先進國家相比,仍然有著較大的差距。目前,我國在這方面總體技術(shù)水平處于20世紀80年代中后期水平。成熟產(chǎn)品主要以“點位”控制及常規(guī)的PID控制器為主,它只能適應(yīng)一般溫度系統(tǒng)控制,難于控制滯后復(fù)雜時變溫度系統(tǒng)控制,而且適應(yīng)于較高控制場合的智能化、自適應(yīng)控制儀表國內(nèi)技術(shù)
4、還不十分成熟,形成商品化并廣泛應(yīng)用的控制儀表較少。現(xiàn)在,我國在溫度等控制儀表業(yè)與國外還有著一定的差距。溫度、壓力,流量和液位是四種最常見的過程變量,其中溫度是一個非常重要的過程變量,因為它直接影響燃燒、化學(xué)反應(yīng)、發(fā)酵、烘烤、煅燒、蒸餾、濃度、擠壓成形,結(jié)晶以及空氣流動等物理和化學(xué)過程。溫度控制在工業(yè)領(lǐng)域應(yīng)用非常廣泛,由于其具有工況復(fù)雜、參數(shù)多變、運行慣性大、控制滯后等特點,它對控制調(diào)節(jié)器要求較高。溫度控制不好就可能引起生產(chǎn)安全,產(chǎn)品質(zhì)量和產(chǎn)量等一系列問題。盡管溫度控制很重要,但是要控制好溫度常常會遇到意想不到的困難。本文主要介紹單片機溫度控制系統(tǒng)的軟件設(shè)計過程,其中涉及系統(tǒng)結(jié)構(gòu)設(shè)計、元器件的選
5、取和控制算法的選擇、程序的調(diào)試和系統(tǒng)參數(shù)的整定。在系統(tǒng)構(gòu)建時選取了凌陽科技公司提供的一款新產(chǎn)品SPCE061A芯片作為該控制系統(tǒng)的核心。溫度信號由PT1000和電壓放大電路提供。通過PID算法實現(xiàn)對電爐功率和水溫控制。使用SSR固態(tài)繼電器作執(zhí)行部件。同時,具有溫度數(shù)字語音播報和顯示啊功能。 系統(tǒng)控制對象為1升凈水,容器為搪瓷器皿。水溫可以在一定范圍內(nèi)由人工設(shè)定,并能在環(huán)境溫度降低時實現(xiàn)自動控制,以保持設(shè)定的溫度基本不變,具有較好的快速性與較小的超調(diào)。該系統(tǒng)為一實驗系統(tǒng),要求系統(tǒng)有控制能力,實現(xiàn)對主要可變參數(shù)的實時監(jiān)控。因此系統(tǒng)控制部分程序設(shè)計在µnSPTM集成開發(fā)環(huán)境中編輯
6、、編譯、鏈接、調(diào)試以及仿真的。使用軟件編程既減少了系統(tǒng)設(shè)計的工作量,又提高了系統(tǒng)開發(fā)的速度,使用軟件還可以提高所設(shè)計系統(tǒng)的穩(wěn)定性,避免了因個人設(shè)計經(jīng)驗不足而產(chǎn)生過多的系統(tǒng)缺陷。第二章系統(tǒng)方案2.1水溫控制系統(tǒng)設(shè)計任務(wù)和要求該系統(tǒng)為一實驗系統(tǒng),系統(tǒng)設(shè)計任務(wù):設(shè)計一個水溫自動控制系統(tǒng),控制對象為1升凈水,容器為搪瓷器皿。水溫可以在一定范圍內(nèi)由人工設(shè)定,并能在環(huán)境溫度降低時實現(xiàn)自動調(diào)整,以保持設(shè)定的溫度基本不變。系統(tǒng)設(shè)計具體要求: 溫度設(shè)定范圍為4090。 環(huán)境溫度降低時(例如用電風(fēng)扇降溫)溫度控制的靜態(tài)誤差1。采用適當(dāng)?shù)目刂品椒?,?dāng)設(shè)定溫度突變(由40提高到60)時,減小系統(tǒng)的調(diào)節(jié)時間和超調(diào)量。用
7、十進制數(shù)碼管顯示水的實際溫度。 在設(shè)定溫度發(fā)生突變(由40提高到60)時,自動打印水溫隨時間變化的曲線。2.2水溫控制系統(tǒng)關(guān)鍵部分確定水溫控制系統(tǒng)是一個過程控制系統(tǒng),在設(shè)計的過程中,必須明確它的組成部分。過程控制系統(tǒng)的組成部分有:控制器、執(zhí)行器、被控對象和測量變送單元,其框圖如圖1所示。圖1 過程控制組成框圖由圖可知,在這個系統(tǒng)的設(shè)計中,主要設(shè)計如圖幾個部分。除此之外,根據(jù)題目要求,還要選取合適的控制算法來達到系統(tǒng)參數(shù)的要求。對于執(zhí)行器件、測量變送元件將在部分電路設(shè)計中有說明。在這個部分我主要是對控制器的確定和控制算法的選擇作一個詳細的介紹。因為這兩部分是實現(xiàn)本系統(tǒng)控制目的的關(guān)鍵。它們選取的好
8、壞將直接影響著整個系統(tǒng)實現(xiàn)效果的優(yōu)劣,所以這是一項不容怱視的工作。2.2.1 CPU(Computer processing Unit)中央處理器 方案一:此方案采用SPCE061A單片機實現(xiàn)。SPCE061A單片機除具有體積小,集成度高、易擴展、可靠性高、功耗低、結(jié)構(gòu)簡單、中斷處理能力強等特點外,內(nèi)置8路ADC,2路DAC。在實現(xiàn)控制系統(tǒng)中,采用SPCE061A為前端采集單元,具有較好的同步性和實時性。且內(nèi)嵌32K字閃存FLASH,處理速度高,集成開發(fā)環(huán)境中,配有很多語音播報函數(shù),實現(xiàn)語音播報極為方便。另外,比較方便的是該芯片內(nèi)置在線仿真、編程接口,可以方便實現(xiàn)在線調(diào)試,這大大加快了系統(tǒng)的開
9、發(fā)與調(diào)試。 方案二:此方案采用89C51單片機實現(xiàn),此單片機軟件編程自由度大,可用編程實現(xiàn)各種控制算法和邏輯控制。但在數(shù)據(jù)采集時必須使用A/D(數(shù)/模轉(zhuǎn)換),且在選擇A/D時需考慮3個方面的內(nèi)容:一是如何針對系統(tǒng)的需求,選擇合適的A/D器件;二是如何根據(jù)所選的A/D器件設(shè)計外圍電路與單片機的接口電路;三是編寫控制A/D器件進行數(shù)據(jù)采集的單片機程序,這些大大加大了工作量。若要增加語音播報功能,還需要外接語音芯片及接口,加繁了外圍電路設(shè)備,大大增加了軟件實現(xiàn)難度。此外51單片機內(nèi)部無在線仿真、編程接口,就需要用仿真器來實現(xiàn)軟硬件調(diào)試,較為繁瑣。將兩個方案一比較便可得出一個結(jié)論,采用凌陽單片機來實現(xiàn)
10、本題目,不管是從結(jié)構(gòu)上,還是從工作量上都占有很大的優(yōu)勢,所以最后決定用SPCE061A作為該控制系統(tǒng)的核心。2.2.2常用溫度控制系統(tǒng)分析溫度是一個普通而又重要的物理量,在許多領(lǐng)域里人們需對溫度進行測量和控制。長期以來國內(nèi)外科技工作者對溫度控制器進行了廣泛深入的研究,產(chǎn)生了大批溫度控制器,如性能成熟應(yīng)用廣泛的PID調(diào)節(jié)器、智能控制PID調(diào)節(jié)器、自適應(yīng)控制等。此處主要對一些控制器特性進行分析以便選擇適合的控制方法應(yīng)用于改造。 常規(guī)PIDPID在溫度控制中已使用數(shù)十年,是一種成熟的技術(shù),它具有結(jié)構(gòu)簡單、易于理解和實現(xiàn),且一些高級控制都是以PID為基礎(chǔ)改進的。在工業(yè)過程控制中90%以上的控制系統(tǒng)回路
11、具有PID結(jié)構(gòu),在目前的溫度控制領(lǐng)域應(yīng)用十分廣泛,即使在科技發(fā)達的日本,PID在其溫度控制應(yīng)用中仍然占80%的比例。其主要構(gòu)成如圖2所。由圖可知PID調(diào)節(jié)器是一種線性調(diào)節(jié)器,這種調(diào)節(jié)器是將設(shè)定值w與實際輸出值y進行比較構(gòu)成偏差圖2 模擬PID控制并將其比例、積分、微分通過線性組合構(gòu)成控制量。其動態(tài)方程為: (1)其中-為調(diào)節(jié)器的比例放大系數(shù)-為積分時間常數(shù)-為微分時間常數(shù)PID調(diào)節(jié)器的離散化表達式為其增量表達形式為: 其中T為采樣周期。可見溫度PID調(diào)節(jié)器有三個可設(shè)定參數(shù),即比例放大系數(shù)、積分時間常數(shù)、微分時間常數(shù)。比例調(diào)節(jié)的作用是使調(diào)節(jié)過程趨于穩(wěn)定,但會產(chǎn)生穩(wěn)態(tài)誤差;積分作用可消除被調(diào)量的穩(wěn)
12、態(tài)誤差,但可能會使系統(tǒng)振蕩甚至使系統(tǒng)不穩(wěn)定;微分作用能有效的減小動態(tài)偏差。在實際使用中,在滿足生產(chǎn)過程需要的前提下,應(yīng)盡量選擇簡單的調(diào)節(jié)器,這樣,既節(jié)省投資,又便于維護. 常規(guī)PID控制調(diào)節(jié)器是一種應(yīng)用廣泛技術(shù)成熟的控制方法,它能滿足一般工業(yè)控制的要求,其優(yōu)點是原理簡單、使用方便、適應(yīng)性廣。采用PID控制,控制效果的好壞很大程度上取決于PID三個控制參數(shù)的確定。對一個控制系統(tǒng)而言, 只要參數(shù)選擇適當(dāng),都能取得較好的控制效果。 自動控制方式為了實現(xiàn)溫度的自動控制,必須要組成一定的系統(tǒng)結(jié)構(gòu)。如圖3,該控制系統(tǒng)是把輸出量檢測出來,經(jīng)過物理量的轉(zhuǎn)換,再反饋到輸入端去與給定量進行比較(綜合),并利用控制
13、器形成的控制信號通過執(zhí)行機構(gòu)SSR對控制對象進行控制,抑制內(nèi)部或外部擾動對輸出量的影響,減小輸出量的誤差,達到控制目的。在此控制系統(tǒng)中單片機就相當(dāng)于常規(guī)控制系統(tǒng)中的運算器控制器,它對過程變量的實測值和設(shè)定位之間的誤差信號進行運算然后給出控制信息。單片機的運算規(guī)則稱為控制法則或控制算法。圖3 自動控制框圖常用的控制算法有以下幾種 經(jīng)典的比例積分微分控制算法。 根據(jù)動態(tài)系統(tǒng)的優(yōu)化理論得到的自適應(yīng)控制和最優(yōu)控制方法。 根據(jù)模糊集合理論得到模糊控制算法。自適應(yīng)控制、最優(yōu)控制方法以及模糊控制算法是建立在精確的數(shù)學(xué)模型基礎(chǔ)上的,在實時過程控制中,由于控制對象的精確數(shù)學(xué)模型難于建立,系統(tǒng)參數(shù)經(jīng)常發(fā)生變化,運
14、用控制理論進行綜合分析要花很大代價,主要是時間。同時由于所得到的數(shù)學(xué)模型過于復(fù)雜難于實現(xiàn)。在實時控制系統(tǒng)中要求信號的控制信號的給出要及時,所以在目前的過程控制系統(tǒng)中較少采用自適應(yīng)控制、最優(yōu)控制方法和模糊控制算法。目前在過程控制中應(yīng)用較多的還是PI控制算法、PD控制算法和PID控制算法。第三章系統(tǒng)硬件設(shè)計3.1總體設(shè)計框圖及說明本系統(tǒng)是一個簡單的單回路控制系統(tǒng)。為了實現(xiàn)溫度的自動測量和控制,本系統(tǒng)采用了SPCE061A單片機作為系統(tǒng)的控制中心,由數(shù)據(jù)采集模塊檢測到的溫度信號傳入單片機,并根據(jù)接收到的數(shù)據(jù)進行處理和控制運算,同時將數(shù)據(jù)保存,以便與下一次采樣值進行比較,通過軟件對所測電壓進行數(shù)字非線
15、性校正,同時由顯示器進行實時顯示。根據(jù)系統(tǒng)程序控制,進行PID運算以及輸出控制,最終由CPU控制加熱回路SSR的通斷,達到調(diào)功的目的。系統(tǒng)還提供了鍵盤設(shè)定模塊及打印機接口,便于用戶與系統(tǒng)之間的對話。系統(tǒng)的硬件結(jié)構(gòu)較簡單,由若干個功能模塊組成。具體結(jié)構(gòu)圖及說明如下,圖4 系統(tǒng)結(jié)構(gòu)框圖鍵盤設(shè)定:用于溫度設(shè)定,共三個按鍵。 數(shù)據(jù)采樣:將由傳感器及相關(guān)電路采集到的溫度轉(zhuǎn)為電壓信號,送入SPCE061A相應(yīng)接口中,經(jīng)AD轉(zhuǎn)換后,換算成溫度值,用于播報和顯示。 數(shù)據(jù)顯示:采用了共陰極數(shù)碼管LED5641A進行顯示設(shè)置溫度與測量溫度。 串行口傳輸:將采樣溫度值,上傳至PC機,以利用PC的圖形處理功能來描繪曲
16、線并打印。 繼電器/熱電爐:通過三極管控制繼電器的開關(guān)來完成對熱電爐的功率控制。語音播放:語音播放水溫設(shè)置溫度,并播報整數(shù)溫度變化。3.2部分外部電路設(shè)計由總體框圖可以看到,整個系統(tǒng)的設(shè)計都離不開SPCE061A的輸入/輸出接口。在單片機中,I/O口就是單片機與外設(shè)交換信息的主要通道。輸入端口從外界接收檢測的輸入信號、鍵盤信號等各種開關(guān)量信號;輸出端口向外部輸出處理結(jié)果、顯示信息、控制命令、驅(qū)動信號等。SPCE061A內(nèi)部有并行和串行兩種方式的I/O口。兩個16位通用的并行I/O端口即A口和B口,這兩個口的每一位都可通過編程單獨定義為輸入或輸出口,通常對某一位的設(shè)定包括三個基本項:數(shù)據(jù)向量Da
17、ta、屬性向量Attribution和方向控制向量Direction,三個向量的每個對應(yīng)位組合在一起形成一個控制字,用來定義相應(yīng)I/O口位的輸入、輸出狀態(tài)和工作方式。A口的IOA0IOA7用作輸入口時具有喚醒功能,常用于鍵盤輸入。B口除常規(guī)的輸入輸出功能外,還具有特殊功能。比如后面串行通信用到的IOB7口和IOB10口,它們在此電路中就充當(dāng)?shù)氖谴袛?shù)據(jù)的接收和發(fā)送端口。具體的用法將在后面的電路設(shè)計中用到。3.2.1鍵盤設(shè)置電路IOA0接KEY1,IOA1接KEY2,IOA2接KEY3。KEY1: 設(shè)置溫度的十位數(shù);09 KEY2: 設(shè)置溫度的個位數(shù);09KEY3: 工作模式選擇鍵,共有三種工作
18、模式:正常工作狀態(tài)、溫度重新設(shè)置、語音播報設(shè)置。圖5 鍵盤電路系統(tǒng)上電后,數(shù)碼管全部顯示為零,根據(jù)按KEY1次數(shù),十位的數(shù)碼管順序增加。同樣KEY2,也如此。按KEY3后,系統(tǒng)開始測溫,并與采集的溫度進行比較,通過軟件來控制電爐的開關(guān)。同時語音播報變化的整數(shù)值溫度。3.2.2測溫部分電路如圖6所示,運放采用HT9274集成芯片,溫度傳感器使用Pt電阻。HT9274是微功率運算放大器,利用標準 CMOS 制成,提供與 LM324 、TL274 及 WT274 等相似產(chǎn)品完全兼容的接腳。其低操作電壓及穩(wěn)定的品質(zhì)特性,提供了完美的輸出驅(qū)動能力。HT9274 適用于低功率操作的應(yīng)用,如電話局線界面、傳
19、感器放大器及一些電池操作的攜帶式電子產(chǎn)品。采用溫度傳感器鉑電阻Pt1000,是因為鉑電阻的物理和化學(xué)性能在高溫和氧化介質(zhì)中很穩(wěn)定、價格又便宜,常用作工業(yè)測量元件,以鉑電阻溫度計作基準器。此元件線性較好,在0100攝氏度時,最大非線性偏差小于0.5攝氏度。鉑熱電阻與溫度關(guān)系式,其中:溫度為t攝氏度時的電阻;溫度為0攝氏度時的電阻;A、B溫度系數(shù) A=3.94*102/ B=-5.84*10-7/T任意溫度因為Pt電阻在0攝氏度時,阻值為1千歐姆,在100攝氏度時,阻值為1380歐姆,則表示阻值變換從0380歐姆,電壓從0V-3.3V。 采用差動運放,通過可調(diào)分壓電阻可以滿足零點調(diào)節(jié)。因為Pt電阻
20、中電流基本為12mA,則Pt電阻電壓就在0380mV波動。因此采用10倍電壓放大?;緷M足SPCE061A數(shù)模轉(zhuǎn)換。圖6 測溫電路3.2.3控制電路此部份用于在閉環(huán)控制系統(tǒng)中對被控對象實施控制,此處被控對象為電爐絲,采用對加在電爐絲兩端的電壓進行通斷的方法進行控制,以實現(xiàn)對水加熱功率的調(diào)整,從而達到對水溫控制的目的。對電爐絲通斷的控制采用SSR固態(tài)繼電器,SSR是半導(dǎo)體繼電器,所以較小的驅(qū)動功率即可使SSR工作。它的使用非常簡單,只要在控制臺端加上一TTL、CMOS電平或一晶體管,即可實現(xiàn)對繼電器的開關(guān)。圖7 熱電爐控制電路圖8 過零控制方式SSR工作波形圖7為通過三極管NPN8050來控制繼
21、電器的開關(guān)的,繼電器采用的是帶光電隔離的過零型雙向可控硅AC-SSR常開式(常閉式)固態(tài)繼電器,為使其實現(xiàn)過零控制,就是要實現(xiàn)工頻電壓的過零檢測,并給出脈沖信號,由單片機控制雙向可控硅過零脈沖數(shù)目。當(dāng)在其輸入端加入(撤離)控制信號時,輸出端接通(斷開),從而控制電爐與電源的通斷,來達到加熱或冷卻爐絲的目的,最終實現(xiàn)使碗中水溫度穩(wěn)定在設(shè)定值上。3.2.4音頻輸出電路SPCE061A提供了雙通道音頻輸出方式。數(shù)字量分別寫入P_DAC1和P_DAC2單元。DAC1、DAC2轉(zhuǎn)換輸出的模擬量為電流信號,分別通過DAC1和DAC2管腳輸出。圖9 音頻輸出電路SPCE061A內(nèi)置兩路10位DAC,只需要外
22、接功放電路即可完成語音的播放.音頻部分的原理圖9所示,在圖中可以看到兩個跳線,其作用在于可以測量DAC的輸出波形;另外拔掉跳線,可以斷開DAC到喇叭放大的通路,使得DAC通道處于開路狀態(tài)。這樣便于用DAC做其他用途,用戶可以用過這個跳線來加入自己的外圍電路。 SPY0030是凌陽的芯片,相當(dāng)于LM386,但是比386音質(zhì)好,它可以工作在2.46.0V范圍內(nèi),最大輸出功率可達700mW(386必須工作在4V以上,而且功率只有100mW)。用凌陽Compress Tool事先把所需要的語音信號錄制好,本系統(tǒng)共包括十多個語音資源,整個語音信號經(jīng)凌陽SACM_S480壓縮算法壓縮只占有13.2K存儲空
23、間,SPCE061A單片機具有32k閃存,使用內(nèi)部flash即可滿足要求。凌陽SPCE061A單片機自帶雙通道DAC音頻輸出, DAC1、DAC2轉(zhuǎn)換輸出的模擬量電流信號分別通過AUD1和AUD2管腳輸出, DAC輸出為電流型輸出,所以DAC輸出經(jīng)過SPY0030音頻放大,以驅(qū)動喇叭放音,放大電路如圖所示,可以接喇叭,也可以接耳機,這為單片機的音頻設(shè)計提供了極大方便。音頻的具體功能主要通過程序來實現(xiàn)。3.2.5數(shù)碼顯示電路圖10 顯示電路本圖采用了共陰極數(shù)碼管LED5641A進行顯示,LED5641A具有四位數(shù)碼管,這四個數(shù)碼管的段選a、b、c、d、e、f、g分別接在一起,每一個都擁有一個共陰
24、的位選端。IOB0IOB2口分別接三極管的p端,通過三極管來控制LED的片選。IOA8IOA15口傳輸要顯示的數(shù)據(jù),利用其串/并轉(zhuǎn)換功能,送入數(shù)碼管顯示。在此外接了兩個電阻R-PACK4來保護LED。數(shù)據(jù)線也可直接接凌陽SPCE061A單片機的I/O口,因為I/O口輸出電流很小,一般不會對LED造成很大的損壞,而它的電壓值卻足以驅(qū)動LED,這不像別的單片機還要外接驅(qū)動電路和電阻。采用凌陽SPCE061A單片機,將大大減化了設(shè)計過程和硬件電路.3.2.6串行通訊部分電路系統(tǒng)設(shè)計要求控制系統(tǒng)能同PC聯(lián)機通信,以利用PC圖形處理能力打印顯示溫度曲線,故使用了SPCE061A的異步串行端口UART實現(xiàn)
25、與PC通信。由于SPCE061A串行口電平和PC不一致,(SPCE061A的I/O為TTL電平,PC串行口為RS232電平),使用一片MAX232為進行電平轉(zhuǎn)換驅(qū)動。通信速率為9600波特率。數(shù)據(jù)5秒傳輸一次。電路圖如圖11所示,MAX232的RXD1和TXD1分別接SPXEO61A的IOB10(TX)和IOB7(RX)。圖11 串行通訊電路UART模塊提供了一個全雙工標準通信口,用于完成SPCE061A與外設(shè)之間的串行通信。根據(jù)RS-232的標準,SPCE061A單片機也是按照字節(jié)傳輸數(shù)據(jù)的。利用IOB口的特殊功能和UART IRQ中斷,可以同時完成UART接口數(shù)據(jù)的接收和發(fā)送。此外,UAR
26、T還可以帶緩沖接收數(shù)據(jù),即可以在讀取緩存器數(shù)據(jù)之前接收新的數(shù)據(jù)。但是,如果新的數(shù)據(jù)被接收到緩存器之前一直未從中讀取,先前的數(shù)據(jù)會發(fā)生數(shù)據(jù)丟失。P_UART_Data(7023H)單元用于接收和發(fā)送數(shù)據(jù)的緩存,向該單元寫入數(shù)據(jù),將發(fā)送的數(shù)據(jù)送入緩存器;讀該單元取數(shù)據(jù),可以從緩存器讀出接收到的單字節(jié)數(shù)據(jù)。UART模塊的接收管腳Rx和發(fā)送管腳Tx分別與IOB7和IOB10共用。第四章系統(tǒng)軟件設(shè)計4.1程序結(jié)構(gòu)說明任何一個系統(tǒng)的軟件設(shè)計都離不開硬件電路的連接,所以本課題硬件設(shè)計的高度模塊化決定了軟件設(shè)計的模塊化。硬件接口連接如下:IOA0-IOA2-KEY1-KEY3IOA3-ADC IOA4-Rel
27、ayIOA8-15-LEDa-dp.IOB0-IOB2-LEDcs1-cs3IOB7 IOB10-UART由此可知其程序結(jié)構(gòu)應(yīng)包括:主控程序模塊、鍵盤掃描及處理子程序、采樣數(shù)據(jù)處理子程序、PID算法子程序、語音播報及顯示等子程序幾個部分。結(jié)構(gòu)框圖如圖12。圖12 程序結(jié)構(gòu)圖主控程序模塊在整個結(jié)構(gòu)中充當(dāng)管理者,管理所有子程序的調(diào)用,就相當(dāng)于個人計算機的操作系統(tǒng)。它主要負責(zé)初始化各個I/O口,等待鍵盤事件的發(fā)生,并作出相應(yīng)的處理。并在適當(dāng)?shù)臅r候調(diào)用數(shù)據(jù)采樣程序,并將采樣到的數(shù)據(jù)與鍵盤設(shè)定值比較。再通過PID計算后用以控制繼電器的開斷,從而控制電爐的輸出功率,來達到水溫的調(diào)整,并調(diào)用語音播報程序,播
28、放水的溫度。4.2程序流程圖及部分程序4.2.1主程序程序按照模塊化設(shè)計,所有功能都可通過調(diào)用子程序完成,主程序較簡單,流程圖如圖13所示。SPCE061A單片機A口的IOA0IOA7用作輸入口時具有喚醒功能,即具有輸入電平變化中斷功能(當(dāng)輸入的電平發(fā)生變化,電平由高變低或由低變高時),喚醒處于睡眠狀態(tài)的CPU。對于用電池供電的追求低能耗的應(yīng)用場合,可以通過軟件設(shè)置應(yīng)用CPU的睡眠模式以降低功耗,需要時用按鍵來喚醒CPU使其進入工作狀態(tài)。圖13 主程序流程圖在程序編寫過程中,首先還有一系列的準備工作。在這個程序中涉及到了許多的庫和組成文件,主要有:main.c 、isr.asm、 key.as
29、m、hardware.asm、 led.asm、system.asm 、sacm_user_a2000.h。由于篇幅原因,在這篇文章中只給出了部分程序。/=/函數(shù): 主程序/語法:int main(void)/描述:語音播報、鍵盤掃描、溫度控制/參數(shù):無/返回:無/=int main(void) int iKeyValue; status = system_temperature_set; guifgSpeechPlay = 0;System_Initial();PIDinit();while(1) System_ServiceLoop(); /鍵盤掃描、去抖動處理 iKeyValue = S
30、P_GetCh(); /取鍵值 key_value_process(iKeyValue); /鍵值處理 if(guifgSpeechPlay) temperature_speech_play( ); /語音播放 if(status = system_temperature_control) display_speech_ADC_temperature(); /測量溫度顯示、溫度播報、PID計算 Clear_WatchDog(); /清看門狗 System_ServiceLoop(); /鍵盤掃描 if(fOut<=0) turn_off_timerB(); 從主程序中可以看出,在進行一系
31、列程序調(diào)用之前對系統(tǒng)進行初始化,然后再對鍵盤程序有所反應(yīng)。進而判斷是否有溫度采集到,有就進行A/D轉(zhuǎn)換和PID計算,將其結(jié)果用來控制繼電器。SPCE061A內(nèi)置的看門狗監(jiān)視器,其作用就是監(jiān)測系統(tǒng)是否正常運行。它實際上是一個計數(shù)器,它每隔一段時間必須被人為清除(SPCE061A提供的清除周期為0.75s),否則,將產(chǎn)生計數(shù)溢出,使系統(tǒng)運行異常,導(dǎo)致系統(tǒng)復(fù)位且重新開始執(zhí)行程序??撮T狗監(jiān)視器可以通過指令設(shè)置或屏蔽??撮T狗清除寄存器P_Watchdog_Clear在SPCE061A系統(tǒng)正常運行時,只要每隔小于0.75s 向P_Watchdog_Clea單元寫入XXXX XXXX XXXX XX01B即
32、可清除看門狗計數(shù)器,這樣便不會發(fā)生看門狗計數(shù)溢出,在正常運行時就不會導(dǎo)致系統(tǒng)被復(fù)位了。本程序中使用了Clear_WatchDog()函數(shù),其目的就是屏蔽它的定時復(fù)位,而造成重新從開始執(zhí)行程序。4.2.2系統(tǒng)初始化系統(tǒng)的初始化主要包括I/O口的初始化、鍵盤初始化、A/D初始化等。對端口的初始化,就是對端口寄存器的相應(yīng)位進行設(shè)置。在前面已經(jīng)說過,要定義相應(yīng)I/O口位的輸入、輸出狀態(tài)和工作方式,就要對三個基本項設(shè)置:數(shù)據(jù)向量Data、屬性向量Attribution和方向控制向量Direction。其控制組合如表1所示。表1 I/O端口控制器設(shè)置DirAttribData功能喚醒功能功能描述000下拉
33、是帶下拉電阻的輸入管腳001上拉是帶上拉電阻的輸入管腳010懸浮是懸浮式輸入管腳011懸浮否懸浮式輸入管腳10反相輸出否Data數(shù)據(jù)位反相輸出11同相輸出否Data數(shù)據(jù)位同相輸出根據(jù)本系統(tǒng)端口A、B的不同運用,A口的高八位都是作為高電平輸出與顯示部分的數(shù)據(jù)端相連,低八位的IOA0IOA3用于鍵盤輸入端,IOA4為輸出端。B口只用到了低幾位作為LED的片選輸入端。由此可以得出下列設(shè)置: IOA15-IOA12 IOA11-IOA8 IOA7-IOA4 IOA3-IOA0Dir: 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 FF10Attr: 1 1 1 1 1 1 1 1 0
34、 0 0 1 0 0 0 0 FF10data : 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 FF00 IOA15-IOA12 IOA11-IOA8 IOA7-IOA4 IOA3-IOA0Dir: 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 000FAttr: 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 000Fdata : 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 000F由此有以下I/O口初始化程序:/=/函數(shù): L_User_Init_IO/語法:L_User_Init_IO()/描述:初始化A口低八位為
35、下拉電阻輸入,高八位為同相高電平輸出/ 初始化B口低四位為同相高電平輸出,/參數(shù):無/返回:無/=.PUBLIC L_User_Init_IO; L_User_Init_IO: .PROC r1 = 0xff10; P_IOA_Attrib = r1; P_IOA_Dir = r1; r1 = 0xff00; P_IOA_Data = r1; r1 = 0x000F; P_IOB_Attrib = r1; P_IOB_Dir = r1; P_IOB_Data = r1; RETF.ENDP;4.2.3鍵盤程序 鍵盤掃描由于機械觸點有彈性,在按下或彈起按鍵時會出現(xiàn)抖動,從最初按下到接觸穩(wěn)定要經(jīng)過
36、數(shù)毫秒的彈跳時間,如圖所示。為了保證探險鍵識別的準確性,必須消除抖動。消抖處理有硬件和軟件兩種方法:硬件消抖是利用加支抖動電路濾避免產(chǎn)生抖動信號;軟件消抖是利用數(shù)字濾波技術(shù)來消除抖動。我們采用軟件的方法,利用主程序循環(huán)掃描,主程序每循環(huán)一次掃描到的鍵值相同時,則說明是某鍵按下。圖14 鍵按下的過程SPCE061A提供了豐富的鍵盤API函數(shù),在程序編寫的過程中,我們可以直接調(diào)用這些函數(shù)來完成鍵盤的初始化、掃描、防拌動處理和獲取鍵值。常用的鍵盤API函數(shù)如下:CallF_Key_Scan_initial /鍵初始化CallF_Key_Scan_ServiceLoopl /鍵盤掃描CallF_Key
37、_DebounceCnt_Down/鍵盤防抖動處理CallF_SP_GetCh()/獲取鍵值由于SPCE06A單片機提供了一個系統(tǒng)資源模塊,這是建立在上述諸多模塊之上的一個模塊,其中許多子程序都調(diào)用了在它之下模塊中的子程序,為了讓上一級的程序調(diào)用本模塊System.asm文件中的子程序,設(shè)有一個接口文件System.inc ,一般只需要三條調(diào)用語句。具體實現(xiàn)可參考圖15。圖15 System.asm模塊框圖/=/ 函數(shù): System_ServiceLoop();/ 語法: System_ServiceLoop();/ 描述: 程序掃描鍵盤、按鍵去抖調(diào)度/ 參數(shù): 無/ 返回: 無/=.PUB
38、LIC _System_ServiceLoop;_System_ServiceLoop:.PROCcall F_Key_Scan_ServiceLoop; /掃描鍵盤 call F_Key_DebounceCnt_Down; /按鍵去抖 RETF; .ENDP 鍵值處理圖16 鍵值處理4.2.4 A/D轉(zhuǎn)換值處理如圖17可知,當(dāng)有溫度數(shù)據(jù)采樣到時,調(diào)用溫度均值處理程序,以防在采樣過程中外界干擾而造成采樣數(shù)據(jù)的不準確。然后確定溫度系數(shù),使采樣轉(zhuǎn)換得到的電壓信號轉(zhuǎn)換成溫度值,并進行十進制轉(zhuǎn)換,用于顯示、語音播報和PID計算。其中均值處理是一個比較重要的過程,是A/D轉(zhuǎn)換前必須進行的工作。下面是A/
39、D處理子程序。/=/函數(shù):void display_speech_ADC_temperature(void)/語法:void display_speech_ADC_temperature(void)/描述:整理溫度顯示值、語音播放資源、PID控制/參數(shù):無/返回:無/=void display_speech_ADC_temperature(void) float fT,K; 圖17 A/D轉(zhuǎn)換流程圖 int adc_data; static int siTlast = 0;if(G_ADC_flag) /判斷是否有溫度采樣 1,有 0,無 G_ADC_flag = 0; adc_data =
40、adc_data_cmp(); adc_data /= SET_ADC_TIME; /計算溫度平均值if(adc_data >0x0255) K = 0.079; /確定溫度系數(shù) else K = 0.076; fT = adc_data * K; /換算成溫度值 /將溫度值轉(zhuǎn)換成十進制用于LED顯示guiLED_Value0 = (int)fT/10; guiLED_Value1 = (int)fT%10; guiLED_Value2 = (int)(fT*10)%10; if(int)fT != siTlast) /判斷溫度的整數(shù)值是否變化 temperature_speech_in
41、dex(guiLED_Value); /溫度整數(shù)值語音播放排序 SACM_A2000_Initial(0); /非自動方式播放的初始化 SACM_A2000_InitDecoder(DAC2); /開始對A2000的語音數(shù)據(jù)以非自動方式解碼 SP_INT_IRQ6(); iAddrSpeech = speech_start_address(iaSpeech_index0);/語音播放始地址 guifgSpeechPlay = 1; /設(shè)置語音為播放狀態(tài) siTlast = (int)fT; stPID.Proportion = 1; / 設(shè)置PID比例值 stPID.Integral = 0.
42、5; / 設(shè)置PID積分值 stPID.Derivative = 0.0; / 設(shè)置PID微分值 fOut = 100*PIDCalc ( &stPID,(int)(fT*10) ); / PID計算 active(); 下圖是數(shù)據(jù)采樣的中斷服務(wù)程序,此中斷程序采用的是2Hz中斷定時0.5秒鐘采樣一次。圖18 數(shù)據(jù)采樣的中斷程序/=/函數(shù): int adc_data_cmp()/語法: int adc_data_cmp()/描述: ADC采樣數(shù)據(jù)的均值處理,抗干擾作用/參數(shù): 無/返回: 無/= int adc_data_cmp() int max; int min; int Sum;
43、 int i; max = giADC_DataSave0; for(i=0;i<10;i+) if(giADC_DataSavei>max) max = giADC_DataSavei; /取出最大值 min = giADC_DataSavei; for(i=0;i<10;i+) if(giADC_DataSavei<min) min = giADC_DataSavei; /取出最小值 for(i=0;i<10;i+) Sum += giADC_DataSavei; /累計值 Sum = Sum - max-min; /排除最大最小值 return(Sum);4
44、.2.5數(shù)字PID計算由于單片機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算控制量,因此式(1)中的積分和微分項不能直接準確計算,只能用數(shù)值計算的方法逼近。在采樣時刻t=iT(T為采樣周期)。式(1)所示的PID調(diào)節(jié)規(guī)律可通過數(shù)值公式(2)近似計算。 (2)由式(2)可以得到: (3)由(2)-(3)可得增量式算法公式: 這個計算的過程可用一個簡單的程序來實現(xiàn)。/=/函數(shù): void PIDinit(void)/語法:void PIDinit(void)/描述:PID初始化/參數(shù):無/返回:無/=void PIDinit(void)stPID.LastError = 0;stPID.Pr
45、evError = 0; stPID.SumError = 0; /=/函數(shù):float PIDCalc( PID *pp, int NextPoint )/語法:float PIDCalc( PID *pp, int NextPoint )/描述:PID計算/參數(shù):1、PID數(shù)值2、采樣溫度值/返回:PID輸出值/=float PIDCalc( PID *pp, int NextPoint ) int dError, Error; Error = pp->SetPoint*10 - NextPoint; / 偏差 pp->SumError += Error; / 積分 dErro
46、r = pp->LastError - pp->PrevError; / 當(dāng)前微分 pp->PrevError = pp->LastError; pp->LastError = Error; return (pp->Proportion * Error / 比例項 + pp->Integral * pp->SumError / 積分項 + pp->Derivative * dError / 微分項 );4.2.6繼電器控制繼電器是和SPCEO61A單片機的IOA4口相連的,它的開斷完全取決于IOA4口的輸出,即PID計算的結(jié)果。當(dāng)輸出小于零
47、說明設(shè)定值小于實際輸出值,這是就要關(guān)閉電爐,同時關(guān)閉定時器B的計時。否則如果輸出值大于設(shè)定值2攝氏度時就可以開電爐對水開始加熱。如果設(shè)定值與實際輸出值差值在2攝氏度以內(nèi)時,我們就調(diào)用中斷程序定時加熱。/=/函數(shù): void active()/語法:void active()/描述:PID輸出值的處理/參數(shù):無/返回:無/=void active()if(fOut<=0) turn_off_relay(); /溫度高于設(shè)定值,關(guān)閉電爐 turn_off_timerB(); /停止計時 else if(fOut>30*stPID.Proportion) /溫度低于設(shè)定值2攝氏度 tur
48、n_on_relay(); /開電爐加熱 else turn_on_relay();SP_INT_TIMEB() ;/初始化定時器,開始定時加熱 圖19是控制程序的中斷服務(wù)程序,用來對繼電器定時加熱。它利用中斷定時器10ms確定加熱時間,當(dāng)加熱時間未到時,繼續(xù)時間累積,若加熱時間到時,就調(diào)用關(guān)定時器子程序,停止計時。圖19 控制程序中斷程序4.2.7語音播放 凌陽音頻簡介A 音頻信號我們所說的音頻是指頻率在20Hz20KHz的聲音信號,分為波形聲音信號、語音信號和音樂信號三種。其中波形聲音就是自然界是的聲音,是聲音數(shù)字化的基礎(chǔ)。語音也可以表示為波形聲音,但波形聲音表示不出語言語音學(xué)的內(nèi)涵,語音是對講話聲音的一種抽象,是語言的載體,是人類社會特有的一種信息交流系統(tǒng),是社會交際工具的符號。音樂與語音相比更規(guī)范一些,是符號化
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 11.3 動能和勢能(教學(xué)設(shè)計)- 八年級物理下冊同步備課系列(人教版)
- 2025年人力資源管理軟件采購合同范文
- 周口市場地租賃合同6篇
- 2025年規(guī)范貨物運輸服務(wù)合同
- 2025年合同糾紛案件審理總結(jié)
- 2025年合法性提前結(jié)束廣告位租賃合同范本
- 2025年建筑工程項目第三方責(zé)任保險合同文本
- 2025年產(chǎn)品供應(yīng)與安裝合同
- 2025年制造廠員工勞動合同管理
- 電子產(chǎn)品典當(dāng)合同(手機)7篇
- 高中主題班會 梁文鋒和他的DeepSeek-由DeepSeek爆火開啟高中第一課-高中主題班會課件
- 污水處理設(shè)施運維服務(wù)投標方案(技術(shù)標)
- 一年級下冊書法教案 (一)
- 2025年復(fù)工復(fù)產(chǎn)安全開工第一課專題培訓(xùn)
- 【道法】做自信的人課件 2024-2025學(xué)年統(tǒng)編版道德與法治七年級下冊
- 軍兵種基礎(chǔ)知識
- 公交車預(yù)防春困
- 法務(wù)助理實習(xí)報告
- 2025幼兒園疫情報告制度及流程
- GB/T 41869.3-2024光學(xué)和光子學(xué)微透鏡陣列第3部分:光學(xué)特性測試方法
- 2024年9月時事政治試題帶答案
評論
0/150
提交評論