版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《計算機控制技術(shù)課程設(shè)計》</p><p> 題 目: 基于STM32的直流電機PID調(diào)速 </p><p> 學院: 計算機與電子信息學院 </p><p> 專業(yè): 電氣工程及其自動化 </p><p> 班級: 電氣12-5
2、 </p><p> 學號: 12034320515 </p><p> 姓名: </p><p> 任課教師: </p><p>
3、 完成時間: 2015.11.18——2015.12.30 </p><p> 基于STM32的直流電機PID調(diào)速</p><p><b> 摘要</b></p><p> 電機轉(zhuǎn)速控制在運動控制系統(tǒng)中占有至關(guān)重要的地位,本設(shè)計將電機轉(zhuǎn)速控制作為研究對象;以PID為基本控制算法,STM32F103單片機為控制核心,產(chǎn)生受PID算法
4、控制的PWM脈沖實現(xiàn)對直流電機轉(zhuǎn)速的控制。同時利用光電傳感器將電機速度轉(zhuǎn)換成脈沖頻率反饋到單片機中,實現(xiàn)轉(zhuǎn)速閉環(huán)控制,達到轉(zhuǎn)速無靜差調(diào)節(jié)的目的。在系統(tǒng)中采320×240TFTLCD顯示器作為顯示部件,通過4個按鍵通過界面切換方式設(shè)置P、I、D、V四個參數(shù)和正反轉(zhuǎn)控制,啟動后可以通過顯示部件了解電機當前的運行狀態(tài)和系統(tǒng)的CPU溫度。該系統(tǒng)控制精度高,具有很強的抗干擾能力。</p><p> 關(guān)鍵詞:PI
5、D 直流電機 反饋 調(diào)節(jié)</p><p> Based on the STM32 PID speed control of dc motor</p><p><b> Abstract</b></p><p> Motor speed control occupies a crucial position in the mot
6、ion control system, the design of the motor speed control for the study; in the basic PID control algorithm, STM32F103 microcontroller core, by the PID control algorithm generates a PWM pulse to achieve DC speed control.
7、 At the same time the use of photoelectric sensors to convert the motor speed to pulse frequency feedback to the microcontroller to achieve closed-loop speed control, to speed static error adjustment purposes. Mining 320
8、 ×</p><p> Keywords: PID DC motor feedback regulation</p><p><b> 目錄</b></p><p><b> 1. 緒論1</b></p><p> 1.1 研究背景與意義1</p><p&g
9、t; 1.2本文主要研究方法1</p><p> 2. 設(shè)計方案與論證2</p><p> 2.1系統(tǒng)設(shè)計方案2</p><p> 2.2控制器模塊設(shè)計方案2</p><p> 3. 系統(tǒng)硬件電路設(shè)計3</p><p> 3.1整體電路設(shè)計3</p><p> 3.1.
10、1整體理論3</p><p> 3.1.2整體簡單結(jié)構(gòu)圖和資源分配圖3</p><p> 3.2最小單片機系統(tǒng)設(shè)計4</p><p> 3.2.1 STM32F103復位電路6</p><p> 3.2.2電源電路6</p><p> 3.3電機驅(qū)動電路設(shè)計7</p><p&g
11、t; 3.4光電碼盤編碼器電路設(shè)計7</p><p> 3.5顯示電路設(shè)計8</p><p> 3.6按鍵電路設(shè)計10</p><p> 4. 系統(tǒng)軟件設(shè)計10</p><p> 4.1 PID算法10</p><p> 4.2 PID參數(shù)整定方法11</p><p>
12、 4.3 電機速度采集算法12</p><p> 4.4程序流程圖12</p><p> 5. 系統(tǒng)調(diào)試13</p><p> 5.1軟件調(diào)試13</p><p> 5.2 系統(tǒng)測試與分析14</p><p> 6. 總結(jié)與展望15</p><p><b> 參
13、考文獻16</b></p><p> 附錄一 部分程序源程序17</p><p> 附錄二 系統(tǒng)界面實物圖和PCB圖20</p><p><b> 緒論</b></p><p><b> 研究背景與意義</b></p><p> 電動機在現(xiàn)代的
14、工業(yè)中,是主要的驅(qū)動設(shè)備,尤其是直流電動機,由于它的平滑調(diào)速性和結(jié)構(gòu)上的簡單,使其成為許多電器,如洗衣機,電梯等的驅(qū)動 。而對于直流電機的控制,最流行的莫過于采用可控硅裝置向電動機供電,即KZ—D拖動系統(tǒng)。起初的控制系統(tǒng)是發(fā)電機—電動機系統(tǒng),相當?shù)谋恐亍?lt;/p><p> 隨著電力電子技術(shù)和單片機的成熟應(yīng)用[1],使得直流電機調(diào)速系統(tǒng)從模擬化向數(shù)字化轉(zhuǎn)變。而PWM脈寬調(diào)制,是現(xiàn)在應(yīng)用最成熟的方法。它來源于電力電
15、子的橋式電路,通過單片機可進行簡單的模擬,而將它們結(jié)合起來,由電力電子元件組橋進行方向控制,而由單片機產(chǎn)生PWM波控制晶閘管的門極。調(diào)節(jié)占空比就能夠控制電機的平均電壓,從而控制電機的轉(zhuǎn)速。</p><p> 直流電動機調(diào)速應(yīng)用于實際中各個方面,工業(yè),家電等,因為它能夠在一個相當大的范圍內(nèi)進行平滑調(diào)速。但是早起以模擬元件為控制裝置的系統(tǒng),由于模擬元件本身的缺陷,導致硬件復雜,功能簡單,不靈活,誤差大,無法實行精確
16、的調(diào)速。單片機的應(yīng)用解決了這個問題的一部分,誤差可由許多完善的算法來解決,而且減小了硬件的復雜性[2]。使得直流調(diào)速逐步由模擬化向數(shù)字化轉(zhuǎn)變,使直流調(diào)速進入一個更加智能與可靠的新階段。</p><p><b> 本文主要研究方法</b></p><p> 本文主要研究了利用STM32系列單片機,通過PWM方式控制直流電機調(diào)速的方法[3]。PWM控制技術(shù)以其控制簡單
17、、靈活和動態(tài)響應(yīng)好的優(yōu)點而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,也是人們研究的熱點。由于當今科學技術(shù)的發(fā)展已經(jīng)沒有了學科之間的界限,結(jié)合現(xiàn)代控制理論思想或?qū)崿F(xiàn)無諧振軟開關(guān)技術(shù)將會成為PWM控制技術(shù)發(fā)展的主要方向之一[4]。</p><p> 本文就是利用這種控制方式來改變電壓的占空比實現(xiàn)直流電機速度的控制。文章中采用了專門的芯片組成了PWM信號的發(fā)生系統(tǒng)[5],然后通過L298N放大來驅(qū)動電機。利用光電編碼盤器
18、測得電機速度,然后反饋給單片機,在內(nèi)部進行PID運算,輸出控制量完成閉環(huán)控制,實現(xiàn)電機的調(diào)速控制。</p><p><b> 2.設(shè)計方案與論證</b></p><p> 2.1 系統(tǒng)設(shè)計方案</p><p> 根據(jù)系統(tǒng)設(shè)計的任務(wù)和要求,設(shè)計系統(tǒng)方框圖如圖1所示[6]。圖中控制器模塊為系統(tǒng)的核心部件,鍵盤和顯示器用來實現(xiàn)人機交互功能,其中
19、通過鍵盤將需要設(shè)置的參數(shù)和狀態(tài)輸入到單片機中,并且通過控制器顯示到顯示器上。在運行過程中控制器產(chǎn)生PWM脈沖送到電機驅(qū)動電路中,經(jīng)過放大后控制直流電機轉(zhuǎn)速,同時利用速度檢測模塊將當前轉(zhuǎn)速反饋到控制器中,控制器經(jīng)過數(shù)字PID運算后改變PWM脈沖的占空比,實現(xiàn)電機轉(zhuǎn)速實時控制的目的[7]。</p><p> 圖1 系統(tǒng)方案框圖</p><p> 2.2 控制器模塊設(shè)計方案</p&g
20、t;<p> 根據(jù)設(shè)計任務(wù),控制器主要用于產(chǎn)生占空比受數(shù)字PID算法控制的PWM脈沖,并對電機當前速度進行采集處理,根據(jù)算法得出當前所需輸出的占空比脈沖。對于控制器的選擇有以下二種方案。</p><p> 方案一:采用FPGA(現(xiàn)場可編輯門列陣)作為系統(tǒng)的控制器,F(xiàn)PGA可以實現(xiàn)各種復雜的邏輯功能,模塊大,密度高,它將所有器件集成在一塊芯片上,減少了體積,提高了穩(wěn)定性,并且可應(yīng)用EDA軟件仿真、
21、調(diào)試,易于進行功能控制。FPGA采用并行的輸入輸出方式,提高了系統(tǒng)的處理速度,適合作為大規(guī)模實時系統(tǒng)的控制核心。通過輸入模塊將參數(shù)輸入給FPGA,F(xiàn)PGA通過程序設(shè)計控制PWM脈沖的占空比,但是由于本次設(shè)計對數(shù)據(jù)處理的時間要求不高,F(xiàn)PGA的高速處理的優(yōu)勢得不到充分體現(xiàn),并且由于其集成度高,使其成本偏高,同時由于芯片的引腳較多,實物硬件電路板布線復雜,加重了電路設(shè)計和實際焊接的工作[8]。</p><p> 方
22、案二:采用STM32F103作為系統(tǒng)控制的方案。STM32F103單片機算術(shù)運算功能強,軟件編程靈活、自由度大,可用軟件編程實現(xiàn)各種算法和邏輯控制。相對于FPGA來說,它的芯片引腳少,在硬件很容易實現(xiàn)。并且它還具有功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點,在各個領(lǐng)域中應(yīng)用廣泛。</p><p> 綜合上述兩種方案比較,采用STM32F103作為控制器處理輸入的數(shù)據(jù)并控制電機運動較為簡單,可以滿足設(shè)計要求。因此在本
23、次設(shè)計選用方案二。</p><p> 3.系統(tǒng)硬件電路設(shè)計</p><p><b> 3.1整體電路設(shè)計</b></p><p><b> 3.1.1整體理論</b></p><p> 單片機直流電機調(diào)速簡介:單片機直流調(diào)速系統(tǒng)可實現(xiàn)對直流電動機的平滑調(diào)速。PWM是通過控制固定電壓的直流電源
24、開關(guān)頻率,從而改變負載兩端的電壓,進而達到控制要求的一種電壓調(diào)整方法。在PWM驅(qū)動控制的調(diào)整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并根據(jù)需要改變一個周期內(nèi)“接通”和“斷開”時間的長短。通過改變直流電機電樞上電壓的“占空比”來改變平均電壓的大小,從而控制電動機的轉(zhuǎn)速。因此,PWM又被稱為“開關(guān)驅(qū)動裝置”。本系統(tǒng)以89C52單片機為核心,通過單片機控制,C語言編程實現(xiàn)對直流電機的平滑調(diào)速[9]。</p><p>
25、 系統(tǒng)控制方案的分析:本直流電機調(diào)速系統(tǒng)以單片機系統(tǒng)為依托,根據(jù)PWM調(diào)速的基本原理,以直流電機電樞上電壓的占空比來改變平均電壓的大小,從而控制電動機的轉(zhuǎn)速為依據(jù),實現(xiàn)對直流電動機的平滑調(diào)速,并通過單片機控制速度的變化。本文所研究的直流電機調(diào)速系統(tǒng)主要是由硬件和軟件兩大部分組成。硬件部分是前提,是整個系統(tǒng)執(zhí)行的基礎(chǔ),它主要為軟件提供程序運行的平臺。而軟件部分,是對硬件端口所體現(xiàn)的信號,加以采集、分析、處理,最終實現(xiàn)控制器所要實現(xiàn)的各項
26、功能,達到控制器自動對電機速度的有效控制。</p><p> 3.1.2整體簡單結(jié)構(gòu)圖和資源分配圖</p><p> 本系統(tǒng)硬件資源分配見圖2所示,簡單結(jié)構(gòu)如圖4。采用STM32F103單片機作為核心器件,轉(zhuǎn)速檢測模塊作為電機轉(zhuǎn)速測量裝置[10],通過STM32F103的PA(A相)和PA7(B相)將電脈沖信號送入單片機處理,L298作為直流電機的驅(qū)動模塊,利用320×240
27、TFTLCD顯示器和4個獨立按鍵作為人機接口。</p><p> 圖2 系統(tǒng)電路連接及硬件資源分配圖</p><p> 3.2最小單片機系統(tǒng)設(shè)計</p><p> STM32F103ZETT6作為MCU,該芯片是STM32F103里面配置非常強大的了,它擁有的資源包括:64KB SRAM、512KB FLASH、2個基本定時器、4個通用定時器、2個高級定時器、
28、2個DMA控制器(共12個通道)、3個SPI、2個IIC、5個串口、1個USB、1個CAN、3個12位ADC、1個12位DAC、1個SDIO接口、1個FSMC接口以及112個通用IO口。該芯片的配置十分強悍,并且還帶外部總線(FSMC)可以用來外擴SRAM和連接LCD等,通過FSMC驅(qū)動LCD,可以顯著提高LCD的刷屏速度,是STM32F1家族常用型號里面,最高配置的芯片了。MCU部分的原理圖如圖3所示:</p><
29、p> 圖3 MCU最小系統(tǒng)設(shè)計圖</p><p> STM32F103復位電路</p><p> STM32F103的復位電路如圖4所示:</p><p><b> 圖4 復位電路圖</b></p><p> 因為STM32是低電平復位的,所以我們設(shè)計的電路也是低電平復位的,這里的R3和C12構(gòu)成了上
30、電復位電路。同時,開發(fā)板把TFT_LCD的復位引腳也接在RESET上,這樣這個復位按鈕不僅可以用來復位MCU,還可以復位LCD。</p><p><b> 電源電路</b></p><p> STM32F103板載的電源供電部分,其原理圖如圖5所示:</p><p><b> 圖5 電源電路</b></p&
31、gt;<p> 圖中,總共有3個穩(wěn)壓芯片:U12/U13/U15,DC_IN用于外部直流電源輸入,范圍是DC6~24V,輸入電壓經(jīng)過U13 DC-DC芯片轉(zhuǎn)換為5V電源輸出,其中D4是防反接二極管,避免外部直流電源極性搞錯的時候,燒壞開發(fā)板。K2為開發(fā)板的總電源開關(guān),F(xiàn)1為1000ma自恢復保險絲,用于保護USB。U12為3.3V穩(wěn)壓芯片,給開發(fā)板提供3.3V電源,而U15則是1.8V穩(wěn)壓芯片,供VS1053的CVDD使
32、用。</p><p><b> 電機驅(qū)動電路設(shè)計</b></p><p> 驅(qū)動模塊是控制器與執(zhí)行器之間的橋梁,在本系統(tǒng)中單片機的I/O口不能直接驅(qū)動電機,只有引入電機驅(qū)動模塊才能保證電機按照控制要求運行,在這里選用L298N電機驅(qū)動芯片驅(qū)動電機,該芯片是由四個大功率晶體管組成的H橋電路構(gòu)成,四個晶體管分為兩組,交替導通和截止,用單片機控制達林頓管使之工作在開關(guān)狀
33、態(tài),通過調(diào)整輸入脈沖的占空比,調(diào)整電動機轉(zhuǎn)速[11]。其中輸出腳(SENSEA和SENSEB)用來連接電流檢測電阻,Vss接邏輯控制的電源。Vs為電機驅(qū)動電源。IN1-IN4輸入引腳為標準TTL 邏輯電平信號,用來控制H橋的開與關(guān)即實現(xiàn)電機的正反轉(zhuǎn),ENA、ENB引腳則為使能控制端,用來輸入PWM信號實現(xiàn)電機調(diào)速。其電路如圖6所示,利用兩個光電耦合器將單片機的I/O與驅(qū)動電路進行隔離,保證電路安全可靠。這樣單片機產(chǎn)生的PWM脈沖控制L2
34、98N的選通端[12],使電機在PWM脈沖的控制下正常運行,其中四個二極管對芯片起保護作用。</p><p> 圖6 電機驅(qū)動電路</p><p> 光電碼盤編碼器電路設(shè)計</p><p> 在本系統(tǒng)中由于要將電機本次采樣的速度與上次采樣的速度進行比較,通過偏差進行PID運算,因此速度采集電路是整個系統(tǒng)不可缺少的部分。本次設(shè)計中應(yīng)用了比較常見的光電測速方法來
35、實現(xiàn),其具體做法是將電機軸上固定一圓盤,且其邊緣上有N個等分凹槽如圖7所示,在圓盤的一側(cè)固定一個發(fā)光二極管,其位置對準凹槽處,在另一側(cè)和發(fā)光二極光平行的位置上固定一光敏三極管,如果電動機轉(zhuǎn)到凹槽處時,發(fā)光二極管通過縫隙將光照射到光敏三極管上,三極管導通,反之三極管截止,電路如圖8所示,從圖中可以得出電機每轉(zhuǎn)一圈在PA6(或PA7)的輸出端就會產(chǎn)生N個低電平。這樣就可根據(jù)低電平的數(shù)量來計算電機此時轉(zhuǎn)速了[13]。例如當電機以一定的轉(zhuǎn)速運行
36、時,PA6(或PA7)將輸出如圖3.5所示的脈沖,若知道一段時間t內(nèi)傳感器輸出的低脈沖數(shù)為n,則可求出電機轉(zhuǎn)速。</p><p> 圖7 電機速度采集方案</p><p> 圖8 傳感器輸出脈沖波形</p><p><b> 顯示電路設(shè)計</b></p><p> 根據(jù)設(shè)計要求要對系統(tǒng)各項參數(shù)和電機運行狀態(tài)進
37、行顯示,因此在電路中加入顯示模塊是非常必要的[14]。在系統(tǒng)運行過程中需要顯示的數(shù)據(jù)比較多,而且需要漢字顯示,在這里選用320×240液晶顯示器比較適合,它是一種圖形點陣液晶顯示器,主要由行驅(qū)動器/列驅(qū)動器及320×240全點陣液晶顯示器組成,可完成漢字顯示和圖形顯示,模塊原理圖如圖9。</p><p> 圖9 2.8寸TFTLCD模塊原理圖</p><p> 從圖
38、9可以看出,ALIENTEK TFTLCD模塊采用16位的并方式與外部連接,之所以不采用8位的方式,是因為彩屏的數(shù)據(jù)量比較大,尤其在顯示圖片的時候,如果用8位數(shù)據(jù)線,就會比16位方式慢一倍以上,我們當然希望速度越快越好,所以我們選擇16位的接口。圖10還列出了觸摸屏芯片的接口。</p><p> 圖10 2.8寸TFTLCD模塊接口圖</p><p><b> 按鍵電路設(shè)計&
39、lt;/b></p><p> 根據(jù)設(shè)計需求,本系統(tǒng)中使用了4個獨立按鍵用以實現(xiàn)對P、I、D三個參數(shù)和電機正反轉(zhuǎn)的設(shè)定,以及對電機啟動、停止、暫停、繼續(xù)的控制,其電路原理圖如圖11所示。</p><p> 圖11 按鍵與STM32連接原理圖</p><p> 鍵盤操作說明:在系統(tǒng)開始運行時,320×240TFTLCD將顯示開機界面,按KEY_
40、DOWN控制正反轉(zhuǎn),按KEY_LIFT減少速度,按KEY_RIGHT增加速度,若按住設(shè)置鍵(KEY_UP)不放顯示屏進入?yún)?shù)設(shè)置界面,并且可以顯示當前CPU溫度,待所有量設(shè)置完成后放開設(shè)置鍵,設(shè)置完成。</p><p><b> 4.系統(tǒng)軟件設(shè)計</b></p><p><b> 4.1 PID算法</b></p><p&
41、gt; 本系統(tǒng)設(shè)計的核心算法為PID算法,它根據(jù)本次采樣的數(shù)據(jù)與設(shè)定值進行比較得出偏差,對偏差進行P、I、D運算最終利用運算結(jié)果控制PWM脈沖的占空比來實現(xiàn)對加在電機兩端電壓的調(diào)節(jié)[15],進而控制電機轉(zhuǎn)速。其運算公式為:</p><p> 因此要想實現(xiàn)PID控制在單片機就必須存在上述算法,其程序流程如圖12所示,PID控制原理圖如圖13。</p><p> 圖13 PID控制原理圖
42、</p><p><b> PID參數(shù)整定方法</b></p><p> 如何選擇控制算法的參數(shù),要根據(jù)具體過程的要求來考慮[16]。一般來說,要求被控過程是穩(wěn)定的,能迅速和準確地跟蹤給定值的變化,超調(diào)量小,在不同干擾下系統(tǒng)輸出應(yīng)能保持在給定值,操作變量不宜過大,在系統(tǒng)和環(huán)境參數(shù)發(fā)生變化時控制應(yīng)保持穩(wěn)定。顯然,要同時滿足上述各項要求是很困難的,必須根據(jù)具體過程的要
43、求,滿足主要方面,并兼顧其它方面。</p><p> PID調(diào)節(jié)器是一種線性調(diào)節(jié)器,它根據(jù)給定值與實際輸出值構(gòu)成的控制偏差: =- (1)</p><p> 將偏差的比例、積分、微分通過線性組合構(gòu)成控制量,對控制對象進行控制,故稱為PID調(diào)節(jié)器。在實際應(yīng)用中,常根據(jù)對象的特征和控制要求,將P、I、
44、D基本控制規(guī)律進行適當組合,以達到對被控對象進行有效控制的目的。例如,P調(diào)節(jié)器,PI調(diào)節(jié)器,PID調(diào)節(jié)器等。</p><p> 模擬PID調(diào)節(jié)器的控制規(guī)律為</p><p><b> (2)</b></p><p> 式中,為比例系數(shù),為積分時間常數(shù),為微分時間常數(shù)。</p><p> 簡單的說,PID調(diào)節(jié)器各校
45、正環(huán)節(jié)的作用是:</p><p> ?。?)比例環(huán)節(jié):即時成比例地反應(yīng)控制系統(tǒng)的偏差信號,偏差一旦產(chǎn)生,調(diào)節(jié)器立即產(chǎn)生控制作用以減少偏差;</p><p> ?。?)積分環(huán)節(jié):主要用于消除靜差,提高系統(tǒng)的無差度。積分作用的強弱取決于積分時間常數(shù),越大,積分作用越弱,反之則越強;</p><p> ?。?)微分環(huán)節(jié):能反映偏差信號的變化趨勢(變化速率),并能在偏差信號
46、的值變得太大之前,在系統(tǒng)中引入一個有效的早期修正信號,從而加快系統(tǒng)的動作速度,減少調(diào)節(jié)時間。</p><p> PID參數(shù)調(diào)節(jié)有下面的口訣:</p><p> 參數(shù)整定找最佳,從小到大順序查;</p><p> 先是比例后積分,最后再把微分加;</p><p> 曲線振蕩很頻繁,比例度盤要放大;</p><p>
47、; 曲線漂浮繞大灣,比例度盤往小扳;</p><p> 曲線偏離回復慢,積分時間往下降;</p><p> 曲線波動周期長,積分時間再加長;</p><p> 曲線振蕩頻率快,先把微分降下來;</p><p> 動差大來波動慢,微分時間應(yīng)加長。</p><p><b> 電機速度采集算法</
48、b></p><p> 本系統(tǒng)中電機速度采集是一個非常重要的部分,它的精度直接影響到整個控制的精度[17]。在設(shè)計中采用了光電傳感器做為測速裝置,其計算公式為: </p><p><b> v= r/min</b></p><p> 從這里可以看出速度v的誤差主要是由圓盤邊緣上的凹槽數(shù)的多少決定的,為了減少系統(tǒng)誤差應(yīng)盡量提高
49、凹槽的數(shù)量,在本次設(shè)計中取凹槽數(shù)N為120,采樣時間t為0.5s,則速度計算具體程序流程如圖14所示。 </p><p><b> 圖14 測速程</b></p><p><b> 程序流程圖</b></p><p> 在一個完整的系統(tǒng)中,只有硬件部分是不能完成相應(yīng)設(shè)計任務(wù)的,所以在該系統(tǒng)中軟件部分是非常重要的,按
50、照要求和系統(tǒng)運行過程設(shè)計出主程序流程如圖15所示。</p><p> 圖15 主程序流程</p><p><b> 系統(tǒng)調(diào)試</b></p><p><b> 5.1 軟件調(diào)試</b></p><p> 在程序編寫的過程中,出現(xiàn)了很多問題,包括鍵盤掃描處理、PWM信號發(fā)生電路的控制、以及單
51、片機控制直流電機的轉(zhuǎn)動方向等問題,雖然問題不是很大,但是也讓我研究了好長時間,在解決這些問題的時候,我不斷向老師和同學請教,希望能通過大家一塊的努力把軟件編寫的更完整,讓系統(tǒng)的功能更完備。經(jīng)過多天的努力探索,也經(jīng)過老師的指導,大部分問題都已經(jīng)解決,就是程序還是不能實現(xiàn)應(yīng)該實現(xiàn)的功能,這讓我很著急。后來經(jīng)過一點一點的調(diào)試,并認真總結(jié),發(fā)現(xiàn)了問題其實在編寫中斷處理程序時出現(xiàn)了錯誤,修改后即可實現(xiàn)直流電機調(diào)速的目的。總結(jié)這次軟件調(diào)試,讓我認識
52、到了做軟件調(diào)試的基本方法與流程:</p><p> ?。?)認真檢查源代碼,看是否有文字或語法錯誤</p><p> ?。?)逐段子程序進行設(shè)計,找出錯誤出現(xiàn)的部分,重點排查</p><p> 找到合適的方法,仔細檢查程序,分步調(diào)試直到運行成功</p><p> 5.2 系統(tǒng)測試與分析</p><p> 為了確定
53、系統(tǒng)與設(shè)計要求的符合程度,需要進行系統(tǒng)測試與分析,下面以PID調(diào)節(jié)器為例,具體說明經(jīng)驗法的整定步驟:</p><p> ①讓調(diào)節(jié)器參數(shù)積分系數(shù)=0,實際微分系數(shù)=0,控制系統(tǒng)投入閉環(huán)運行,由小到大改變比例系數(shù),讓擾動信號作階躍變化,觀察控制過程,直到獲得滿意的控制過程為止。</p><p> ?、谌”壤禂?shù)為當前的值乘以0.83,由小到大增加積分系數(shù),同樣讓擾動信號作階躍變化,直至求得滿
54、意的控制過程。</p><p> ?、鄯e分系數(shù)保持不變,改變比例系數(shù),觀察控制過程有無改善,如有改善則繼續(xù)調(diào)整,直到滿意為止。否則,將原比例系數(shù)增大一些,再調(diào)整積分系數(shù),力求改善控制過程。如此反復試湊,直到找到滿意的比例系數(shù)和積分系數(shù)為止。</p><p> ?、芤脒m當?shù)膶嶋H微分系數(shù)和實際微分時間,此時可適當增大比例系數(shù)和積分系數(shù)。和前述步驟相同,微分時間的整定也需反復調(diào)整,直到控制過程
55、滿意為止。</p><p> 根據(jù)上訴方法,通過觀察得出該系統(tǒng)比較合適的P、I、D三者的參數(shù)值為: =4.0, =0.9, =1.0。</p><p><b> 6.總結(jié)與展望</b></p><p> 這一段時間過的無比的充實,每天都在忙碌著,查閱資料,翻看文檔,了解相關(guān)的知識,每一個設(shè)計細節(jié)都要仔細的考慮,每一個環(huán)節(jié)都要查閱相關(guān)的資料
56、,爭取做到完美。在這個系統(tǒng)中以前學的很多東西現(xiàn)在都用上了,數(shù)碼管的移位顯示等等都是在以前學習的基礎(chǔ)上慢慢調(diào)試出來的,所以在寫這篇論文的時候又讓我對以前的知識進行了一次回顧,對知識又有了新的認識!真是受益匪淺!</p><p> 通過本次課程設(shè)計,我學到了許多了東西,知道光靠書本上的東西是不夠的,需額外去查資料。無論是在硬件、軟件還是設(shè)計思路上,我都遇到了不少的問題,在克服困難的過程中,我學到了許多。知道了PID
57、算法的應(yīng)用,以前總覺得PID就是像做數(shù)學一樣,不知道實際應(yīng)用。通過本次設(shè)計,讓我很好的鍛煉了理論與具體項目、課題相結(jié)合開發(fā)、設(shè)計產(chǎn)品的能力。既讓我們懂得了怎樣把理論應(yīng)用于實際,又讓我們懂得了在實踐中遇到的問題怎樣用理論去解決。</p><p><b> 參考文獻</b></p><p> [1]李建忠,余新拴,吳耀華.單片機原理及應(yīng)用(第二版)[M].西安電子科技
58、大學出版社,2011.291.</p><p> [2]劉軍,張洋,嚴漢字. STM32F1開發(fā)指南-庫函數(shù)版本_V3.1[M].北京航空航天大學出版社,2015.5.8.</p><p> [3]譚浩強.C程序設(shè)計(第三版)[M].清華大學出版社,2007.20.</p><p> [4]閻石.數(shù)字電子技術(shù)基礎(chǔ)(第五版)[M].高等教育出版社,2010.3.
59、</p><p> [5]張友德.單片機原理應(yīng)用與實驗[M].復旦大學出版社,1992.42.</p><p> [6]張毅剛,彭喜源,譚曉鈞,曲春波. MCS-51單片機應(yīng)用設(shè)計[M].哈爾濱工業(yè)大學出版社,2001.35.</p><p> [7]宋慶環(huán),才衛(wèi)國,高志.89C51單片機在直流電動機調(diào)速系統(tǒng)中的應(yīng)用[M].唐山學院,2008.57</p
60、><p> [8]陳 錕,危立輝.基于單片機的直流電機調(diào)速器控制電路[J].中南民族大學學報,自然科學版,2003.5.</p><p> [9]李維軍 韓小剛 李 晉.基于單片機用軟件實現(xiàn)直流電機PWM調(diào)速系統(tǒng)[J].維普資訊,2007.32.</p><p> [10] 李杰. 51系列單片機輸出PWM的兩種方法[DB/DL]. http://www.591m
61、cu.net.2002-2</p><p> -14/2008-5-9.</p><p> [11] 張俊謨. 單片機中級教程[M]. 北京:北京航空航天大學出版社,2006:96.</p><p> [12] 何立民. MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M]. 北京:北京航空航天大學出版社,1990:83-87.</p>&
62、lt;p> [13] 風標電子. Proteus使用手冊[DB/OL]. http://www.windway.cn.2007-7-4/2008-5-9.</p><p> [14] 王偉,張晶濤,柴天佑. PID參數(shù)先進整定方法綜述[J].自動化學報,2000,(3):347-35.</p><p> [15] 韓京清. 非線性PID控制器[J].自動化學報,1994,(4)
63、:487-490.</p><p> [16] 萬佑紅,李新華. 用遺傳算法實現(xiàn)PID參數(shù)整定[J].自動化技術(shù)與應(yīng)用,2004,23 (7):7-8.</p><p> [17] Behzad Razavi.Design of Analog CMOS and Integrated Circuits[M].McGraw-Hill Companies,2001:28-36.</p
64、><p> 附錄一 部分程序源程序</p><p><b> 主程序:</b></p><p> #include "text.h"</p><p> #include "encoder.h" </p><p> #include "mo
65、tor.h"</p><p> #include "tsensor.h" //顯示內(nèi)部溫度的頭文件</p><p> #include "time.h" //定時器4用于內(nèi)部溫度檢測</p><p> #include "pid.h" </p><p> in
66、t main(void)</p><p><b> {</b></p><p> u8 key; </p><p> delay_init(); //延時函數(shù)初始化 </p><p> //NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2
67、位響應(yīng)優(yōu)先級</p><p> uart_init(9600); //串口初始化為9600</p><p> LED_Init(); //LED端口初始化</p><p> LCD_Init(); //初始化液晶 </p><p> //usmart_dev.init(72);//usmart初始化
68、 把中斷服務(wù)函數(shù)注釋掉了</p><p> BSP_Configuration(); //編碼器測速相關(guān)配置</p><p> mem_init(SRAMIN);//初始化內(nèi)部內(nèi)存池</p><p> exfuns_init();//為fatfs相關(guān)變量申請內(nèi)存 </p><p> f_mount(0,fs
69、[0]); //掛載SD卡 </p><p> f_mount(1,fs[1]); //掛載FLASH.</p><p> //控制電機轉(zhuǎn)速的PWM初始化</p><p> TIM2_PWM_Init();</p><p> MOTOR_GPIO_Config(); </p><p>
70、 KEY_Init(); //按鍵初始化 </p><p> EXTIX_Init(); //外部中斷初始化</p><p> //T_Adc_Init(); //ADC初始化,內(nèi)部溫度檢測</p><p> //TIM4_Int_Init(19999,7199);//10Khz的計數(shù)頻率,計數(shù)到20000為2s </
71、p><p> ////按KEY_UP或者自動更新字庫,不可省略</p><p> while(font_init()) //檢查字庫</p><p><b> {</b></p><p> LCD_Clear(WHITE); //清屏</p><p> POINT_COLOR=RE
72、D;//設(shè)置字體為紅色 </p><p> LCD_ShowString(60,50,200,16,16,"Warship STM32");</p><p> while(SD_Initialize())//檢測SD卡</p><p><b> {</b></p><p&g
73、t; LCD_ShowString(60,70,200,16,16,"SD Card Failed!");</p><p> delay_ms(200);</p><p> LCD_Fill(60,70,200+60,70+16,WHITE);</p><p> delay_ms(200); </p><p&
74、gt; } </p><p> LCD_ShowString(60,70,200,16,16,"SD Card OK");</p><p> LCD_ShowString(60,90,200,16,16,"Font Updating...");</p><p> key=update
75、_font(20,110,16,0);//從SD卡更新</p><p> while(key)//更新失敗</p><p><b> { </b></p><p> LCD_ShowString(60,110,200,16,16,"Font Update Failed!");</p>&
76、lt;p> delay_ms(200);</p><p> LCD_Fill(20,110,200+20,110+16,WHITE);</p><p> delay_ms(200); </p><p><b> } </b></p><p> LCD_ShowString(60,1
77、10,200,16,16,"Font Update Success!");</p><p> delay_ms(1500);</p><p> LCD_Clear(WHITE);//清屏 </p><p><b> } </b></p><p><b> whil
78、e(1){</b></p><p> startPID();</p><p> /* 顯示網(wǎng)格 */</p><p> _Display_Grid(RED);</p><p><b> }</b></p><p><b> }</b></p&g
79、t;<p><b> PID調(diào)節(jié)程序:</b></p><p> long int PID(int setpoint,int achieved)</p><p><b> {</b></p><p> long int result,TempResult;</p><p>
80、en=setpoint-achieved;</p><p> ErrorNum=p*en-i*(en-en1)+d*(en1-en2);</p><p> TempResult=(long int)(ErrorNum/20);</p><p> result=TempResult;</p><p><b> en2=en1;
81、</b></p><p><b> en1=en;</b></p><p> return result;</p><p><b> }</b></p><p><b> 顯示程序:</b></p><p> void startP
82、ID()</p><p><b> {</b></p><p> encoder_num1=TIM_GetCounter(TIM3);</p><p> TIM3->CNT = 0;</p><p> printf("\r\n---------編碼器1---------%d \r\n",
83、encoder_num1);</p><p> POINT_COLOR=RED;</p><p> Show_Str(10,110,200,16,"實際速度:",16,0);</p><p> Speed=encoder_num1/10;</p><p> LCD_ShowxNum(80,110,Speed
84、,3,16,0X80); //測得速度 pwm+=PID(config,Speed);</p><p> if(pwm>255)</p><p><b> pwm=250;</b></p><p><b> if(pwm<0)</b></p><p><b>
85、; pwm=20;</b></p><p> TIM2->CCR3=pwm; //關(guān)鍵的輸出PWM</p><p> duty=pwm*100/256; //duty要顯示小數(shù)后一位 所以要乘以10</p><p> POINT_COLOR=BLACK; </p><p> Show_St
86、r(30,30,200,16,"基于STM32的PID直流電機調(diào)速系統(tǒng)",16,0); </p><p> POINT_COLOR=BLUE;</p><p> Show_Str(20,50,200,16,"按鍵說明:狀態(tài):",16,0);</p><p> Show_Str(20,70,200,16,
87、" UP:設(shè)置 DOWN:正反 ",16,0);</p><p> Show_Str(20,90,200,16,"LEFT:減速 RIGHT:加速 ",16,0); POINT_COLOR=RED; </p><p> Show_Str(10,130,200,16,"占空比輸出: % ",16,0
88、); LCD_ShowxNum(100,130,duty,2,16,0X80); //占空比顯示</p><p> Show_Str(120,110,200,16,"給定速度:",16,0);</p><p> LCD_ShowxNum(200,110,config,3,16,0X80); //給定速度輸出</p&
89、gt;<p> ErrorShow(); //誤差顯示</p><p> ExterKey(); //外部按鍵</p><p><b> }</b></p><p> 附錄二 系統(tǒng)界面實物圖和PCB圖</p><p> 圖4 電機運動狀態(tài)圖</p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于stm32的直流電機pid調(diào)速系統(tǒng)設(shè)計
- 基于stm32的直流電機pid調(diào)速系統(tǒng)設(shè)計
- stm32直流電機控制程序
- 基于STM32的無刷直流電機控制系統(tǒng)設(shè)計.pdf
- 基于stm32的無刷直流電機控制系統(tǒng)研究
- 畢業(yè)設(shè)計---直流電機pid調(diào)速系統(tǒng)
- 直流電機調(diào)速系統(tǒng)設(shè)計
- 直流電機調(diào)速系統(tǒng)設(shè)計
- 基于STM32的無刷直流電機控制系統(tǒng)研究.pdf
- 基于STM32的無刷直流電機控制系統(tǒng)設(shè)計及仿真研究.pdf
- 基于plc直流電機調(diào)速系統(tǒng)的設(shè)計
- msp直流電機調(diào)速系統(tǒng)
- 直流電機pid轉(zhuǎn)速閉環(huán)調(diào)速控制系統(tǒng)
- 直流電機調(diào)速系統(tǒng)畢業(yè)設(shè)計
- 雙閉環(huán)直流電機調(diào)速系統(tǒng)設(shè)計
- 直流電機閉環(huán)調(diào)速
- 基于dsp直流電機調(diào)速系統(tǒng)設(shè)計與實現(xiàn)
- 直流電機調(diào)速系統(tǒng)畢業(yè)設(shè)計
- 基于stm32的程控直流電子負載
- 直流電機調(diào)速課程設(shè)計
評論
0/150
提交評論