直流電動機控制系統(tǒng)的設計【畢業(yè)論文】_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)設計</b></p><p><b> ?。?0 屆)</b></p><p>  直流電動機控制系統(tǒng)的設計</p><p>  所在學院 </p><p>  專業(yè)班級 電子信息工程

2、 </p><p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  摘 要</b></p

3、><p>  本設計是采用SPGT62C19B芯片對電機進行驅動并通過C8051F005單片機以及電機控制電路實現(xiàn)對直流電機速度測量和調節(jié),并利用4個按鍵對電機進行轉速和正反轉的控制。并且可以實時測量電機的實際轉速,并在LCD液晶顯示器上顯示出來;對電機進行PID轉速調節(jié),使其轉速趨近于設定值。以及利用PID算法實現(xiàn)直流電機脈沖脈寬調制(PWM)調速的方法。并在Silicon Labs單片機開發(fā)軟件上進行調試。<

4、;/p><p>  關鍵詞:單片機;直流電機;PID算法;脈寬調制</p><p><b>  Abstract</b></p><p>  This design is adopted to motor driven SPGT62C19B chip, And through the MCU (Microcontroller) C8051F005

5、and motor control circuit to realization of the DC(Direct Current) motor speed measurement and adjustment, and the use of four buttons on the motor speed and positive &negative control. And can real-time measuring mo

6、tor speed, and in the actual displayed on LCD (Liquid Crystal Display); On the motor PID speed adjustment, make its speed is approaching to value. The use of PID algorithm to real</p><p>  Key Words: MCU; D

7、C motor; PID algorithm ; PWM</p><p><b>  目 錄</b></p><p>  1 引言- 1 -</p><p>  1.1 研究直流電機控制系統(tǒng)的意義- 1 -</p><p>  1.2 直流電機控制系統(tǒng)的發(fā)展趨勢及現(xiàn)狀- 1 -</p><

8、p>  2 方案設計- 2 -</p><p>  2.1設計任務- 2 -</p><p>  2.2方案分析- 2 -</p><p>  3 硬件設計- 4 -</p><p>  3.1 直流電機- 4 -</p><p>  3.2 電機驅動芯片- 4 -</p><

9、p>  3.3 速度檢測模塊- 7 -</p><p>  3.4 顯示模塊- 8 -</p><p>  3.5 按鍵- 9 -</p><p>  3.6主控制模塊- 10 -</p><p>  4 軟件設計- 12 -</p><p>  4.1 Silicon Labs C8051F 單片機

10、開發(fā)工具概述- 12 -</p><p>  4.2 PID算法- 13 -</p><p>  4.3 PWM基本原理- 14 -</p><p>  4.4 PWM的產生- 15 -</p><p>  4.5交叉開關- 17 -</p><p>  4.6轉速測量- 17 -</p>&

11、lt;p>  4.7主程序流程圖- 19 -</p><p>  5 調試- 21 -</p><p>  6 結論- 23 -</p><p>  致 謝錯誤!未定義書簽。</p><p>  參考文獻- 24 -</p><p>  附錄1 直流電機控制系統(tǒng)實物圖- 25 -</p&g

12、t;<p>  附錄2 程序代碼- 26 -</p><p><b>  1 引言</b></p><p>  1.1 研究直流電機控制系統(tǒng)的意義</p><p>  在電氣時代的今天,電動機一直在現(xiàn)代化的生產和生活中起著十分重要的作用。無論是在工農業(yè)生產、交通運輸、國防、航空航天、醫(yī)療衛(wèi)生、商務與辦公設備中,還是在日常生活

13、中的家用電器中,都大量地使用著各種各樣的電動機[1]。</p><p>  長期以來,直流電機以其良好的線性特性、優(yōu)異的控制性能等特點成為大多數(shù)變速運動控制和閉環(huán)位置伺服控制系統(tǒng)的最佳選擇。伴隨著人們對控制系統(tǒng)的要求越來越高,電機調速成了人們研究的熱門課題。</p><p>  1.2 直流電機控制系統(tǒng)的發(fā)展趨勢及現(xiàn)狀</p><p>  現(xiàn)在對于普通直流電機的調速

14、已經有了一些比較成熟的方法。直流電動機轉速的控制方法可分為兩類勵磁控制法與電樞電壓控制法。勵磁控制法控制磁通,其控制功率雖然小,但低速時受到磁飽和的限制,高速時受到換向火花和換向器結構強度的限制,而且由于勵磁線圈電感較大,動態(tài)響應較差,所以使用較少。電樞電壓控制法總體上可以分為兩種,一種是調節(jié)電壓,一種是調節(jié)電流。傳統(tǒng)的調速系統(tǒng)是用模擬電子電路來實現(xiàn)的,這種電路雖然響應快,但是靈活性較差,維修復雜。單片機作為一種可編程控制器技術上已經比

15、較成熟。通過單片機對普通直流電機進行調速的系統(tǒng)已經存在。單片機具有性能高、速度快、體積小、價格低、穩(wěn)定可靠應用廣泛、通用性強等突出優(yōu)點[2]。</p><p>  電動機的控制技術的發(fā)展得力于微電子技術、電力電子技術、傳感器技術、永磁材料技術、電動控制技術、微機應用技術的最新發(fā)展成果。正是這些技術的進步使電機控制技術在近20多年內發(fā)生了翻天覆地的變化,其中電動機的控制部分已由模擬控制逐漸讓位于以單片機為主的微處理

