2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  智能儀表綜合訓練設計說明書</p><p>  題 目:數(shù)字PID控制器設計(LCD顯示)</p><p><b>  學生姓名:</b></p><p><b>  學 號:</b></p><p>  專 業(yè):測控技術與儀器</p><

2、p><b>  班 級:</b></p><p><b>  指導教師:</b></p><p><b>  摘 要</b></p><p>  目前工業(yè)自動化水平已成為衡量各行各業(yè)現(xiàn)代化水平的一個重要標志。同時,控制理論的發(fā)展也經(jīng)歷了古典控制理論、現(xiàn)代控制理論和能控制理論三個段。在工業(yè)

3、過程控制中,由于控制對象的精確數(shù)學模型難以建立,系統(tǒng)的參數(shù)又經(jīng)常發(fā)生變化,運用現(xiàn)代控制理論分析綜合要耗費很大代價進行模型辨識,建立系統(tǒng)的數(shù)學模型十分困難,應用直接數(shù)字控制方法比較困難,所以人們在過程控制系統(tǒng)中大部分采用PID(Proportion Integration Differentiation.比例-積分-微分控制器)數(shù)字調(diào)節(jié)器。</p><p>  此次智能儀表課程設計要求是設計一種數(shù)字PID控制器,該

4、數(shù)字調(diào)節(jié)器采用 STC89C51單片機作為主控單元,采用ADC0832作為A/D轉換器,具有數(shù)字濾波等功能,通過PID算法實現(xiàn)調(diào)節(jié)功能,調(diào)節(jié)器設定值、參數(shù)可通過四個獨立按鍵設置,采用DS1602 LCD數(shù)字顯示,用PWM脈寬調(diào)制電路輸出電壓信號。</p><p>  關鍵詞:數(shù)字調(diào)節(jié)器;A/D轉換器;PID控制算法;四獨立按鍵;PWM脈寬調(diào)制電路。</p><p><b>  第

5、一章 前言</b></p><p>  1.1數(shù)字PID控制器概述</p><p>  在過程控制中按偏差的比例(P)、積分(I)和微分(D)進行控制的PID調(diào)節(jié)器(亦稱PID控制器)是應用頗為廣泛的一種調(diào)節(jié)器。它具有原理簡單,易于實現(xiàn),健壯性強和適用面廣等優(yōu)點。在計算機應用于生產(chǎn)過程以前,過程控制中采用的氣動、液動和電動PID調(diào)節(jié)器幾乎一直占壟斷地位。計算機的出現(xiàn)和它在過程

6、控制中的應用使這種情況開始有所改變。20多年來相繼出現(xiàn)一批復雜的、只有計算機才能實現(xiàn)的控制算法。然而目前在工業(yè)過程控制中,由于工業(yè)對象的動態(tài)特性未被完全掌握,得不到精確的數(shù)學模型,難以滿足控制理論的分析要求,在決定系統(tǒng)參數(shù)時,往往要借助現(xiàn)場調(diào)試及經(jīng)驗,在這種場合,PID調(diào)節(jié)器就更能顯示出它的威力,應用范圍越來越廣。即使在過程計算機控制中,PID控制仍然是應用最廣泛的控制算法。不過,用計算機實現(xiàn)PID控制,就不僅僅是簡單地把PID控制規(guī)律

7、數(shù)字化,而是進一步與計算機的邏輯判斷能力結合起來,使PID控制更加靈活多樣,更能滿足生產(chǎn)過程提出的各種各樣的要求。PID調(diào)節(jié)的實質(zhì)就是根據(jù)輸入的偏差值,按比例、積分、微分的函數(shù)關系進行運算,運算結果用以控制輸出。這里需要說明的是數(shù)字式PID應用是有條件的。在系統(tǒng)的時間常</p><p>  在現(xiàn)代工業(yè)控制中, 過程控制技術是一歷史較為久遠的分支。目前,在某些工業(yè)及其他領域的過程控制系統(tǒng)中,簡單的單回路控制已不能滿

8、足控制的要求。因此又設計出了串級控制系統(tǒng)、比值控制系統(tǒng)、均勻控制系統(tǒng)、前饋控制系統(tǒng)、選擇性控制系統(tǒng)、分程及閥位控制系統(tǒng)和一些新型控制系統(tǒng)等來對一些參數(shù)(如壓力、流量、溫度、成分、物位等)進行檢測控制。在各種控制系統(tǒng)中控制器是必不可少的部分,數(shù)字PID控制器更是發(fā)揮著它靈活多樣的特性。在實際應用中,根據(jù)被控對象的特性和控制要求,可以靈活地改變PID的結構,取其中的一部分環(huán)節(jié)構成控制規(guī)律,比如比例(P)調(diào)節(jié)、比例積分(PI)調(diào)節(jié)、比例積分微

9、分(PID)調(diào)節(jié)等。特別是在計算機控制系統(tǒng)中,更可以靈活應用,以充分發(fā)揮計算機作用。</p><p>  1.2 PID調(diào)節(jié)器簡介</p><p>  1.2.1比例調(diào)節(jié)(P)</p><p>  比例調(diào)節(jié)器的微分方程為:</p><p><b>  (1-1)</b></p><p>  式中:

10、y為調(diào)節(jié)器的輸出,e(t)為調(diào)節(jié)器的輸入,一般為偏差值,即e(t)=U(R)-Ui(k),kp為比列系數(shù)。</p><p>  由上式可以看出,調(diào)節(jié)器的輸出y與輸入偏差e(t)成正比。因此,只要偏差e(t)一出現(xiàn),就能及時地產(chǎn)生與之成比例的調(diào)節(jié)作用,具有調(diào)節(jié)及時的特點,它是最基本的一種調(diào)節(jié)規(guī)律。</p><p>  比例調(diào)節(jié)的特性曲線,如圖1.1所示。</p><p&g

11、t;  比例調(diào)節(jié)作用的大小,除了與偏差e(t)有關外,主要取決于比例系數(shù)Kp,比例系數(shù)愈大,調(diào)節(jié)作用愈強,動態(tài)特性也愈好。反之,比例系統(tǒng)愈小,調(diào)節(jié)作用愈弱。但對于大多數(shù)慣性環(huán)節(jié)Kp太大時會引起白激振蕩。 [1]</p><p>  圖1.1階躍響應特性曲線 </p><p>  1.2.2 比例-積分調(diào)節(jié)器(PI)</p><p> 

12、 積分作用是指調(diào)節(jié)器的輸出與輸入偏差的積分成比例的作用,其積分方程為:</p><p><b>  (1-2)</b></p><p>  Ti為積分時間常數(shù),它表示積分速度的大小,Ti越大,積分速度越慢,積分作用越弱。反之Ti越小,積分速度越快,積分作用越強,積分作用的響應特性曲線,如圖1.2所示。積分作用的特點是調(diào)節(jié)器的輸出與偏差存在時間有關,只要有偏差存在,輸出

13、就會隨時間不斷增長,直到偏差消除,調(diào)節(jié)器的輸出才不再變化。因此,積分作用能消除靜差,這是它的主要優(yōu)點。但從圖1.2中可以看出,積分作用的動作緩慢,而且在偏差剛一出現(xiàn)時,調(diào)節(jié)器作用很弱,不能及時克服擾動的影響,致使被調(diào)參數(shù)的動態(tài)偏差增大,調(diào)節(jié)過程增長,因此,它很少被單獨使用。</p><p>  圖1.2 積分作用相應曲線圖 </p><p>  PI調(diào)節(jié)器綜合了P、I

14、兩種調(diào)節(jié)的優(yōu)點,利用P調(diào)節(jié)快速抵消干擾的影響,同時利用I調(diào)節(jié)消除靜差。</p><p>  1.2.3 比例-微分調(diào)節(jié)器(PD)</p><p>  自動控制系統(tǒng)在克服誤差的調(diào)節(jié)過程中可能會出現(xiàn)振蕩甚至失穩(wěn)。解決的辦法是使抑制誤差的作用的變化“超前”,即在誤差接近零時,抑制誤差的作用就應該是零。這就是說,在控制器中僅引入 “比例”項往往是不夠的,比例項的作用僅是放大誤差的幅值,而目前需要增

15、加的是“微分項”,它能預測誤差變化的趨勢,這樣,具有比例+微分的控制器,就能夠提前使抑制誤差的控制作用等于零,甚至為負值,從而避免了被控量的嚴重超調(diào)。所以對有較大慣性或滯后的被控對象,比例+微分(PD)控制器能改善系統(tǒng)在調(diào)節(jié)過程中的動態(tài)特性。 </p><p><b>  微分方程為:</b></p><p><b>  (1-3)</b><

16、;/p><p>  式中,TD為微分時間常數(shù)。</p><p>  微分作用響應曲線,如圖1.3所示。</p><p>  圖1.3微分作用相應特性曲線 圖1.4 PD調(diào)節(jié)器的階躍響應特性曲線</p><p>  從圖1.3中可以看出,在t=to時加入階躍信號,此時輸出值y變化的速度很大(理論上為無窮大),當t>

17、to時,其輸出值y迅速變?yōu)?。這里需要說明,微分作用的特點是,輸出只能反應偏差輸入變化的速度,而對于一個固定不變的偏差,不管其數(shù)值多大,根本不會有微分作用輸出。因此,微分作用不能消除靜差,而只能在偏差剛剛出現(xiàn)的時刻產(chǎn)生一個很大的調(diào)節(jié)作用。</p><p>  微分調(diào)節(jié)只能起輔助的調(diào)節(jié)作用,需要與比例作用配合使用,構成PD調(diào)節(jié)器。實際PD調(diào)節(jié)器的階躍響應曲線,如圖1.4所示,從圖1.4曲線可以看出,當偏差剛出現(xiàn)的瞬

18、間,PD調(diào)節(jié)器輸出一個很大的階躍信號,然后按指數(shù)下降,以至最后微分作用完全消失,變成一個純比例調(diào)節(jié)。微分作用的強弱可以用改變微分時間常數(shù)Td來進行調(diào)節(jié)。</p><p>  1.2.4比例-積分-微分調(diào)節(jié)器(PID)</p><p>  為了進一步改善調(diào)節(jié)品質(zhì),往往把比例、積分、微分三種作用組合起來,形成PID三作用調(diào)節(jié)器。理想的P1D微分方程為:</p><p>

19、<b>  (1-4)</b></p><p>  對于一個PID三作用調(diào)節(jié)器,在階躍信號作用下,首先是比例和微分作用,使其調(diào)節(jié)作用加強,然后再進行積分,直到最后消除靜差為止。因此,采用PID調(diào)節(jié)器,無論從靜態(tài),還是從動態(tài)的角度來說,調(diào)節(jié)品質(zhì)均得到了改善,從而使得PID調(diào)節(jié)器成為一種應用最為廣泛的調(diào)節(jié)器。</p><p>  這里要說明的是,并非所有系統(tǒng)都需要使用PI

