摘要
倒立擺控制系統是一個復雜的、不穩定的、非線性系統。本設計在研究倒立擺運動規律的基礎上,構建其運動軌跡的數學模型,使用MATLAB進行仿真分析,在對倒立擺模型認識以后,使用k60微控制器結合PID算法給出信號驅動直流減速電機,進而對倒立擺系統進行控制,在倒立的過程中使用編碼器采集擺桿角度,對擺桿反饋的角度進行處理,針對角度,角速度的方向,電機運行方向進行處理,運用PD算法調節擺桿倒立,PI參數調節電機速度,通過雙回路PD\PI控制方案實現了對旋轉臂位置和擺桿偏角的同時閉環控制。
目 錄
一、系統方案 1
1.1 主控芯片的論證與選擇 1
1.2 擺桿的角度測量的論證與選擇 1
1.3 電機的論證與選擇 1
二、系統結構 2
2.1機械結構 2
2.2測控電路結構 2
三、理論分析與計算 3
3.1倒立擺的基本模型 3
3.2模型分析與參數測量 3
3.3基于狀態反饋的倒立控制 4
四、電路與程序設計 5
4.1系統的硬件設計 5
4.2系統軟件設計 7
五、測試方案與測試結果 10
5.1基本要求(1) 10
5.2基本要求(2) 10
5.3基本要求(3) 10
5.4發揮要求(1) 10
5.5發揮要求(2) 11
5.6發揮要求(3) 11
六.其他的拓展部分 12
七、參考文獻 12
附錄 13
一、系統方案 本系統主要有五大部分組成,即控制部分、電機部分、傳感器部分、電源部分和人機交互部分。傳感器采用兩個光電式旋轉編碼器,分別用于測量擺桿角度、電機轉速。結合傳感器反饋信息運用PID算法將控制信號傳輸給電機驅動使電機運行,帶動旋轉臂轉動,進而控制擺桿,形成雙閉環控制網絡。
1.1 主控芯片的論證與選擇方案一:采用AT89S52單片機
優點:AT89S52是CMOS8位微控制器,具有8K 在系統可編程Flash 存儲器。具有低功耗,價格便宜,控制簡單等一系列優點。 缺點:片內資源少,沒有集成的正交解碼寄存器,需要外擴才能實現,而且難以實現快速和精準的反映控制。
方案二:采用飛思卡爾KinetisK60微控制器。 優點:是一款高性能的32位微控制器,片內資源豐富,內置PIT定時器、FTM定時器,有兩路編碼器AB相正交解碼的功能,時鐘頻率50MHZ,具有高速的計運算能力。
缺點:頻率的提高功耗也隨之增大。
總結:由以上方案分析,為了可以高精度、高速度的進行系統控制,同時由于編碼器使用過程中需要正交解碼功能,AT89S52不滿足以上要求,故本系統選擇方案二,使用飛思卡爾Kinetis K60微控制器。
1.2 擺桿的角度測量的論證與選擇 方案一:采用光電編碼器。
優點:無累計誤差,精度高、數字信號接口。
缺點:價格偏高。
方案二:采用傾角傳感器。
優點:無累計誤差。
缺點:被測物體有其他加速度則無法準確計算。
方案三: 采用角速度傳感器。
優點:直接測出角速度,理論上不受移動等其他運動影響。
缺點:角度由積分產生,累計誤差可能導致系統不穩定。
總結:由以上方案分析,為提高測量精度,同時考慮到傳感器安裝的難易程度,所以我們選擇方案一測量擺桿角度。
1.3 電機的論證與選擇方案一:采用空心杯直流減速電機。
優點:空心杯電動機屬于直流、永磁、伺服微特電機。空心杯電動機具有杰出的節能特性、靈敏方便的控制特性和穩定的運行特性。
缺點:輻射產生電磁波干擾,減速箱存在機械虛位。
方案二:采用步進電機。
優點:步進電機是純粹的數字控制電動機,它將電脈沖信號轉變為角位移,步進電機屬于開環控制,累計誤差小,成本相對低廉。 缺點:步進電機角度分辨率低,且轉動時伴隨著強烈的振動,這對旋轉臂及擺桿的穩定性是不利的。
方案三:采用伺服電機。
優點:伺服電機是一種補助馬達間接變速裝置。其用作執行元件,把所收到的電信號轉換成電動機軸上的角位移或角速度輸出,可使控制速度,位置精度非常準確。
缺點:減速箱存在機械虛位。
總結:由以上方案分析,考慮到系統的穩定性,性價比等因素,我們選擇方案一,采用空心杯減速電機。該電機自帶精密行星減速箱和光電式編碼器,同時通過對減速箱的改造可以減少機械虛位的影響,完全可以滿足題目相關要求。
二、 系統結構
2.1機械結構機械結構的穩定性直接影響系統的穩定性。故該倒立擺采用鋼底座,穩固性能好,支架和擺桿采用鋁合金打造,具有密度小、強度高、易加工等特點。機械結構圖如下:
0.png (9.79 KB, 下載次數: 116)
下載附件
2017-6-3 17:44 上傳
0.png (10.7 KB, 下載次數: 124)
下載附件
2017-6-3 17:44 上傳
三、理論分析與計算3.1倒立擺的基本模型 旋轉臂由轉軸處的直流減速電機驅動, 可繞轉軸在垂直于電機轉軸的鉛直平面內轉動. 旋臂和擺桿之間由關節相連, 當旋臂轉動時, 擺桿可繞關節在垂直于關節轉軸的鉛直平面內轉動,根據一定的控制算法, 計算出控制規律, 并轉化為電壓信號提供給驅動電路, 以驅動直流減速電機的運動, 通過電機帶動旋轉臂的于關節轉軸的鉛直平面內轉動,進而通過電機帶動旋轉臂的轉動來控制擺桿的運動。
0.png (10.13 KB, 下載次數: 117)
下載附件
2017-6-3 17:45 上傳
圖3 倒立擺的模型結構
3.2模型分析與參數測量建立比較精確的數學模型是控制系統設計的基礎. 如圖3所示, 在非慣性系S2 中對擺桿有:
0.png (30.3 KB, 下載次數: 91)
下載附件
2017-6-3 17:46 上傳
…………此處省略內容請下載51hei附件查看…………
可知系統是不穩定的, 且是完全能控和完全能觀的. 因此可以設計一個基于狀態反饋的控制器對系統進行極點配置 , 使得系統在原點附近保持穩定. 由于倒立擺裝置中沒有直接測量角速度的器件, 我們采用角度的差分進行近似,在角度測量上, 硬件和軟件部分都采用了濾波手段. 經過極點配置設計, 得到態反饋矩陣為:
0.png (51.94 KB, 下載次數: 91)
下載附件
2017-6-3 17:48 上傳
由以上可知倒立擺系統是一個不穩定但能控能觀系統。
四、電路與程序設計4.1系統的硬件設計系統的硬件主要由四大部分組成,即電源部分、主控部分、電機驅動部分、人機交互部分。各部分電路設計和功能介紹如下:
4.1.1電源部分
該系統電源部分有2部分組成,分別由一塊7.2V蓄電池和一塊11.1V鋰電池供電。其中一塊鋰電池經穩壓后為8.5V后為電機驅動模塊供電;另一塊電池為系統提供2組電源,即5V和3.3V,其中5V用于編碼器、語音模塊等部分的供電。3.3V用于單片機、液晶顯示等部分的供電;其中8.5V和5V電源部分采用采用LM2596開關電壓調節器,其具有可靠的工作性能、較高的工作效率和較強的輸出電流驅動能力,功耗小等特點,從而為系統穩定、可靠地工作提供有力的保障,3.3V電源采用2塊LM1117系列線性穩壓器并聯,其具有穩定性好,負載響應快。輸出紋波小,價格低廉的優點。
0.png (239.64 KB, 下載次數: 90)
下載附件
2017-6-3 17:49 上傳
0.png (56.78 KB, 下載次數: 86)
下載附件
2017-6-3 17:49 上傳
4.1.2電機驅動部分 電機驅動采用雙BTS7970大功率H橋驅動,其為高強度電流的半橋電機驅動芯片。我們利用兩片BTS7970B構成一個完整的全橋驅動,電流最大可達70A,并利用光耦與單片機隔離,有效保護單片機?梢院芎脤崿F電機的正轉、反轉、能耗制動。
4.1.3人機交互部分人機交互模塊由TFT彩屏、鍵盤、語音模塊組成,實時顯示播報參數及數據的變化,也方便我們調節控制。
0.png (7.44 KB, 下載次數: 126)
下載附件
2017-6-3 17:50 上傳
4.2系統軟件設計4.2.1系統流程圖
0.png (11.17 KB, 下載次數: 92)
下載附件
2017-6-3 17:51 上傳
4.2.2 擺桿的倒立狀態檢測擺桿狀態的檢測,即擺桿角度的檢測是本設計的重要點,角度大小檢測的精準度直接影響到電機帶動旋轉臂的旋轉,進而影響到擺桿的狀態。擺桿自由下擺在最下方進行編碼器脈沖輸出零位校準;編碼器為500線,擺桿運動一周,編碼器脈沖輸出計數為500,即當從最低點運動至最高點時,編碼器輸出脈沖計數為250,再次運動到最低點時編碼器輸出脈沖計數為500,由此判斷擺桿當前角度。為了提高精度,通過將編碼器A相和B相4倍頻后,正交解碼,測量步距變為原來的1/4,精度提高4倍。如此根據脈沖計數值可以判定擺桿擺動方向和擺動度數,進而反饋給單片機,執行相關操作。 程序框圖如下:
…………此處省略內容請下載51hei附件查看…………
五 測試方案與測試結果5.1基本要求(1) 測試方案:擺桿從處于自然下垂狀態(擺角0°)開始,驅動電機帶動旋轉臂作往復旋轉使擺桿擺動,并盡快使擺角達到或超過-60°~+60°,測量角度并記錄測試結果。
測試結果:
表1 擺桿擺動的角度及時間測量 測量次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 偏離角度/°
| 115
| 99
| 115
| 107
| 108
| 122
| 94
| 完成時間/s
| 0.7
| 0.5
| 0.7
| 0.6
| 0.5
| 0.8
| 0.5
| 結論:達到基本要求(1),擺桿可以快速達到或超過-60°~ +60°,達到題目要求。5.2基本要求(2)測試方案:擺桿從處于自然下垂狀態(擺角0°)開始,驅動電機帶動旋
轉臂做往復旋轉使擺桿擺動,看是否可以完成圓周運動。
測試結果:
表2擺桿擺動360度時間測量 測量次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 完成時間/s
| 1.1
| 1.3
| 1.3
| 1.0
| 1.1
| 1.2
| 1.1
|
測試結果及結論:目測擺桿開始起擺后迅速可以做圓周運動,并持續下去,達到基本要求(2)。
5.3基本要求(3)測試方案:當擺桿處于自然下垂狀態下,外力拉起擺桿至接165°位置,外力撤除時,啟動控制旋轉臂,測量擺桿保持倒立狀態時間,并且測量旋轉臂的轉動角度。
測試結果:
表3 擺桿保持倒立時旋轉臂的轉動角度
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 角度/°
| 12
| 12
| 10
| 8
| 11
| 9
| 11
| 13
| 倒立時間/s
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 結論:完全達到基本要求(3),擺桿倒立后在很小的角度內轉動,系統穩定。5.4發揮要求(1)測試方案:從擺桿處于自然下垂狀態開始,控制旋轉臂作往復旋轉運動,盡快使擺桿擺起倒立,保持倒立狀態,并測量擺起的時間。
測試結果:
表3 擺桿擺起到立起的時間
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 起擺時間/s
| 1.7
| 1.8
| 1.7
| 1.8
| 1.7
| 1.9
| 1.8
| 1.7
| 倒立時間/s
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 長期
| 結論:擺桿迅速擺起倒立,擺桿擺起后,可長時間倒立下去,并且旋轉臂的轉動的角度保持在90°內,達到發揮要求(1)。
5.5發揮要求(2)測試方案:在擺桿保持倒立狀態下,我們施加干擾,即以15cm長細繩栓一只5g砝碼,在擺桿上方將砝碼拉起15°~45°,釋放后用砝碼沿擺桿的切線方向撞擊擺桿上端1~2cm處,觀察擺桿能否繼續保持倒立狀態。
測試結果:
表4砝碼拉起15°時的擺桿的擺動角度
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 角度/°
| 20
| 22
| 25
| 22
| 20
| 19
| 22
| 24
|
表5 砝碼拉起30°時的擺桿的擺動角度
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 角度/°
| 28
| 31
| 30
| 28
| 30
| 32
| 31
| 32
|
表6 砝碼拉起45°時的擺桿的擺動角度
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 角度/°
| 47
| 48
| 42
| 44
| 39
| 45
| 42
| 50
| 結論:擺桿在有干擾情況下仍能保持直立,在干擾時旋轉臂會有不同程度的旋轉,同時隨著砝碼拉起角度的增大,擺桿轉動的角度增大,達到發揮要求(2)。
5.6發揮要求(3)測試方案:在擺桿保持倒立狀態的前提下,旋轉臂做圓周運動,看是否能夠單方向轉過的角度達到或超過360°。
測試結果:
表7 擺桿倒立轉一周的時間的測量
測試次數
| 1
| 2
| 3
| 4
| 5
| 6
| 7
| 8
| 時間/s
| 2.1
| 2.2
| 1.8
| 1.9
| 2.1
| 2.2
| 2.0
| 1.9
| 結論:達到發揮要求(3)要求。
六.其他的拓展部分1)該設計在滿足題目要求的情況下,還對擺桿的穩定度實現了更高的控制和優化,使擺桿可以很快的達到直立狀態,達到更好的指標。
2)我們采用自制的控制板,添加了了語音模塊,液晶顯示,有良好的人機界面,同時方便測試時觀察。
3)為此我們增添了兩個測試:一為高強度抗干擾測試,即使用50g砝碼,在擺桿上方將砝碼拉起15°~45°,釋放后用砝碼沿擺桿的切線方向撞擊擺桿上端1~2cm處,觀察擺桿能否繼續保持倒立狀態。二為快速360°旋轉測試,即盡可能快使擺桿倒立旋轉N周。
測試結果:高強度干擾下,擺桿仍能保持直立。力度增加后,擺桿可能會失去倒立平衡,但會迅速恢復。倒立狀態下,可以快速進行旋轉。
結論:倒立擺整體性能相當穩定。
七、參考文獻【1】從爽,張東軍,單級倒立擺三種控制方法對比研究【J】。系統工程與電子技術,2001,23(1):47-49。
【2】王輝,一類非線性系統的模糊自適應控制器設計【J】。湖南大學學報(自然科學版),2004,31(6)41-45。
【3】馮艷賓,崔紅梅,李鳳,模糊控制理論及其倒立擺中的應用【J】。數學通報,2003,6:1-3。
【4】黃智偉,全國大學生電子設計競賽訓練教程【M】,北京:電子工業出版社,2010。
單片機源程序如下:
- #include "include.h"//電子設計競賽倒立擺
- s8 iii=1;
- u8 che=1,zhuan=0;
- extern KEY_e KEYX ;
- extern s16 real_L,real_R;
- extern float P=0,D=0,P2,D2,accL,accR;
- extern float I_1,I_2;
- extern u16 bai_flag,textdata1;
- extern s16 angle_bai,speed_ji,speed_bai,bai_speed,angle_ji;
- //電機控制PID
- void motor_control(s16 pwmL,s16 pwmR)
- {
- erR1 = pwmR-speed_ji;
- accR+= I_2*erR1;
- real_R=(s16)(P2*erR1+real_R+D2*(erR1-erR2)+accR);//
- }
- //倒立PID
- void daoli_PID(s16 eagle)
- {
- float P_1,D_1;
- if(eagle<1000)
- erL1=eagle-999;
- else
- erL1=eagle-1000;
- accL+= I_1*erL1;
- if(accL>5000)
- accL=5000;
- if(accL<-5000)
- accL=-5000;
- real_L =(s16)( P_1*erL1 +D_1*speed_bai +real_L+accL);
- }
- 定時器中斷2
- void PIT2_IRQHandler(void)
- {
- angle_bai=FTM2_CNT%2000;//擺桿角度
- if(iii<6)if(angle_bai>850&&angle_bai<1150)bai_flag=1;
-
- if(iii==6)
- {
- if(angle_bai>0&&angle_bai<750)
- bai_flag=1;
- else
- if(angle_bai>1250&&angle_bai<1999)
- bai_flag=2;
- else
- bai_flag=0;
- }
- PIT_Flag_Clear(PIT2); //清中斷標志位
- }
- 定時器中斷3
- void PIT3_IRQHandler(void)
- {
- count_bai++;
- if(count_bai>=5)
- count_bai=0;
- textdata1++;
- if(textdata1>=59999)
- textdata1=0;
- speed_ji=FTM1_CNT;//電機速度
- angle_ji+=speed_ji;
- FTM1_CNT=0;
- spd2=FTM2_CNT;
- speed_bai=spd2-spd1;//擺桿速度
- spd1=spd2;
- if(angle_bai>800&&angle_bai<1300)
- {
- daoli_PID(angle_bai);
- motor_control(0,bai_speed);
- pwm_control(real_L-real_R,0);
-
- }
- PIT_Flag_Clear(PIT3); //清中斷標志位
- }
- //主函數
- void main()
- {
- LCD_init();
- KEY_init();
- LCD_display_full(BLUE);
- motor_init();
- boma_INIT(6);
- iii=1;
- while(1)
- {
- key_check(); //檢測按鍵狀態
- if(KEYX==KEY_UP)iii++; //準備開始
- if(KEYX==KEY_DW)iii--; //準備開始
- if(iii==0)iii=7;
- if(iii==8)iii=1;
- for(u8 j=1;j<8;j++)
- {
- if(j==iii)
- {
- LCD_P16x16Str(2,j-1," ",BLACK,BLUE);
- LCD_P16x16Str(7,j-1,"←",BLACK,BLUE);
- }
- else
- {
- LCD_P16x16Str(7,j-1," ",BLACK,BLUE);
- LCD_P16x16Str(2,j-1," ",BLACK,BLUE);
- }
- } //GUI(iii);//界面
- if(KEYX==KEY_START) //確認進入當前選項
- {
- key_check();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
完整論文下載(word格式 可編輯):
設計報告.doc
(551 KB, 下載次數: 197)
2017-6-3 14:49 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|