如何準備全國大學生電子設計大賽控制題?

寫在最前

全國電子設計大賽馬上就要開始了,最近有很多同學在詢問如何準備電子設計大賽的測控類(控制題),我在這裏做一個較爲詳細的備賽過程,爲新手、老鳥們做一個簡單的梳理,簡化大家的參賽準備流程。幫助一些較爲迷茫的同學快速獲取獎項。整體指南分爲三部分:硬件準備建議、軟件準備建議、重要細節。

閱讀前重要須知:今年TI承包電子設計大賽,從比賽形式或者題目上可能會產生一些未知的新改變,包括但不限於指定主控(優點:公平了些。缺點:可能導致硬件被壟斷,一片難求、TI的代碼生態圈做得很差,沒例程。)、搞一些難度過高的東西(ROS、視覺、人工智能)、搞一些算控制但又不算控制的奇葩題目(參見18年手勢識別系統)。具體還需要看官方通知。凡是涉及到xxxx芯片能不能用等【官方規則】性質的問題,請一定注意要詢問當地賽區指導老師、負責人。以官方爲準。別人說的都不管事。

硬件準備

首先我們來回顧一下最近三屆比賽的題目。分別是風力擺、倒立擺、板球系統。硬件還需要在細分成兩個方面。一個是主控等電子設備,在一個是控制題所需要的機械硬件。首先我們來看電子設備。電子設備從控制題目的角度來說大約分爲四個小部分。分別是傳感器、主控、執行器和供電電源。

這三屆主流的方案用到的傳感器有如下幾種:陀螺儀姿態傳感器、旋轉電位器、AB相增量編碼器等旋轉位置測量傳感器、攝像頭。

比賽沒有用到並且在電子設計中常用的傳感器:人體紅外開關、超聲波、光電距離傳感器、顏色傳感器、激光距離傳感器、電子羅盤(指引平面航向角,很少用到,但是yaw比陀螺儀準)、磁場傳感器(測量磁場強度、或者是開關量等,同樣很少用到)等等(歡迎補充)。

比賽中用到的主控主流有:

(1)51單片機系列:我個人認爲很便宜,而且很多初學者探尋寄存器位操作都是51入門,但是遇到驅動攝像頭這種任務,很多萌新都問51能做板球嗎?我只能打個比方,假設驅動攝像頭這個任務,好比讓你從中國去俄羅斯。51單片機就好比自行車,STM32單片機就好比空客飛機,樹莓派就好比任意門。同樣幾千公里的旅程,你選擇哪個?如果非要從能不能這個角度回答,我必定說能,但是背後付出的時間和成本就完全不值得。總而言之,51在處理複雜任務方面力不從心,主頻太低。

(2)MSP430系列:低功耗確實做得不錯,但是關鍵在於,學生做比賽要的不是多強的芯片,多麼低功耗的設計,他們要的是支持和資料,就算給他一臺銀河超級計算機,他可能都不會用。Ti所有系列的芯片都缺乏有效、有力的社區支持,和相關的資料(編碼器範例、顯示屏範例、攝像頭等等)。網絡上抄來的代碼錯誤百出,雖然ti推出了energia這個編譯器來解決不同硬件的兼容和資料庫問題,但是感覺是個半拉子工程,函數庫的豐富程度遠遠沒有達到預期。Ti也有dsp、fpga,但是那些資料和入門學習,對於新手來說基本tan90,語言難懂加上資料緊缺,基本很少有學生使用ti系列芯片。Ti飛控是一個個例,因爲背後有專業的工程師團隊在給你寫庫函數,拿錢做事,減輕了你的工作量,也方便了很多。

(3)STM32系列。32在學生圈中資料可謂是超級多,要啥有啥,基本沒有生態圈和資料缺乏這種問題。32主要分爲F1和F4系列。F1和F4我個人認爲在電賽中最明顯的區別就是F1不能或者說不適合驅動、處理攝像頭。他驅動攝像頭幀率低的可怕,並不能滿足控制系統需求。那些詢問F1能不能做板球的同學可以否定這個方案了。如果非要說能,那得用openmv或者樹莓派、nano等作爲圖像協處理器,數據出來給F1做pid控制,單獨F1是很難完成攝像頭處理任務的。相比之下,F4具有DCMI解碼,且主頻比F1高出1倍,經過測試可以穩定30FPS提供較低畫質的圖像處理,是滿足圖像處理的最低配置。其他功能二者沒有過大的差別。如果你強行詢問F1是否能夠做板球,我給你的回答是:你可以把F1扔了,用51就夠了。

