基于單片機(jī)與PC機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)_第1頁
基于單片機(jī)與PC機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)_第2頁
基于單片機(jī)與PC機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)_第3頁
基于單片機(jī)與PC機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)_第4頁
基于單片機(jī)與PC機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、本科畢業(yè)論文(設(shè)計(jì))題 目:基于單片機(jī)與pc機(jī)的溫度控制系統(tǒng)軟件設(shè)計(jì)文檔由我國(guó)目前唯一全能交通出行搜索引擎達(dá)達(dá)搜 分享達(dá)達(dá)搜簡(jiǎn)介達(dá)達(dá)搜作為新一代的混合交通搜索引擎,首創(chuàng)結(jié)合海、陸、空為一體的出行搜索方式,實(shí)現(xiàn)對(duì)票價(jià)、里程、歷時(shí)進(jìn)行比較和排序。旨在為用戶提供最方便、最便宜、最快捷的出行方式,同時(shí)提供旅游、酒店等相關(guān)查詢、預(yù)定的服務(wù),達(dá)到出行各方面的需求可以在一個(gè)平臺(tái)上完成,減少用戶操作,提高效率。出行海陸空,就上達(dá)達(dá)搜!如果你要找航班、火車或汽車等交通信息,現(xiàn)在可以不用上百度了,上“達(dá)達(dá)搜”試試看。昨天,由長(zhǎng)沙達(dá)達(dá)網(wǎng)絡(luò)公司推出的交通信息搜索引擎達(dá)達(dá)搜正式上線。無論是機(jī)票、火車票和汽車票信息,都可

2、以在達(dá)達(dá)搜上立即搜索出來?!斑_(dá)達(dá)搜”總經(jīng)理劉友常稱,這個(gè)由長(zhǎng)沙人創(chuàng)立的搜索引擎是目前國(guó)內(nèi)唯一的海陸空混合路徑搜索、實(shí)時(shí)查詢、各種票務(wù)比價(jià)訂購(gòu)的交通垂直搜索引擎。達(dá)達(dá)搜是一個(gè)國(guó)內(nèi)唯一領(lǐng)先的海陸空混合路徑搜索、實(shí)時(shí)查詢、各種票務(wù)比價(jià)訂購(gòu)的交通垂直搜索引擎。通過混合(國(guó)內(nèi)外航班、火車、長(zhǎng)途巴士等)搜索,可得到該行程的所有出行方式,滿足不同旅客的需求。尤其通過票務(wù)的比價(jià)和電子客票化,給旅客帶來了更多優(yōu)惠和方便。 目前,達(dá)達(dá)搜可以搜索地球上16000多個(gè)城市間的任意兩點(diǎn)之間的所有海陸空到達(dá)方式,實(shí)現(xiàn)了國(guó)內(nèi)外機(jī)票電子客票訂購(gòu)、火車票余票查詢和訂購(gòu)、3000多個(gè)長(zhǎng)途汽車巴士站的全部路徑查詢和32個(gè)巴士站電子

3、客票的訂購(gòu)。摘 要在工業(yè)生產(chǎn)中,人們需要對(duì)各類加熱爐、熱處理爐、反應(yīng)爐和鍋爐中的溫度進(jìn)行檢測(cè)和控制。采用單片機(jī)對(duì)溫度進(jìn)行控制具有控制方便、簡(jiǎn)單和靈活性大、精度高價(jià)格便宜等優(yōu)點(diǎn)。本文介紹了一種基于at89s52單片機(jī)與pc機(jī)串口通信的溫度控制系統(tǒng),用單片機(jī)作下位機(jī)完成溫度數(shù)據(jù)的采集和執(zhí)行pc機(jī)發(fā)出的控制執(zhí)行命令;用pc機(jī)作上位機(jī)接收單片機(jī)發(fā)送的數(shù)據(jù),進(jìn)行數(shù)據(jù)處理,向單片機(jī)發(fā)送控制命令。 pc機(jī)與單片機(jī)采用串行通信,可實(shí)現(xiàn)遠(yuǎn)距離溫度監(jiān)控制。本設(shè)計(jì)充分利用pc機(jī)vb6.0軟件強(qiáng)大的數(shù)據(jù)處理功能和友好的人機(jī)界面,對(duì)溫度進(jìn)行實(shí)時(shí)曲線顯示。本設(shè)計(jì)由硬件和軟件二部分組成,本文主要進(jìn)行軟件部分設(shè)計(jì)。經(jīng)樣機(jī)實(shí)驗(yàn)

4、證明本設(shè)計(jì)性能穩(wěn)定可靠,各項(xiàng)性能指標(biāo)高,可用于實(shí)際工程。關(guān)鍵詞:ds18b20;單片機(jī);溫度控制;pid算法目 錄1. 緒論11.1 前言11.2 系統(tǒng)分析12. 系統(tǒng)硬件簡(jiǎn)介33. pid控制原理與程序流程43.1 模擬pid調(diào)節(jié)器43.2 數(shù)字pid控制器53.3 pid算法的程序流程63.4 微分項(xiàng)的改進(jìn)73.5 采樣周期的選擇93.6 數(shù)字pid控制的參數(shù)選擇104. 系統(tǒng)軟件設(shè)計(jì)124.1 軟件開發(fā)工具簡(jiǎn)介124.2 c51單片機(jī)軟件開發(fā)語言124.3 單片機(jī)主程序的軟件設(shè)計(jì)144.4 單片機(jī)中斷服務(wù)子程序的實(shí)現(xiàn)154.5 測(cè)溫芯片ds18b20驅(qū)動(dòng)子程序184.6 pwm控制204

5、.7 pc機(jī)程序設(shè)計(jì)215. 調(diào)試305.1 開環(huán)控制實(shí)驗(yàn)結(jié)果分析305.2 pid參數(shù)的整定30第六章 結(jié)論33附錄:34附錄一、系統(tǒng)硬件總電路圖34附錄二、系統(tǒng)pc機(jī)運(yùn)作vb界面35附錄三、單片機(jī)程序36附錄四、pc機(jī)程序44參考文獻(xiàn):49基于單片機(jī)與pc機(jī)的溫度控制系統(tǒng)軟件設(shè)計(jì)1. 緒論1.1 前言隨著新技術(shù)的不斷開發(fā)與應(yīng)用,近年來單片機(jī)發(fā)展給現(xiàn)代工業(yè)測(cè)控領(lǐng)域帶來了一次新的技術(shù)革命,單片機(jī)的應(yīng)用已經(jīng)滲透到電力、冶金、化工、建材、機(jī)械、食品、石油等各個(gè)行業(yè),發(fā)展迅速。而傳統(tǒng)的溫度采集方法不僅費(fèi)時(shí)費(fèi)力,而且精度差,單片機(jī)的出現(xiàn)使得溫度的采集和數(shù)據(jù)處理問題能夠得到很好的解決。溫度是工業(yè)對(duì)象中的

