久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6114|回復(fù): 3
收起左側(cè)

風(fēng)力擺控制系統(tǒng)賽題解析與stm32源代碼

[復(fù)制鏈接]
ID:161768 發(fā)表于 2017-8-11 02:54 | 顯示全部樓層 |閱讀模式
第一步,控制系統(tǒng)選型:剛才說(shuō)了,我們需要做一個(gè)伺服隨動(dòng)控制系統(tǒng),通常衡量伺服系統(tǒng)
性能的指標(biāo)有“帶寬”、“精度”、“抗干擾能力”等。先說(shuō)系統(tǒng)帶寬,帶寬反映風(fēng)力擺跟蹤的快 速性。帶寬越大,快速性越好。風(fēng)力擺控制系統(tǒng)的帶寬主要受到控制對(duì)象和執(zhí)行機(jī)構(gòu)的慣性 的限制。慣性越大,帶寬越窄。根據(jù)題目要求做“自由擺運(yùn)動(dòng)”,由單擺周期公式可以求得風(fēng) 力擺的擺動(dòng)周期 T 在 1.3-1.6 秒之間,換算成頻率 f 在 0.625-0.77Hz 之間,大家可以自己掐 表計(jì)算一下擺動(dòng)的周期。由此可知我們需要設(shè)計(jì)出一個(gè)帶寬大于 0.77Hz 的控制系統(tǒng)(取0.8Hz)即可完成題目的要求。出題的專家制定的這個(gè)指標(biāo)還是簡(jiǎn)單的,要知道現(xiàn)代伺服控 制系統(tǒng)帶寬已經(jīng)超過(guò)了 50Hz。角度采樣率根據(jù)奈奎斯特采樣定理,理論上選取 fs>2f 即可, 但是題目中要求了系統(tǒng)最大調(diào)節(jié)時(shí)間,為了使得控制效果更好,需要取 fs>10f 甚至更高, 在本次設(shè)計(jì)中采樣率選取 200Sa/s,控制周期 5ms。


第二步,電機(jī)選型:這是本題的最大爭(zhēng)議,在此我也不想把這個(gè)爭(zhēng)議擴(kuò)大,所以我不討論電 機(jī)是否違規(guī)的問(wèn)題。現(xiàn)在從實(shí)現(xiàn)效果這個(gè)角度來(lái)討論電機(jī)的選型,不管黑貓白貓,抓到老鼠 就是好貓!
我把軸流電機(jī)、空心杯電機(jī)、無(wú)刷電機(jī)做成一個(gè)表格。
電機(jī)
重量
推重比
頻率響應(yīng)
機(jī)動(dòng)性
抗干擾能力


軸流電機(jī)




<0.5


<2Hz


較低


強(qiáng)


空心杯




3~8


4-8Hz


較高


很弱
無(wú)刷電機(jī)
7~12
3-7Hz
適中
主要看推重比和機(jī)動(dòng)性這一欄,推重比、機(jī)動(dòng)性是航空器的專業(yè)術(shù)語(yǔ),發(fā)動(dòng)機(jī)在水平面上的
最大推力和發(fā)動(dòng)機(jī)的凈重之比稱為推重比。機(jī)動(dòng)性是指風(fēng)力擺在一定時(shí)間內(nèi)改變運(yùn)動(dòng)速度、 方向的能力。


從這個(gè)表格來(lái)看,推重比是我們選擇電機(jī)的重要指標(biāo),而機(jī)動(dòng)性是整個(gè)風(fēng)力擺靈活性的重要 指標(biāo)。注意到賽題目說(shuō)明部分的第 9 條:“賽題中要求的各項(xiàng)動(dòng)作完成時(shí)間越短越好”。毫無(wú) 疑問(wèn),出題人已經(jīng)說(shuō)明了要盡可能的提高系統(tǒng)的機(jī)動(dòng)性。從最優(yōu)實(shí)現(xiàn)效果來(lái)看,無(wú)刷電機(jī)和 空心杯電機(jī)是更優(yōu)的選擇。但是為什么有人用軸流電機(jī)也能完成題目要求呢?答案就在頻率 響應(yīng)上,第一步已經(jīng)分析了系統(tǒng)帶寬 0.8Hz 即可滿足題目要求。如果題目規(guī)定 15 秒內(nèi)完成20 個(gè)單擺運(yùn)動(dòng),這個(gè)難度就上來(lái)了,因?yàn)橛幂S流電機(jī)的系統(tǒng)帶寬不夠了。但是采用軸流電 機(jī)有個(gè)好處,在圓周運(yùn)動(dòng)時(shí)即使做開(kāi)環(huán)控制風(fēng)扇干擾幾乎吹不動(dòng)。