16、器控制,形成數(shù)字和模擬的混合控制系統(tǒng)和純數(shù)字控制的應用,并曾向全數(shù)字化控制方向快速發(fā)展。而國外交直流系統(tǒng)數(shù)字化已經達到使用階段[3]。</p><p><b>  2 方案設計</b></p><p><b>  2.1設計任務</b></p><p>  本設計的任務是設計一個直流電機轉速的控制系統(tǒng),并在LCD顯示器上

17、顯示當前電機的轉速,并能通過按鍵調整電機的轉速。</p><p><b>  2.2方案分析</b></p><p>  直流電動機轉速的控制方法可分為兩類:勵磁控制法和電樞電壓控制法。常用的控制方法是改變電樞端電壓調速的電樞電壓控制法,調節(jié)電阻R即可改變端電壓,達到調速目的,但這種傳統(tǒng)的調壓調速方法效率低。隨著電力電子技術的發(fā)展,創(chuàng)新了許多新的電樞電壓控制方法。尤其

18、是脈寬調制(PWM)直流調速技術的應用,使得直流電機得到廣泛應用[4]。</p><p>  2.2.1 基于FPGA的直流電機PWM控制系統(tǒng)</p><p>  圖2-1 基于FPGA的直流電機PWM控制系統(tǒng)框架</p><p>  基于FPGA的直流電機PWM控制系統(tǒng)是以FPGA芯片為控制核心,通過按鍵設定電機速度和PWM占空比,由FPGA的I/O口控制直流電

19、機驅動芯片驅動直流電機的轉動。轉速的測量由碼盤完成,速度顯示由數(shù)碼管來實現(xiàn)。如圖2-1所示。由于FPGA具有靈活的編程功能,能實時方便地實現(xiàn)復雜的控制算法,從而提高了控制性能;還可將大量的裸機控制功能和外圍接口電路集成在芯片中,進而提高了運動控制器的可靠性和穩(wěn)定性;同時,因為FPGA具有在現(xiàn)場可重構的特性,保證了所設計的電機控制模塊具有良好的開放性,也大大方便了系統(tǒng)的設計和調試。所設計的控制模塊兼具體積小、使用靈活、實時性強、調速范圍寬

20、、可靠性高等優(yōu)點[5]。</p><p>  2.2.2 基于單片機的直流電機PWM控制系統(tǒng)</p><p>  如圖2-2所示,就是一個基本的基于單片機PWM的直流電機控制系統(tǒng)框圖。由單片機產生一個PWM脈沖來驅動SPGT62C19B芯片,進而控制直流電機的轉速,并由轉速測量裝置把電機的轉速反饋到單片機并在顯示器上顯示出來,通過按鍵控制單機輸出的PWM脈沖,從而一步一步向預期轉速靠近[6

21、]。</p><p>  圖2-1 PMW直流電機控制系統(tǒng)</p><p>  脈寬調制調速法突破傳統(tǒng)的串電阻調速,節(jié)省了電能。單片機來實現(xiàn)電機調速為電機調速提供了新的方法。它雖然沒有傳統(tǒng)的模擬數(shù)字電路調速來得反應快,但是由單片機搭建的電機調速電路要比使用模擬數(shù)字電路簡單得多。不僅節(jié)約了成本而且單片機靈活性高,可以重復編程。當實際的環(huán)境條件改變以后,可以通過改變程序來實現(xiàn)不同的功能。所以

22、本文所采用的是基于單片機來設計PWM直流電機的控制系統(tǒng)。</p><p><b>  3 硬件設計</b></p><p>  本系統(tǒng)硬件主要由直流電機、電機驅動芯片、速度檢測模塊、顯示模塊、按鍵、主控制模塊。</p><p><b>  3.1 直流電機</b></p><p>  直流電機采用

23、的型號為310CA,工作電壓3V~12V,在5V電壓下空載轉速約4000轉/分,空載電流約20mA,堵轉電流約300mA (如圖3-1所示310CA直流電機圖)。</p><p>  圖3-1 310CA直流電機</p><p>  3.2 電機驅動芯片</p><p>  本系統(tǒng)采用SPGT62C19B作為電機驅動芯片。SPGT62C19B是低電壓單片式步進電機

24、驅動器集成電路芯片,可驅動一臺兩相步進電機,或者兩臺直流電機。它帶有雙路H橋,可分別驅動兩個獨立的PNP功率管。每一個H橋都有各自獨立的使用引腳,因此非常適合于需要獨立控制的步進電機驅動系統(tǒng)。SPGT62C19B輸出電壓可以達40v,輸出電流可達750mA,由輸入的邏輯電平來決定輸出脈沖的寬度及頻率,所以由這款芯片組成的電機驅動系統(tǒng)將脈沖發(fā)生器、脈沖分配器、脈沖放大器合為一體,省去了很多外圍器件[7]。</p><p

25、>  SPGT62C19B的內部由兩組完全相同的控制電路組成了兩路輸出通道。其中一路通道的控制電路原理如圖3-2所示。輸入控制信號經前級緩沖后送入片內控制器,然后由控制部分進行處理并驅動晶體管,最后由OUT端口輸出驅動信號以控制電機的運行[8]。</p><p>  圖3-2 SPGT62C19B控制電路原理圖</p><p>  SPGT62C19B的6個控制腳有如表3-1:<

26、;/p><p>  表3-1 SPGT62C19B的6個控制腳</p><p>  以通道1為例,控制口I01與I11的不同邏輯組合可使通道1輸出端產生不同大小的電流輸出:</p><p>  表3-2 通道1的電流輸出</p><p>  如上表3-2中,Imax是輸出電流的上限值,它與圖3-1中Vref和Rs的值有關。其關系式為:</

