2019全國大學生電子設計大賽H題 模擬電磁炮系統全國一等獎

2019全國大學生電子設計大賽H題 模擬電磁炮系統全國一等獎

作者 鄧博遠
隊友 阿華 狗子
博主QQ 1015188236 劃重點:如果是博客真的哪裏寫的不明白或者真的有什麼關於大賽的問題歡迎大家和我討論交流,千萬不要加了我就直接要源碼,因爲博客裏面寫了怎麼做,自己一定要動手試試,否則我代碼裏面光四元數融合的一部分很多人就看懵了。。。希望大家還是多動手吧

2019.14更
賽後也和很多人交流了很多,其實就像我前面寫的那樣,電磁炮就是一個斜拋運動(炮臺高度可忽略不計的情況下),那麼公式其實就是我上面寫的那個。。。博主改變的是傾斜角,但是爲了減少硬件上的誤差帶來的影響,所以加入了一個可變的參數V(實測還是很有效)。有的隊伍改變的是放電時間,其實就是初速度V。他們測的還是很準的,但是博主沒時間測試了,不過不管是哪個方法吧,一定一定要穩住自己的機械結構還有電磁炮每次充電電壓。保證這兩個沒問題的情況下,那麼不管你用博主的方法還是控制其他變量,都會有很好的效果的。

經過了緊張的八月份,電子設計大賽終於落下了帷幕,這其中有太多的心酸只有電賽人才懂!而博主也即將升入大三,但是想給未來的電賽人留下點東西,於是2019.9.3開始寫這篇文章
我們做的電磁炮系統,MPU6050做反饋,PID控制,俯仰角和航向角,openmv測距(博主手裏的激光測距在比賽前半個月不知道被誰拿走了!!!!!!!!!mmp比賽前兩天我還唸叨不會測距吧,openmv確實測距會受光照影響很大,但是程序裏可以補償回來,具體怎麼補償,可以直接跳到下面的軟件部分了),openmv的反饋回來的位置也是PID控制(爲了讓靶子在中心位置)。
整體裝置如圖
在這裏插入圖片描述
界面:
在這裏插入圖片描述
由於今年賽題和往年有一些不太一樣,博主開始準備的是控制類題目,所以肯定是做了往年的控制類賽題,
具體的有17年板球控制系統
如圖
在這裏插入圖片描述
15年的風力擺系統
如圖在這裏插入圖片描述
13年的倒立擺沒做,但是博主和隊友分析了倒立擺的原理。也看了很多倒立擺的所謂‘源碼’,出於手頭元件有限且時間緊所以沒做實物。

我看賽題出來時和比賽結束後很多人在噴出題,說今年沒有控制題和電源題,這裏博主不做評論,但是博主覺得今年的題完全在第一次專家會議裏面體現了出來,我記得當時直播說“大部分學生‘軟’化,要提升學生全面能力”,別的題我沒做不清楚,但是電磁炮這個我覺得還是和控制一樣的(具體哪裏一樣在下面我會給出詳細分析),而且非常考驗參賽人的機械結構、基本的硬件基礎、還有軟件能力。當然如果有人非要噴,我也沒辦法。題目就是這樣,我做好我自己的就行。
話不多說
先來帶大家分析一下這個賽題
在這裏插入圖片描述
在這裏插入圖片描述
賽題出來的時候,估計會有很多人來選這道題還有F題(測紙,具體原因參考18年省賽題),因爲這道題看似很容易,畢竟題目第一個基礎是發射炮彈哈哈哈哈,

那麼其實這個賽題出來的時候,可能有一些人被題目中的直流穩壓電源供電干擾了,一般實驗室裏的直流穩壓電源最多好像也就30多V吧(因爲博主的實驗室比較貧困。。見識的可能比較少),那麼好多人用升壓模塊來給電壓升到100V+。。博主採用的是降壓整流,220V變160V然後整流橋變直流。瞬間就能給電容充滿,然後用F4控制繼電器來放電。
還有就是左右擺動的角度能不能和要求一樣準,上下襬動的角度能不能打的準,最後就是發揮二,發炮彈的時間。。玩過遊戲的都知道,甩狙不能當目標在中間纔打出去,畢竟人是有反應時間的,然後開槍也有反應時間~所以看你怎麼處理。

硬件部分

1.

電磁炮的炮彈和炮管選取。
我們一開始居然和傻子一樣選取的塑料做炮彈哈哈哈哈哈哈哈,後來補了一下知識。。。我們最終選取強磁珠,然後炮管選取的是魚竿(因爲博主附近有一家漁具店),截取的炮管不要太長,太長摩擦力會影響很大,太短髮射的不準,而且我們用的磁炮彈和炮管口徑差不多,這樣的話也避免了炮彈在炮管裏面可能亂撞的情況。炮管13cm長,內徑12mm,外徑14mm,炮彈11mm。
如圖
在這裏插入圖片描述
在這裏插入圖片描述

2.

炮管、線圈。
大家應該都是線圈加電容,這裏我就不解釋原理了,但是在這裏線圈的纏繞有一些講究,不能亂纏,要按照一個方向,我們當時是一圈纏到頭再往回纏。大概是350圈左右(這個圈數好像有講究emm但是我沒仔細找)。