6、一個(gè)重要的被控參數(shù)。然而所采用的測(cè)溫元件和測(cè)量方法不相同,產(chǎn)品的工藝不同,控制溫度的精度也不相同。因此對(duì)數(shù)據(jù)采集的精度和采用的控制方法也不相同。本系統(tǒng)所使用的加熱器件是電爐絲,功率為三百瓦,要求溫度在30100。靜態(tài)控制精度為0.5。本設(shè)計(jì)使用單片機(jī)作為核心進(jìn)行控制。它實(shí)用性強(qiáng),集成度高,功能齊全,技術(shù)先進(jìn),使人們相信這是科技進(jìn)步的成果。特別是具有體積小,價(jià)廉,功能強(qiáng)1,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特優(yōu)點(diǎn),在數(shù)字、智能化方面有廣泛的用途。本文著重介紹了基于單片機(jī)與pc機(jī)的溫度控制系統(tǒng)的軟件設(shè)計(jì)的過程,闡述了以at89s52單片機(jī)為主體,熱敏傳感器ds18b20,電爐及其控制電路為核心的

7、系統(tǒng)充分發(fā)揮了單片機(jī)的性能。其優(yōu)點(diǎn)是硬件功能強(qiáng)大,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高,具有一定的使用和參考價(jià)值。1.2 系統(tǒng)分析一、系統(tǒng)功能要求基于單片機(jī)與pc機(jī)的溫度控制設(shè)計(jì)系統(tǒng)應(yīng)能達(dá)到以下功能要求:1. 可以人為方便地設(shè)定所需控制的溫度值,溫控儀器能自動(dòng)將電爐加熱至此設(shè)定值并能保持,直至重新設(shè)定為另一溫度值,即能自動(dòng)控制溫度;2. 采用適當(dāng)?shù)目刂品椒?,?dāng)設(shè)定溫度突變(由40提高到60)時(shí),減小系統(tǒng)的調(diào)節(jié)時(shí)間和超調(diào)量。3. 實(shí)現(xiàn)無觸點(diǎn)式控制,消除機(jī)械噪聲;4. 改進(jìn)控制方法,控制精度達(dá)到0.5 c或更高;5. 具有自動(dòng)加熱保護(hù)功能的安全性要求。如果實(shí)際測(cè)得的溫度值超過了系統(tǒng)要求的溫度范圍

8、,單片機(jī)就會(huì)發(fā)出斷電指令,并進(jìn)行報(bào)警;6. 裝置可將溫度數(shù)據(jù)通過串口送到上位機(jī),上位機(jī)軟件將接收到的數(shù)據(jù)存貯并顯示溫度變化曲線。系統(tǒng)總體方案框圖如圖1-1所示pc機(jī)鍵盤顯示器rs232單片機(jī)驅(qū)動(dòng)ssr電阻爐ds18b20圖1-1 系統(tǒng)總體方案框圖二、系統(tǒng)特點(diǎn)基于上述功能要求及智能儀表應(yīng)具有的體積小、成本低、功能強(qiáng)、抗千擾并盡可能達(dá)到更高精度的要求。本系統(tǒng)在硬件設(shè)計(jì)方面具有如下特點(diǎn):主機(jī)采用mcs-51系列的at80s52單片機(jī)價(jià)格便宜,有開發(fā)環(huán)境 。根據(jù)電阻爐測(cè)溫范圍的要求,該系統(tǒng)適合采用ds18b20作為溫度傳感器,ds18b20支持“一線總線”接口,測(cè)量溫度范圍為-55c+125c,在-1

9、0+85c范圍內(nèi),精度為0.5c?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。由于系統(tǒng)的執(zhí)行機(jī)構(gòu)是電阻爐,其功率調(diào)節(jié)可以采用相控調(diào)壓法和通斷調(diào)功法兩種方式,但考慮到相控調(diào)壓法對(duì)電網(wǎng)性能的破壞較大,因此按脈沖寬度調(diào)制法控制輸出信號(hào)占空比的大小,從而實(shí)現(xiàn)系統(tǒng)對(duì)輸出量的控制。整個(gè)系統(tǒng)遵循了冗余原則及以軟代硬的原則,并盡可能選用典型、常用、易于替換的芯片和電路,為系統(tǒng)的開放性、標(biāo)準(zhǔn)化和模塊化打下良好基礎(chǔ)。系統(tǒng)擴(kuò)展和配置在滿足功能要求的基礎(chǔ)上留有適當(dāng)裕量,以利于擴(kuò)充和修改。2. 系統(tǒng)硬件簡(jiǎn)介本系統(tǒng)硬

10、件由單片機(jī)at89s52最小系統(tǒng)電路、溫度檢測(cè)電路、溫度控制電路等部分組成。在系統(tǒng)中,利用ds18b20溫度傳感器測(cè)得水溫的實(shí)際溫度并轉(zhuǎn)換成與水溫相對(duì)應(yīng)的數(shù)字信號(hào)進(jìn)入單片機(jī),單片機(jī)進(jìn)行數(shù)據(jù)處理后,將溫度與設(shè)定溫度比較,由設(shè)定的控制算法計(jì)算出控制量,根據(jù)控制量通過控制固態(tài)繼電器的導(dǎo)通和關(guān)閉從而控制電阻絲的導(dǎo)通時(shí)間,以實(shí)現(xiàn)對(duì)溫度的控制。該系統(tǒng)中還利用pc機(jī)通過rs232串口通信進(jìn)行實(shí)時(shí)監(jiān)控。一、單片機(jī)最小系統(tǒng)電路: 本系統(tǒng)采用晶振,復(fù)位電路組成的單片機(jī)最小系統(tǒng)電路使單片機(jī)正常運(yùn)作以結(jié)合其他模塊組成本設(shè)計(jì)所要求的系統(tǒng)。二、串口及其通信:?jiǎn)纹瑱C(jī)串行口輸入輸出的電信號(hào)為ttl/cmos2電平,而pc機(jī)的

11、串行口輸入輸出的電信號(hào)卻為rs2323電平,rs232使用3v到15v的電壓表示高電平,使用+3v +15v 的電壓表示低電平。因此,單片機(jī)串行口并不能直接和pc機(jī)串行口相連,它們之間必須進(jìn)行電平轉(zhuǎn)換后才能相連。本設(shè)計(jì)選用max232電平轉(zhuǎn)換芯片來進(jìn)行電平的轉(zhuǎn)換。51單片機(jī)有一個(gè)全雙工的串行通訊口,所以單片機(jī)和計(jì)算機(jī)之間可以方便地進(jìn)行串口通訊。我們采用了三線制連接串口,也就是說和計(jì)算機(jī)的9針串口只連接其中的3根線:第5腳的gnd、第2腳的rxd、第3腳的txd。三、溫度檢測(cè)電路:本設(shè)計(jì)溫度檢測(cè)采用溫度傳感器ds18b20,信息經(jīng)過單線接口送入ds1820或從ds18b20送出,因此從單片機(jī)到d