27、p><p>  Imax = Vref / 10 * Rs ;</p><p>  PHASE1的邏輯電平值決定了該通道的電流輸出方向。PHASE1與電流方向的對應關系如表3-3所示:</p><p>  表3-3 PHASE1與電流方向的對應關系</p><p>  直流電機的控制方法比較簡單,只需給電機的兩根控制線加上適當?shù)碾妷杭纯墒闺姍C轉

28、動起來,電壓越高則電機轉速越快。對于直流電機的速度調節(jié),可以采用改變電壓的方法,也可以采用PWM調節(jié)方法。PWM調速就是使加在直流電機兩端的電壓為方波形式,通過改變方波的占空比實現(xiàn)電機轉速的調節(jié)[9]。</p><p>  本設計選用的電機驅動芯片SPGT62C19B有兩個輸出通道可以分別控制一臺直流電機。這里選擇通道1。設定PHASE1的邏輯電平,即可實現(xiàn)電機的正反轉控制。而電機調速可以通過不斷改變I01和I1

29、1的高低電平狀態(tài),使輸出通道產生PWM波形信號,從而利用PWM的占空比來調節(jié)電機轉速。</p><p>  圖3-3 輸出PWM控制直流電機時序</p><p>  如圖3-4電機驅動芯片SPGT62C19B通道1和單片機的接口</p><p>  圖3-4 電機驅動芯片SPGT62C19B通道1和單片機的接口</p><p>  3.3

30、速度檢測模塊</p><p>  在直流電機轉軸上加載一個光柵轉盤,用來測量電機的轉速及觀察電機的轉動情況。光柵轉盤遮擋在紅外發(fā)射管和紅外接收管之間。如圖3-5所示,光柵轉盤的園面上開了4個通光槽,電機每轉動一周,紅外接收管將接收到4次紅外光,從而可以實現(xiàn)電機測速功能[10]。</p><p>  圖3-5 直流電機的光柵轉盤</p><p>  轉速測量采用一組鼠

31、標上用的紅外對管實現(xiàn)。其電路原理如圖3-6所示。</p><p>  當紅外發(fā)射管與紅外接收管之間被直流電機光柵轉盤的不透明部分遮擋時,紅外接收管處于截至狀態(tài),此時圖中的SPEED輸出高電平。反之當光柵轉盤的通光槽轉至紅外對管之間時,紅外接收管處于導通狀態(tài),此時SPEED輸出低電平。將SPEED連接到單片機的I/O口,即可通過定時器計數(shù)的方法計算出電機轉動速度。</p><p>  圖3-

32、6 轉速測量電路原理</p><p><b>  3.4 顯示模塊</b></p><p>  為了便于直觀的檢測直流電機的轉速,本設計精心設計了顯示模塊,主要通過液晶顯示,方便、直觀。液晶顯示器(LCD),如圖3-7所示,具有顯示信息豐富、功率低、體積小、重量輕、超薄等許多其他顯示器無法比擬的優(yōu)點,近幾年來被廣泛用于單片機控制的儀表、智能儀器和低功率電子廠品中[1

33、1]。</p><p>  圖3-7 HS12232-9液晶實物</p><p>  液晶顯示模塊主要是應用實驗室的HS12232-9型液晶模塊。HS12232-9內置ST7920A驅動控制器,點陣為122*32,每行7個半漢字,共2行。內部字型ROM包括8192個16*16點陣的中文字型和126個16*8的字母符號字型,另外還提供一個64*256點繪圖區(qū)域(GDRAM)及240點的IC0

34、N RAM,可以和文字畫面混合顯示。內含的CGRAM有4組可編程的1616點陣的造字功能。與單片機的接口有8位并行、4位并行、2/3線串行。它采用低功率電源耗損,電壓范圍2.7~5.5V,功能齊全,漢字、點陣圖形、ASCII碼同屏顯示;上下左右移動當前顯示屏幕、清屏、光標顯示、閃爍、睡眠、喚醒、關閉顯示功能齊全。</p><p>  HS12232-9與C805F005硬件連接如圖3-8所示。</p>

35、<p>  圖3-8 HS12232-9與C8051F005的連接圖</p><p>  當寫入顯示資料RAM時,可以分別顯示CGROM、HCGROM與CGRAM的字型;ST7920A可以顯示三種字型 ,分別是半寬的HCGROM字型、CGRAM字型及中文CGROM字型。一旦單片機接收相應的中斷,就會調用子程序,就要顯示當前的時間,站名和溫度。例如要顯示“浙江萬里學院”,就要根據“ST7920 GB

36、中文字形碼表”,輸入對應的代碼是“D5E3,BDAD,CDF2,C0EF,D1A7,D4BA”存到數(shù)組中,然后單片機讀取數(shù)組中的數(shù)據。</p><p><b>  3.5 按鍵</b></p><p>  為了更好的控制電機的轉動,該設計設置了幾個控制按鍵:Key1,Key2,Key3,Key4并分別作用于轉數(shù)個位+1,轉數(shù)十位+1,啟動,正反轉。</p>

37、<p>  圖3-9為按鍵及LED顯示的實驗電原理圖。從圖中可以看出,按鍵平時接高電平,按下為低電平。LED則為輸入低電平時點亮。</p><p>  圖3-9 按鍵及LED顯示的實驗電原理圖</p><p><b>  3.6主控制模塊</b></p><p>  主控制模塊的核心器件采用C8051F005單片機和EPM1270

