【全國大學生電子設計競賽】2019電賽H題覆盤錄——電磁曲射炮+綜合測評

       這是我本科階段的最後一戰,本來期待一個完美收官,但是意外頻頻,打的不盡如人意,但收穫還是有的,故在此覆盤,留下一些可供後來人參考的東西。

       在此感謝我的隊友CJC,WJJ,陪我一起熬夜!

        筆者才疏學淺,如有錯漏之處,還請告知於我及時更正,感激不盡!


1 國賽的備賽(賽前一個月)

       我們組確定了做控制類的題目,也就是說會選擇飛行器另一道典型控制題所以在硬件的準備上,我主要着重於控制板的設計與調試以及飛控的調試,後來因爲聽說飛行器題目限定使用德州儀器的芯片,所以後期的重心主要在另一道控制題目上,我的隊伍準備了:

  • STM32F407主控板(帶有MPU6050/9250接口,7線OLED顯示模塊,一組SPI,4個ADC通道,4個DAC通道,4個定時器通道,4個串口,6個按鍵,2個LED,1個蜂鳴器,1套SPI,1套IIC)
  • 電源板(12V直流輸入,12V/5V直流輸出,2個直流電機驅動,2個步進電機驅動,4路舵機驅動)
  • 圖像處理板(使用STM32H7,刷寫micropython固件,可使用OpenMV的IDE編程,攝像頭型號OV7725)
  • 無線調參器(用於快速地,實時地調節參數,帶一塊4.3寸液晶屏,8個按鍵,2個電位器旋鈕,1個無源蜂鳴器,1個RGB燈,1個外置FLASH芯片)

4塊板子統一了接口,可以用防反接的端子線互連

我的隊友負責驅動代碼的維護,確保每個模塊都可以成功驅動(OLED,蜂鳴器,舵機,步進電機,直流電機,陀螺儀,串口,ADC,DAC,IIC,SPI)

反思:

  • 在準備過程中,存在由於任務分配不均導致的部分隊員怠工的現象(廣泛存在於各組,不是個案,不是所有人都是爲了參賽的學習,有些人就是隻想混個經歷)。這種情況就需要多溝通,高年級學生作爲實驗室的主導者,不能無視,更不能同流合污。否則會陷入惡性循環!
  • 測試好的的代碼包,需要在必要的地方添加註釋,方便在使用時快速移植
  • 飛行器題目由於涉及到機器視覺,德州儀器的MSP430/432系列很難滿足要求,DSP對於使用者的技術要求又偏高,所以在芯片限定上勢必會適當放寬,準備期間的擔心不成立(放棄飛行器的關鍵應該是實驗室不具備調試飛行器的場地條件)

2 國賽進行時

拿到題目,在注意到飛行器題目需要SD卡後果斷放棄(我的圖像處理板沒有畫SD卡),開始準備 H題-電磁曲射炮

我把整個工作分爲以下幾個部分

  • 電磁炮及其驅動
  • 視覺部分(尋找靶標)
  • 炮臺控制
  • 論文撰寫

以下詳細介紹各部分的分析與落實情況:

(1)電磁炮及其驅動:

電磁炮通過在網上搜索資料有了初步的理解,在瞭解了射程的要求後,我們認爲單級線圈就可以滿足題目要求的出射速度(事實上也的確如此),遂開始繞制線圈,開始使用電源組的漆包線繞制線圈,漆包線很細,導致線圈內阻很大,在使用電源箱測試時,短路電流也上不去(約7A@60V,等效內阻8.6Ω,可以說是相當大了),反覆的測試還導致線圈發熱脫膠(這不就是電熱絲?),後來到電機維修的店裏買了粗的漆包線,繞制了約150匝,線圈內阻就很小了。

【完整參數:約150匝,漆包線直徑1.25mm,電阻約20mΩ】