12、s18b20僅需連接一條線。讀定和完成溫度變換所需的電源可以由數(shù)據(jù)經(jīng)本身提供而不需要外部電源。 四、溫度控制電路:本設(shè)計(jì)由固態(tài)繼電器控制加熱電源的通斷,以實(shí)現(xiàn)對(duì)溫度的控制,固態(tài)繼電器(solid state relays),簡(jiǎn)寫成“ssr”,是一種全部由固態(tài)電子元件(如光電耦合器、晶體管、可控硅、電阻、電容等)組成的新型無觸點(diǎn)開關(guān)器件。與普通繼電器一樣,它的輸入側(cè)與輸出側(cè)之間是電絕緣的。但是與普通電磁繼電器比,ssr體積小,開關(guān)速度快,無機(jī)械觸點(diǎn),因而沒有機(jī)械磨損,不怕有害氣體腐蝕,沒有機(jī)械噪聲,耐振動(dòng)、耐沖擊,使用壽命長(zhǎng)。它在通、斷時(shí)沒有火花和電弧,有利于防爆,干擾小(特別對(duì)微弱信號(hào)回路)。

13、另外,ssr的驅(qū)動(dòng)電壓低,電流小,易于與計(jì)算機(jī)接口。因此ssr作為自動(dòng)控制的執(zhí)行部件得到越來越廣泛的應(yīng)用。3. pid控制原理與程序流程對(duì)于一個(gè)控制系統(tǒng),合理選擇控制策略是至關(guān)重要的。pid調(diào)節(jié)器具有算法簡(jiǎn)單、魯棒性好、可靠性高、易于實(shí)現(xiàn)等優(yōu)點(diǎn),并且不需要建立其精確的數(shù)學(xué)模型,因此在過程控制中仍然是應(yīng)用最廣泛的一類控制器。在本系統(tǒng)設(shè)計(jì)中,作為被控對(duì)象的電阻爐由于模型較為復(fù)雜,無法建立精確的數(shù)學(xué)模型,故采用pid算法比較方便,但pid算法也存在現(xiàn)場(chǎng)參數(shù)調(diào)整麻煩、被控對(duì)象模型參數(shù)難以確定及外界干擾會(huì)使控制漂離最佳工況等問題。針對(duì)這些問題,在本系統(tǒng)設(shè)計(jì)中,采用了基于模糊推理4的自整定pid控制算法。

14、3.1 模擬pid調(diào)節(jié)器一、模擬pid控制系統(tǒng)5組成圖3-1模擬pid控制系統(tǒng)原理框圖二、模擬pid調(diào)節(jié)器的微分方程和傳輸函數(shù)pid調(diào)節(jié)器是一種線性調(diào)節(jié)器,它將給定值r(t)與實(shí)際輸出值c(t)的偏差的比例(p)、積分(i)、微分(d)通過線性組合構(gòu)成控制量,對(duì)控制對(duì)象進(jìn)行控制。1.pid調(diào)節(jié)器的微分方程 (1)式中 2.pid調(diào)節(jié)器的傳輸函數(shù) (2)三、pid調(diào)節(jié)器各校正環(huán)節(jié)的作用1.比例環(huán)節(jié):即時(shí)成比例地反應(yīng)控制系統(tǒng)的偏差信號(hào)e(t),偏差一旦產(chǎn)生,調(diào)節(jié)器立即產(chǎn)生控制作用以減小偏差。2.積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強(qiáng)弱取決于積分時(shí)間常數(shù)ti,ti越大,積分作用越

15、弱,反之則越強(qiáng)。3.微分環(huán)節(jié):能反應(yīng)偏差信號(hào)的變化趨勢(shì)(變化速率),并能在偏差信號(hào)的值變得太大之前,在系統(tǒng)中引入一個(gè)有效的早期修正信號(hào),從而加快系統(tǒng)的動(dòng)作速度,減小調(diào)節(jié)時(shí)間。3.2 數(shù)字pid控制器一、模擬pid控制規(guī)律的離散化表3-1模擬形式離散化形式二、數(shù)字pid控制器的差分方程 (4)式中 稱為比例項(xiàng) 稱為積分項(xiàng) 稱為微分項(xiàng)三、常用的控制方式1.p控制 (5)2.pi控制 (6)3.pd控制 (7)4.pid控制 (8)在實(shí)際運(yùn)算時(shí),由于水具有很大的熱慣性,而且pid運(yùn)算中的i(積分項(xiàng))具有非常明顯的延遲效應(yīng)所以不能保留,我們必須把積分項(xiàng)去掉,相反d(微分項(xiàng))則有很強(qiáng)的預(yù)見性,能夠加快反

16、應(yīng)速度,抑制超調(diào)量,所以積分作用應(yīng)該適當(dāng)加強(qiáng)才能達(dá)到較佳的效果,系統(tǒng)最終選擇pd控制方案。四、pid算法的兩種類型1.位置型控制例如圖3-2調(diào)節(jié)閥控制 (9)2.增量型控制例如圖3-3步進(jìn)電機(jī)控制 (10)圖3-2數(shù)字pid增量型控制示意圖圖3-3數(shù)字pid增量型控制示意圖 本設(shè)計(jì)應(yīng)用了上面所介紹的位置型pid控制算法,將溫度傳感器采樣輸入作為當(dāng)前輸入,然后與設(shè)定值進(jìn)行相減得偏差e(n),然后再對(duì)之進(jìn)行pid運(yùn)算產(chǎn)生輸出結(jié)果open,進(jìn)而控制加熱器。3.3 pid算法的程序流程一、增量型pid算法的程序流程1.增量型pid算法的算式 (11)式中,2.增量型pid算法的程序流程圖3-4圖3-4

17、二、位置型pid算法的程序流程1.位置型的遞推形式 (12)2.位置型pid算法的程序流程圖3-4只需在增量型pid算法的程序流程基礎(chǔ)上增加一次加運(yùn)算u(n)+u(n-1)=u(n)和更新u(n-1)即可。三、對(duì)控制量的限制1.控制算法總是受到一定運(yùn)算字長(zhǎng)的限制2.執(zhí)行機(jī)構(gòu)的實(shí)際位置不允許超過上(或下)極限 (13)3.4 微分項(xiàng)的改進(jìn)一、不完全微分型pid控制算法1.不完全微分型pid算法傳遞函數(shù) (14) 圖3-5 不完全微分型pid算法傳遞函數(shù)框圖2.完全微分和不完全微分作用的區(qū)別 圖3-6 完全微分和不完全微分作用的區(qū)別3.不完全微分型pid算法的差分方程 (15) (16)二、微分先

18、行和輸入濾波1.微分先行微分先行是把對(duì)偏差的微分改為對(duì)被控量的微分,這樣,在給定值變化時(shí),不會(huì)產(chǎn)生輸出的大幅度變化。而且由于被控量一般不會(huì)突變,即使給定值已發(fā)生改變,被控量也是緩慢變化的,從而不致引起微分項(xiàng)的突變。微分項(xiàng)的輸出增量為 (17)2.輸入濾波輸入濾波就是在計(jì)算微分項(xiàng)時(shí),不是直接應(yīng)用當(dāng)前時(shí)刻的誤差e(n),而是采用濾波值e(n),即用過去和當(dāng)前四個(gè)采樣時(shí)刻的誤差的平均值,再通過加權(quán)求和形式近似構(gòu)成微分項(xiàng) (18) (19)3.5 采樣周期的選擇一、選擇采樣周期的重要性采樣周期越小,數(shù)字模擬越精確,控制效果越接近連續(xù)控制。對(duì)大多數(shù)算法,縮短采樣周期可使控制回路性能改善,但采樣周期縮短時(shí)