第三步,傳感器選型:我們?cè)僬f(shuō)說(shuō)精度(檢測(cè)誤差),檢測(cè)誤差包括傳感器的誤差和機(jī)械誤 差,是傳感器和機(jī)械本身所固有的,控制系統(tǒng)無(wú)法克服。根據(jù)題目給出的±2.5cm 偏差可以知傳感器精度只要達(dá)到 0.5°就可以了,所以用 MPU6050 傳感器是可以達(dá)到題目要求的。機(jī) 械誤差則要求機(jī)械完美的對(duì)稱,所有的東西都要對(duì)稱,機(jī)械做的越好,最后出來(lái)的效果就越 好。至于傳感器的數(shù)據(jù)融合、濾波器設(shè)計(jì)部分請(qǐng)看程序貼圖:計(jì)算三次角度然后求平均值, 再經(jīng)過(guò)卡爾曼濾波器濾波的角度值就可以使用了。角度數(shù)據(jù)一定要穩(wěn)定,無(wú)高頻干擾![/hide]
1.005.jpg

算法設(shè)計(jì)
當(dāng)硬件 OK 以后算法就是整個(gè)系統(tǒng)的核心靈魂了,俗話說(shuō)條條大路通羅馬,能夠達(dá)到題目要 求的方法有很多,這次比賽童鞋們用的算法大概有幾種方式:邏輯判斷法、查表法,定點(diǎn) PID 法,力合成法,矢量方程法等等。有的隊(duì)直接采用查表法開(kāi)環(huán)控制也能取得不錯(cuò)的成績(jī), 只要能夠達(dá)到要求的算法都是OK 的。

說(shuō)一下我的算法設(shè)計(jì)吧,出題人在第一問(wèn)就告訴了要做自由擺運(yùn)動(dòng),從自由擺可以聯(lián)想到
2011 年的 B 題——基于自由擺的平板控制系統(tǒng)。這是一個(gè)單擺,但是單擺是非線性運(yùn)動(dòng), 我們通常會(huì)把非線性的東西通過(guò)某種思路去近似成線性的(如二極管的伏安特性曲線等效模 型),在單擺中,當(dāng)采樣率足夠高時(shí)兩個(gè)采樣點(diǎn)之間的連線可以近似看成是線性的,有木有 感到很熟悉?在高中物理學(xué)過(guò)了簡(jiǎn)諧運(yùn)動(dòng),物體所受的力跟位移成正比,并且總是指向平衡 位置。這是一種由自身系統(tǒng)性質(zhì)決定的周期性運(yùn)動(dòng)。(如單擺運(yùn)動(dòng)和彈簧振子運(yùn)動(dòng))實(shí)際上簡(jiǎn)諧振動(dòng)就是正弦振動(dòng)!其數(shù)學(xué)方程為θ(t)=Asin(ωt+ψ),A 是振幅,ω是頻率,ψ是相位。

好!說(shuō)到這,來(lái)直接看一下題目第二問(wèn)的要求(第一問(wèn)直接跳過(guò))。題目要求幅度可控,幅 度可控是啥?不就是振幅 A 可控嘛,可控范圍是多少?30-60cm 換成角度。好了,分析完 了,第二問(wèn)就是一個(gè) A 可設(shè)置的正弦運(yùn)動(dòng),OK。至于線性度偏差,只要你機(jī)械搭對(duì)稱了, 這都不是問(wèn)題,況且別忘了有 X,Y 兩個(gè)方向的電機(jī)呢。
把第二問(wèn)的程序貼圖出來(lái):
1.007.jpg
第三問(wèn),擺動(dòng)方向可設(shè)置。這里需要介紹一個(gè)知識(shí)點(diǎn)了:李薩茹圖形。當(dāng)風(fēng)力擺同時(shí)參與兩
個(gè)相互垂直方向的簡(jiǎn)諧振動(dòng),風(fēng)力擺的位移是這兩個(gè)振動(dòng)的位移的矢量和,如果兩個(gè)振動(dòng)的 頻率具有整數(shù)比關(guān)系時(shí),風(fēng)力擺的運(yùn)動(dòng)路徑是穩(wěn)定的封閉的曲線,這些曲線即李薩如圖形。 具體的理論推導(dǎo)和計(jì)算這里就不貼出來(lái)了,可以自行百度,現(xiàn)在直接把結(jié)論貼出來(lái),李薩茹 圖形由以下參數(shù)方程定義:
x(θ)=Asinθ y(θ)=Bsin(θ+ψ)
若 A=B,ψ=任意,則曲線是橢圓;