38、T144C5可編程器件,如圖3-10為實物圖,圖3-11為主板結構框圖。其中C8051單片機可以完成軟件設計等任務,EPM1270可編程器件可以完成硬件邏輯設計等任務。兩者均留有豐富的外部接口。同時,EPM1270接口了數(shù)碼顯示、LED顯示、蜂鳴器、按鍵等電路??梢酝ㄟ^EPM1270直接進行控制。如果要通過C8051單片機來訪問,則需要通過EPM1270和C8051之間的總線接口。</p><p>  圖3-10

39、 主控制主板的實物圖</p><p>  圖3-11 主板的結構框圖</p><p>  C8051F005是完全集成的混合信號系統(tǒng)級MCU芯片(如圖3-10 C8051F005原理圖)。它有一個可編程增益放大器、兩個12位DAC、兩個電壓比較器、一個電壓基準、一個具有32K字節(jié)FLASH存儲器并與8051兼容的微控制器內核。還有硬件實現(xiàn)的12C/SMBus、UART、SPI串行接口及一

40、個具有5個捕捉/比較模塊的可編程計數(shù)器/定時器陣列(PCA)。還有4個通用的16位定時器和4字節(jié)寬的通用數(shù)字I/O端口。</p><p><b>  4 軟件設計</b></p><p>  4.1 Silicon Labs C8051F 單片機開發(fā)工具概述</p><p>  Silicon Labs 的開發(fā)工具實質上就是計算機IDE 調試

41、環(huán)境軟件及計算機USB 到C8051F單片機JTAG 口的協(xié)議轉換器(UEC5)的組合(此部分電路已經集成到系統(tǒng)實驗板上)。Silicon Labs C8051F 系列所有的單片機片內均設計有調試電路,該調試電路通過邊界掃描方式獲取單片機片內信息,通過4 線的JTAG接口與開發(fā)工具連接以便于進行對單片機在片編程調試。NCD-CIP51F020 系統(tǒng)實驗設備中的C8051F020 CPU 板上的單片機為C8051F 系列中的F020。適配

42、器一端與計算機相連,另一端與C8051F 單片機JTAG 口相連,應用Silicon Labs 提供的IDE 調試環(huán)境或Kei的uVision2 調試環(huán)境就可以進行非侵入式、全速的在系統(tǒng)編程(ISP)和調試。</p><p>  Silicon Labs 開發(fā)工具支持觀察和修改存儲器和寄存器支持斷點、觀察點、堆棧指示器、單步、運行和停止命令。調試時不需要額外的目標RAM、程序存儲器、定時器或通信通道,并且所有的模

43、擬和數(shù)字外設都正常工作。</p><p>  Silicon Labs IDE 的主界面圖4-1所示。</p><p>  圖4-1 Silicon Labs IDE 的主界面</p><p><b>  4.2 PID算法</b></p><p>  所謂PID指的是Proportion-Integral-Differ

44、ential,翻譯成中文是比例-積分-微分。模擬PID控制器的原理框圖如圖4-2。其中r(t)為系統(tǒng)給定值,c(t)為實際輸出,u(t)為控制量。PID控制解決了自動控制理論所要解決的最為基本的問題,即系統(tǒng)的穩(wěn)定性、快速性和準確性[9]。</p><p>  圖4-2 模擬PID控制器的原理框圖</p><p>  PID調節(jié)為了獲得穩(wěn)態(tài)轉速, 電機采用閉環(huán)控制,同時加入了PID 調節(jié)環(huán)

45、節(jié)。PID 調節(jié)結構簡單、靈活性大,但其易受干擾和采樣周期的影響。所以須對PID 算法加以改進以進一步穩(wěn)定轉速。</p><p>  傳統(tǒng)數(shù)字PID 算法的公式為</p><p><b> ?。?-1)</b></p><p>  式中,Kp、KI、KD分別為調節(jié)器的比例、積分和微分系數(shù);e(k),e(k-1)分別為第k 次和k- 1次時的期望

46、偏差值;u(k)為第k 次時調節(jié)器的輸出。比例環(huán)節(jié)的作用是對偏差瞬間做出反應;積分環(huán)節(jié)的作用是消除穩(wěn)態(tài)誤差,提高無差度;微分環(huán)節(jié)的作用是阻止偏差的變化,改善系統(tǒng)的動態(tài)性能。</p><p>  在自動控制系統(tǒng)中,PID 控制器是得到廣泛應用的一種控制方法。由于電機轉速與電樞外加電壓的大小基本上成正比,這就構成了PID 調節(jié)的基礎。在采樣時刻t =i×T( T 為采樣周期,i為正整數(shù)) ,模擬PID 控制

47、器調節(jié)規(guī)律的數(shù)學模型可以用微分方程來表示:</p><p><b> ?。?-2)</b></p><p>  式中各參數(shù)和變量分別是:u(t) 是t 時刻的調節(jié)器的輸出;Kp 是比例系數(shù);e(t) 是調節(jié)器的輸入,一般為偏差量;Ti 是積分時間常數(shù);Td 是微分時間常。電機測控系統(tǒng)為一時間離散控制系統(tǒng),可以采用數(shù)字式的差分方程來代替連續(xù)系統(tǒng)的微分方程,從而將PID算

48、式離散化,其差分方程如下:</p><p><b>  (4-3)</b></p><p><b>  進一步簡化為:</b></p><p><b> ?。?-4)</b></p><p>  式中P、I 、D 分別稱之為比例增益、積分系數(shù)、微分系數(shù)。</p>

49、<p>  PID 運算過程中所有參數(shù)和計算值均以多字節(jié)浮點數(shù)表示,在控制過程中不斷改變控制參數(shù)。系統(tǒng)運行中,通過定時器每間隔T秒中斷一次,完成一次PID控制計算,從而不斷調整被控參數(shù),主程序中的PWM驅動模塊根據控制參數(shù)而改變P0口輸出值,調整PWM 輸出波形,完成實時控制任務[9]。</p><p>  PID初始化代碼如下:</p><p>  int DCMotor_Sp