19、,頻繁的采樣必然會(huì)占用較多的計(jì)算工作時(shí)間,同時(shí)也會(huì)增加計(jì)算機(jī)的計(jì)算負(fù)擔(dān),而對(duì)有些變化緩慢的受控對(duì)象無需很高的采樣頻率即可滿意地進(jìn)行跟蹤,過多的采樣反而沒有多少實(shí)際意義。二、選擇采樣周期的原則采樣定理最大采樣周期 (20)式中為信號(hào)頻率組分中最高頻率分量。三、選擇采樣周期應(yīng)綜合考慮的因素1.給定值的變化頻率加到被控對(duì)象上的給定值變化頻率越高,采樣頻率應(yīng)越高,以使給定值的改變通過采樣迅速得到反映,而不致在隨動(dòng)控制中產(chǎn)生大的時(shí)延。2.被控對(duì)象的特性(1)考慮對(duì)象變化的緩急,若對(duì)象是慢速的熱工或化工對(duì)象時(shí),t一般取得較大。在對(duì)象變化較快的場(chǎng)合,t應(yīng)取得較小。(2)考慮干擾的情況,從系統(tǒng)抗干擾的性能要求

20、來看,要求采樣周期短,使擾動(dòng)能迅速得到校正。3.使用的算式和執(zhí)行機(jī)構(gòu)的類型(1)采樣周期太小,會(huì)使積分作用、微分作用不明顯。同時(shí),因受微機(jī)計(jì)算精度的影響,當(dāng)采樣周期小到一定程度時(shí),前后兩次采樣的差別反映不出來,使調(diào)節(jié)作用因此而減弱。(2)執(zhí)行機(jī)構(gòu)的動(dòng)作慣性大,采樣周期的選擇要與之適應(yīng),否則執(zhí)行機(jī)構(gòu)來不及反應(yīng)數(shù)字控制器輸出值的變化。4.控制的回路數(shù)要求控制的回路較多時(shí),相應(yīng)的采樣周期越長(zhǎng),以使每個(gè)回路的調(diào)節(jié)算法都有足夠的時(shí)間來完成??刂频幕芈窋?shù)n與采樣周期t有如下關(guān)系: (21)式中,tj是第j個(gè)回路控制程序的執(zhí)行時(shí)間。3.6 數(shù)字pid控制的參數(shù)選擇一、數(shù)字pid參數(shù)的原則要求和整定方法1.原

21、則要求:被控過程是穩(wěn)定的,能迅速和準(zhǔn)確地跟蹤給定值的變化,超調(diào)量小,在不同干擾下系統(tǒng)輸出應(yīng)能保持在給定值,操作變量不宜過大,在系統(tǒng)與環(huán)境參數(shù)發(fā)生變化時(shí)控制應(yīng)保持穩(wěn)定。顯然,要同時(shí)滿足上述各項(xiàng)要求是困難的,必須根據(jù)具體過程的要求,滿足主要方面,并兼顧其它方面。2.pid參數(shù)整定方法:理論計(jì)算法依賴被控對(duì)象準(zhǔn)確的數(shù)學(xué)模型(一般較難做到)工程整定法不依賴被控對(duì)象準(zhǔn)確的數(shù)學(xué)模型,直接在控制系統(tǒng)中進(jìn)行現(xiàn)場(chǎng)整定(簡(jiǎn)單易行)二、常用的簡(jiǎn)易工程整定法1.擴(kuò)充臨界比例度法6適用于有自平衡特性的被控對(duì)象整定數(shù)字調(diào)節(jié)器參數(shù)的步驟是:(1)選擇采樣周期為被控對(duì)象純滯后時(shí)間的十分之一以下。(2)去掉積分作用和微分作用,

22、逐漸增大比例度系數(shù)直至系統(tǒng)對(duì)階躍輸入的響應(yīng)達(dá)到臨界振蕩狀態(tài)(穩(wěn)定邊緣),記下此時(shí)的臨界比例系數(shù)及系統(tǒng)的臨界振蕩周期。(3)選擇控制度。 (22)通常,當(dāng)控制度為1.05時(shí)。就可以認(rèn)為ddc與模擬控制效果相當(dāng)。(4)根據(jù)選定的控制度,得t、kp、ti、td的值。2.擴(kuò)充響應(yīng)曲線法適用于多容量自平衡系統(tǒng)參數(shù)整定步驟如下:(1)讓系統(tǒng)處于手動(dòng)操作狀態(tài),將被調(diào)量調(diào)節(jié)到給定值附近,并使之穩(wěn)定下來,然后突然改變給定值,給對(duì)象一個(gè)階躍輸入信號(hào)。(2)用記錄儀表記錄被調(diào)量在階躍輸入下的整個(gè)變化過程曲線,如圖3-7所示。圖3-7 被調(diào)量在階躍輸入下的整個(gè)變化過程曲線(3)在曲線最大斜率處作切線,求得滯后時(shí)間,被

23、控對(duì)象時(shí)間常數(shù)t以及它們的比值t/。(4)由求得的、t及t/,即可求得數(shù)字調(diào)節(jié)器的有關(guān)參數(shù)kp、ti、td及采樣周期t。3.歸一參數(shù)整定法令,。則增量型pid控制的公式簡(jiǎn)化為 (23)改變kp,觀察控制效果,直到滿意為止?;谝陨系姆治鲈诒驹O(shè)計(jì)中,采用擴(kuò)充響應(yīng)曲線法對(duì)參數(shù)進(jìn)行整定。4. 系統(tǒng)軟件設(shè)計(jì)4.1 軟件開發(fā)工具簡(jiǎn)介一、單片機(jī)開發(fā)工具本系統(tǒng)開發(fā)工具采用keil51標(biāo)準(zhǔn)c編譯器keil c51,在保留匯編代碼高效、快速性的同時(shí)為8051微控制器的軟件開發(fā)提供c語言環(huán)境。c51集成到uvision2開發(fā)環(huán)境,這個(gè)環(huán)境包括:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),調(diào)試器。slisp支持串行、并行兩種通信

24、下載線,支持的at89s51/52和avr系列器件。燒錄文件格式為intel格式的hex文件、eep文件,二進(jìn)制bin文件。通過串口和下載線相連接,支持usb轉(zhuǎn)換成的串口通信。在使用并行下載線編程時(shí),編程速度是可以調(diào)節(jié)的,可以根據(jù)自己系統(tǒng)的時(shí)鐘頻率選擇模式。二、pc機(jī)開發(fā)工具vb vb是微軟公司出品的一個(gè)快速可視化程序開發(fā)工具軟件,借助微軟在操作系統(tǒng)和辦公軟件的壟斷地位,vb在短短的幾年內(nèi)風(fēng)靡全球。vb是極有和功能強(qiáng)大的軟件,主要表現(xiàn)在:所見即所得的界面設(shè)計(jì),基于對(duì)象的設(shè)計(jì)方法,極短的軟件開發(fā)周期,較易維護(hù)的生成代碼6。美國(guó)微軟公司在1991年推出vb1.0至今,版本已經(jīng)演變到visual b