(4)Arduino系列 arduino系列資料豐富程度可以與32相媲美,甚至開源的設計遠遠多於32。調試超級無腦,調用庫函數超級無腦,不用說大學生了,就是一個基本沒有基礎的高中生也能完成arduino的程序設計。(本人高二自學的arduino)。它最大的優點就是函數庫超級超級超級多,要mpu6050的數據,加個函數庫抄抄代碼就出來了,要編碼器的換個編碼器庫函數抄一抄又出來了,Rush題目速度出奇的快,缺點是不支持在線debug,不能直接查看內存裏面運行的數據,需要在串口打印flag和運行數據用於查找錯誤和測試,並且工程大了以後,例如300行以上編譯器看起來很難受,過於簡潔。更加致命的是無法添加中斷,添加了顯示屏等外設以後會導致pid運行週期變化。但是如果題目超級簡單,使用arduino是最佳選擇。

接下來是執行器系列。近年來主要使用的執行器有:步進電機、直流減速電機、空心杯電機、舵機、三相無刷電機。基本都是電機爲核心作爲執行器。驅動方式基本也就是PWM波了。需要注意的是需要購買相關電機驅動。

實物最後是機械部分。機械部分主要準備2-5mm各種螺絲螺母,3mm最常用。螺母最好買防滑防震帶膠圈的,誰也不想裝置運過去散架。以及各種長度、單通雙通螺柱,可以買一個20-50元左右的各種型號螺柱盒子。需要聯繫最近的建材市場五金店尋找木材、包括木板或者木條,還有鋁型材例如3030鋁型材等等,以及鋁型材配套的螺絲、倒角固定、支撐裝置。有條件的實驗室可以優先配備一臺3D打印機,其次可以配備一臺激光切割機。我使用的3D打印機行程是15cmx 15cm x15cm。我使用的激光切割機行程80cmx60cm,僅供參考。激光切割準備材料厚度爲亞克力3mm-5mm。比如板球裝置地板用了5mm,jetson nano外殼和攝像頭支架用了3mm。還需要準備適當型號的碳纖維管,適當型號的萬向節、法蘭盤、聯軸器。導電滑環這個倒立擺用了一次,可買可不買。如果賽題大致方向不發生變動,還是以操控某種機械達到閉環控制,以上清單應該夠用。歡迎補充。工具在此不做贅述。

軟件準備

軟件準備應分爲三方面。

(1)熟悉往年賽題以及常用傳感器,執行器,確保每一個關鍵電子元器件自己都有驅動、都能通過程序實現正常功能。比如攝像頭能正常讀取圖像、陀螺儀正確讀取角度、電機可以正常轉動、編碼器正確讀取角度等等,這些需要賽前準備好,賽時copy就用,這是提升速度的關鍵。關於傳感器和執行器的資料建議找賣家要,也可以自行尋找、設計編程。主控需要至少熟悉多路pwm輸出、細分度佔空比調整、按鍵中斷、顯示屏驅動、定時器中斷等功能。說白了就是你得有工程文件,這些工程文件可以滿足你手裏型號的各種外設使用。一定要確保能夠正常驅動,等比賽搞,或者比賽現看別人的“爛七八糟型號完全不對的驅動”自己改大概率沒戲。

(2)在(1)的基礎上熟悉pid算法,通過練習往年題,瞭解什麼是pid,什麼是位置式pid和增量式pid,pid如何通過單片機c語言實現,pid的輸入、輸出、限制幅度、pid控制的頻率、pid串級控制、pid參數調整。這裏還要說個細節,pid調整時完全可以通過Keil(以STM32爲例)編譯器,通過Jlink、STlink開啓Debug模式用軟件自帶的Watch Window來查看變量和計算結果,使用熟練以後,基本不用什麼上位機示波器之類的。既節省了串口上傳的算力又節省了時間,

(3)前面的全部做完以後,準備一份工程,無論你是什麼單片機,這份工程都需要實現以下幾點功能,這非常重要!:實現顯示屏驅動,能夠顯示自己想要的。實現按鍵切換數字(用於賽題切換)。實現按鍵控制單片機中變量0和1翻轉(一鍵啓動和緊急停止標誌位)。實現按鍵參數調整,無論是通過9字鍵盤輸入還是偷懶使用數碼手錶雙按鍵上下調整均可。(用於賽中測評調整參數)。說白了就是提前把賽題確定的部分準備好,什麼是確定的部分呢?按鍵切換題目、一鍵啓動停止、參數調整。到時候把pid輸入輸出、傳感器讀取和執行器部分往裏面一丟就行了,不用再花時間去搞這些確定的部分。

重要細節

