“大一新生如何參加智能車比賽”帖子回覆

在論壇水了兩三年了,見到了不少大佬非常厲害的開源設計,也算是這個論壇( ZNCZZ )的忠實受益者之一。

這篇帖子是搬運我在知乎一個問題,“大一新生如何參加智能車比賽”下面的回答。因爲我也是雙非電氣專業的本科,做車的時候幾乎是什麼傳承資料都沒有,和實驗室的一幫大佬們一起打拼進了國賽,非常能夠理解新手在入門階段沒指導沒資料無從下手的那種苦惱,所以寫了這篇粗淺的硬件入門指南,希望能給初入智能車比賽的小白們有所幫助,也非常歡迎論壇大佬們一起交流,提出裏面的不足。

■ “大一新生如何參加智能車比賽”帖子回覆

棄賽讀研國二選手接着來填坑了。之前說了一些粗淺的入門知識,我自己做硬件稍微多一點,STM32也略懂一二,所以現在來粗淺的講一下硬件方面的入門和學習(打怪升級)的一些知識和途徑。此貼適合零基礎小白參考,也歡迎各路大神友善的指點和討論。

硬件方面首先要明確你的車要有哪些硬件模塊。舉個例子,比如我是做的電磁四輪,那肯定要有單片機做控制,還要能夠識別賽道信號,然後驅動電機和舵機工作。

寫程序肯定還是PID算法,那對PID的參數肯定要能夠進行調整,不能老是代碼裏修改再燒進去,這樣非常耗費時間。

這樣把需求列出來以後,大致的模塊分類就非常的清晰:MCU最小系統、電磁信號採集、電機驅動、一些必要的傳感器(比如IMU、編碼器)、人機交互(也就是調參需要的按鍵、顯示屏、蜂鳴器之類的外設)這幾個模塊就非常的清晰了。

然後再考慮一個問題,就是我板子上所有的元件都要供電才能工作,但是鎳鉻電池電壓是7.2-8.4V,不能直接給元件使用,這種情況該怎麼辦呢?就需要一些芯片把電壓降下來,降到5/3.3V來給板子上的器件使用,這就產生了電源模塊。

這樣大體分析一下,該做的模塊就浮出水面了,接下來就是往這個框架裏的每一個部分來填充細節了。填充細節這個事就牽扯到具體的電路設計,對於只有電路模電理論沒有實踐的新手來說,多看往屆的技術報告和技術檢查表是最快的設計途徑。大部分的技術報告都會給出一些原理圖設計,znczz論壇裏也有很多開源的工程和原理圖。

拿到這些原理圖之後需要再去查找裏面芯片的datasheet,明確技術細節。

以電源管理爲例,最常見的設計是用LDO(低壓差線性穩壓器),例如LM2940,TPS73xx,SPX系列的LDO。如果使用的是LM2940,就需要查看它的手冊,明確輸入電壓、輸出電壓、最大輸出電流、外接濾波電容等技術細節。

比如固定輸出5V,最大負載電流1A,輸出電容要用22uF的有極性電容且電容的ESR(等效串聯電阻)需要滿足一定範圍。直接抄別人的原理圖設計或許可以正常使用,但是會有一些設計隱患存在,不知道什麼時候就會爆發出來,這對硬件的穩定性非常的不利。

如果不打算用LDO,想用DCDC芯片做開關電源提高轉化效率,就更需要查看datasheet和原廠編寫的應用指南、評估板手冊、仿真實例等技術資料。

以TPS63070爲例,手冊裏明確給出了原理圖設計、元件選型以及PCB layout範例,參考他們設計即可。其他模塊的設計思想和以上所述的電源模塊類似,建議對電路工作原理有了深刻理解後再着手畫PCB,這樣對layout會有很大幫助,後期如果出現故障,排除也會比較方便。

設計完原理性的電路就需要畫圖了。主流的PCB設計軟件就是Altium Designer,PADS,Cadence,Kicad,立創EDA這些軟件,車賽一般是用Altium Designer(下面簡稱AD)。

首先要學會AD的使用,這一部分看書就可以,沒必要看視頻,市面上的一些教學視頻講的確實非常詳細,但是太過冗長,看一會就會看不下去,建議找本書跟着做一遍實際的案例,比如51最小系統,就可以入門了。答主大二的時候看的下面這本書,每天晚上去自習室抱着電腦邊看邊畫,兩個星期就可以基本入門PCB繪製了。

