「第二篇」全国一等奖,经验帖。
點擊上方“大魚機器人”,選擇“置頂/星標公眾號”
福利干貨,第一時間送達!
閱讀文本大概需要 6 分鐘。
? 0??
?前言本文作者:謝斌
曾經獲得2017年控制題【板球控制系統】全國一等獎。
他之前有寫過幾篇關于比賽的文章,大家可以點擊閱讀。
全國一等獎,他的學習之路。
從0開始,三個月,獲全國一等獎。
這次他繼續分享經驗。
正文
暑假接踵而至,還剩一個多月就是2019年全國大學生電子設計競賽了,不知道準備參賽的朋友們是否已經開始準備練習了。
這次趁著暑假開始,國賽臨近,寫一篇提升篇的文章。因為我之前做的是控制方向,所以這篇文章大部分內容都是以控制為主,如果是電源或者其他方向的,可以關注公眾號。后面會寫。
首先,我還是要再提醒大家一次,基礎非常非常非常重要。
建議把部分STM32的基礎例程學透,如果是入門不久的朋友可以參考一下我之前寫的基礎篇的文章。
為什么一直強調基礎?
在我看來,國賽就好像一門考試,是有時間限制的,就像剛過去的高考一樣,可能你平時覺得你學的還可以,但是在比賽的時候,因為壓力太大可能會出現很多未知情況。
比賽只看結果,即使你在平時可以做出來,比賽的時候萬一出現了什么情況,沒做出來,評委不會聽你的任何解釋,只會根據你現場做出的作品進行打分。
四天三夜的比賽時間,看似很長,但是在此期間,三個人需要根據題目商量方案,然后開始驗證方案,如果一個方案不行,馬上就得開始下一個方案的驗證。
一般來說,是不允許我們在找bug上面浪費時間的,所以,基礎就顯得尤為重要,盡量減少因為自己在程序配置上出錯的情況。
廢話不多講了,根據我自己之前的參賽情況,進行了一次總結。個人覺得,平時在練習的時候,要有意識的培養自己大局觀,層次觀。
? 1??
?大局觀何謂大局觀,在我看來就是隨便給你一個題目,你的腦海中立馬就要想到如何來實現題目中的功能,用什么器件來實現題目中的功能,自己腦海中要形成多個清晰的設計方案和設計流程。
對于寫軟件的同學來說,在寫程序之前自己心中要形成一個完整的代碼體系;對于做硬件的同學來說,在pcb設計之前自己心中要有一個大概的整體布局。
就拿17年的滾球系統來說:
我們拿到題目就要想到:要控制小球運動肯定是要有傳感器檢測小球在平板上面的位置,想好是用攝像頭還是用其他傳感器;
要控制平板運動以此來間接控制小球在平板上進行各種運動,是用舵機還是步進電機還是其他控制器材;
既然做的是一個板球控制系統,用PID控制算法還是其他算法來實現控制系統的穩定度,入口參數用的是哪一個,如何與控制器件聯系起來等等等等。
這個其實在很多公司的老員工都有這種大局思維,項目做的多的同學也會養成這種思維,只是可能他們自己都沒有意識到。
我自己也是在國賽完總結的時候才意識到的。
? 2??
?層次觀方案商量好后,自己要有一個清晰地設計流程。
對于寫軟件的同學來說,自己要很清楚自己應該先寫哪個程序,后寫哪個程序,可以在紙上簡單的畫一下整個設計的流程圖;
對于設計硬件的同學來說,也要很清楚的知道先設計哪一部分,后設計哪一部分,一般還要預留幾個端口,引出來以防萬一。
一般來說,即使有好幾個方案,設計流程一般都差不多,差異只在器材的選擇上面。也拿17年的題目為例:
第一步:就要檢測小球在平板上的坐標位置,寫攝像頭的圖像處理程序,要實現能無誤檢測到小球在平板上面的坐標位置,如果小球沒動,位置數據總有誤差,可以加一個濾波程序;
第二步:寫舵機或者步進電機的控制程序,要實現用舵機或者步進電機控制平板帶動小球在平板上任意運動,這里只需要能控制小球做上,下,左,右,左上,左下等等方向的簡單運動即可;
第三步:寫定時中斷程序,設計好控制間隔,整合前兩步寫的程序,把控制程序放定時器中斷里面。比如我控制的是50ms的中斷間隔,每50ms檢測一次小球位置與目標位置的坐標偏差,再控制小球進行相應的運動。要實現小球能夠到達任意給的一個目標點,允許有誤差。
第四步:寫PID算法程序,因為只用if來控制小球運動的話,一般都會發生超調和失調等等情況,小球會在到達目標位置后再往前運動一段距離,或者根本到不了不標位置。所以使用PID控制算法來完成對小球的精準控制。這里要求能控制小球精準到達平板上的任一目標點。
第五步:就可以按照題目來完成要求了,既然能實現小球的精準控制了,基本上已經可以完成題目基本部分的要求了。前四項要求基本上就是跟換小球的目標點來控制小球在平板上的各種運動。
第六步:是完成題目的發揮部分。一般國賽題目的發揮部分是在前四項的基礎上增加難度,比如要增加一個對時間的控制,必須要控制小球在某個區域內停留固定時間再控制小球到下一個目標點去。
第七步:時間充足的話可以利用屏幕和按鍵做一個實時菜單,用少量按鍵在屏幕上進行選擇,完成各個功能要求。
? 3??
?總結關于2017年控制題,具體的設計流程,網上有很多很多方案,所以具體的設計方案我不再闡述。我只給大家提一些方法和建議。除了上面講的,我覺得還需要養成幾個良好的習慣。我之前也是講過,拿軟件部分來講:
第一:每次完成一個功能,就要復制一次工程,在復制的工程上面添加其他功能。防止自己在添加功能修改代碼的時候出錯,到時候改哪里都不知道,程序又寫亂了,又忘記怎么恢復,那就真的是會很麻煩。
第二:要養成寫注釋的好習慣,自己定義的變量或者自己寫的一些功能語句一定要多寫注釋,有時候代碼量大了,寫程序寫的久了,自己寫的東西都會看不懂。特別是國賽那幾天,有時候你稍微休息一下,可能自己的程序都有些看不懂了。有注釋的話就不用那么費勁的去回憶了。
最后,再給大家整點雞湯吧。在準備比賽的過程中,注定會很累,很孤獨。但是強者的道路注定都是孤獨的。要努力,不放棄。
在你努力后,你會發現,等到比賽完的某一天,你可以笑著向別人講述那些曾經讓你哭的瞬間。
? 4???
?最后若覺得文章對你有幫助,隨手點“在看”、轉發分享,也是我繼續更新的動力。
長按識別圖中二維碼關注
推薦閱讀:
全國一等獎,他的學習之路。
從0開始,三個月,獲全國一等獎。
總結
以上是生活随笔為你收集整理的「第二篇」全国一等奖,经验帖。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这个发明了洗碗机的女人,她的人生也太精彩
- 下一篇: 饿鬼哪里多跑跑车