25、asic 2005(也被稱為vb8)7,本系統(tǒng)采用各方面均較為成熟的vb6.0運(yùn)行在win2000,winxp,windowsnt等操作系統(tǒng)下,是一個(gè)32位的應(yīng)用程序開發(fā)工具。它主要有以下幾個(gè)特點(diǎn):1.成功地簡(jiǎn)化了界面的設(shè)計(jì)過程。它在windows平臺(tái)上提供了圖形用戶界面(gui)的集成開發(fā)環(huán)境(ide)。2.采用簡(jiǎn)單易學(xué)的basic語言。它既適用于沒有任何編程經(jīng)驗(yàn)的開發(fā)者學(xué)習(xí),也適合于開發(fā)各種復(fù)雜的底層應(yīng)用程序。3.具有強(qiáng)大的數(shù)據(jù)和字符串處理功能。visual basic 提供了許多現(xiàn)成的字符串處理函數(shù)。4.易于擴(kuò)充。除了簡(jiǎn)單易學(xué)的特點(diǎn)以外,visual basic 還是一種易于擴(kuò)充功能的開

26、發(fā)系統(tǒng)。5.提供了intellisense技術(shù)。當(dāng)你在visual basic 的代碼窗口敲進(jìn)對(duì)象名稱的時(shí)候intellisense技術(shù)會(huì)自動(dòng)向你顯示一些相關(guān)的信息,例如對(duì)象的屬性和方法等。6.提供了多種向?qū)?。利用這些向?qū)?,你可以快速地完成一般性的任?wù),例如生成其控件不綁定到數(shù)據(jù)控件上的純代碼窗體,建立查詢,添加工具,制作圖表,以及發(fā)布創(chuàng)建的應(yīng)用程序等。 4.2 c51單片機(jī)軟件開發(fā)語言c語言是一種通用的計(jì)算機(jī)程序設(shè)計(jì)語言。由于匯編程序的可讀性和可移植性都較差,而c語言既是一種高級(jí)語言,又兼有一些匯編語言才具有的特點(diǎn),其表達(dá)能力和運(yùn)算能力和運(yùn)算能力都很強(qiáng),并且具有很好的可移植性的硬件控制能力,

27、編寫代碼效率高,軟件調(diào)試直觀,維護(hù)升級(jí)方便。同時(shí),c語言具有完善的模塊程序結(jié)構(gòu)和功能豐富的庫(kù)函數(shù),在軟件開發(fā)中可以采用模塊化程序設(shè)計(jì)方法,并可以方便地調(diào)用庫(kù)函數(shù)一些常用的功能。再說現(xiàn)在的單片機(jī)程序存儲(chǔ)器容量越來越大,因此不用像過去那樣對(duì)程序規(guī)模大小斤斤計(jì)較,這也有利于c語言程序在單片機(jī)上的推廣應(yīng)用。此外,使用c語言進(jìn)行mcs-51系列單片機(jī)系統(tǒng)開發(fā),編程者可以專注于應(yīng)用軟件部分的設(shè)計(jì),不必將大量的精力花在內(nèi)存分配等底層工作上,從而大大地加快了軟件的開發(fā)速度,c語言程序的可讀性比匯編語言好得多,對(duì)于程序的改進(jìn)和擴(kuò)充也方便得多,因此越來越多的設(shè)計(jì)人員選用c語言來開發(fā)單片機(jī)控制程序8。鑒于c語言在功

28、能上、結(jié)構(gòu)性、可讀性和可維護(hù)性上比匯編有明顯的優(yōu)勢(shì),編程有眾多優(yōu)點(diǎn),在本設(shè)計(jì)中,采用的是c語言編寫程序。一、c語言的關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、存儲(chǔ)類型關(guān)鍵字和其它關(guān)鍵字四類。 1.數(shù)據(jù)類型關(guān)鍵字(12個(gè)):l char :聲明字符型變量或函數(shù) l double :聲明雙精度變量或函數(shù) l enum :聲明枚舉類型 l float:聲明浮點(diǎn)型變量或函數(shù) l int: 聲明整型變量或函數(shù) l long :聲明長(zhǎng)整型變量或函數(shù) l short :聲明短整型變量或函數(shù) l signed:聲明有符號(hào)類型變量或函數(shù) l struct:聲明結(jié)構(gòu)體變量或函數(shù)

29、l union:聲明共用體(聯(lián)合)數(shù)據(jù)類型 l unsigned:聲明無符號(hào)類型變量或函數(shù) l void :聲明函數(shù)無返回值或無參數(shù),聲明無類型指針(基本上就這三個(gè)作用)2.控制語句關(guān)鍵字(12個(gè)):(1)循環(huán)語句 l for:一種循環(huán)語句(可意會(huì)不可言傳)l do :循環(huán)語句的循環(huán)體l while :循環(huán)語句的循環(huán)條件l break:跳出當(dāng)前循環(huán)l continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)(2)條件語句 l if: 條件語句 l else :條件語句否定分支(與 if 連用)l goto:無條件跳轉(zhuǎn)語句 (3)開關(guān)語句 l switch :用于開關(guān)語句l case:開關(guān)語句分支l de

