這是我大三做的運動控制系統(tǒng)課程設計,對直流電機速度、電流雙閉環(huán)pid控制,有程序源碼,還有自己做的上位機,也包括源碼,上位機可顯示速度和電流曲線,并且可以設置速度,里面也有自己的設計文檔,里面也有演示視頻
制作出來的實物圖如下:
拖動系統(tǒng)課程設計報告書
題目: 直流電機速度電流雙閉環(huán)控制器設計
任務書 |
閉環(huán)控制的PWM直流調(diào)速系統(tǒng)設計與實現(xiàn)
| | 隨著社會的發(fā)展,各種智能化的產(chǎn)品日益走入尋常百姓家。為了實現(xiàn)產(chǎn)品的便攜性、低成品以及對電源的限制,小型直流電機應用相當廣泛。對直流電機的速度調(diào)節(jié),可分為勵磁控制法與電樞電壓控制法兩類。隨著電力電子技術的進步,發(fā)展了許多新的電樞電壓控制方法。其中,PWM斬波器進斬波調(diào)壓的驅(qū)動裝置與傳統(tǒng)晶閘管驅(qū)動裝置比較,具有下列優(yōu)點:需用的大功率可控器件少,線路簡單;調(diào)速范圍寬:電流波形系數(shù)好,附加損耗小;功率因數(shù)高。可以廣泛應用于現(xiàn)代直流電機伺服系統(tǒng)中。為抑制負載擾動,同時提高啟動制動性能,閉環(huán)控制的PWM直流調(diào)速系統(tǒng)成為研究熱點。
一、該同學的主要任務 1、查找文獻,掌握直流電動機PWM調(diào)速的基本工作原理; 2、設計直流電動機雙閉環(huán)調(diào)速系統(tǒng),建立系統(tǒng)模型并進行仿真試驗; 3、設計并調(diào)試基于51單片機的H橋驅(qū)動控制電路; 4、設計速度調(diào)節(jié)器算法,對閉環(huán)系統(tǒng)進行負載試驗;
二、功能測評要求 1、能獨立設置電機速度(按鍵設置或滑動變阻器設置或上位機設置); 2、能顯示當前電機的實際速度(單位為:r/min); 3、能控制電機啟動、停止、正反轉(zhuǎn)、軟啟動和軟制動; 4、給電機加載后,速度能迅速調(diào)節(jié)回給定值; 5、對電流能進行截止負反饋控制,抑制電流沖擊。
三、提供波形數(shù)據(jù): 1、不同速度下的PWM波形; 2、加載后的速度波形;
| |
本課題主要研究直流電動機的閉環(huán)控制的調(diào)壓調(diào)速系統(tǒng),采用PWM調(diào)壓控制方案,該同學主要工作是雙閉環(huán)調(diào)速系統(tǒng)建模與仿真,實際速度閉環(huán)PWM調(diào)速系統(tǒng)的設計與實現(xiàn)。
基本內(nèi)容: 1、設計直流電動機雙閉環(huán)調(diào)速系統(tǒng)總體方案; 2、建立系統(tǒng)數(shù)學模型,并設計電流調(diào)節(jié)器和轉(zhuǎn)速調(diào)節(jié)器算法; 3、直流電機的控制電路、驅(qū)動電路、保護電路及其檢測電路設計 4、 基于單片機的閉環(huán)調(diào)速系統(tǒng)軟件程序設計; 5、分別對空載、負載和變給定工況進行調(diào)速系統(tǒng)實驗與分析; 6、記錄波形分析數(shù)據(jù)。
| | 一、主要參考文獻 1、電機原理與設計的matlab分析,戴文進,電子工業(yè)出版社; 2、電氣傳動的脈寬調(diào)制控制技術,吳守,機械工業(yè)出版社; 3、電力電子技術,浣喜明,高等教育出版社; 4、電動機的單片機控制,王曉明,北京航空航天出版社; 5、電機與拖動基礎,李發(fā)海,清華大學出版社;
| | | | | | | | | 雙閉環(huán)直流PWM調(diào)速系統(tǒng)建模 | | | | | | | | | | | | | | | | | | |
一、 雙閉環(huán)調(diào)速系統(tǒng)1.1雙閉環(huán)調(diào)速系統(tǒng)概述在許多場合,為了充分發(fā)揮生產(chǎn)機械的效能,提高生產(chǎn)率,速度控制系統(tǒng)經(jīng)常處于起動、制動、反轉(zhuǎn)以及突加負載等過渡過程中,所以要求速度控制系統(tǒng)有較好的動態(tài)性能。 對高性能、靜態(tài)的速度控制系統(tǒng)的要求是具有快速跟隨特性(起制性)、較好的抗干擾性和高可可靠性(可瞬態(tài)過載但不過流)。因此引入了轉(zhuǎn)速、電流雙閉環(huán)調(diào)速系統(tǒng)。 轉(zhuǎn)速負反饋和比例積分調(diào)節(jié)器的單閉環(huán)調(diào)速系統(tǒng)能夠保證系統(tǒng)在穩(wěn)定的條件下實現(xiàn)轉(zhuǎn)速無靜差調(diào)節(jié)。但是該控制系統(tǒng)也有自身的缺點,比如要求快速啟動、突加負載動態(tài)速降等。 這種單閉環(huán)系統(tǒng)就難以滿足要求,這是因為在單閉環(huán)調(diào)速系統(tǒng)中尚不能按要求來控制動態(tài)過程的電流和轉(zhuǎn)速。為解決這一矛盾,電流截止負反饋環(huán)節(jié),它與轉(zhuǎn)速負反饋調(diào)速系統(tǒng)結(jié)合在一起,可以專門用來控制電流,從工作原理上分析,它只能是在超過臨界電流值以后,才能靠強烈的負反饋作用限制電流的沖擊,由于電流截止負反饋只能限制最大電流,電機轉(zhuǎn)矩也隨著電流減小而下降,使啟動加速過程變慢,啟動的時間也比較長,帶電流截止負反饋單閉環(huán)調(diào)速系統(tǒng)。為了能夠?qū)崿F(xiàn)在允許條件下最快啟動,依照反饋控制規(guī)律,驗證與實踐,采用轉(zhuǎn)速、電流雙閉環(huán)調(diào)速系統(tǒng)就能達到上述要求。 1.2雙閉環(huán)調(diào)速系統(tǒng)電路原理如下圖為轉(zhuǎn)速、電流的雙閉環(huán)調(diào)速系統(tǒng)的原理圖。圖中兩個調(diào)節(jié)器ASR和ACR分別為轉(zhuǎn)速調(diào)節(jié)器和電流調(diào)節(jié)器,二者串級連接,即把轉(zhuǎn)速調(diào)節(jié)器的輸出作為電流調(diào)節(jié)器的輸入,在用電流調(diào)節(jié)器的輸出去控制晶閘管整流器的觸發(fā)裝置。電流環(huán)在內(nèi),稱之為內(nèi)環(huán);轉(zhuǎn)速環(huán)在外,稱之為外環(huán)。 兩個調(diào)節(jié)器輸出都帶有限幅,ASR的輸出限幅Uim決定了電流調(diào)節(jié)器ACR的給定電壓最大值Uim,對就電機的最大電流,電流調(diào)節(jié)器ACR輸出限幅電壓Ucm限制了整流器輸出最大電壓值,限最小觸發(fā)角a。 雙閉環(huán)調(diào)速系統(tǒng)電路原理圖
1.3雙閉環(huán)調(diào)速系統(tǒng)動態(tài)結(jié)構(gòu)圖雙閉環(huán)調(diào)速系統(tǒng)的動態(tài)結(jié)構(gòu)如下圖所示,電流采樣模塊采用2歐姆的碳膜電阻,根據(jù)驅(qū)動的設計我們把碳膜電阻加在MOS管和GND相連的地方,因為電流不管換向與否碳膜電阻采樣到的電流方向不變,所以給ADC采樣帶來了極大的方便,而且碳膜電阻功率比較大,當電機堵轉(zhuǎn)導致電流比較大的時候不至于燒壞。 由編碼器得到電機的轉(zhuǎn)速,,通過編碼器反饋脈沖信號,本次采用的編碼器精度為344,電機轉(zhuǎn)一圈產(chǎn)生344個脈沖。 雙閉環(huán)調(diào)速系統(tǒng)的動態(tài)結(jié)構(gòu)圖
1.4雙閉環(huán)算法結(jié)構(gòu)實現(xiàn)本次課程設計算法的實現(xiàn)分為如下幾個部分ADC采樣實現(xiàn),中斷脈沖計數(shù),定時器計算速度,定時器產(chǎn)生兩路PWM,通過這兩路PWM占空比的差值調(diào)節(jié)電機的轉(zhuǎn)速,一個串級PI調(diào)節(jié)器。 ADC采樣開了一路采樣,設置ARM采樣轉(zhuǎn)化時間為1微秒,設置PWM周期為5ms為了減小電流波動帶來的采樣誤差我采集到10000個數(shù)字電壓然后計算平均電壓,采集到10000個點正好是兩個PWM周期,計算值有效而且響應快速。中斷系統(tǒng)配置成上升沿觸發(fā),當來一次脈沖count會加1,開啟另外一個定時器50ms獲取一次count的值,然后求的這50ms電機的轉(zhuǎn)速,及時與設定速度調(diào)節(jié),計算速度誤差通過PI調(diào)節(jié)器調(diào)節(jié)速度和電流雙閉環(huán),PI調(diào)節(jié)器采用位置式寫法,位置式PI需要注意的地方是一個積分飽和,如果不設定積分限制PI調(diào)節(jié)器會跑飛,帶來很大的問題,外環(huán)PI調(diào)節(jié)器的積分限制我采用分級控制的方式,當速度誤差大于500時設定積分限制為電機堵轉(zhuǎn)時能夠達到的最大電流積分限制設置為8000,根據(jù)pi參數(shù)計算的得出,當速度誤差大于300時設定積分限制為5000,當速度誤差小于300時,設定積分限制為2000最小,計算得到PID值為速度穩(wěn)定是的ADC的值,這樣設計的好處就是不但能減小系統(tǒng)的超調(diào)量而且能夠加速系統(tǒng)的響應時間。
二、轉(zhuǎn)速、電流雙閉環(huán)調(diào)速系統(tǒng)電氣設計2.1驅(qū)動電路設計驅(qū)動電路的設計采用雙路PWM,采用MOS管搭建H橋,采用2104芯片,芯片的IN端輸入高電平時HO輸出端輸出高端平,左上角的MOS管導通,LO端輸出低電平左下角MOS管關斷,上下MOS管導通和關斷夠成互補,當芯片IN端輸入低電平輸出電平相反MOS管的導通關斷相反。 驅(qū)動電路
2.2過流保護電路設計過流保護的電路設計如下圖所示,過流保護電路的功能當電機兩端短路時繼電器斷開,電路斷開不供電。當電機堵轉(zhuǎn)時繼電器也斷開。過流保護電路設計如下:本電路設計的主要核心元件是比較器、555定時器、繼電器。比較器的正向輸入端設置一個比較電壓,反向輸入端輸入采樣電阻得到的電壓,如果電機堵轉(zhuǎn)或者電機兩端短路會導致采樣電阻的電壓值變得很大,反向輸入電壓大于正向輸入電壓比較器輸出低電平,555定時輸出高電平,繼電器采用常閉型當為高電平時繼電器斷開。通過電阻和電容的值設定555定時器的輸出高電平時間。 2.3上位機控制系統(tǒng)設計上位機的設計主要是為了顯示速度和電流的變化曲線,藍色線為實時速度的顯示,紅色線是設定速度的曲線顯示,黑色線是電流變化的曲線,本次電流的值用ADC的值統(tǒng)一表示,本上位機的功能涵蓋了所有電機控制的功能,可以通過上位機控制電機的正轉(zhuǎn)、反轉(zhuǎn)、和停止。基本的功能,同時還可以加速減速,每次按鍵加速或者減速10r,設定速度標度窗口輸入所要標定的速度然后點擊設置按鈕,紅色曲線便可按照設置的數(shù)值顯示曲線,上面還有兩個顯示速度和電流具體數(shù)值的窗口。
stm32單片機源程序如下: - #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "usart.h"
- #include "timer.h"
- #include "UserConfiguration.h"
- #include "UserFunction.h"
- #include "lcd.h"
- #include "exti.h"
- #include "adc.h"
- #include "PID_Current.h"
- //PWM輸出實驗
-
- u32 spd_now=0;
- u32 set_spd=3300,set_vol=300,PwmOne_Set,adcx;
- float av;
-
- enum
- {
- flag_add,flag_minus,flag
- }FLAG_SPEED;
- enum
- {
- flag_zheng,flag_fan,flag_stop
- }FLAG_DIR;
-
- int main(void)
- {
- // u8 i=0,key;
-
- delay_init(); //延時函數(shù)初始化
- KEY_Init();
- NVIC_Configuration(); //設置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應優(yōu)先級
- uart_init(9600); //串口初始化為9600
- LED_Init(); //LED端口初始化
- Adc_Init(); //ADC初始化
- TIM1_PWM_Init(4999,71);
-
- EXTIX_Init();
- LCD_Init();
-
- POINT_COLOR=RED;
- TIM3_Int_Init(9999,719);
-
- FLAG_DIR=flag_zheng; //開始是正轉(zhuǎn)
- FLAG_SPEED=flag;
- while(1)
- {
-
-
-
-
- // UserPIDCurrentControl(set_vol) ;
- av=adcx*3.3/4096;
- LCD_ShowxNum(130,100,spd_now,8,16,0); //nowspd;時時速度
- LCD_ShowxNum(130,130,set_spd,8,16,0); //設定速度
- LCD_ShowxNum(130,160,3600,8,16,0); //電機最大速度
- LCD_ShowxNum(130,190,adcx,8,16,0);
- LCD_ShowxNum(130,230,av*1000,8,16,0);
- LCD_ShowxNum(130,250,PwmOne_Set,8,16,0);
- LCD_ShowString(50,160,100,12,16,"Max_Speed:");
- LCD_ShowString(50,100,100,12,16,"Now_Speed:");
- LCD_ShowString(50,130,100,12,16,"Set_Speed:");
- LCD_ShowString(50,190,100,12,16,"ADC:");
- LCD_ShowString(50,230,100,12,16,"Voltage:");
- adcx=Get_Adc_Average(ADC_Channel_2,10000);
- //按鍵設置標量速度
-
- if(FLAG_SPEED==flag_add)
- {
- FLAG_SPEED=flag;
- set_spd+=10; //加速
- }
- else if(FLAG_SPEED==flag_minus)
- {
- FLAG_SPEED=flag;
- set_spd-=10; //減速
- }
- if(set_spd>=3600)
- {
- set_spd=3600;
- }
- if(set_spd<=0)
- {
- set_spd=0;
- }
-
- }
- }
復制代碼vb上位機源碼如下:
所有資料51hei提供下載:
|