內阻問題解決,電流可以上去了,但是通過計算可以看到,理論短路電流已經達到了3000A@60V,如此大的電流電源箱如何招架?就算存在,熱功率也達到了180kW,這是不現實的,何況我們需要的是瞬時放電,所以大電容是再好不過的選擇了,由於要求可控,需要一個開關來控制電容對線圈放電迴路,我們找了一個空氣開關來臨時實現(在後期替換爲MOS管,畢竟發射需要電控),經過測試,使用螺絲/鐵釘作爲炮彈時,繞制的線圈炮可以達到要求,(因爲發射時炮彈獲得的動能大致是固定的,動能E=1/2mv^2,只有質量m小一些,才能獲得較大的速度v,當然,質量太小的物體在飛行時受到氣流影響較爲明顯,主要表現爲彈道發飄,落點不固定,因此需要在質量m與速度v之間做取捨)。

爲確保精度,炮臺使用了步進電機(航向與俯仰,共兩個步進,使用16細分),步進電機驅動代碼由大二隊友負責,爲了實現炮臺兩週的角度閉環,使用定時器充當了一個模擬編碼器,對輸入步進驅動器的脈衝進行計數,只要步進電機不丟相,根據脈衝數就可以確定步進電機當前的角度。

(2)視覺部分(尋找靶標)

使用了自制的攝像頭板,刷寫了micropython的固件,所以可以使用OpenMV的IDE進行編程,尋找靶標的邏輯比較簡單:先找紅色色塊的區域,在色塊附近區域使用霍夫變換的方法找指定半徑範圍內的圓,此算法相比於全圖像霍夫變換,效率奇高(78fps),ov7725在不做任何處理的情況下,也就78fps左右以至於我都誤以爲幀率刷新的代碼寫錯了。後來擔心由於光照原因導致色塊識別出錯,改成了灰度圖直接霍夫變換找圓,只不過對ROI做了一個固定的限制(上下端部分不要),測試幀率在60fps左右。最後,使用串口以115200的波特率將圓形圓心的座標發出,同時帶有固定幀頭幀尾校驗和無圓心的特殊標誌位,並且爲方便調試,識別到靶標時,亮紅色LED作爲提示。全部代碼實現後,實測幀率40-50fps左右,滿足要求。

(3)炮臺控制

炮臺航向的控制非常簡單,不再做過多敘述,在此詳細介紹炮臺俯仰的控制(俯仰角控制炮彈的垂直出射角)。

首先,根據高中物理可知,在理想情況下(無空氣阻力,炮彈出射動能恆定,出射點與着彈點在同一水平處),45°出射時射程最遠。具體公式我在比賽的時候推導過(但是現在找不到了),炮口在45°時,無論上擡還是下擡,着彈點都會向出射點靠近。但是要注意一點,很少有人的出射點是和地面水平的,也就是在炮彈發射之後,在達到與出射點同一水平高度時,還將繼續飛行一段時間。

通過計算,考慮出射點高於實際着彈點情況下,在機械結構本身產生誤差角δθ時,高射方式(大於45°出射)比低射方式(小於45°出射)產生的誤差δx要小,但是由於我們炮臺機械裝置的侷限,迫不得已採用了低射方式,不過在後續實測中,這點誤差無關緊要。

在炮臺控制中,射程主要和線圈的初始放電電壓(電容電壓)炮彈形狀材質線圈匝數炮彈在炮膛中的位置出射角有關,前4個變量都可以被控制成常量,所以只需要控制出射角這一變量即可改變射程。出射角與射程的函數關係非常重要,由於公式推導複雜,我們採用直接的實測數據來擬合出這一函數關係。擬合的方式採用分段折線擬合,(多項式擬合在最後被實踐證明爲最不靠譜的擬合方式)。

(4)論文撰寫

論文撰寫部分完全交給了組內大一學弟負責。

反思:

在這個環節我犯了不少錯誤,也反映在這個過程中,我沒有做好一個合格的領導者。以前我習慣單打獨鬥,軟硬件都是自己來,這次比賽還是沒有適應過來,雖然我主要做控制算法和視覺算法工作,但還是想每個部分都插一手,搞得其他兩個隊員很不滿意,總感覺我在否定他們的工作。