20、D調(diào)節(jié)器,在工業(yè)控制系統(tǒng)中, PI、PD調(diào)節(jié)器也常常被人們所采用,因為它們比較簡單。究競使用哪一種調(diào)節(jié)器合適,只有根據(jù)具體情況,并根據(jù)現(xiàn)場實驗進行選定。</p><p>  第二章 數(shù)字PID控制器總體方案設計</p><p>  2.1數(shù)字PID調(diào)節(jié)器的構成</p><p>  數(shù)字PID 調(diào)節(jié)器就是將模擬信號( 包括電流、電壓) 通過AD 轉換變?yōu)閿?shù)字信號, 微

21、處理器(本設計采用單片機)再將數(shù)字信號通過一定的算法進行一定的處理, 然后將處理過后的數(shù)字信號通過DA 轉換為模擬信號輸出。該數(shù)字調(diào)節(jié)器采用 STC89C51單片機作為主控單元,采用ADC0832作為A/D轉換器,具有數(shù)字濾波等功能,通過PID算法實現(xiàn)調(diào)節(jié)功能,調(diào)節(jié)器的參數(shù)可通過四個獨立按鍵設置,采用DS1602 LCD數(shù)字顯示,用PWM脈寬調(diào)制電路輸出電壓信號以驅(qū)動執(zhí)行機構。傳統(tǒng)的調(diào)節(jié)器多為模擬調(diào)節(jié)器,這種調(diào)節(jié)器多用電動或氣動單元組合

22、儀表來完成隨著微機的不斷發(fā)展和應用,特別是單片機在控制領域廣泛應用,利用計算機軟件實現(xiàn)控制算法,具有更大的靈活性、可靠性和更好的控制效果。因此,以單片機為中心、采用數(shù)字算法的數(shù)字調(diào)節(jié)器正不斷代替模擬調(diào)節(jié)器。如圖2.1所示單片機系統(tǒng)首先通過轉換電路采集過程變量,然后計算偏差和輸出控制變量,最后將控制變量、經(jīng)轉換后輸出到執(zhí)行機構控制輸入量,使過程變量穩(wěn)定在設定值,達到控制目的。</p><p>  圖2.1 所示的P

23、ID調(diào)節(jié)器以單片機STC89C51(實現(xiàn)PID算法)為核心,其他還包括:A/D 模塊、1602 LCD顯示模塊、按鍵模塊和PWM輸出模塊。</p><p>  圖2.1調(diào)節(jié)器結構框圖</p><p>  2.2 PID調(diào)節(jié)器的控制原理</p><p>  在工程實際中,應用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制。PID控制器自問世以來以其結構

24、簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術之一。當被控對象的結構和參數(shù)不能完全掌握,或得不到精確的數(shù)學模型時,控制理論的其它技術難以采用時,系統(tǒng)控制器的結構和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應用PID控制技術最為方便。即當我們不完全了解一個系統(tǒng)和被控對象﹐或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術。</p><p>  PID控制器實質(zhì)就是根據(jù)輸入的偏差值,按比例、積分

25、、微分的函數(shù)關系進行運算,運算結果用以控制輸出,其輸出值再經(jīng)過PWM輸出電壓信號送給執(zhí)行機構進行調(diào)節(jié)控制。</p><p>  第三章 數(shù)字PID控制器硬件設計</p><p>  3.1 主處理器的選擇</p><p>  本次課程設計的主處理器是宏晶科技推出的新一代超強抗干擾、高速、低功耗的STC89C51 RC單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時

26、鐘/機器周期和6時鐘/機器周期可任意選擇。</p><p><b>  其主要參數(shù)如下:</b></p><p>  最高時鐘頻率范圍為:0~80M</p><p>  FLASH存儲器:4K</p><p>  片上集成1280字節(jié)/512字節(jié)RAM</p><p>  E2P ROM:2K+&

27、lt;/p><p>  工作電壓:5.5V~3.4V(5V單片機)</p><p>  共三個16位定時器/計數(shù)器,其中定時器0還可以當成2個8位定時器使用。</p><p>  通用I/O口(32/36個),復位后為:P1/P2/P3/P4是準雙向口/弱上拉(普通8051傳統(tǒng)I/O口),P0口是開漏輸出,作為總線擴展時,不用加上拉電阻,作為I/O口時需加上拉電阻。&l

28、t;/p><p>  中斷源:8個,優(yōu)先級:4個。</p><p>  其管腳圖如下圖3.1所示。</p><p>  圖3.1 STC89C51管腳圖</p><p>  3.2 A/D轉換器ADC0832簡介   </p><p>  3.2.1 ADC0832 的特點</p><p> 

29、 ADC0832 為8位分辨率A/D轉換芯片,其最高分辨可達256級,可以適應一般的模擬量轉換要求。其內(nèi)部電源輸入與參考電壓的復用,使得芯片的模擬電壓輸入在0~5V之間。芯片轉換時間僅為32μS,據(jù)有雙數(shù)據(jù)輸出可作為數(shù)據(jù)校驗,以減少數(shù)據(jù)誤差,轉換速度快且穩(wěn)定性能強。獨立的芯片使能輸入,使多器件掛接和處理器控制變的更加方便。通過DI 數(shù)據(jù)輸入端,可以輕易的實現(xiàn)通道功能的選擇。</p><p><b>  