50、eed_PID(int SetSpeed, int CurSpeed)</p><p><b>  {</b></p><p>  int e0, u0;</p><p>  static int u1 = 0;// 前一次輸出值(為避免浮點運算將該值擴大16倍)</p><p>  static in

51、t e1 = 0, e2 = 0;</p><p>  e0 = SetSpeed - CurSpeed;// 當前速度偏差</p><p>  u0 = u1 </p><p>  + CP * (e0 - e1)// 比例項</p><p>  + CI * e0//

52、 積分項</p><p>  + CD * (e0 - e1 - e1 + e2);// 微分項</p><p>  if(u0 > 4096) u0 = 4095;// 輸出值應小于256(擴大16倍)</p><p>  if(u0 < 16) u0 = 16;// 輸出值應不小于1(擴大16倍)</p&

53、gt;<p>  u1 = u0;// 更新u1、e1和e2</p><p><b>  e2 = e1;</b></p><p><b>  e1 = e0;</b></p><p>  return u0>>4;// 返回u0/16,占空比</p

54、><p><b>  }</b></p><p>  4.3 PWM基本原理</p><p>  對電機的調速方法有很多,其中PWM(Pulse Width Modulation)控制是常用的一種調速方法控制。脈寬調制(PWM)是一種對模擬信號電平進行數(shù)字編碼的方法,它不僅容易由軟件來實現(xiàn),而且從處理器到被控制信號都是數(shù)字形式無需數(shù)模轉化,加上PW

55、M對噪聲的抵抗能力強。使得PWM成為目前電機調速的主要方法。在PWM驅動控制的調整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并根據需要改變一個周期內“接通”和“斷開”時間的長短。通過改變直流電機電驅上電壓的“占空比”來改變平均電壓的大小。從而控制電動機的轉速。因此,PWM又被成為“開關驅動裝置[10]”。</p><p>  如圖4-3所示,在脈沖作用下,當電機通電時,速度增加;電機斷電時,速度逐漸減少。只要按一

56、定規(guī)律,改變通、斷電的時間,即可讓電機轉速得到控制。</p><p>  圖4-3 PWM控制原理圖</p><p>  設電機始終接通電源時電機轉速最大為Vmax,設占空比為D= t?/T ,則電機的平均速度為 (4-5)</p><p>  式中,Vd——電機的平均速度;</p><p>  Vm

57、ax——電機全通電時的速度(最大);</p><p>  D= t?/T——占空比。</p><p>  由公式(4-5)可見,當我們改變占空比D = t ?/T時,就可以得到不同的電機平均速度Vd,從而達到調速的目的。嚴格地講,平均速度Vd與占空比D并不是嚴格的線性關系,在一般的應用中,可以將其近似地看成線性關系。</p><p>  4.4 PWM的產生&l

58、t;/p><p>  本設計的PWM是利用C8051單片機的PCA(可編程計數(shù)器陣列Programmable Counter Array)模塊產生的。</p><p>  如圖4-4所示PCA的PWM方式原理框圖。PWM輸出的頻率取決于PCA計數(shù)</p><p>  圖4-4 PCA的PWM方式原理圖</p><p>  器/定時器的時基。使用

59、模塊的捕捉/比較寄存器PCA0PLn改變PWM輸出信號的占空比[11]。當PCA計數(shù)器/定時器的低字節(jié)(PCA0L)與PCA0CPLn中的值相等時,CEXn引腳上的輸出被置‘1’。當PCA0L中的計數(shù)值溢出時,CEXn輸出被復位。當計數(shù)器/定時器的低字節(jié)PCA0L溢出時(從0xFF到0x00),保存在PCA0CPHn中的值被自動裝入PCA0CPLn,不需軟件干預。利用PCA產生PWM的流程圖(4-5)及其代碼如下:</p>