此外,我自身沒有形成比較權威的領導力也是一大問題,隊裏大二的隊員本身實力較強,在寫步進驅動代碼的時候有很多自己的想法,經常以“我覺得沒必要”駁回我的建議,當時考慮到隊伍情緒問題沒有做過多幹涉,結果在後期寫控制算法的時候才嚐到惡果,這位兄弟的變量名取的模棱兩可,他自己調用完全沒問題,我在銜接的時候暈頭轉向。因此,我的建議是,在團隊合作中,多溝通,及時消除所有拒絕合作的苗頭;對於不好的編程習慣,一定要儘早杜絕。在代碼交接的部分,一定要規範命名,多寫註釋!

在比賽過程中,我一開始在調一個激光跟隨的發揮部分,做好之後發現我們的基礎功能還沒實現(此時已經過去大半天),纔開始調基礎功能,後來時間倉促,這個發揮部分也沒有用得上。可以說白白浪費了許多時間。後來使用調參器改造成遙控,加上了預測彈道和着彈點的界面,感覺在界面花了太多時間,雖然最後這個部分得到了評委的肯定,但是如果用這個時間去打磨我們的基礎部分,效果會更好。所以,做比賽還是應該按部就班,不要好高騖遠。

在基礎部分中,要求鍵盤給定距離和角度,當時圖方便,航向角步進3°,射程步進5cm,(最後也沒有改動)。比賽現場評委指定了20°位置,航向角的初始值爲0°,我們的設置只能到18°或21°,導致總是打偏。

此外,沒想到用來判斷落點的所謂高速相機,竟然是評委的眼睛!(笑),然後是通過一個沙盤來判斷落點。我現在才意識到沙盤的高度相當於縮短了我在上文圖片中標出的ΔH,而且由於我們採用的是低射方式,距離越近,誤差就越明顯!我們在自己標定的時候,都是直接在瓷磚地面標定的(也有在厚的瑜伽墊標定的,這樣就很逼近賽場情況了),2cm的沙盤,最大可以產生6cm的射程誤差,我也總算理解了爲什麼比賽時落點總是比自己實測的時候短一點了。(很氣)

 

3 綜合測評備賽(賽前一週)

主要看了前幾年的真題,在Multisim仿真了一下,也把部分電路在洞洞板上搭了一下,發現有源濾波的截止頻率計算比較複雜,理論計算、仿真結果,bode圖分析以及實物實測出來的參數竟然都各不一樣。最後決定:如果遇到濾波,直接採用無源濾波的方案,幅值小就用運放放大。這部分準備較爲充分。

準備了士力架,不喫午飯以省下午餐時間。

4 綜合測評進行時

拿到題目不久,已經有了方案:

  • 方波:運放正反饋出個方波,由於壓擺率問題導致波形不好看,送到與非門整形,一次整形不好看,再整一次(使用運放*1,與非門*2)
  • 正弦:三階無源低通,後接反向比例放大(使用運放*1)
  • 矩形波:方波通過電位器給電容充電,和方波送入與非門,調節電位器可調節電容電壓上升時間,從而在與非門輸出可調脈寬矩形波。(使用與非門*1)
  • 餘弦:方案A:對正弦積分使用(運放*1);方案B:信號過低通移相後放大(運放*1)【此想法未嘗試,不保證有效】

比賽的時候不知爲何,我的濾波器突然失效,隊友的反向比例放大始終沒有增益,就卡在這個問題直到比賽結束,大家都很絕望……

這個問題的出現是真的是沒想到,感覺這就是“不可抗力”吧。


寫在最後

比賽結束後,我的隊友都比較沮喪(我也是),這世間最難過的事不是“做不到”,而是“本可以”。

誠然,比賽的成功是對參賽者能力的肯定,比賽的失利卻絕不是對參賽者能力的否定,做學問需要不卑不亢,十年磨劍纔是做學術的正確態度。謹記:功不唐捐,玉汝於成!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章