30、fault:開關(guān)語句中的“其他”分支(4)返回語句l return :子程序返回語句(可以帶參數(shù),也看不帶參數(shù))3.存儲(chǔ)類型關(guān)鍵字(4個(gè)) l auto :聲明自動(dòng)變量 一般不使用 l extern:聲明變量是在其他文件正聲明(也可以看做是引用變量) l register:聲明積存器變量 l static :聲明靜態(tài)變量4.其它關(guān)鍵字(4個(gè)):l const :聲明只讀變量 l sizeof:計(jì)算數(shù)據(jù)類型長(zhǎng)度 l typedef:用以給數(shù)據(jù)類型取別名(當(dāng)然還有其他作用l volatile:說明變量在程序執(zhí)行中可被隱含地改變二、c語言中的9中控制語句l goto語句:無條件轉(zhuǎn)向; l if語句:

31、判斷語句; l while循環(huán)語句; l do-while語句:先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立. 之后繼續(xù)循環(huán); l for語句:循環(huán),可替代while語句; 只是用法不同; l break語句跳出本層的循環(huán);(只跳出包含此語句的循環(huán)) l continue語句:繼續(xù)(一般放到循環(huán)語句里,不在執(zhí)行它下面的語句,直接跳到判斷語句例:for語句,就直接跳到第二個(gè)分號(hào)處,while語句,就直接跳到while()的括號(hào)里; l switch語句:多相選擇; l return語句:返回;4.3 單片機(jī)主程序的軟件設(shè)計(jì)由于系統(tǒng)程序比較復(fù)雜,為了便于編寫、調(diào)試、修改,統(tǒng)程序的編寫采用了模塊化的結(jié)構(gòu),

32、整個(gè)系統(tǒng)包括主模塊、初始化模塊、溫度檢測(cè)模塊、中斷服務(wù)模塊、控制算法模塊、輸出控制模塊等幾個(gè)部分,其軟件總體結(jié)構(gòu)如圖4-1所示。主模塊初始化溫度檢測(cè)模塊控制算法模塊中斷服務(wù)模塊控制輸出模塊串口通信模塊圖4-1單片機(jī)軟件總體結(jié)構(gòu)初始化讀溫度處理溫度數(shù)據(jù)顯示溫度傳送溫度至pc機(jī) 初始化端口開機(jī)顯示8888開機(jī)先轉(zhuǎn)換一次溫度初始化定時(shí)器開啟定時(shí)器圖4-2單片機(jī)程序結(jié)構(gòu)框圖 圖4-3單片機(jī)程序初始化結(jié)構(gòu)4.4 單片機(jī)中斷服務(wù)子程序的實(shí)現(xiàn)中斷是指當(dāng)計(jì)算機(jī)執(zhí)行正常程序時(shí),由于系統(tǒng)中出現(xiàn)某些需要緊急處理的情況或特殊請(qǐng)求時(shí),計(jì)算機(jī)打斷當(dāng)前正在運(yùn)行的程序,轉(zhuǎn)而對(duì)這些緊急情況進(jìn)行處理,處理完畢后,再返回繼續(xù)執(zhí)行原

33、來被打斷的程序。中斷控制方式使單片機(jī)在平時(shí)可以有充分的時(shí)間去處理主要事件,而當(dāng)外界有特殊情況需要處理時(shí)單片機(jī)也不會(huì)錯(cuò)過。充分地利用單片機(jī)的中斷功能,可以提高單片機(jī)的工作效率,尤其是在編制實(shí)時(shí)性要求較高的控制程序時(shí)。8051系列單片機(jī)的中斷共分2個(gè)優(yōu)先級(jí),5個(gè)中斷源。每個(gè)中斷源的優(yōu)先級(jí)都是可以編程的。8051單片機(jī)的5個(gè)中斷源分別是:l 外部中斷請(qǐng)求0,由int0輸入。l 外部中斷請(qǐng)求1,由int1輸入。l 片內(nèi)定時(shí)器/計(jì)數(shù)器0溢出中斷請(qǐng)求。l 片內(nèi)定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求。l 片內(nèi)串行口發(fā)送/接收中斷請(qǐng)求。除了以上5個(gè)中斷外,對(duì)于8052系列單片機(jī)來說,還增加了一個(gè)片內(nèi)定時(shí)器/計(jì)數(shù)器2溢出

34、中斷請(qǐng)求。一、定時(shí)中斷服務(wù)程序通過單片機(jī)內(nèi)部的定時(shí)器t0進(jìn)行10ms定時(shí),再通過寄存器進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)2s定時(shí)中斷的要求。進(jìn)入中斷服務(wù)程序后,可進(jìn)行當(dāng)前溫度的檢測(cè)及顯示,根據(jù)所測(cè)值與設(shè)定值比較進(jìn)行溫度控制等。圖4-4為定時(shí)器t0中斷服務(wù)程序流程圖。圖4-4定時(shí)器t0中斷服務(wù)程序流程圖二、串行口發(fā)送/接收中斷服務(wù)程序串口通信原理:串口通訊對(duì)單片機(jī)而言意義重大,不但可以實(shí)現(xiàn)將單片機(jī)的數(shù)據(jù)傳輸?shù)接?jì)算機(jī)端,而且也能實(shí)現(xiàn)計(jì)算機(jī)對(duì)單片機(jī)的控制。由于其所需電纜線少,接線簡(jiǎn)單,所以在較遠(yuǎn)距離傳輸中,得到了廣泛的運(yùn)用。以下對(duì)串口通信中一些需要注意的地方作一點(diǎn)說明:1.波特率選擇波特率(boud rate)就是在

35、串口通信中每秒能夠發(fā)送的位數(shù)(bits/second)。mcs-51串行端口在四種工作模式下有不同的波特率計(jì)算方法。其中,模式0和模式2波特率計(jì)算很簡(jiǎn)單,請(qǐng)同學(xué)們參看教科書;模式1和模式3的波特率選擇相同,故在此僅以工作模式1為例來說明串口通信波特率的選擇。在串行端口工作于模式1,其波特率將由計(jì)時(shí)/計(jì)數(shù)器1來產(chǎn)生,通常設(shè)置定時(shí)器工作于模式2(自動(dòng)再加模式)。在此模式下波特率計(jì)算公式為:波特率=(1+smod)*晶振頻率/(384*(256-th1)其中,smod寄存器pcon的第7位,稱為波特率倍增位; th1定時(shí)器的重載值。在選擇波特率的時(shí)候需要考慮兩點(diǎn):首先,系統(tǒng)需要的通信速率。這要根據(jù)系

36、統(tǒng)的運(yùn)作特點(diǎn),確定通信的頻率范圍。然后考慮通信時(shí)鐘誤差。使用同一晶振頻率在選擇不同的通信速率時(shí)通信時(shí)鐘誤差會(huì)有很大差別。為了通信的穩(wěn)定,我們應(yīng)該盡量選擇時(shí)鐘誤差最小的頻率進(jìn)行通信。下面舉例說明波特率選擇過程:假設(shè)系統(tǒng)要求的通信頻率在20000bit/s以下,晶振頻率為12mhz,設(shè)置smod=1(即波特率倍增)。則th1=256-62500/波特率根據(jù)波特率取值表,我們知道可以選取的波特率有:1200,2400,4800,9600,19200。列計(jì)數(shù)器重載值,通信誤差如下表:表4-1 通信誤差因此,在通信中,最好選用波特率為1200,2400,4800中的一個(gè)。2.通信協(xié)議的使用通信協(xié)議是通信

37、設(shè)備在通信前的約定。單片機(jī)、計(jì)算機(jī)有了協(xié)議這種約定,通信雙方才能明白對(duì)方的意圖,以進(jìn)行下一步動(dòng)作。假定我們需要在pc機(jī)與單片機(jī)之間進(jìn)行通信,在雙方程式設(shè)計(jì)過程中,有如下約定:0xa1:?jiǎn)纹瑱C(jī)讀取p0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回pc機(jī);0xa2:?jiǎn)纹瑱C(jī)從pc機(jī)接收一段控制數(shù)據(jù);0xa3:?jiǎn)纹瑱C(jī)操作成功信息。在系統(tǒng)工作過程中,單片機(jī)接收到pc機(jī)數(shù)據(jù)信息后,便查找協(xié)議,完成相應(yīng)的操作。當(dāng)單片機(jī)接收到0xa1時(shí),讀取p0端口數(shù)據(jù),并將讀取數(shù)據(jù)返回pc機(jī);當(dāng)單片機(jī)接收到0xa2時(shí),單片機(jī)等待從pc機(jī)接收一段控制數(shù)據(jù);當(dāng)pc機(jī)接收到0xa3時(shí),就表明單片機(jī)操作已經(jīng)成功。通過單片機(jī)內(nèi)部的定時(shí)器1工作于8位自動(dòng)