1.008.jpg

若 A=B,ψ=π/2 或 3π/2,則曲線是圓;
1.010.jpg

若ψ=0 或π,則曲線是直線段。

1.011.jpg
直接看圖清晰明了,第三問(wèn)我們只需要在 X,Y 方向分別進(jìn)行頻率相同,相位ψ=0 或π,振幅A,B 可設(shè)置的簡(jiǎn)諧運(yùn)動(dòng)即可很好的完成題目的要求。 例如,想要 45°怎么辦?tan45=1,設(shè)置振幅 A/B=1 即可:
x(θ)=10*sinθ y(θ)=10*sinθ
例如,想要 60°怎么辦?tan60=根號(hào) 3,設(shè)置振幅 A/B=根號(hào) 3 即可:
x(θ)=根號(hào) 3*sinθ y(θ)= 1*sinθ
例如,想要 120°怎么辦?tan120=-根號(hào) 3,設(shè)置振幅 A/B=-根號(hào) 3 即可:
x(θ)=-根號(hào) 3*sinθ y(θ)= 1*sinθ 細(xì)心的童鞋一定會(huì)發(fā)現(xiàn),出題人對(duì)第三問(wèn)的要求簡(jiǎn)單了,只要求擺動(dòng)角度可控,但是通過(guò)上 述方法不僅角度可控,擺長(zhǎng)也是可控的!

把第三問(wèn)的程序貼圖出來(lái):
1.013.jpg

第四問(wèn),5 秒內(nèi)能夠制動(dòng)。這個(gè)沒(méi)有什么運(yùn)動(dòng)路徑可言,純粹是考察大家的 PID 是否熟練掌
握,PID 目標(biāo)值設(shè)為 0°即可。注意 D 要給大一些,不要有積分。 第四問(wèn)的程序圖:
1.014.jpg

第五問(wèn),畫(huà)圓。出題人通過(guò)基礎(chǔ)部分一步一步引導(dǎo)完成畫(huà)圓,真是用心良苦。如果能夠領(lǐng) 會(huì)出題人的想法,把第二問(wèn)、第三問(wèn)完成好,這一問(wèn)是水到渠成的事情。再次把第三問(wèn)的圖 貼出來(lái),如何畫(huà)圓?
若 A=B,ψ=π/2 或 3π/2,則曲線是圓! OK!完成了,這是圓,而且畫(huà)出來(lái)很圓!如果畫(huà)出了橢圓,一定是相位ψ有偏差,調(diào)節(jié)一下 相位即可!
第五問(wèn)的程序貼圖:
1.016.jpg
細(xì)心的童鞋會(huì)發(fā)現(xiàn),題目做到這一步,θ(t)=Asin(ωt+ψ)這個(gè)方程就是貫穿本題的核 心!如果你的系統(tǒng)做得足夠好,就會(huì)發(fā)現(xiàn)這個(gè)方程的每一個(gè)參數(shù)你都可以自由的控制,結(jié)果 就是你不僅可以讓擺幅可控、擺動(dòng)周期可控、擺動(dòng)方向可控,而且可以畫(huà)出以下這些曲線:
1.017.jpg