60、<p>  圖4-5 PCA產生PWM流程圖</p><p>  void PCA_Init(void)</p><p><b>  {</b></p><p>  PCA0MD = 0x00; // 禁止CF中斷 // PCA時基= SYSCLK / 4</p><p>  PCA0CPL0 = 12

61、8; // 初始化PCA的PWM值</p><p>  PCA0CPH0 = 128;</p><p>  PCA0CPL1 = 128; // 初始化PCA的PWM值</p><p>  PCA0CPH1 = 128;</p><p>  PCA0CPM0 = 0x42; // CCM0為8位PWM方式</p><p&g

62、t;  PCA0CPM1 = 0x42; // CCM1為8位PWM方式</p><p>  PCA0CN = 0x40; // 允許PCA計數(shù)器</p><p><b>  }</b></p><p>  上面代碼產生占空比為1.:1的PWM波形,因此通過改變PCA模塊捕捉/比較模塊的初始值就可以改變PWM輸出信號的占空比,從而達到調速的目的

63、。</p><p><b>  4.5交叉開關</b></p><p>  單片機C8051F005中有大量的數(shù)字資源需要通過數(shù)字I/O端口P0、P1、P2和P3才能使用。端口0、1和2中的每個引腳即可定義為對應的端口I/O,又可以分配給一個內部數(shù)字資源。設計者對功能分配有完全的控制,只受所選封裝的可用引腳數(shù)的限制。這種資源分配的靈活性是通過使用優(yōu)先權交叉開關譯碼器實

64、現(xiàn)的[12]。交叉開關初始化代碼如下:</p><p>  void PORT_Init (void)</p><p><b>  {</b></p><p>  PRT1CF |= 0xff; </p><p>  PRT2CF |= 0xff;

65、 </p><p>  PRT0CF |= 0xff; </p><p>  PRT3CF |= 0xff; </p><p>  P1 |= 0xa0; </p><p>  XBR0 =

66、0x20; //CEX0,CEX1連到P0.0,P0.1</p><p>  XBR1 = 0x02; //T0計數(shù)器連到P0.2端口</p><p>  XBR2 = 0x40; // 使能交叉開關}</p><p><b>

67、;  4.6轉速測量</b></p><p>  為了測量轉速,必須要通過定時器T0來檢測轉速測量電路在1秒內發(fā)送給單片機多少個脈沖,最后把所計數(shù)的脈沖值除以4,就可以得到直流電機1秒內轉的圈數(shù)。</p><p>  圖4-6 轉速測量流程圖</p><p>  以上是轉速測量的流程圖(4-6),T0作為計數(shù)功能,T2定時功能。為了測出1秒內電機的轉速,

68、必須在定時1秒。本設計采用了定時器T2,先定時10ms,在中斷服務程序里,計數(shù)中斷的次數(shù),當中斷次數(shù)達到100的時,也就是1秒鐘,提取出定時器0內部計數(shù)值,在把此時的計數(shù)值除以4就可以計算出電機的轉速。</p><p>  轉速測量初始化代碼:</p><p>  void Timer0_Init(void)</p><p><b>  {</b&g

69、t;</p><p>  TMOD=0X25; //定時器0計數(shù)方式16位</p><p><b>  TH0=0X00;</b></p><p><b>  TL0=0X00;</b></p><p>  TR0=1;//開定時器0</p><p>  

70、ET0=0;//不允許定時器0中斷</p><p><b>  }</b></p><p>  void Timer2_Init(void)</p><p><b>  {</b></p><p>  CKCON=0x10;//定時器2采用12分頻</p><p>  RCA

71、P2L=0X00;//定時時間為10ms</p><p>  RCAP2H=0XDC;</p><p><b>  TL2=0X00;</b></p><p><b>  TH2=0XDC;</b></p><p>  T2CON=0X04;//采用16位自動重載方式</p><

72、p>  ET2=1;//允許中斷</p><p><b>  }</b></p><p>  void Timer2_ISR(void) interrupt 5</p><p><b>  {</b></p><p>  percent++;//次數(shù)加1</p><p>

73、;  if(percent==100) //100次到,也就是1秒鐘到了</p><p>  { percent=0; </p><p>  zhushu=TH0*256+TL0;//讀計數(shù)器0的值</p><p>  zhushu=zhushu/4;//因為每轉動一周4個脈沖</p><p><b>  TH0=0X00;<

74、/b></p><p>  TL0=0X00;//定時器0清零</p><p>  pwm= DCMotor_Speed_PID(zhushu1, zhushu);//PID調速度,zhushu1為設置的速度,zhushu目前速度</p><p>  PCA0CPL0 = pwm; // 調整后的占空比</p><p>  PCA0CP

75、H0 = pwm;</p><p>  PCA0CPL1 = pwm; // </p><p>  PCA0CPH1 = pwm;</p><p><b>  }</b></p><p><b>  TF2=0;</b></p><p><b>  }</b&

76、gt;</p><p><b>  4.7主程序流程圖</b></p><p>  如圖4-7所示主程序流程圖,假定初始電機轉速為40轉/秒,那么當按下按鍵KEY2時,即電機轉速值的十位+1。再按下KEY3時,液晶顯示當前的轉速和設定的轉速應同一值,即為50轉/秒。假定初始電機的轉動方向是正方向,那么當按一次KEY4時,再按下KEY3時電機的轉動方向即為反方向。而當?shù)?/p>

77、二次按下KEY4時,跟上按下KEY3后,電機轉動的方向則為正方向。</p><p>  圖4-7 主程序流程圖</p><p><b>  5 調試</b></p><p>  本設計按照設計任務要求設計。期間對整個直流電機控制系統(tǒng)的各個模塊進行了細致的分析。在查閱大量資料學習各模塊的工作原理,熟悉本設計各模塊功能的基礎上,對整個程序分模塊

78、畫流程圖,并進行編程調試,通過不斷的調試修改,基本完成任務要求。</p><p>  圖5-1 直流電機控制系統(tǒng)實物圖</p><p><b>  調試過程:</b></p><p>  1.首先給單片機接通電源,并聯(lián)接上仿真器,再把仿真器通過USB線連上PC機。并把電機和驅動模塊相連(如圖5-1)。</p><p>

79、<b>  2.軟件調試</b></p><p>  (1)調試PCA定時計數(shù)。</p><p>  先把PCA捕捉模塊0,1設置為PWM方式,通過數(shù)字示波器觀察在CEX0,CEX1端是否出現(xiàn)PWM波形。剛開始調試時,就是不能出來PWM波形,后來經過檢查發(fā)現(xiàn),PCA計數(shù)器沒有打開。設置PCA使能后,就出來波形了。</p><p> ?。?)調試

80、測量轉速模塊</p><p>  先設置T0為計數(shù)功能,T2為定時功能。開始調試,結果發(fā)現(xiàn)T0沒有自動清0功能,修改代碼,使T0清0功能使能。T2運行正常。</p><p><b> ?。?)調試液晶顯示</b></p><p>  把書上代碼調試后,在液晶上出現(xiàn)電子綜合設計四個字,說明液晶顯示程序可以</p><p>