▲ Altium Designer 13|電路設計、製版與仿真從入門到精通

▲ Altium Designer 13|電路設計、製版與仿真從入門到精通

不限於這本書,市面上寫的較好的AD書都可以拿來學習畫PCB的第一步是把原理圖設計好,而原理圖設計的準備工作就是畫原理圖符號,也就是symbol。我畫symbol的習慣是按照芯片實際的封裝進行繪製,並且把特定功能的引腳用不同顏色進行標註,方便在PCB設計的時候進行引腳分配。

▲ 特定管腳使用不同顏色進行標註

▲ 特定管腳使用不同顏色進行標註

比如像這樣畫好symbol以後要給它添加合適的封裝,也就是footprint。封裝可以根據datasheet裏的尺寸手畫,也可以通過一些別人畫好的封裝庫直接調用。對於新手,可以選擇幾個元件自己畫一下封裝,掌握畫封裝的操作,畢竟不是所有元件別人都會給你畫好的,但是實際畫參加比賽的板子還是建議用一些成熟的封裝,以免畫出來以後芯片焊不上去(這就翻車了)。

封裝庫的獲取有幾種途徑,一是從網上下載,二是從立創EDA導出,三是從各種電子設計愛好者手裏獲得。如果你的焊接水平較好,建議使用貼片封裝的阻容(0805或者0603);如果覺得焊接技術不過硬,可以用直插封裝的電阻電容。無論是哪一種途徑,添加好封裝畫好板子之後儘量1:1的先用紙打印出來和實際的安裝位置、芯片尺寸進行對比,有問題再修改,確定沒有任何問題以後再送板廠打樣。具體的繪製PCB的步驟,無論是書裏還是各種網絡資源都講得很詳細,這裏不再贅述。

如果你畫的第一塊板子可以打出來了,就需要進行焊接和測試。焊接之前先測量一下電源的對地阻值,防止在PCB短路的情況下進行焊接。焊接的順序因人而異,我習慣於先把電源部分焊好,接上電池先用萬用表測試一下輸出電壓,沒有問題再焊接剩下的部分。而對於不同高度的元件,可以先焊接貼片元件和高度較低的元件,諸如電容、開關、電機接口之類的較高的直插/貼片元件可以放到最後焊接。

焊接後就要上電測試,這裏的測試我自己分爲兩種:純硬件測試和軟硬聯調。純硬件測試以電磁信號處理部分爲例,上電後用示波器測試關鍵點信號,比如電感諧振對輸出、運算放大器輸入、運算放大器輸出、後級處理電路輸出。軟硬聯調就是寫程序測試,比如PWM輸出、編碼器輸入捕獲、MPU6050數據獲取、GPIO輸入輸出等等。

如果經過測試,沒有什麼大問題(像什麼輸出電壓不對、單片機燒了、電機不轉、信號檢測不到、OLED不亮等等),恭喜你已經邁出了非常關鍵的一步,對於硬件大神來說就可以喝茶歇着了,但是對於Ctrl C V的小白來說還遠遠不夠。

畫完之後問一問自己:

  • 你有沒有真正的理解了畫出來的所有電路?電機驅動裏的H橋驅動原理是什麼?
  • 爲什麼要用柵極驅動芯片? 爲什麼柵極輸入要串個小電阻?怎麼自舉的?
  • 柵極驅動芯片爲什麼要用12V供電?
  • 爲什麼有人給mos管反並聯一個二極管?這個二極管是不是真的需要?
  • 又比如電磁信號處理部分,如果用的普通運放,爲什麼要加一個直流偏置電壓?
  • 後級信號處理爲什麼要這樣設計電路?
  • 電容和二極管怎麼工作的?有沒有更好的改進方案?
  • 再比如PCB設計裏面,地平面處理好了嗎?
  • 爲什麼要數字地模擬地分離?磁珠和0歐電阻有什麼區別?都可以在板子上這麼用嗎?

這些問題還只是冰山一角,實際設計的時候需要考慮方方面面的問題,徹底喫透電路背後的工作原理,這樣對後續可能出現的故障排除會大有裨益。設計的時候多給自己一些靈魂拷問,會進步的更快。