30、其主要參數(shù)如下:</b></p><p><b>  8位分辨率;</b></p><p><b>  雙通道A/D轉換;</b></p><p>  輸入輸出電平與TTL/CMOS相兼容;</p><p>  5V電源供電時輸入電壓在0~5V之間;</p><p&g

31、t;  工作頻率為250KHZ,轉換時間為32μS;</p><p>  一般功耗僅為15mW;</p><p>  8P、14P—DIP(雙列直插)、PICC 多種封裝;</p><p>  商用級芯片溫寬為0°C~+70°C,工業(yè)級芯片溫寬為?40°C~+85°C;</p><p><b>

32、;  芯片接口說明:</b></p><p>  片選使能,低電平芯片使能;</p><p>  CH0 模擬輸入通道0,或作為IN+/-使用;</p><p>  CH1 模擬輸入通道1,或作為IN+/-使用;</p><p>  GND 芯片參考0 電位(地);</p><p>  DI 數(shù)據(jù)信號輸入,

33、選擇通道控制;</p><p>  DO 數(shù)據(jù)信號輸出,轉換數(shù)據(jù)輸出;</p><p>  CLK 芯片時鐘輸入;</p><p>  Vcc/REF 電源輸入及參考電壓輸入(復用)。</p><p>  3.2.2單片機對ADC0832 的控制原理</p><p>  正常情況下ADC0832 與單片機的接口應為4條

34、數(shù)據(jù)線,分別是、CLK、DO、DI。但由于DO端與DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設計時可以將DO和DI 并聯(lián)在一根數(shù)據(jù)線上使用。當ADC0832未工作時其輸入端應為高電平,此時芯片禁用,CLK 和DO/DI 的電平可任意。當要進行A/D轉換時,須先將使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的

35、數(shù)據(jù)信號。在第1 個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入2 位數(shù)據(jù)用于選擇通道功能。作為單通道模擬信號輸入時ADC0832的輸入電壓是0~5V且8位分辨率時的電壓精度為19.53mV。如果作為由IN+與IN-輸入的輸入時,可是將電壓值設定在某一個較大范圍之內(nèi),從而提高轉換的寬度。但值得注意的是,在進行IN+與IN-的輸入時,如果IN-的電壓大于IN+的電壓則轉換后的數(shù)據(jù)結果始終為00H

36、。</p><p>  3.2.3 標度變換</p><p>  由于種物理參數(shù)有不同的量綱,如溫度為℃;壓力采用Pa;流量用m3/n 等。這些參數(shù)經(jīng)A/D轉換后,變成數(shù)字量信息輸出,這個數(shù)字量雖然代表參數(shù)值的大小,但并不一定等于原來帶有量綱的參數(shù)值,必須將它轉換成原來參數(shù)的真實值才能進行顯示,打印或使用,而這就需要標度變換。</p><p>  線性標度變換公式

37、如下:</p><p><b>  Ax:參數(shù)測量值</b></p><p>  Ao:參數(shù)量程起點值 </p><p>  Am:參數(shù)量程終點值 </p><p>  No:量程起點對應的A/D轉換值</p><p>  Nm:量程終點對應的A/D轉換值</p>

38、<p>  Nx:測量值對應的A/D值(采樣值),即濾波器的輸出值 </p><p>  此次課程設計要求將4-20mA的電流信號轉化為1-5V電壓信號,8位的ADC0832對應的數(shù)字量是51-255,(AD-51)/(255-51)=(v-1)/(5-1) 變換完的電壓電壓v=AD/51,而要顯示的是液位信號,1-5v電壓對應液位0-500mm,即:</p><p> 

39、 (Ax-Ao)/(Am-Ao)=(V-1)/(5-1)(Ao=0液位最小值,Am=500mm最大值) </p><p>  Ax=(V-1)*(Am-Ao)/4 +Ao=(AD-51)*(Am-Ao)/204.0 +Ao</p><p>  3.3 PID算法的實現(xiàn)</p><p>  3.3.1 PID算法的數(shù)字化</p><p>  在

40、模擬系統(tǒng)中,PID算法的表達式為:</p><p><b> ?。?-1)</b></p><p>  式中p(t)—調(diào)節(jié)器的輸出信號;</p><p>  e(t)—調(diào)節(jié)器的偏差信號,它等于給定值與測量值之差;</p><p>  kp—調(diào)節(jié)器的比例系數(shù);</p><p>  Ti—調(diào)節(jié)器的積分

41、時間;</p><p>  TD—調(diào)節(jié)器的微分時間。</p><p>  由于計算機控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差來計算所需控制量。因此,在計算機控制系統(tǒng)中,必須首先對式(3-1)進行離散化處理,用數(shù)字形式的差分方程代替連續(xù)系統(tǒng)的微分方程,此時積分項和微分項可用求和及增量式表示:</p><p>  (3-2) </p>

42、<p><b>  (3-3)</b></p><p>  將式(3-2)和式(3-3)代入式(3-1),則得到離散化的PID表達式:</p><p>  (3-4) 式中 △t=T—采樣周期,必須使T足夠小,才能保證系統(tǒng)有一定的精度;</p><p>  E(k)—第k次采樣時的偏差值;</p><p>