38、重載模式, 用于產(chǎn)生波特率。進(jìn)入中斷服務(wù)程序后,對(duì)數(shù)據(jù)進(jìn)行讀取,并對(duì)其進(jìn)行判斷處理。圖4-5為串口中斷服務(wù)程序流程圖。yn進(jìn)入串口中斷將數(shù)據(jù)存入寄存器根據(jù)命令執(zhí)行相應(yīng)操作讀數(shù)據(jù)是否命令圖4-5為串口中斷服務(wù)程序流程圖4.5 測(cè)溫芯片ds18b20驅(qū)動(dòng)子程序目前市場(chǎng)上溫度傳感器較多,有以下幾種: 方案一:選用鉑電阻溫度傳感器,此類溫度傳感器線性度、穩(wěn)定性等方面性能都很好, 其成本較高。 方案二:采用熱敏電阻,選用此類元器件有價(jià)格便宜的優(yōu)點(diǎn),但由于熱敏電阻的非線性特性會(huì)影響系統(tǒng)的精度。 方案三:ds18b20是dallas公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳to92小體積封裝形式;溫度測(cè)量范

39、圍為55125,可編程為9位12位a/d轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625。此器件具有體積小、質(zhì)量輕、線形度好、性能穩(wěn)定等優(yōu)點(diǎn)其各方面特性都滿足此系統(tǒng)的設(shè)計(jì)要求。 比較以上三種方案,方案三具有明顯的優(yōu)點(diǎn),因此選用方案三。 一、ds18b20的編程方法及工作時(shí)序ds18b20工作時(shí)必須嚴(yán)格遵守這些協(xié)義:總路線主機(jī)先對(duì)ds18b20進(jìn)行初始化,總線主機(jī)檢測(cè)到dsl820 的存在后便可以發(fā)出rom 操作命令之一,然后再發(fā)出存儲(chǔ)器操作命令,如溫度變換、讀暫存器。要用單片機(jī)控制ds18b20對(duì)溫度的采集只要根據(jù)ds18b20的初始化時(shí)序、寫時(shí)序和讀時(shí)序,分別編寫5個(gè)子程序:init為初始化子程序,wr

40、ite為寫(命令或數(shù)據(jù))子程序,read為讀數(shù)據(jù)子程序,發(fā)送64位序列號(hào)子程序和串行發(fā)送溫度數(shù)據(jù)到pc機(jī)的子程序。然后在主程序中調(diào)用各個(gè)子程序就可實(shí)現(xiàn)溫度的采集和發(fā)送。下面是ds18b20的工作時(shí)序:1.初始化時(shí)序復(fù)位要求主cpu將數(shù)據(jù)線下拉500微秒,然后釋放,ds18b20收到信號(hào)后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號(hào)表示復(fù)位成功。2.讀時(shí)序ds18b20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成。3.寫時(shí)序ds18b20對(duì)寫0時(shí)序和

41、寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。二、程序的實(shí)現(xiàn)先讓所有的ds18b20復(fù)位,然后發(fā)跳過rom匹配命令,再發(fā)出溫度轉(zhuǎn)換命令,讓所有的ds18b20進(jìn)行溫度轉(zhuǎn)換,延時(shí)等待轉(zhuǎn)換完畢后,再將已轉(zhuǎn)換的溫度值一一地從各個(gè)ds18b20取出,轉(zhuǎn)換成ascall碼后再發(fā)送到pc機(jī)上,如此循環(huán)。程序框圖如下圖4-6示。圖4-6 讀溫度程序框圖三、溫度處理方法18b20進(jìn)行溫度轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18b20的兩個(gè)8比特的ram

42、中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.25即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.25即可得到實(shí)際溫度。具體程序如下:/*讀出溫度函數(shù)*/read_temp()ow_reset(); /總線復(fù)位write_byte(0xcc); / 發(fā)skip rom命令write_byte(0xbe); / 發(fā)讀命令temp_data0=read_byte(); /溫度低8位temp_data1=read_byte(); /溫度高8位ow_reset();write_byte(0xcc); / skip romwrit

43、e_byte(0x44); / 發(fā)轉(zhuǎn)換命令上面這個(gè)程序使溫度低8位放在temp_data0中,溫度高8位放在temp_data1中。4.6 pwm控制9為了設(shè)計(jì)高精度溫控儀對(duì)電熱管的加熱功率進(jìn)行連續(xù)控制,可采用pwm技術(shù),由pid控制算法得到的增量式算式 作輸出,直接改變電熱管通斷占空比,從而可實(shí)現(xiàn)對(duì)溫度的高精度閉環(huán)連續(xù)控制。在圖4-7左圖中,單片機(jī)輸出位控信號(hào),經(jīng)1413驅(qū)動(dòng)固態(tài)繼電器,由雙向可控硅作無觸點(diǎn)交流開關(guān)以控制電熱管加熱。只要使 輸出與電熱管通電時(shí)間成正比,即可實(shí)現(xiàn)加熱功率的連續(xù)調(diào)節(jié),控制原理如圖4-7右圖所示。為此,可在eprom中開辟 單元用來存放pwm周期(可預(yù)置),用來存放

44、加熱時(shí)間 ,而 則用來存放關(guān)斷時(shí)間 。在一個(gè)采樣周期內(nèi),將 的差值存于v單元,將 的值存于 單元,然后利用單片機(jī)內(nèi)部中斷源構(gòu)成10ms定時(shí)器,每產(chǎn)生一個(gè)10ms定時(shí)中斷則 單元的數(shù)減1,直到 單元的數(shù)為零則使 由高電平變?yōu)榈碗娖剑蝗?為負(fù)值則 單元賦值為00h, 單元賦值為 ,這樣就可以做到溫度偏差量與電熱管加熱時(shí)間成正比。1413圖4-7 電熱管pwm控制原理我國(guó)電力供電電壓頻率50hz,固態(tài)繼電器大多采用過零型,則最小可準(zhǔn)確到一個(gè)波頭,1s有100個(gè)波頭,取2s為一個(gè)功率輸出周期,pwm控制方式的功率誤差就是1/200,即0.5%。實(shí)際情況還有些變動(dòng),pwm調(diào)制輸出可能沒問題,但脈寬中電平

45、由低變?yōu)楦唠娖綍r(shí),電壓波形不會(huì)正好在過零點(diǎn),可能在兩過零點(diǎn)之一間(圖4-7右圖),實(shí)際控制輸出的功率也就存在一定的誤差,有最大0.5%的誤差10。但對(duì)本系統(tǒng)沒什么影響。pwm在程序上的實(shí)現(xiàn)也很簡(jiǎn)單,用一個(gè)循環(huán)來輸出周期脈沖,如下程序:for(j=0;jtime;j+)/time為脈沖周期(以10ms為單位)if(jout) /out為控制脈寬的輸出變量outp=jopen; /接通繼電器elseoutp=jclose; /判斷繼電器delay10ms(1);4.7 pc機(jī)程序設(shè)計(jì)pc機(jī)程序中包括串口通信模塊,繪圖模塊,命令按妞模塊,溫度顯示模塊等。一、串口通信模塊在本設(shè)計(jì)中,采用mscomm控