細節之一:一定要練習往年題,風力擺,倒立擺,板球,至少一道題。前期的投入帶來的是解決問題的經驗,經驗在後期賽題較爲困難時刻可以帶來強大的優勢,因爲這種情況你見過,所以處理起來得心應手。如果你熟悉賽題考察的傳感器、執行器、有自己常用的主控,那麼很多工程可以copy過來直接用。如果三天比賽時期你還在糾結6050無法讀數字、電機舵機不會驅動、按鍵如何讀取,中斷掛了導致單片機卡死,那麼你將會浪費大部分寶貴的時間。同時也說明你沒有一個紮實的基礎。

細節之二:如果你前面的都照做了,往年題也設計實現了,那麼電賽最終考察你的,實際上是設計方案和發現、解決問題的能力。比賽三天內你最先會遇到方案設計問題。一套好的技術方案決定了你會遇到多少問題。舉個例子,板球用推杆電機做的人基本都是GG,用舵機的獲獎最後最多。經過技術方案設計以後你會遇到技術方案中隱藏的問題,比如板球系統中舵機力臂、安裝方式等等。這一系列需要你通過合理的推測加上控制變量法理性的去測試和解決問題,腦子要靈光,不要把注意力放在不重要的問題上。也不要眉毛鬍子一把抓一邊改機械一邊調整pid然後還換了傳感器,你都不知道是哪裏帶來的問題就直接亂改,肯定是問題越來越多。最後如果你順利解決了這些問題,等待評測,記得留後路,易壞物品和零件一定要備份,設計的時候最好模塊化、快拆化、防止測評出問題直接GG。

細節之三:硬件採購的話,我的意見是先做往年題,做完了往年題你基本就已經有了相關硬件和耗材。第一波硬件購買是隨着你做往年題的過程中完成的。第二波硬件購買需要等官方清單出了以後再去購買,一般來說官方會提前一週發佈需要的清單以供大家參考。到時候也會出現猜題目等等。

細節之四:組員的分工合作。我認爲我的團隊是在控制題目中較爲均衡的。隊伍三名成員,一名專門負責硬件電路設計和機械設計,擅長CAD、SW和AD,比賽時期11個按鍵的鍵盤就是這個老哥用洞洞板焊接製作的,機械圖紙也是他轉化出來的。另外兩名成員更偏向於軟件,一位負責單片機底層硬件和GUI,包括了各種外設驅動、按鍵切換、GUI顯示等等較爲偏向於驅動層的程序。我主要負責應用層,負責各個賽題的解決方案、pid控制、攝像頭數據處理、參數調整等等偏向於控制應用的東西。這是我們隊伍的組成,個人來說還是比較滿意的,希望大家能夠合理分工,共同努力。

細節之五:這個放在最後說,只要是人辦的事情,肯定有空子鑽。我之前一直在說樹莓派等用來做電賽基本屬於技術作弊,實際上也是因爲使用linux系統外帶opencv庫過於簡單了,板球這種簡直是易如反掌,使用單片機做板球的同學驅動攝像頭這一環節掛了一波人,噪點又掛了一撥人,尋找小球算法又是掛了一波,然後pid和機械沒時間做了,可惜啊,用opencv幾行代碼就完全能夠避開、解決這些問題。很多人會說了,‘’電賽是一個開放性的比賽,你做不出來是你自己菜,和我們用樹莓派沒關係。你行你也能用樹莓派,有本事你來用啊,別看着我們用在那裏吃檸檬。‘’這個我只能說,電賽的題目設計的略微過於困難,導致對於硬件有了苛刻的需求。但是由於主辦方的某種程度上不作爲、導致了硬件性能對賽題影響過大時,有人鑽了空子。就像15年的軸流風機和空心杯電機大戰,就像17年單片機和樹莓派的爭議,這感覺很像一場拳擊比賽,兩邊都想贏,一邊只找到了60公斤級的選手,另一邊請到了200斤的相撲大師,打都沒打一屁股就把對面壓倒了。歸根結底,主要是官方賽題門檻設計不合理、主控和硬件性能未能建立起一個合理的分級制度或者是考察方案。這點可以參考飛思卡爾,主控限制主頻或者硬件指定,增強比賽的合理性和公平性。但是如果官方今年還是未有動作,那我只能說,法不責衆,作弊的人多了就不叫作弊了。叫鑽空子。鑽空子的人多了,也不叫鑽空子了,叫正當合理。至於今年控制題讓用什麼不讓用什麼,請參考官方後續規則。

全國大學生電子設計大賽3000人交流羣:597962412

全國各地電子設計學習者和你一同走向國一!

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