43、  E(k-1)—第(k-1)次采樣時的偏差值;</p><p>  k—采樣序號,k=0,1,2, ….;</p><p>  p(k)—第k次采樣時的調(diào)節(jié)器的輸出。</p><p>  由式(3-4)可以看出,要想計算p(k),不僅需要本次與上次的偏差信號E(k)和E(k-1),而且還要在積分項中把歷次的偏差信號E(j)進行相加,即E(j)。這樣,不僅計算煩瑣,

44、而且為保存E(j)還要占用很多內(nèi)存。因此,用式(3-4)直接進行控制很不方便。為此,我們做如下改動</p><p><b>  (3-5)</b></p><p>  用式(3-4)減去式(3-5),可得:(3-6)</p><p>  式中,----積分系數(shù);</p><p><b>  ----微分系數(shù)。&

45、lt;/b></p><p>  由式(3-6)可知,要計算第k次輸出值p(k),只需知道p(k-1), E(k), E(k-1), E(k-2)即可。在很多控制系統(tǒng)中,由于執(zhí)行機構式采用步進電機或多圈電位器進行控制的,所以,只要給一個增量信號即可。</p><p>  = (3-7)</p><p>  式(3-7)表示第K次輸出的增量△p(k),等于

46、第K-1次調(diào)節(jié)器的輸出值,即在第(K-1)次的基礎上增加(或減少)的量,所以式(3-7)叫增量型PID控制式。</p><p>  3.3.2 PID算法的程序設計</p><p>  由式(3-7)可知,增量型PID算式為:</p><p><b> ?。?-8)</b></p><p><b>  =<

47、;/b></p><p><b>  設 </b></p><p><b>  所以,有 </b></p><p>  △p(k)= △Pp(k)+ △Pi(k)+ △PD(k) (3-9)</p><p>  上式為離散化的增量型PID編程表達式。<

48、/p><p>  3.4 四獨立按鍵設計</p><p>  用四個獨立按鍵K1、K2、K3、K4實現(xiàn)PID調(diào)節(jié)器的設定值及Kp,Ki和Kd三個參數(shù)的設定。按鍵位置如圖(3.2)所示,仿真如圖(3.3)所示。PID調(diào)節(jié)的實質(zhì)就是根據(jù)輸入的偏差值,按比例、積分、微分的函數(shù)關系進行運算,運算結果用以控制輸出。</p><p>  K1 K2 K3

49、 K4</p><p>  圖3.2 按鍵位置圖</p><p>  圖3.3 按鍵仿真圖</p><p>  四個按鍵:K1接P1.4、K2接P1.5、K3接P1.6、K4接P1.7。K1是功能鍵,實現(xiàn)Sv、Kp、Ki、Kd四種模式選擇。K2是確認鍵,當鍵按下時可進行相應參數(shù)設置,設置完后按下鍵即可確認保存相應數(shù)據(jù)。K3是加計數(shù)鍵,K4是減計數(shù)鍵。通過鍵

50、盤更改PID參數(shù)來選擇不同的PID控制算法。</p><p>  3.5 LCD顯示模塊</p><p>  LCD 1602是指顯示的內(nèi)容為16*2,即可以顯示兩行,每行16個字符液晶模塊。1602字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,一般1602字符型液晶顯示器實物如下圖3.4所示:</p><p>  圖3.4 LCD 1602實

51、物圖</p><p>  1602采用標準的16腳接口,其中:   </p><p>  1腳:VSS為電源地 ;  </p><p>  2腳:VCC接5V電源正極 ;  </p><p>  3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高?! ?lt;/p><p>  4腳:RS為寄存器

52、選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。   </p><p>  5腳:RW為讀寫信號線,高電平1時進行讀操作,低電平0時進行寫操作。    </p><p>  6腳:EN端為使能端。   </p><p>  7~14腳:D0~D7為8位雙向數(shù)據(jù)端。   </p><p>  15~16腳:空腳或背燈電源。15腳

53、背光正極,16腳背光負極。</p><p><b>  3.6 PWM電路</b></p><p>  PWM脈寬調(diào)制(Pulse Width Modulation,PWM)是通過對一系列脈沖的寬度進行調(diào)制,等效地獲得所需要的波形(含形狀和幅值)。脈寬調(diào)制是一種應用比較普通的控制方式,脈寬調(diào)制是保持逆變器的工作頻率不變,即載波頻率不變,而通過改變導通時間或截至時間

54、來改變占空比的調(diào)制方式。三個參量:幅值,載波,占空比,主要是傳函于占空比,即脈沖的寬度。PWM信號進行RC處理輸出電壓信號,一般用于電機調(diào)速控制。</p><p>  PWM變頻電路具有以下特點:1.可以得到相當接近正弦波的輸出電壓。2.整流電路采用二極管,可獲得接近1的功率因數(shù)。3.電路結構簡單。4.通過對輸出脈沖寬度的控制可改變輸出電壓,加快了變頻過程的動態(tài)響應。</p><p&g

55、t;  此次設計所用PWM電路板是同學自己設計焊接而成,將輸出電壓信號進行放大2倍, 用以驅(qū)動執(zhí)行機構。</p><p>  第四章 數(shù)字PID控制器軟件設計</p><p>  4.1 單回路調(diào)節(jié)器主程序流程圖</p><p>  圖4.1 單回路調(diào)節(jié)器主程序流程圖</p><p>  4.2 各部分子程序流程圖</p>