那麼有人會問了,我啥都不知道啊,這課本上也沒怎麼講啊,這該怎麼分析?主要有幾個渠道,第一就是問指導老師,但是指導老師有可能也不明白;第二個是從網上查找各種各樣的資料,包括但不限於芯片手冊、應用筆記、評估板手冊、設計論壇開源資料、PCB設計指南等等資料;第三個就是看書,看什麼書呢?看《智能車製作》這本書。事先聲明,我沒有收錢,更不可能恰飯,我自己都買了幾本來看,純粹是因爲這本書寫的非常的好,作者全部都是往屆參賽選手 且都非常牛逼,很多原理講的非常透徹。放張圖說明一下有多牛逼。

▲ 智能車製作

▲ 智能車製作

這麼牛逼的作者,還不抓緊買書來看?

接下來說一說故障排查。一千個人可能出現一千零一種故障,但是其中的大多數故障有很大的可能性是前人曾經出現過的,因此查找這些前人的經驗就非常重要。上面所提及的 智能車論壇 就是一個很好的地方供硬件設計者查找自己出現的故障。如果沒有人有過類似的經驗,那就要通過手中的儀器進行測試。

電壓出不來就用萬用表從輸入到輸出逐級檢測,電機不轉就用示波器按照以下順序檢測信號:

單片機PWM口->柵極驅動芯片輸入->柵極驅動芯片輸出->MOS的Vgs。

上面只是引出兩個小例子,事實上所有的故障都有原因可循,從設計失誤、板廠做工問題、不規範操作到虛焊,一定有一種原因可以解釋你的故障。答主也曾經碰到一個奇葩的故障,電機驅動的MOS下管冒煙了,鈕子開關燒糊了,80mil的電機線都燒斷了,後來用示波器排查了上面所說的所有信號,都沒有問題,檢查了PCB設計也沒有問題。折磨了快一個星期,最後沒有辦法隨機測了一下驅動芯片的GND,發現不對勁,沒接到GND網絡的銅皮上,再測了一下同一批的其他空板,也是如此。所以排查故障真的需要耐心和毅力,不能說這塊板出問題了我就再重焊一塊吧,重焊一定會好的,要有一股子勁:不把這個bug的原因找出來不算完。

以上基本包括了從構思到焊接測試的所有流程了,下面來聊一聊一些雜七雜八不知道怎麼歸類的東西。第一個是PCB的定型,事實上PCB一次定型是很難的事情,尤其是當你對這個組別或者是做板子需要的知識知之甚少的時候,這時候就需要螺旋式進步,先做出來一套可以穩定使用的方案來調車寫代碼,然後再根據整車機械結構和自己的能力水平對硬件進行迭代,推陳出新,讓機械結構、算法和硬件電路磨合到最極致的狀態。而機械結構這事就比較複雜,答主也只是幹過軟化劑塗輪胎、磨輪胎的簡單苦力活,對機械方面知之甚少,所有就不多做敘述。

第二個就算是硬件小白的自我學習修養了吧,做車很像古代學徒和師傅學藝,師傅不可能把全部本事都教給徒弟,徒弟往往都會偷學師傅的本領。套用到車賽上,就是要從各種不同的渠道全方位的獲取自己需要和想要的知識。答主以前特別喜歡參加分區賽還有國賽,一方面是又有地方能玩了(實際上四天累的跟狗一樣,根本不想出去玩)。

另外一個方面就是可以看到不同學校的作品,畢竟答主也是做不到“閉門造車,出門合轍”這種境界的。成績好的學校的車都有各自的特點,有的設計及其簡潔,有的方案拔尖,有的用料紮實,特別是強校的車,很多都像精美的工藝品。答主印象最深的是北科的各種冠軍車,親眼看到他們的風馳電掣非常震撼。再看他們的車,板子形狀和機械結構匹配度非常高,用的都是非常好的固態電容,外部接線整理的非常簡潔,單片機主控方案獨樹一幟,調參的板子設計非常巧妙。雖說智能車的重點在於算法的比拼,但是能夠把硬件設計做到非常精美而又性能強勁的一種水平,着實非常不容易,答主也在朝着這個方向努力和學習。

以上就是我想分享的一些經驗,希望對剛接觸智能車的硬件小白有所幫助。2020的比賽和往年有些不一樣,對參賽隊員的考驗比往年更大,但是做車不只是爲了最後的一紙證書,更是爲了體驗不一樣的經歷,收穫更多的知識,結識更多強大的車友,也希望所有的車友在今後的比賽中能夠儘自己最大的努力,不留任何遺憾!

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