1.019.jpg
第六問(wèn):畫(huà)圓抗干擾。考察伺服系統(tǒng)的抗擾動(dòng)能力,出題人用這一問(wèn)來(lái)把開(kāi)環(huán),半開(kāi)環(huán)控制
1.020.jpg 和閉環(huán)控制的隊(duì)伍拉開(kāi)距離。當(dāng)一個(gè)干擾過(guò)來(lái)的時(shí)候,風(fēng)力擺的運(yùn)動(dòng)方程肯定不是 θ(t)=Asin(ωt+ψ)了,題目給出了系統(tǒng)最大調(diào)節(jié)時(shí)間為 5 秒,能夠在 5秒內(nèi)恢復(fù) Asin(ωt+ψ) 即可。這就牽扯到了伺服控制系統(tǒng)的重要指標(biāo)——快速跟蹤和準(zhǔn)確定位。有很多種算法可以 選擇,例如常見(jiàn)的 LQR、自適應(yīng)、模糊控制、神經(jīng)網(wǎng)絡(luò)等等。相信絕大部分還是用了經(jīng)典 的 PID 算法,簡(jiǎn)單,快速,效果尚可!就看誰(shuí)的 PID 調(diào)得熟練了,這個(gè)需要功夫在平時(shí), 多調(diào)多想多看就 OK!PID 需要調(diào)成大概是這樣的波形,能夠在一個(gè)周期之內(nèi)快速跟蹤正弦 運(yùn)動(dòng):
如果你調(diào)成這樣的波形是不行的,需要把 K 降下來(lái),D 調(diào)高:

1.021.jpg
如果調(diào)成這樣,波形相似相位跟不上,系統(tǒng)慣性大,請(qǐng)把 D 調(diào)高。

1.023.jpg
第七問(wèn):其他部分,今年出題人給其他項(xiàng)分配了 10 分,想拿高分的隊(duì)伍是必須拿下這 10 分的。前面說(shuō)了,如果你的控制器做得足夠好,是能夠畫(huà)出花樣百出的圖形的,有很大的發(fā) 揮余地。有的隊(duì)伍是畫(huà)三角形、正方形、畫(huà) 8 字,有的是做跟蹤物體、手寫(xiě)寫(xiě)字、畫(huà)斜直線, 做漂亮的 GUI 界面等等都有。根據(jù)以往經(jīng)驗(yàn),在有限的時(shí)間內(nèi)建議不要把時(shí)間花在漂亮的 GUI 界面上,要放在更多的運(yùn)動(dòng)控制上,牢牢把握題目考察的側(cè)重點(diǎn)拿分!

總的來(lái)看,今年這道題目難度適中,出題人還是考慮得比較周全的,讓各種風(fēng)機(jī)各種算法都 能夠達(dá)到要求,眾口難調(diào),確實(shí)不簡(jiǎn)單。同時(shí)也反映了電賽控制類的趨勢(shì)。從 2011 年的小 車(chē)這種純邏輯判斷的題目到 2013 年倒立擺這種定點(diǎn)穩(wěn)態(tài)系統(tǒng)再到 2015 年風(fēng)力擺的動(dòng)態(tài)跟 蹤系統(tǒng),實(shí)現(xiàn)了從邏輯到算法、從靜態(tài)到動(dòng)態(tài)、從二維到三維的轉(zhuǎn)變,準(zhǔn)備 2017 年電賽控 制類的同學(xué)要多多留心了。個(gè)人感覺(jué)功夫還需在平時(shí),搞突擊是不行的,多參加比賽,多接 觸實(shí)際的項(xiàng)目好處多多,機(jī)會(huì)留給有準(zhǔn)備的人,相信你也可以!