56、<p>  4.2.1 A\D轉換子程序流程圖</p><p>  圖4.2 A\D轉換子程序流程圖</p><p>  4.2.2 PID算法子程序流程圖</p><p>  圖4.3 PID算法子程序流程圖 </p><p>  4.2.3 四獨立按鍵子程序流程圖</p><p>  圖4.4 四獨立

57、按鍵子程序流程圖</p><p>  4.2.4 LCD顯示子程序流程圖</p><p>  圖4.5 LCD顯示子程序流程圖</p><p>  4.2.5 PWM子程序流程圖</p><p>  圖4.6 PWM子程序流程圖</p><p><b>  第五章 總結</b></p&g

58、t;<p>  通過此次PID數(shù)字控制器設計,對控制系統(tǒng)總體方案設計、硬件設計、軟件設計以及編程調(diào)試有了整體詳盡的了解,對數(shù)字PID控制技術有了更加深刻的認識。</p><p>  在整個設計過程中,硬件大部分都是本專業(yè)老師提供的,只有PWM脈寬調(diào)制電路是同學自己焊的。主處理器選用的芯片是STC89C51/2RC。A/D轉換部分選用的芯片是ADC0832,A/D接收的模擬信號來自電位器,將0-5V的

59、模擬量轉換成0-255的數(shù)字量。PID算法采用增量型算式,用數(shù)字形式的差分方程代替連續(xù)系統(tǒng)的微分方程。LCD顯示部分選用DS1602顯示模塊。四個獨立按鍵實現(xiàn)對調(diào)節(jié)器參數(shù)的設定功能。</p><p>  此次設計是以小組為單位進行的,我們五個人一組,每個人負責一部分。在組長的帶領下,經(jīng)過討論將各子程序模塊以子程序調(diào)用的方式組合到一起,軟件編程調(diào)試最終成功。在程序調(diào)試過程中,我深刻認識到團隊合作精神的重要性,團隊合

60、作的力量是無窮盡的,只有融入集體我們才能將自身的價值最大化,進而推動社會更好更快發(fā)展。</p><p><b>  參考文獻</b></p><p>  [1] 潘新民,《微型計算機控制技術》,北京:電子工業(yè)出版社, 1988年03月 第二版。</p><p>  [2] 王凌強.基于數(shù)字PID控制器的仿真[J].科技信息(學術版).2006(

61、04)</p><p>  [3] 王燕芳、潘新民,《微型計算機控制技術》,北京:電子工業(yè)出版社,2006.1。</p><p>  [4] 姚永平,《STC89C51/RC+系列單片機器件手冊》,宏晶科技,2007年11月17日。</p><p>  [5] 董永祥,智能儀器的設計及發(fā)展,山西電子技術,2006年第1期。</p><p> 

62、 [6] 郝長勝,《C語言程序設計》,內(nèi)蒙古大學出版社,2005年12月 第一版。</p><p>  [7] 趙茂泰,《智能儀器原理及應用》,北京:電子工業(yè)出版社,2004年7月 第二版。</p><p>  [8] 潘永雄,《新編單片機原理與應用》,西安電子科技大學出版社,2007年02月 第二版。</p><p>  [9] 雷力鳴,單片機在數(shù)字調(diào)節(jié)器中的應用

63、,西南自動化研究所,兵工自動化,1997年 第3期。</p><p>  [10] 蔡杏山,《Protel 99 SE 電路設計》,北京:人民郵電出版社,2007年07月 第一版。 </p><p>  [11] 俞云奎,《可編程序

64、調(diào)節(jié)器、控制器原理與應用》,1997年05月 第一版。</p><p><b>  附錄A</b></p><p><b>  硬件原理圖 </b></p><p><b>  附錄B</b></p><p><b>  源程序</b></p>

65、<p>  #include <reg52.h></p><p>  #include <intrins.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  #define delay

66、4us() {_nop_();_nop_();_nop_();_nop_();}</p><p>  sbit RS = P1^0;</p><p>  sbit RW = P1^1;</p><p>  sbit E = P1^2;</p><p>  sbit CS = P2^3;</p><p>

67、;  sbit CLK = P2^4;</p><p>  sbit DIO = P2^5;</p><p>  uchar ZKB1=0;</p><p>  uchar Display_Buffer[] = "0000";</p><p>  void init_sys(void); /*系統(tǒng)初始化函數(shù)*/<

68、;/p><p>  void PWMOUT(void);</p><p>  void button(void);</p><p>  void Set_Disp_Pos(uchar pos);</p><p>  void L1602_char(uchar row,uchar col,char sign);</p><p&g

69、t;  void L1602_string(uchar row,uchar col,uchar *p);</p><p>  int yewei_PID(int SP);</p><p>  /*************************************************/</p><p>  void DelayMS(uint ms)<

70、/p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  while(ms--)</p><p><b>  {</b></p><p>  for(i=0;i<120;i++);</p>

71、;<p><b>  }</b></p><p><b>  }</b></p><p>  /*************************************************/</p><p>  bit LCD_Busy_Check(void)</p><p>&

72、lt;b>  {</b></p><p>  bit result;</p><p><b>  RS = 0;</b></p><p><b>  RW = 1;</b></p><p><b>  E = 1;</b></p><p&

73、gt;  delay4us();</p><p>  result = (bit)(P0&0x80);</p><p><b>  E = 0;</b></p><p>  return result;</p><p><b>  }</b></p><p>  /

