【2015電子設計競賽】風力擺控制系統賽題解析+源代碼開源

參加過2015年全國大學生電子設計競賽做風力擺控制系統的小伙伴們一定對這道題目印象深刻,不管是成功還是失敗,各位肯定都是收獲不少。

  • 全國電賽
  • 風力擺
Image placeholder
管理員 2020-12-03 12:54

TUTE 機電樓617智能儀器研究室(硬件設計:王曉君 算法設計:嚴兵 程序設計:吳思遠)

? ?? ???參加過2015年全國大學生電子設計競賽做風力擺控制系統的小伙伴們一定對這道題目印象深刻,不管是成功還是失敗,各位肯定都是收獲不少。看了網上各位大神的討論,提出了很多解決方案和控制算法。大賽也過去了兩個月,我也鄰近畢業,各種事情,忙活了好長一段時間,現在趁這個空閑的機會,上上網跟各位小伙伴們分享我自己對這個題目的解決方案和看法,其中如果有分析得不對的地方,還希望各位指教。

204930szxt9xqrt7t005rt.jpg.thumb.jpg

? ?? ? 說了這么多,先來看一下用這套控制方案實現的視頻。這個控制方案采用MPU6050做姿態反饋,從第一問到第七問全部采用閉環反饋控制,在視頻中可以看到風力擺具有很強的抗干擾能力,基本上任何暴力干擾之后都能在5秒內恢復原來的運動狀態,當然用風扇吹就更不在話下了。

視頻打不開的可以復制以下優酷鏈接打開。

http://v.youku.com/v_show/id_XMTM3MDcwMDY0NA==.html?from=s1.8-1-1.2#paction


視頻看完了,我來說一下我的實現方案吧。

一、??題目分析

? ?? ? 首先拿到這份題目,要把出題專家在題目中隱晦告訴你的關鍵字眼摳出來,揣摩出題專家的意圖,才能盡可能的拿高分滿分(大家都是高考過來人)。在下圖中我把題目的關鍵字用紅色標出來了。請看圖!



通過剛才圖片上面的分析,用一句話總結:專家想讓學生做一個“伺服控制系統”,學過《自動控制系統》的同學肯定知道其中的意思。但是,叫“伺服控制系統”還是不夠完整的,還缺少了此題最關鍵的字眼——隨動系統!隨動系統的定義是:若給定的輸入信號是隨時間變化的并且系統的輸出量隨輸入量的變化而變化這種系統就稱為隨動系統。快速跟蹤和準確定位是隨動系統的兩個重要技術指標。

所以完整的叫法應該是“伺服隨動控制系統”。注意!給定的信號是變化的!變化的!變化的!如果理解為固定的,就達不到想要的效果。

題目分析完了,那么我要怎么做才能達到上面的要求呢?不要煩,我們逐條進行分析解決。

二、??選型方案

? ?? ? 第一步,控制系統選型:剛才說了,我們需要做一個伺服隨動控制系統,通常衡量伺服系統性能的指標有“帶寬”、“精度”、“抗干擾能力”等。先說系統帶寬,帶寬反映風力擺跟蹤的快速性。帶寬越大,快速性越好。風力擺控制系統的帶寬主要受到控制對象和執行機構的慣性的限制。慣性越大,帶寬越窄。根據題目要求做“自由擺運動”,由單擺周期公式可以求得風力擺的擺動周期T在1.3-1.6秒之間,換算成頻率f在0.625-0.77Hz之間,大家可以自己掐表計算一下擺動的周期。由此可知我們需要設計出一個帶寬大于0.77Hz的控制系統(取0.8Hz)即可完成題目的要求。出題的專家制定的這個指標還是簡單的,要知道現代伺服控制系統帶寬已經超過了50Hz。角度采樣率根據奈奎斯特采樣定理,理論上選取fs>2f即可,但是題目中要求了系統最大調節時間,為了使得控制效果更好,需要取fs>10f甚至更高,在本次設計中采樣率選取200Sa/s,控制周期5ms。

第二步,電機選型:這是本題的最大爭議,在此我也不想把這個爭議擴大,所以我不討論電機是否違規的問題。現在從實現效果這個角度來討論電機的選型,不管黑貓白貓,抓到老鼠就是好貓!

我把軸流電機、空心杯電機、無刷電機做成一個表格。


電機

重量

推重比

頻率響應

機動性

抗干擾能力

??

軸流電機

??
??

??
??

<0.5

??
??

<2Hz

??
??

較低

??
??

??
??

空心杯

??
??

??
??

3~8

??
??

4-8Hz

??
??

較高

??
??

很弱

??

無刷電機

7~12

3-7Hz

適中

? ?? ? 主要看推重比和機動性這一欄,推重比、機動性是航空器的專業術語,發動機在水平面上的最大推力和發動機的凈重之比稱為推重比。機動性是指風力擺在一定時間內改變運動速度、方向的能力。

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

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

111.jpg

三、??算法設計

? ?? ? 當硬件OK以后算法就是整個系統的核心靈魂了,俗話說條條大路通羅馬,能夠達到題目要求的方法有很多,這次比賽童鞋們用的算法大概有幾種方式:邏輯判斷法、查表法,定點PID法,力合成法,矢量方程法等等。有的隊直接采用查表法開環控制也能取得不錯的成績,只要能夠達到要求的算法都是OK的。

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