3.

***炮彈位置。
這個就真的挺重要的,因爲炮彈的位置如果合適,才能打出最遠的距離!!!!**祕密就是炮彈要放在線圈後面一點點,多了打不出去,少了還是打的近。我們一點點測試的距離。這樣的話,炮彈在場中受力時間最長,也就是出口速度最大。

接下來是雲臺部分

其實這部分沒必要多說,兩個舵機(可以採用步進電機,細分驅動,能控制的很精確。但是博主手頭只有一個細分驅動,我記得能到0點幾的一個角度),因爲博主這裏採用的是6050做反饋,所以舵機控制也是完全沒問題的,而且也能控制精確度(我設定的精確度在0.1)
openmv放那麼高只是方便我們測距,並沒有其他的意義。

最關心的軟件部分哈哈哈

博主在比賽期間寫的程序真的挺工整的,每個模式,每個模式對應的PID,每個模式對應的子函數。還是定時器的switch
在這裏插入圖片描述
按鍵選擇模式,博主用的是觸摸屏,但是一開始只把它lcd初始化了,觸摸在發揮三初始化的哈哈哈哈然後你們就懂了吧
給分享一下重要代碼吧
在這裏插入圖片描述
這是主函數,其實就是一些初始化,還有模式的選擇,工作都在定時器中斷裏面做的
如下
在這裏插入圖片描述
選擇模式然後執行。
最主要的我都寫在了key.c裏面了
在這裏插入圖片描述
這真的是比賽時候寫的。。。後來也沒有改動。。。真不敢相信我當時寫的這麼清楚哈哈哈(自戀一波)
好了好了接着說,算法呢,其實就是簡單的斜拋運動啦,S=(V^2sin2x)/g,最終雲臺是知道的只是角度X,那麼就是X=arcsin[Sg/(V*V)]/2,S是設定值或發揮中的測量值,是固定的。
那麼博主呢,將初速度設爲一個能更改的變量,因爲如果測距測多了或測少了或者現場一些情況和實驗室打的不一樣了!那麼你可以通過改變V,最終改變X,即俯仰角!!博主當時給的70(cm/s)還是很準的。
開機界面
在這裏插入圖片描述
模式一:上電就直接給電容充電,然後按鍵選擇mode1,一個給繼電器的管腳高低電平變換,發射。ok
在這裏插入圖片描述
模式二:選擇模式設定,然後下面的是發射前角度,上面的是期望角度
在這裏插入圖片描述

模式三:和模式二大同小異,考的就是你能不能左右動~~
在這裏插入圖片描述
發揮一:這個和基礎三是一樣的界面。。就不再放一次了
不過是和openmv通信,然後確定紅色的中心像素點在像素中心就好了,PID調節,調節好之後再測距並且發送測量距離,然後發送的時候帶上自己定的暗號就好,比如0xFF,只要不是像素點能在的範圍就好!!不過這時候要注意一下openmv和32通信的問題,數據處理稍微有一點麻煩。!八位變成32位而且要分辨暗號
發揮二:這個距離是定死的,但是要求在10s之內能掃一圈,所以博主定時器5s轉半圈,而且在半圈之內調整好俯仰角,基本上第二次看見就發射,然後程序怎麼就知道發射呢?舉個例子,從左往右0-320是openmv的像素點位置,openmv發送過來位置,當從右往左掃到了,那就在165的位置要開炮!!!,這樣才差不多是中心線打出去!!從左往右掃到了,同理,接收到155的位置開炮~
發揮三:觸摸屏控制雲臺,然後有一個發射區的位置。

這道題怎麼說呢,確實簡單!!!很多人在自己學校做的都非常棒!但是考驗大家的還有自己的東西的實用性啊。。。。你不能說以後你做一個產品,你自己測試的非常好,別人一用就炸了(舉個例子),對吧,所以所有的誤差都是我們要考慮的東西,那麼對於我們來說,測距是不穩定因素,那麼好,我去程序裏面更改能直接影響它的因素就好了~。打遠了,速度調大,打近了,速度調小。
還有就是繼電器。。主控板。。。最好都準備兩套。。。畢竟運輸的路上emmm據我所知有很多死在了路上。。博主還是很幸運的~

其實電磁炮網上也很多現成的,如果大家以後做的話推薦買現成的,畢竟這個東西挺坑的。。。不過坑的地方我也都在硬件部分說明了,如果我還有沒說到的歡迎大家討論。

不過比賽就是比賽,他只是鍛鍊你的一個階梯罷了,說明不了什麼,自己學到東西纔是真的!!
希望以後的小同學能更加努力,長江後浪推前浪,一浪更比一代強!!!
其實我不建議大家直接去找源碼,因爲你從別人的源碼入手,比自己寫要費腦子的多!!自己一定要基礎好,然後有了思路寫起來就沒那麼麻煩了!多動手!千萬彆嘴上功夫。包括做往年賽題,雖然要參考網上,但是記住,一定要自己想!當然博主的源碼會在以後更新出來

2019.9.3 河北地質大學鄧博遠

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