74、*************************************************/</p><p>  void LCD_Write_Command(uchar cmd)</p><p><b>  {</b></p><p>  while(LCD_Busy_Check());</p><p><

75、;b>  RS = 0;</b></p><p><b>  RW = 0;</b></p><p><b>  E = 0;</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b&

76、gt;</p><p><b>  P0 = cmd;</b></p><p>  delay4us();</p><p><b>  E = 1;</b></p><p>  delay4us();</p><p><b>  E = 0;</b>&l

77、t;/p><p><b>  }</b></p><p>  /*************************************************/</p><p>  void Set_Disp_Pos(uchar pos)</p><p><b>  {</b></p>

78、<p>  LCD_Write_Command(pos | 0x80);</p><p><b>  }</b></p><p>  /*************************************************/</p><p>  void LCD_Write_Data(uchar dat)</p&g

79、t;<p><b>  {</b></p><p>  while(LCD_Busy_Check());</p><p><b>  RS = 1;</b></p><p><b>  RW = 0;</b></p><p><b>  E = 0;&

80、lt;/b></p><p><b>  P0 = dat;</b></p><p>  delay4us();</p><p><b>  E = 1;</b></p><p>  delay4us();</p><p><b>  E = 0;</b

81、></p><p><b>  }</b></p><p>  /*************************************************/</p><p>  void LCD_Initialise(void)</p><p><b>  {</b></p&g

82、t;<p>  LCD_Write_Command(0x38); DelayMS(1);</p><p>  LCD_Write_Command(0x0c); DelayMS(1);</p><p>  LCD_Write_Command(0x06); DelayMS(1);</p><p>  LCD_Write_Command(0x01); Del

83、ayMS(1);</p><p><b>  }</b></p><p>  /*************************************************/</p><p>  void L1602_char(uchar row,uchar col,char sign)</p><p><b

84、>  {</b></p><p><b>  uchar a;</b></p><p>  if(row == 1)a = 0x80;</p><p>  if(row == 2)a = 0xc0;</p><p>  a = a + col - 1;</p><p>  LCD

85、_Write_Command(a);</p><p>  LCD_Write_Data(sign);</p><p><b>  }</b></p><p>  /*************** 顯 示 字 符 串 ******************/</p><p>  void L1602_string(uchar

86、 row,uchar col,uchar *p)</p><p><b>  {</b></p><p>  uchar a,b=0;</p><p>  if(row == 1)a = 0x80;</p><p>  if(row == 2)a = 0xc0;</p><p>  a = a +

87、 col - 1;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  LCD_Write_Command(a++);</p><p><b>  b++;</b></p><p>  if(

88、(*p == '\0')||(b == 16))break;</p><p>  LCD_Write_Data(*p);</p><p><b>  p++;</b></p><p><b>  }</b></p><p><b>  }</b></p&g

89、t;<p>  /*-----------------------------------------</p><p>  AD 采 樣 函 數(shù)</p><p>  -----------------------------------------*/</p><p>  uchar Get_AD_Result(void)</p><

90、;p><b>  {</b></p><p>  uchar i,dat1=0,dat2=0;</p><p><b>  CS = 0;</b></p><p><b>  CLK = 0;</b></p><p>  DIO = 1; _nop_(); _nop_(

91、);</p><p>  CLK = 1; _nop_(); _nop_();</p><p>  CLK = 0;DIO = 1; _nop_(); _nop_();</p><p>  CLK = 1; _nop_(); _nop_();</p><p>  CLK = 0;DIO = 1; _nop_(); _nop_();</p

92、><p>  CLK = 1;DIO = 1; _nop_(); _nop_();</p><p>  CLK = 0;DIO = 1; _nop_(); _nop_();</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  CLK

93、= 1; _nop_(); _nop_();</p><p>  CLK = 0; _nop_(); _nop_();</p><p>  dat1 = dat1 << 1 | DIO;</p><p><b>  }</b></p><p>  for(i=0;i<8;i++)</p>

94、<p><b>  {</b></p><p>  dat2 = dat2 << ((uchar)(DIO)<<i);</p><p>  CLK = 1; _nop_(); _nop_();</p><p>  CLK = 0; _nop_(); _nop_();</p><p>&

95、lt;b>  }</b></p><p><b>  CS = 1;</b></p><p>  return (dat1 == dat2) ? dat1:0;</p><p><b>  }</b></p><p>  /************ 主 函 數(shù) **********

96、*****/</p><p>  void main(void)</p><p><b>  {</b></p><p>  unsigned int d;</p><p>  init_sys(); /* PWMOUT 初始化函數(shù)*/</p><p>  //ZKB1=40;

97、 /*占空比初始值設定*/ </p><p>  LCD_Initialise();</p><p>  //DelayMS(10);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  d = Get_

98、AD_Result()*500.0/255;/* d 為 0-5V 的 電 壓 值 */</p><p>  button(); /* 按 鍵 調(diào) 值 */</p><p>  //DelayMS(30);</p><p>  yewei_PID(d);/* 液 位 PID 計 算 */</p>

99、<p>  PWMOUT();/* PWM 輸 出 */</p><p><b>  }</b></p><p><b>  }</b></p><p>  #include <reg52.h></p><p>  #include <intrins.h>