46、件進(jìn)行串口的通訊,mscomm控件串口具有完善的串口數(shù)據(jù)的發(fā)送和接收功能。通過此控件,pc機(jī)可以利用串行口與其它設(shè)備實(shí)現(xiàn)輕松連接,簡(jiǎn)單高效地實(shí)現(xiàn)設(shè)備之間的通訊。此控件的事件響應(yīng)有兩種處理方式,事件驅(qū)動(dòng)方式:由mscomm控件的oncomm事件捕獲并處理通訊錯(cuò)誤及事件;查詢方式:通過檢查commevent屬性的值來判斷事件和錯(cuò)誤。 以下是mscomm控件的常用屬性和方法:l commport:設(shè)置或返回串行端口號(hào),其取值范圍為199,缺省為1。l settings:設(shè)置或返回串行端口的波特率、奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)、停止位。如:mscomm.setting=9600, n, 8, 1”。l por

47、topen:打開或關(guān)閉串行端口。l inputmode:設(shè)置或返回接收數(shù)據(jù)的類型。l inputlen:設(shè)置或返回一次從接收緩沖區(qū)中讀取字節(jié)數(shù)。l inbuffersize:設(shè)置或返回接收緩沖區(qū)的大小,缺省值為1024字節(jié)。l inbuffercount:設(shè)置或返回接收緩沖區(qū)中等待計(jì)算機(jī)接收的字符數(shù)。l input:從接收緩沖區(qū)中讀取數(shù)據(jù)并清空該緩沖區(qū),該屬性設(shè)計(jì)時(shí)無效,運(yùn)行時(shí)只讀。l outbuffersize:設(shè)置或返回發(fā)送緩沖區(qū)的大小,缺省值為512字節(jié)。l outbuffercount:設(shè)置或返回發(fā)送緩沖區(qū)中等待計(jì)算機(jī)發(fā)送的字符數(shù)。l output:向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù),該屬性設(shè)計(jì)時(shí)無

48、效,運(yùn)行時(shí)只讀。l rthreshold:該屬性為一閥值。當(dāng)接收緩沖區(qū)中字符數(shù)達(dá)到該值時(shí),mscomm控件設(shè)置commevent屬性為comevreceive,并產(chǎn)生oncomm事件。用戶可在oncomm事件處理程序中進(jìn)行相應(yīng)處理。若rthreshold屬性設(shè)置為0,則不產(chǎn)生oncomm事件。例如用戶希望接收緩沖區(qū)中達(dá)到一個(gè)字符就接收一個(gè)字符,可將rthreshold設(shè)置為1。這樣接收緩沖區(qū)中接收到一個(gè)字符,就產(chǎn)生一次oncomm事件。l sthreshold:該屬性亦為一閥值。當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值時(shí),mscomm控件設(shè)置commevent屬性為comevsend,并產(chǎn)生oncomm事

49、件。若sthreshold屬性設(shè)置為0,則不產(chǎn)生oncomm事件。要特別注意的是僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)小于該值的瞬間才產(chǎn)生oncomm事件,其后就不再產(chǎn)生oncomm事件。例如sthreshold設(shè)置為3,僅當(dāng)發(fā)送緩沖區(qū)中字符數(shù)從3降為2時(shí),mscomm控件設(shè)置commevent屬性為comevsend,同時(shí)產(chǎn)生oncomm事件,如發(fā)送緩沖區(qū)中字符始終為2,則不會(huì)再產(chǎn)生oncomm事件。這就避免了發(fā)送緩沖區(qū)中數(shù)據(jù)未發(fā)送完就反復(fù)發(fā)生oncomm事件。l commevent:這是一個(gè)非常重要的屬性。該屬性設(shè)計(jì)時(shí)無效,運(yùn)行時(shí)只讀。一旦串口發(fā)生通信事件或產(chǎn)生錯(cuò)誤,依據(jù)產(chǎn)生的事件和錯(cuò)誤,mscomm控件

50、為commevent屬性賦不同的代碼,同時(shí)產(chǎn)生oncomm事件。用戶程序就可在oncomm事件處理程序中針對(duì)不同的代碼,進(jìn)行相應(yīng)的處理。mscomm控件的部分屬性設(shè)置實(shí)例:select case com.listindex case 0 mscomm1.commport = 1 case 1 mscomm1.commport = 2 case 2 mscomm1.commport = 3 case 3 mscomm1.commport = 4end select 指定端口號(hào)(com) mscomm1.settings = 9600,n,8,1 2400波特,無校驗(yàn),8位數(shù)據(jù)位,1位停止位 ms

51、comm1.inputmode = cominputmodetext 接收文本數(shù)據(jù) mscomm1.inputlen = 0 讀出接收緩沖區(qū)的所有內(nèi)容 mscomm1.inbuffersize = 1024 mscomm1.outbuffersize = 1024 mscomm1.rthreshold = 1 每接收到1個(gè)字符,發(fā)生1次事件 mscomm1.portopen = true 打開串口接收程序?qū)嵗簆rivate sub mscomm1_oncomm()select case mscomm1.commeventcase comevreceivetext1.text = text1.

52、text & mscomm1.inputcase elseend selectend sub發(fā)送程序?qū)嵗簆rivate sub command1_click()mscomm1.output = trim(text2.text)end sub二、繪圖模塊在vb中,繪圖可以利用line和circle方法繪制幾何圖形11,還可以利用mschart控件繪制各種圖表。而本設(shè)計(jì)就采用mschart控件進(jìn)形繪制溫度變化曲線圖。mschart控件在繪制直方圖(條形圖)、折線圖、餅圖、標(biāo)記圖、填充區(qū)域圖等各種常用的數(shù)據(jù)分析圖形方面有很大的優(yōu)勢(shì),我們只要將需按圖形表示的數(shù)據(jù)裝入數(shù)組中,然后將數(shù)組數(shù)據(jù)賦值給msc

53、hart控件,再進(jìn)行一些簡(jiǎn)單的圖形標(biāo)題、背景、圖例、注腳方面的定義,就可以得到所期望的數(shù)據(jù)分析圖形。mschart控件的系統(tǒng)默認(rèn)名是:mschart1、mschart2等。由于mschart控件不是vb內(nèi)建的基本控件,因此在使用前必須用工程菜單中的“部件”,添加mschart控件。添加mschart控件的選項(xiàng)是“microsoft chart control 6.0(oledb)”。當(dāng)我們?cè)趘b的工具箱中添加了mschart控件,并在窗體中“畫”出mschart控件后,可見到如下圖形:圖7.31.設(shè)置mschart系列數(shù)據(jù)與圖表類型:(1)mschart的系列通過對(duì)圖7.3的分析,我們可以看到mschart圖表中將數(shù)據(jù)分組顯示。如圖中r1、r2、r3、r4、r5各代表一個(gè)組,一組相關(guān)的數(shù)據(jù)在繪圖中稱為一個(gè)“系列”,一張圖表可由一個(gè)或多個(gè)系列構(gòu)成。若mschart控件被賦值一個(gè)一維數(shù)組數(shù)據(jù),則它所顯示的數(shù)據(jù)圖形只繪制出一個(gè)系列的圖表。若一維數(shù)組中的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論