|
15年電賽已經(jīng)過(guò)去四年了,19年電賽將至,在新一年的電賽到來(lái)之前給大家分享一份風(fēng)力擺控制系統(tǒng)的全套資料(包括代碼、上位機(jī)、設(shè)計(jì)報(bào)告等)。在此我要感謝我的指導(dǎo)教師王師傅,您是我見(jiàn)過(guò)最負(fù)責(zé)的教師,下面我們切入正題。
風(fēng)力擺控制系統(tǒng)主要應(yīng)用了一個(gè)物理知識(shí)——李薩如圖形,李薩如圖形貫穿整個(gè)風(fēng)力擺設(shè)計(jì)的始終。無(wú)論是畫直線還是畫圓都應(yīng)用到了李薩如圖形,風(fēng)力擺可以看成是XY兩個(gè)方向上的簡(jiǎn)諧運(yùn)動(dòng)。當(dāng)兩個(gè)簡(jiǎn)諧運(yùn)動(dòng)的相位和周期相等、幅值不等時(shí),風(fēng)力擺會(huì)在下方畫出不同長(zhǎng)度不同角度的直線;當(dāng)兩個(gè)簡(jiǎn)諧運(yùn)動(dòng)的幅值和周期相等、相位相差Π/2時(shí),風(fēng)力擺會(huì)在下方畫出不同半徑的圓(具體請(qǐng)多了解一下李薩如圖形)。風(fēng)力擺的各種注意事項(xiàng)請(qǐng)大家仔細(xì)閱讀代碼中的READEME.txt文件,代碼框架和STM32F1的源代碼格式相同,方便大家理解。最后祝大家19年電賽都能取得一個(gè)好成績(jī)!
接線方式:
OLED:
SCL------PB5
SDA------PB4
RST------PB3
D/C------PA15
MPU6050:
SCL------PB8
SDA------PB9
L298N:
PWM1----PB1
R_EN1----PB12
L_EN1----PB13
PWM2----PA1
R_EN2----PB14
L_EN2----PB15
KEY:
KEY1-----PA11
KEY2-----PA12
KEY3-----PB6
KEY4-----PB7
如有疑問(wèn)請(qǐng)QQ聯(lián)系:1183092619(注明來(lái)意否者不予通過(guò)驗(yàn)證)
風(fēng)力擺圖片:
IMG_20190719_133305.jpg (2.66 MB, 下載次數(shù): 133)
下載附件
2019-7-19 13:34 上傳
上位機(jī)圖片:
~J1$N(7BL$RPOHVIO2)2UOP.png (41.06 KB, 下載次數(shù): 147)
下載附件
2019-7-19 13:35 上傳
風(fēng)力擺控制系統(tǒng)是一種利用風(fēng)力控制物體做簡(jiǎn)諧運(yùn)動(dòng)的系統(tǒng),風(fēng)力的利用和控制技術(shù)在我國(guó)的發(fā)展尚未完善,國(guó)內(nèi)正處于起步階段。風(fēng)力擺的工作原理具有較為典型的自動(dòng)化控制理論特點(diǎn),其控制方法多種多樣。深入研究,在許多工程技術(shù)領(lǐng)域都有著廣闊的開(kāi)發(fā)前景。風(fēng)力擺系統(tǒng)的擺體由風(fēng)扇構(gòu)成,通過(guò)調(diào)整風(fēng)扇的轉(zhuǎn)速實(shí)現(xiàn)擺動(dòng)位置及擺動(dòng)路線的控制,由于擺動(dòng)機(jī)構(gòu)的滯后性,實(shí)現(xiàn)精確控制具有一定難度。通過(guò)合理的擺結(jié)構(gòu)設(shè)計(jì),并利用擺線理論建模,設(shè)計(jì)并優(yōu)化控制策略,利用閉環(huán)結(jié)構(gòu)提升擺的軌跡運(yùn)動(dòng)準(zhǔn)確性。其中的控制原理對(duì)于人們處理工業(yè)工程,同樣存在借鑒。系統(tǒng)對(duì)風(fēng)擺控制參數(shù)設(shè)定、抗擾因素測(cè)試等慣性滯后問(wèn)題解決具有借鑒意義,同時(shí)也為分析該類問(wèn)題建立了直觀的測(cè)試平臺(tái)。風(fēng)力擺是一種通過(guò)風(fēng)機(jī)作為唯一動(dòng)力驅(qū)動(dòng)的裝置,深入研究該系統(tǒng)對(duì)空間飛行器、四旋翼無(wú)人機(jī)的運(yùn)動(dòng)狀態(tài)和衛(wèi)星姿態(tài)控制具有重大意義。
三、主要研究?jī)?nèi)容
1. 基本要求
(1) 從靜止開(kāi)始,15s 內(nèi)控制風(fēng)力擺做類似自由擺運(yùn)動(dòng),使激光筆穩(wěn)定地
在地面畫出一條長(zhǎng)度不短于 50cm 的直線段,其線性度偏差不大于±
2.5cm,并且具有較好的重復(fù)性;
(2) 從靜止開(kāi)始,15s 內(nèi)完成幅度可控的擺動(dòng),畫出長(zhǎng)度在 30~60cm 間可設(shè)置,長(zhǎng)度偏差不大于±2.5cm 的直線段,并且具有較好的重復(fù)性;
(3) 可設(shè)定擺動(dòng)方向,風(fēng)力擺從靜止開(kāi)始,15s 內(nèi)按照設(shè)置的方向(角度)
擺動(dòng),畫出不短于 20cm 的直線段;
(4) 將風(fēng)力擺拉起一定角度(30°~45°)放開(kāi),5s 內(nèi)使風(fēng)力擺制動(dòng)達(dá)到靜止?fàn)顟B(tài)。
2.發(fā)揮部分
(1) 以風(fēng)力擺靜止時(shí)激光筆的光點(diǎn)為圓心,驅(qū)動(dòng)風(fēng)力擺用激光筆在地面畫圓,30s 內(nèi)需重復(fù) 3 次;圓半徑可在 15~35cm 范圍內(nèi)設(shè)置,激光筆畫出的軌跡應(yīng)落在指定半徑±2.5cm 的圓環(huán)內(nèi);
(2) 在發(fā)揮部分(1)后繼續(xù)作圓周運(yùn)動(dòng),在距離風(fēng)力擺 1~2m 距離內(nèi)用一臺(tái) 50~60W 臺(tái)扇在水平方向吹向風(fēng)力擺,臺(tái)扇吹 5s 后停止,風(fēng)力擺能
夠在 5s 內(nèi)恢復(fù)發(fā)揮部分(1)規(guī)定的圓周運(yùn)動(dòng),激光筆畫出符合要求的
軌跡;
(3) 其他。
四、總體思路與研究方案
1. 總體思路
風(fēng)力擺控制系統(tǒng)是一個(gè)極其不穩(wěn)定的系統(tǒng),擺桿的長(zhǎng)度、風(fēng)機(jī)的安裝位置、萬(wàn)向節(jié)的阻力等因素都會(huì)引起系統(tǒng)產(chǎn)生誤差,該系統(tǒng)中應(yīng)用了一個(gè)物理知識(shí)——李薩如圖形。李薩如圖形貫穿整個(gè)風(fēng)力擺控制系統(tǒng)的始終,畫直線時(shí)兩個(gè)方向上的簡(jiǎn)諧運(yùn)動(dòng)相位相等,幅值不同就會(huì)畫出不同角度不同長(zhǎng)度的直線;畫圓時(shí)兩個(gè)方向上的簡(jiǎn)諧運(yùn)動(dòng)相位相差Π/2,幅值相同就會(huì)畫出不同半徑的圓。
設(shè)計(jì)整個(gè)系統(tǒng)時(shí)將角度傳感器mpu6050固定在擺桿上,傳感器返回的數(shù)據(jù)通過(guò)串口顯示在上位機(jī)上。在程序里設(shè)置兩條目標(biāo)值曲線,根據(jù)上位機(jī)顯示的實(shí)際值波形與目標(biāo)值曲線之間的差異進(jìn)行PID參數(shù)的整定。實(shí)際上整個(gè)系統(tǒng)的目的就是讓實(shí)際值曲線沿著目標(biāo)值曲線的軌跡運(yùn)動(dòng)。
2. 實(shí)施方案
(1)電機(jī)的論證和選擇
方案1:采用驅(qū)動(dòng)、風(fēng)機(jī)一體化的軸流風(fēng)機(jī)
驅(qū)動(dòng)、風(fēng)機(jī)一體化的軸流風(fēng)機(jī)有可以免去驅(qū)動(dòng)的設(shè)計(jì)、節(jié)省結(jié)構(gòu)空間、控制方法簡(jiǎn)單,散熱快等優(yōu)點(diǎn),但是他的風(fēng)力較小而且重量大,響應(yīng)速度和其他電機(jī)相比也比較慢。
方案2:采用空心杯電機(jī)
空心杯電機(jī)重量小,風(fēng)力大,起動(dòng)、制動(dòng)迅速,響應(yīng)極快,能量轉(zhuǎn)換效率很高。但是他的抗干擾能力較弱容易受到很多外界因素的影響。
綜合以上兩種方案選擇方案2。
(2)驅(qū)動(dòng)模塊的論證和選擇
方案1:采用TB6612FNG驅(qū)動(dòng)模塊
TB6612FNG驅(qū)動(dòng)模塊雙通道輸出,可同時(shí)驅(qū)動(dòng)兩個(gè)電機(jī)。每個(gè)通道可以輸出最高1A的驅(qū)動(dòng)電流,啟動(dòng)峰值電流達(dá)2A。TB6612FNG是基于MOSFET的H橋集成電路,效率遠(yuǎn)高于晶體管H橋驅(qū)動(dòng)器。
方案2:采用L298N驅(qū)動(dòng)模塊
L298N驅(qū)動(dòng)模塊是一種高電壓、大電流的驅(qū)動(dòng)模塊,它采用L298N雙H橋直流電機(jī)驅(qū)動(dòng)芯片,單橋可以輸出的最大驅(qū)動(dòng)電流為2A,驅(qū)動(dòng)部分端子供電范圍為5V~35V。
綜合以上兩種方案選擇方案2。
(3)主控模塊的論證與選擇
方案1:采用STC89C51單片機(jī)
STC89C51單片機(jī)最高工作時(shí)鐘頻率為80MHz,內(nèi)含8K Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,芯片內(nèi)集成了通用8位 中央處理器和ISP Flash 存儲(chǔ)單元。
方案2:采用STM32單片機(jī)
STM32單片機(jī)是ST公司使用arm公司的cortex-M3為核心生產(chǎn)的32bit系列的單片機(jī),他的內(nèi)部資源非常豐富,基本上接近于計(jì)算機(jī)的CPU了,最高工作頻率72MHz。
綜合以上兩種方案選擇方案2。
(4)角度檢測(cè)模塊的論證與選擇
方案1:采用角度傳感器
由UZZ9001和KMZ41組成角度測(cè)量模塊,并使用矩形磁鐵進(jìn)行配合測(cè)量磁鐵與KMZ41芯片之間的角度。UZZ9001將KMZ41輸出的正余弦角度信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),并通過(guò)SPI串口輸出。但KMZ41調(diào)試比較困難,不方便用于測(cè)量?jī)A角。
方案2:采用MPU6050模塊
MPU6050測(cè)量角度集成了三軸MEMS陀螺儀,三軸MEMS加速度計(jì)。MPU6050對(duì)陀螺儀和加速度計(jì)分別用了3個(gè)16位的ADC,將其測(cè)量的模擬量轉(zhuǎn)化為可輸出的數(shù)字量。測(cè)量范圍可控,通信采用I2C總線,操作簡(jiǎn)單。
綜合以上兩種方案選擇方案2。
(5)電源的論證和選擇
方案1:采用航模電池,
航模電池可以輸出12V的電壓,可反復(fù)充電。此方案的優(yōu)點(diǎn)是風(fēng)力擺與外界無(wú)需電源連線統(tǒng)安裝方便,但電壓會(huì)有波動(dòng),不能長(zhǎng)時(shí)間穩(wěn)定工作。
方案2:采用開(kāi)關(guān)電源
利用開(kāi)關(guān)電源雖然系統(tǒng)安裝較復(fù)雜,但功率較大,電壓穩(wěn)定。
綜合以上兩種方案選擇方案2
五、主要研究結(jié)果
經(jīng)過(guò)我們團(tuán)隊(duì)的不懈努力,風(fēng)力擺控制系統(tǒng)現(xiàn)在可以完成一下要求:
(1) 從靜止開(kāi)始,15s 內(nèi)控制風(fēng)力擺做類似自由擺運(yùn)動(dòng),使激光筆穩(wěn)定地
在地面畫出一條長(zhǎng)度不短于 50cm 的直線段,其線性度偏差不大于±
2.5cm,并且具有較好的重復(fù)性;
(2) 從靜止開(kāi)始,15s 內(nèi)完成幅度可控的擺動(dòng),畫出長(zhǎng)度在 30~60cm 間可設(shè)置,長(zhǎng)度偏差不大于±2.5cm 的直線段,并且具有較好的重復(fù)性;
(3) 可設(shè)定擺動(dòng)方向,風(fēng)力擺從靜止開(kāi)始,15s 內(nèi)按照設(shè)置的方向(角度)
擺動(dòng),畫出不短于 20cm 的直線段;
(4) 將風(fēng)力擺拉起一定角度(30°~45°)放開(kāi),5s 內(nèi)使風(fēng)力擺制動(dòng)達(dá)到靜止?fàn)顟B(tài)。
(5) 以風(fēng)力擺靜止時(shí)激光筆的光點(diǎn)為圓心,驅(qū)動(dòng)風(fēng)力擺用激光筆在地面畫圓,30s 內(nèi)需重復(fù) 3 次;圓半徑可在 15~35cm 范圍內(nèi)設(shè)置,激光筆畫出的軌跡應(yīng)落在指定半徑±2.5cm 的圓環(huán)內(nèi);
(6) 在發(fā)揮部分(1)后繼續(xù)作圓周運(yùn)動(dòng),在距離風(fēng)力擺 1~2m 距離內(nèi)用一臺(tái) 50~60W 臺(tái)扇在水平方向吹向風(fēng)力擺,臺(tái)扇吹 5s 后停止,風(fēng)力擺能
夠在 5s 內(nèi)恢復(fù)要求(5)規(guī)定的圓周運(yùn)動(dòng),激光筆畫出符合要求的軌跡;
六、存在的問(wèn)題及今后努力方向
這個(gè)風(fēng)力擺控制系統(tǒng)在畫圓的時(shí)候畫出來(lái)的圓不是太完美,即使理論值我都算出來(lái)了并且按照理論值設(shè)定各參數(shù)但是理論和實(shí)際之間總有差距,引起這一現(xiàn)象可能的因素有萬(wàn)向節(jié)阻力、激光束是否和擺桿在一條直線上、MPU6050的安放位置等。我嘗試著改變兩個(gè)簡(jiǎn)諧運(yùn)動(dòng)曲線的幅值和相位差,如果這幾個(gè)因素改變的程度過(guò)低風(fēng)力擺表現(xiàn)得不太明顯,如果過(guò)高風(fēng)力擺畫出來(lái)的就是一個(gè)橢圓,很難找到一個(gè)非常非常完美的參數(shù)。今后我會(huì)更加刻苦的學(xué)習(xí)PID算法、信號(hào)的分析和處理等知識(shí),致知于行,學(xué)以致用,讓理論能很好的應(yīng)用到實(shí)踐中。
單片機(jī)源程序如下:
- #include "sys.h"
- int Position_Pwm,Moto_qb1,Moto_qb2,Count_Moto;
- double Count_qb;
- int myabs(int a)
- {
- int temp;
- if(a<0) temp=-a;
- else temp=a;
- return temp;
- }
- int Position_PID1 (float Angle,float Target)
- {
- Last_Bias1=Bias1; //保存上一次偏差
- Bias1=Target-Angle; //計(jì)算偏差
- Integral_bias1+=Bias1; //求出偏差的積分
- Pwm1=-KP1*Bias1+KI1*Integral_bias1-KD1*(Bias1-Last_Bias1)*10; //位置式PID控制器
- return Pwm1; //增量輸出
- }
- int Position_PID2 (float Angle,float Target)
- {
- Last_Bias2=Bias2; //保存上一次偏差
- Bias2=Target-Angle; //計(jì)算偏差
- Integral_bias2+=Bias2; //求出偏差的積分
- Pwm2=-KP2*Bias2+KI2*Integral_bias2-KD2*(Bias2-Last_Bias2)*10; //位置式PID控制器
- return Pwm2; //增量輸出
- }
- void Set_Pwm1(int moto)
- {
- if(moto<0) AIN2=1, AIN1=0;
- else AIN2=0, AIN1=1;
- TIM_SetCompare4(TIM3,myabs(moto));
- }
- void Set_Pwm2(int moto)
- {
- if(moto<0) BIN2=1, BIN1=0;
- else BIN2=0, BIN1=1;
- TIM_SetCompare2(TIM2,myabs(moto));
- }
- void balance(void)
- {
- float balance1,balance2;
- balance1=Position_PID1(500,500);
- balance2=Position_PID2(500,500);
- Set_Pwm1(balance1);Set_Pwm2(balance2);
- }
- void control(void)
- {
- static float Count_Big_Angle=0.019635;
- Count_qb+=Count_Big_Angle; //自變量
-
- Target_Position1=A*sin(Count_qb+X)+495-m; //運(yùn)動(dòng)公式
- Target_Position2=B*sin(Count_qb+Y)+500-n; //運(yùn)動(dòng)公式
-
- Moto_qb1=Position_PID1((Roll-42.4)*10,Target_Position1); //位置閉環(huán)控制
- Moto_qb2=Position_PID2((Pitch+50)*10,Target_Position2); //位置閉環(huán)控制
- Set_Pwm1(Moto_qb1);Set_Pwm2(Moto_qb2); //賦值給PWM寄存器
- }
復(fù)制代碼- #include "sys.h"
- float Pitch,Roll,Yaw;
- float KP1=0,KD1=0,KI1=0,KP2=0,KD2=0,KI2=0;
- float Menu=1,A=0,B=0,X=0,Y=0,m=0,n=0;
- int EN=0;
- float Target_Position1=500,Target_Position2=500,Last_Bias1,Bias1,Pwm1,Integral_bias1,Last_Bias2,Bias2,Pwm2,Integral_bias2;
- int main(void)
- {
- delay_init();
- IIC_Init();
- JTAG_Set(SWD_ENABLE);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
- uart_init(9600); //串口初始化為9600
- DMP_Init();
- KEY_Init();
- TIM4_Int_Init(49,7199);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到30為3ms
- TIM3_PWM_Init(1499,0); //不分頻。PWM頻率=72000000/900=80Khz
- TIM2_PWM_Init(1499,0); //不分頻。PWM頻率=72000000/900=80Khz
- OLED_Init();
- LED_Init();
- EXTIX_Init();
-
- while(1)
- {
- DataScope();
- oled_show();
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
15年電賽控制類——風(fēng)力擺.7z
(2.84 MB, 下載次數(shù): 434)
2019-7-19 17:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|