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