81、  確定各個軟件模塊的功能和接口,根據流程圖用C語言編寫程序,實現(xiàn)PID算法,定時器/計數(shù)器功能及產生PWM,并能實現(xiàn)按鍵功能。通過在Silicon Labs集成開發(fā)環(huán)境軟件中,不斷的調試,修改,編譯并下載到單片機里。</p><p>  最后根據實際各個硬件模塊運行的實際情況,是否符合設計要求,對相應的軟件模塊進行修改,最終實現(xiàn)單片機對直流電機轉速比較精確的控制。</p><p><

82、;b>  6 結論</b></p><p>  本設計按照任務書的要求在查閱大量資料和完成多項實驗的基礎上,經過幾個月的努力,基本上實現(xiàn)預期功能,但依然有部分功能存在缺陷。本設計由開題報告、文獻綜述、外文翻譯、實物設計及論文五部分組成。通過查閱各種文獻資料獲得直流電機、單片機、電機驅動電路、液晶顯示及電機測速等方面的理論知識和實踐指導,通過實物設計,將理論與實際相結合,實際操作完成本設計。&l

83、t;/p><p>  本設計是以C8051F005單片機為核心,將電機驅動、電機測速、液晶顯示及按鍵等功能相結合,組成一個簡單的單片機直流電機控制系統(tǒng)。并通過在Silicon Labs集成開發(fā)環(huán)境軟件中,對整個系統(tǒng)代碼行進調試,修改,下載進單片機內。最后根據實際各個硬件模塊運行的實際情況,是否符合設計要求,對相應的軟件模塊進行修改,最終實現(xiàn)單片機對直流電機轉速比較精確的控制。</p><p>

84、  在設計制作過程,遇到了很多的問題,在指導老師的幫助下,從零開始,循序漸進,遇到問題逐個解決,從失敗中獲取經驗,在實踐中發(fā)現(xiàn)了自身的不足,獲得了很多知識,使自身的理論知識和實踐水平都得到了提高。</p><p>  由于本人的專業(yè)知識和單片機端口數(shù)量的不足有限以及時間等其他方面的不足,只能在此基礎上實現(xiàn)簡單的功能。如果條件和時間允許,還可以對本設計進行進一步的開發(fā)。</p><p>&l

85、t;b>  參考文獻</b></p><p>  [1] 余景華,楊冠魯?shù)龋贔PGA的無刷直流電機控制系統(tǒng)設計[J].微計算機信息.2008,11-2:p220-221</p><p>  [2] 歷風滿.數(shù)字PID控制算法的研究[J].遼寧大學學報,2005,32(4):367~370.</p><p>  [3] 包松,鮑可進,余景華

86、.基于單片機PID算法的直流電機測控系統(tǒng)[J].微機發(fā)展,2003,13(8):72~74</p><p>  [4] 張培仁,孫力主編.基于C語言C8051F系列微控制器原理與應用[M].清華大學出版社,2007年11月.</p><p>  [5] Boudreaux R R,Nelms R M,Hung John Y.Simulation and Modeling of a DC

87、 – DC converter controlled by an 8 – bit microcontroller. IEEE –APEC.2,1997 </p><p>  [6] 竇振中,單片機外圍器件使用手冊[M].北京航空航天大學出版社,2003.</p><p>  [7] 張立勛,沈錦華,路敦民,等.A R單片機實現(xiàn)的直流電機PWM 調速控制器[J] .機械與電子,2004(

88、4) :29- 32</p><p>  [8] 陳伯時. 電力拖動自動控制系統(tǒng)[M] .第3版北京:機械工業(yè)出版社,2003</p><p>  [9] 鄧星鐘.機電傳動控制[M]. 武漢:華中科技大學出版社,2001.</p><p>  [10] 郭海英.微機控制PWM直流調速系統(tǒng)設計[J].武漢:華中科技大學出版社,2006.</p>&l

89、t;p>  [11] 潘新民.微型計算機控制技術[M].北京:電子工業(yè)出版社,2003.</p><p>  [12]楊輝先,黃輝光.單片機原理及應用[M].人民郵電出版社,2006年10月.</p><p>  附錄1 直流電機控制系統(tǒng)實物圖</p><p><b>  附錄2程序代碼</b></p><p&g

90、t;  //該程序可通過按鍵盤和串口控制直流電動機速度,誤差每秒+-2轉,</p><p>  #include <c8051f000.h> // SFR declarations</p><p>  #define SYSCLK 11059200 // SYSCLK in Hz </p><p>

91、;  #define CP8// 比例常數(shù) Proportional Const</p><p>  #define CI3// 積分常數(shù) Integral Const</p><p>  #defineCD1</p><p>  // 波形為低電平的PCA周期數(shù),占空度 = (256 - PWM) / 256</p><

92、;p>  //-----------------------------------------------------------------------------</p><p>  // Function Prototypes</p><p>  //---------------------------------------------------------------

93、--------------</p><p>  sbit rd = P1^7;</p><p>  sbit re = P1^5;</p><p>  sbit wr= P1^6;</p><p>  sbit addr0= P1^0;</p><p>  sbit addr1= P1^1;&

94、lt;/p><p>  sbit addr2= P1^2;</p><p>  sbit addr3= P1^3;</p><p>  sbit addr4= P1^4;</p><p>  sbit data0= P2^0;</p><p>  sbit data1= P2^1;</p><

95、p>  sbit data2= P2^2;</p><p>  sbit data3= P2^3;</p><p>  sbit lcd_en = P3^0;</p><p>  sbit phase = P0^7;//控制方向管腳</p><p><b>  //自函數(shù)定義</b></p>&l