0.png
stm32單片機(jī)源程序如下(主程序):
  1. /*-------------------------------------------------------------------------------------------
  2.                                                    風(fēng)力擺控制系統(tǒng)(2015-8-12)

  3. 硬件平臺(tái):
  4.                          主控器: STM32F103VET6 64K RAM 512K ROM
  5.                         驅(qū)動(dòng)器: LMD18200T
  6.                     電源:   DC +12V

  7. 軟件平臺(tái):
  8.                          開(kāi)發(fā)環(huán)境: RealView MDK-ARM uVision4.10
  9.                         C編譯器 : ARMCC
  10.                         ASM編譯器:ARMASM
  11.                         連接器:   ARMLINK
  12.                         底層驅(qū)動(dòng): 各個(gè)外設(shè)驅(qū)動(dòng)程序      

  13. 時(shí)間: 2015年8月12日      

  14. 作者: BoX
  15. -------------------------------------------------------------------------------------------*/   
  16. #include "stm32f10x.h"
  17. #include "usart1.h"                                         
  18. #include "delay.h"
  19. #include "led.h"
  20. #include "timer.h"
  21. #include "motor_control.h"
  22. #include "motor_pwm.h"
  23. #include "motor_pid.h"
  24. #include "stdlib.h"
  25. #include "indkey.h"
  26. #include "mpu6050.h"
  27. #include "ahrs.h"
  28. #include "math.h"
  29. #include "usart2.h"
  30. /*------------------------------------------
  31.                                  全局變量                                
  32. ------------------------------------------*/
  33. extern uint8_t Q1_Start;
  34. extern uint8_t Q2_Start;
  35. extern uint8_t Q3_Start;
  36. extern uint8_t Q4_Start;
  37. extern uint8_t Q5_Start;
  38. extern uint8_t Q6_Start;
  39. extern uint8_t CurMode;
  40. /*-----------------------------------------
  41.                             初始化外設(shè)
  42. ------------------------------------------*/
  43. void BSP_Init(void)
  44. {
  45.         DelayInit();
  46.         LED_GPIO_Config();
  47.         Key_IO_Init();        
  48.         PID_M1_Init();
  49.         PID_M2_Init();
  50.         M1TypeDef_Init();
  51.         M2TypeDef_Init();        
  52.         PWM_Init();
  53.         TIM1_Config(10000-1,71);  /* TIM1 10ms Inturrupt  */
  54.         TIM5_Config(5000-1,71);   /* TIM5 5ms Inturrupt 采樣率200Hz 不能更改*/
  55.         USART1_Config();
  56.         USART1_printf(USART1," 系統(tǒng)啟動(dòng)成功!");
  57.         USART2_Config();
  58.         Display_Title();
  59.         MPU6050_Init();                  //MPU6050                                                                           
  60.         TIM_Cmd(TIM5,ENABLE);            //電機(jī)控制都在TIM5完成
  61.         TIM_Cmd(TIM1,ENABLE);
  62. }
  63. /*-----------------------------------------
  64.                                 主 函 數(shù)
  65. ------------------------------------------*/
  66. int main(void)   
  67. {   
  68.         BSP_Init();
  69.         //角度采樣和運(yùn)動(dòng)控制都在TIM5_IRQHandler()中完成
  70.         while(1)  
  71.         {         
  72.                 if(Q1_Start == 1)
  73.                 {
  74.                         CurMode = 1;
  75.                 }
  76.                 else if(Q2_Start == 1)
  77.                 {
  78.                         CurMode = 2;
  79.                 }
  80.                 else if(Q3_Start == 1)
  81.                 {
  82.                          CurMode = 3;
  83.                 }
  84.                 else if(Q4_Start == 1)
  85.                 {
  86.                          CurMode = 4;
  87.                 }
  88.                 else if(Q5_Start == 1)
  89.                 {
  90.                         CurMode = 5;
  91.                 }
  92.                 else if(Q6_Start == 1)
  93.                 {
  94.                         CurMode = 6;
  95.                 }
  96.                 else
  97.                 {
  98.                         CurMode = 0;
  99.                 }        
  100.         }     
  101. }

  102.         
復(fù)制代碼
0.png
所有資料51hei提供下載地址(完整源碼+pdf):
http://www.zg4o1577.cn/bbs/dpj-92234-1.html





回復(fù)

使用道具 舉報(bào)

ID:405033 發(fā)表于 2019-4-10 16:36 | 顯示全部樓層
樓樓,請(qǐng)問(wèn)這個(gè)主控板是什么型號(hào)的呢
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本免费一区二区三区四区 | 久久亚洲一区二区 | 成人av一区二区在线观看 | 久久精品国产一区 | 国产成人免费网站 | 欧美日产国产成人免费图片 | 狠狠的日 | 国产精品小视频在线观看 | 青草福利| 欧美日本在线观看 | 国产乱码精品一区二区三区忘忧草 | 一本大道久久a久久精二百 欧洲一区二区三区 | 亚洲视频欧美视频 | 国产精品女人久久久 | 精品成人佐山爱一区二区 | 亚洲一区二区三区观看 | 欧美精品成人 | 欧美精品成人一区二区三区四区 | 国产一级黄色网 | 国产片侵犯亲女视频播放 | 亚洲第一视频网 | 亚洲一区二区在线视频 | 午夜伊人 | 亚洲欧洲在线观看视频 | 激情五月婷婷综合 | 一区二区在线不卡 | 欧美精品久久久 | 欧美91 | 亚洲最色视频 | 真人一级毛片 | a在线视频 | 亚洲一级av毛片 | 亚洲人精品 | www.久草.com| 91在线视频一区 | 亚洲一区二区免费电影 | 九九热这里 | 亚洲精品女人久久久 | 国产高清一区二区 | 久久黄视频| 九色网址 |