100、;</p><p>  unsigned int KKp = 220;</p><p>  unsigned int KKi = 50;</p><p>  unsigned int KKd = 0;</p><p>  unsigned int Err1 = 0;</p><p>  unsigned int Err

101、2 = 0;</p><p>  unsigned int Err3 = 0;</p><p>  unsigned int pid_out_Last;</p><p>  unsigned int iyewei_Feedback; //pid計算后的液位值</p><p>  float iyewei; //當前測的液

102、位值</p><p>  int yewei_PID(int SP)</p><p><b>  {</b></p><p>  int Feedback_P = 0;</p><p>  int Feedback_I = 0;</p><p>  int Feedback_D = 0;</

103、p><p>  Err1 = SP - (int)iyewei; // 偏差=給定-實測 </p><p>  Feedback_P = KKp * (Err1 - Err2)/100.0;</p><p>  Feedback_I = KKi * Err1/100.0;</p><p>  if(Feedback_I >= 80)<

104、;/p><p><b>  {</b></p><p>  Feedback_I = 80;</p><p><b>  }</b></p><p>  if (Feedback_I <= -80)</p><p><b>  {</b></p&

105、gt;<p>  Feedback_I = -80;</p><p><b>  }</b></p><p>  Feedback_D = KKd * (Err1 - Err2 * 2 + Err3)/100.0;</p><p>  Err3 = Err2;</p><p>  Err2 = Err1;

106、</p><p>  iyewei_Feedback =(int)( Feedback_P + Feedback_I - Feedback_D + pid_out_Last) ;</p><p>  //-----------------Limit------------------------</p><p>  if(iyewei_Feedback >

107、38)</p><p><b>  {</b></p><p>  iyewei_Feedback = 38;</p><p><b>  }</b></p><p>  else if (iyewei_Feedback < 0)</p><p><b>  

108、{</b></p><p>  iyewei_Feedback = 0;</p><p><b>  }</b></p><p>  pid_out_Last = iyewei_Feedback;</p><p>  return(iyewei_Feedback);</p><p>

109、<b>  }</b></p><p>  //----------------------------------------------</p><p>  #include <reg52.h></p><p>  #include <intrins.h></p><p>  #define

110、uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit mode = P1^4; // 功能鍵</p><p>  sbit shift = P1^5; //確認</p><p>  sbit add = P1^6; // 加 “ + ”</p&

111、gt;<p>  sbit sub = P1^7; // 減 “ - ”</p><p>  uint countmode=0;</p><p>  uint sv = 0;</p><p>  uint kp = 0;</p><p>  uint ki = 0;</p><p>  uint kd

112、 = 0;</p><p><b>  uint x;</b></p><p>  extern uchar Display_Buffer[4];</p><p>  int set(x);</p><p>  void button(void);</p><p>  void L1602_st

113、ring(uchar row,uchar col,uchar *p);</p><p>  void DelayMS(uint ms);</p><p>  /*---------------------------------------------</p><p>  對sv kp ki kd 的值進行加減計算</p><p>  ---

114、--------------------------------------------*/</p><p>  int set(x)</p><p><b>  {</b></p><p>  if(add == 0)</p><p><b>  {</b></p><p>

115、;  DelayMS(10);</p><p>  if(add == 0){</p><p><b>  x ++;</b></p><p>  Display_Buffer[0]=(x/1000)%10+48;</p><p>  Display_Buffer[1]=(x/100)%10+48;</p>

116、<p>  Display_Buffer[2]=(x/10)%10+48;</p><p>  Display_Buffer[3]=x%10+48;//顯示x的值;</p><p><b>  }</b></p><p><b>  }</b></p><p>  

117、if(sub == 0)</p><p><b>  {</b></p><p>  DelayMS(10);</p><p>  if(sub == 0){</p><p><b>  x --;</b></p><p>  Display_Buffer[0]=(x/100

118、0)%10+48;</p><p>  Display_Buffer[1]=(x/100)%10+48;</p><p>  Display_Buffer[2]=(x/10)%10+48;</p><p>  Display_Buffer[3]=x%10+48;//顯示x的值;</p><p><b>  }</b>&l

119、t;/p><p><b>  }</b></p><p><b>  return x;</b></p><p><b>  }</b></p><p>  //-----------------------------------------------</p>&

120、lt;p>  void button(void)</p><p><b>  {</b></p><p>  if(mode == 0)</p><p><b>  {</b></p><p>  DelayMS(10);</p><p>  if(mode == 0)

121、{</p><p>  countmode ++;</p><p><b>  }</b></p><p><b>  }</b></p><p>  switch( countmode )</p><p><b>  {</b></p>

122、<p><b>  case 0:</b></p><p>  L1602_string(2,1,"SP: PV: ");</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p

123、>  L1602_string(1,7,Display_Buffer);</p><p>  L1602_string(1,1,"SP:");</p><p><b>  set(sv);</b></p><p>  sv = set(sv);</p><p><b>  break;

124、</b></p><p><b>  case 2:</b></p><p>  L1602_string(1,7,Display_Buffer);</p><p>  L1602_string(1,1,"Kp:");</p><p>  set(kp); </p>&

125、lt;p>  kp = set(kp);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  L1602_string(1,7,Display_Buffer);</p><p>  L1602_string(1,1,&quo

126、t;Ki:"); </p><p>  set(ki); </p><p>  ki = set(ki);</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  L1602_st

溫馨提示

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

評論

0/150

提交評論