96、t;p>  void OSCILLATOR_Init (void); //晶振初始化 </p><p>  void PORT_Init (void);//端口初始化</p><p>  void PCA_Init(void);//PCA計數(shù)器初試化</p><p>  void write (int addr, int datain);&l

97、t;/p><p>  unsigned int read();</p><p>  void delay(int time_10ms);</p><p>  void Timer2_ISR(void);</p><p>  unsigned int pwm=0xa0;//占空比初始狀態(tài)為(256-0xa0)/256</p><

98、p>  void Timer2_Init(void);</p><p>  void Timer0_Init(void);</p><p>  int DCMotor_Speed_PID(int SetSpeed, int CurSpeed);//PID控制算法</p><p>  void UART0_Init (void);//串口初始化</p>

99、;<p><b>  //變量定義</b></p><p>  unsigned int zhushu,percent=0,zhushu1=50;</p><p>  int i1=0,i2=0,i3=0,i4=0;</p><p>  int n=0,m=0,l=0;</p><p><b> 

100、 //主函數(shù)</b></p><p>  void main (void)</p><p>  { unsigned int temp1,temp2,wei2,temp_wei;</p><p>  WDTCN = 0xde; // 靜止看門狗</p><p>  WDTCN =

101、 0xad;</p><p>  OSCILLATOR_Init (); // 晶振初始化</p><p>  PORT_Init(); // 端口初始化</p><p>  PCA0CPL0 = 0xa0; // 初始化PCA的PWM值</p><p>

102、;  PCA0CPH0 = 0xa0;</p><p>  PCA0CPL1 = 0xa0; // 初始化PCA的PWM值</p><p>  PCA0CPH1 = 0xa0;;</p><p>  Timer0_Init();//定時器0初始化</p><p>  Timer2_Init();//定時器2初始化</p><

103、;p><b>  lcd_en=0;</b></p><p>  PCA_Init();//PCA計數(shù)器初始化</p><p>  phase=1;//</p><p>  write(2,0);write(1,0);write(3,0);write(4,0);write(5,0);write(6,0);//所有數(shù)碼管顯示0</p&

104、gt;<p>  UART0_Init ();//串口初始化</p><p>  EA=1;//開中斷</p><p><b>  while (1)</b></p><p>  {temp1=read();//讀按鍵</p><p>  if (temp1!=temp2) </p><

105、p><b>  {</b></p><p>  delay(10);</p><p>  temp2=read();//再讀一次</p><p>  if (temp1==temp2) </p><p><b>  { </b></p><p>  temp_wei

106、=temp2;</p><p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //key1按鍵</p><p>  { i1++; if (i1==10) i1=0; write(6,i1); }//設置每秒轉速十位</p><p>  temp_wei>>=1;</p><

107、p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //key2按鍵盤設置轉速個位</p><p>  { i2++ ; if (i2==10) i2=0;write(5,i2); }</p><p>  temp_wei>>=1;</p><p>  wei2=temp_wei%2;&l

108、t;/p><p>  if(wei2==0) //key3按鍵用于調整轉動方向</p><p>  { phase=~phase;}</p><p>  temp_wei>>=1;</p><p>  wei2=temp_wei%2;</p><p>  if(wei2==0) //用于計算轉速的大小</

109、p><p>  { zhushu1=i1*10+i2; </p><p><b>  }</b></p><p>  } // end of while(1)</p><p><b>  } </b></p><p

110、>  write(4,zhushu1/10);</p><p>  write(3,zhushu1%10); </p><p><b>  } </b></p><p>  } // end of main()</p><p>  void OS

111、CILLATOR_Init (void)</p><p><b>  { </b></p><p><b>  int i;</b></p><p>  OSCXCN=0x67; //使能外部時鐘</p><p>  for(i=0;i<256;

112、i++); //等待外部時鐘穩(wěn)定</p><p>  while(!(OSCXCN & 0x80));</p><p>  OSCICN = 0x08; // 禁止內部時鐘,采用外部晶振蕩器</p><p><b>  }</b></p><p&

113、gt;  void PCA_Init(void)</p><p><b>  {</b></p><p>  PCA0MD = 0x02; // 禁止CF中斷 // PCA時基= SYSCLK / 4</p><p>  PCA0CPM0 = 0x42; // CCM0為8位PWM方式</p><p>  PCA0C

114、PM1 = 0x42; // CCM0為8位PWM方式</p><p>  PCA0CN = 0x40; // 允許PCA計數(shù)器</p><p><b>  }</b></p><p>  void PORT_Init (void)</p><p><b>  {</b></p>&l

115、t;p>  PRT1CF |= 0xff; //全部采用推挽方式 </p><p>  PRT2CF |= 0xff; //</p><p>  PRT0CF |= 0xff; // </p><p>  P1 |= 0xa0;

116、 // </p><p>  XBR0 = 0x10; //CEX0 CEX1 連到P0.2 P0.3 //TX RX P0.4 P0.5</p><p>  XBR1 = 0x02; //T0 P0.6</p><p>  XBR2 = 0x40

117、; // 使能交叉開關</p><p><b>  }</b></p><p>  void Timer0_Init(void)</p><p><b>  {</b></p><p>  TMOD=0X25;//定時器0計數(shù)方式16位,定時器1定時16位</p&g

118、t;<p><b>  TH0=0X00;</b></p><p><b>  TL0=0X00;</b></p><p>  TR0=1;//開定時器0</p><p>  ET0=0;//不允許定時器0中斷</p><p><b>  }</b></p&

溫馨提示

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

評論

0/150

提交評論