? ?? ???好!說到這,來直接看一下題目第二問的要求(第一問直接跳過)。題目要求幅度可控,幅度可控是啥?不就是振幅A可控嘛,可控范圍是多少?30-60cm換成角度。好了,分析完了,第二問就是一個A可設置的正弦運動,OK。至于線性度偏差,只要你機械搭對稱了,這都不是問題,況且別忘了有X,Y兩個方向的電機呢。

把第二問的程序貼圖出來:

222.jpg

? ?? ? 第三問,擺動方向可設置。這里需要介紹一個知識點了:李薩茹圖形。當風力擺同時參與兩個相互垂直方向的簡諧振動,風力擺的位移是這兩個振動的位移的矢量和,如果兩個振動的頻率具有整數比關系時,風力擺的運動路徑是穩定的封閉的曲線,這些曲線即李薩如圖形。具體的理論推導和計算這里就不貼出來了,可以自行百度,現在直接把結論貼出來,李薩茹圖形由以下參數方程定義:

x(θ)=Asinθ

y(θ)=Bsin(θ+ψ)

若A=B,ψ=任意,則曲線是橢圓;

1.jpg

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

2.jpg

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

3.jpg

直接看圖清晰明了,第三問我們只需要在X,Y方向分別進行頻率相同,相位ψ=0或π,振幅A,B可設置的簡諧運動即可很好的完成題目的要求。

例如,想要45°怎么辦?tan45=1,設置振幅A/B=1即可:? ?? ???

x(θ)=10*sinθ

? ?y(θ)=10*sinθ

? ?例如,想要60°怎么辦?tan60=根號3,設置振幅A/B=根號3即可:

x(θ)=根號3*sinθ

y(θ)= 1*sinθ

例如,想要120°怎么辦?tan120=-根號3,設置振幅A/B=-根號3即可:

x(θ)=-根號3*sinθ

y(θ)= 1*sinθ

細心的童鞋一定會發現,出題人對第三問的要求簡單了,只要求擺動角度可控,但是通過上述方法不僅角度可控,擺長也是可控的!


把第三問的程序貼圖出來:

333.jpg

第四問,5秒內能夠制動。這個沒有什么運動路徑可言,純粹是考察大家的PID是否熟練掌握,PID目標值設為0°即可。注意D要給大一些,不要有積分。

第四問的程序圖:

444.jpg

? ?? ? 第五問,畫圓。出題人通過基礎部分一步一步引導完成畫圓,真是用心良苦。如果能夠領會出題人的想法,把第二問、第三問完成好,這一問是水到渠成的事情。再次把第三問的圖貼出來,如何畫圓?

若A=B,ψ=π/2或3π/2,則曲線是圓!

OK!完成了,這是圓,而且畫出來很圓!如果畫出了橢圓,一定是相位ψ有偏差,調節一下相位即可!

第五問的程序貼圖:

555.jpg


? ?? ? 細心的童鞋會發現,題目做到這一步,θ(t)=Asin(ωt+ψ)這個方程就是貫穿本題的核心!如果你的系統做得足夠好,就會發現這個方程的每一個參數你都可以自由的控制,結果就是你不僅可以讓擺幅可控、擺動周期可控、擺動方向可控,而且可以畫出以下這些曲線:


? ?? ? 第六問:畫圓抗干擾。考察伺服系統的抗擾動能力,出題人用這一問來把開環,半開環控制和閉環控制的隊伍拉開距離。當一個干擾過來的時候,風力擺的運動方程肯定不是θ(t)=Asin(ωt+ψ)了,題目給出了系統最大調節時間為5秒,能夠在5秒內恢復Asin(ωt+ψ)即可。這就牽扯到了伺服控制系統的重要指標——快速跟蹤和準確定位。有很多種算法可以選擇,例如常見的LQR、自適應、模糊控制、神經網絡等等。相信絕大部分還是用了經典的PID算法,簡單,快速,效果尚可!就看誰的PID調得熟練了,這個需要功夫在平時,多調多想多看就OK!PID需要調成大概是這樣的波形,能夠在一個周期之內快速跟蹤正弦運動:

55.jpg

如果你調成這樣的波形是不行的,需要把K降下來,D調高:

66.jpg

如果調成這樣,波形相似相位跟不上,系統慣性大,請把D調高。

77.jpg


? ?? ? 第七問:其他部分,今年出題人給其他項分配了10分,想拿高分的隊伍是必須拿下這10分的。前面說了,如果你的控制器做得足夠好,是能夠畫出花樣百出的圖形的,有很大的發揮余地。有的隊伍是畫三角形、正方形、畫8字,有的是做跟蹤物體、手寫寫字、畫斜直線,做漂亮的GUI界面等等都有。根據以往經驗,在有限的時間內建議不要把時間花在漂亮的GUI界面上,要放在更多的運動控制上,牢牢把握題目考察的側重點拿分!


? ?總的來看,今年這道題目難度適中,出題人還是考慮得比較周全的,讓各種風機各種算法都能夠達到要求,眾口難調,確實不簡單。同時也反映了電賽控制類的趨勢。從2011年的小車這種純邏輯判斷的題目到2013年倒立擺這種定點穩態系統再到2015年風力擺的動態跟蹤系統,實現了從邏輯到算法、從靜態到動態、從二維到三維的轉變,準備2017年電賽控制類的同學要多多留心了。個人感覺功夫還需在平時,搞突擊是不行的,多參加比賽,多接觸實際的項目好處多多,機會留給有準備的人,相信你也可以!


注:本文轉載自電子工程師論壇 http://bbs.eeworld.com.cn/thread-476344-1-1.html,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。如有侵權行為,請聯系我們,我們會及時刪除。

評論0