講義V0.2.1:從電源紋波到調(diào)試實(shí)踐的完整知識(shí)框架)
周五晚上十一點(diǎn)實(shí)驗(yàn)室里機(jī)械組的同學(xué)端著剛裝好的步兵車(chē)過(guò)來(lái)找我“學(xué)長(zhǎng)電控那邊說(shuō)裁判系統(tǒng)時(shí)不時(shí)掉線是不是我們布線有問(wèn)題”我讓他把萬(wàn)用表拿來(lái)先量了一下電池輸出端的電壓紋波果然發(fā)射機(jī)構(gòu)一啟動(dòng)紋波直接飆到快500mV。這種問(wèn)題在RoboMaster賽場(chǎng)上看過(guò)太多次了。也是從那時(shí)候起我決定把隊(duì)里的硬件知識(shí)沉淀成一份正式的文檔——《Robomaster硬件基礎(chǔ)講義V0.2.1》。這份講義我前后改了三輪從最初十幾頁(yè)的零散筆記到V0.2再到現(xiàn)在的V0.2.1。它不是某個(gè)培訓(xùn)班的大而全教程而是專門(mén)給剛進(jìn)實(shí)驗(yàn)室的硬件組新人、以及被電控和機(jī)械“夾擊”的接口型隊(duì)員看的。里面每一章都對(duì)應(yīng)著賽場(chǎng)上真實(shí)出現(xiàn)過(guò)的故障和需求講的是從原理圖到PCB、從電源到電機(jī)驅(qū)動(dòng)、從焊板到調(diào)試這一條完整鏈路。如果你正準(zhǔn)備帶隊(duì)或者剛接手隊(duì)內(nèi)硬件這份講義的框架和里面的思路可以直接拿來(lái)當(dāng)?shù)赘逵谩?. V0.2.1這份講義是給誰(shuí)看的又是怎么長(zhǎng)出來(lái)的先說(shuō)個(gè)最常見(jiàn)的誤區(qū)很多人覺(jué)得RoboMaster硬件崗就是“畫(huà)板子”能把STM32最小系統(tǒng)畫(huà)出來(lái)就完事了。做了一年多硬件負(fù)責(zé)人之后我越來(lái)越清楚比賽里的硬件工程師要同時(shí)面對(duì)功率限制、裁判系統(tǒng)、對(duì)抗強(qiáng)度、維修周期、隊(duì)員交接這些亂七八糟的問(wèn)題這跟網(wǎng)上那些“STM32入門(mén)教程”完全是兩碼事。這份講義最核心的定位是幫一個(gè)從沒(méi)接觸過(guò)嵌入式硬件的大一隊(duì)員在六到八周內(nèi)具備獨(dú)立維護(hù)和改板一輛步兵車(chē)硬件的能力。1.1 它和網(wǎng)上那些教程最大的區(qū)別網(wǎng)上的硬件教程大多以“芯片”為中心教你STM32怎么點(diǎn)燈、I2C怎么通信、PCB怎么布線。但在RoboMaster這個(gè)場(chǎng)景里一切要以“車(chē)”為中心。同一個(gè)MCU放在開(kāi)發(fā)板上怎么玩都行放在步兵車(chē)?yán)锞偷每紤]電機(jī)啟動(dòng)瞬間的電流沖擊會(huì)不會(huì)把ADC參考電壓拉偏陀螺儀放在哪個(gè)位置才能避開(kāi)磁場(chǎng)干擾CAN總線走線是不是繞了云臺(tái)一圈導(dǎo)致通信超時(shí)。這些內(nèi)容教程里不會(huì)寫(xiě)只有從車(chē)上拆下來(lái)的故障案例里才能提煉出來(lái)。所以講義的第一章不講芯片先講整車(chē)硬件架構(gòu)。我會(huì)讓新人先看一張完整的步兵車(chē)硬件框圖電源從XT60接口進(jìn)來(lái)到裁判系統(tǒng)、主控板、電調(diào)、云臺(tái)電機(jī)、發(fā)射機(jī)構(gòu)、燈板信號(hào)從主控出去到各個(gè)執(zhí)行器傳感器數(shù)據(jù)再一路回到主控。這張圖是整份講義的地圖后面所有章節(jié)都在給這張圖補(bǔ)細(xì)節(jié)。另一點(diǎn)不同的是V0.2.1版本里大量使用了故障案例。比如“上電后主控板反復(fù)重啟”這種經(jīng)典問(wèn)題我直接在電源章節(jié)里當(dāng)反面教材講。新人讀完之后腦子里的印象遠(yuǎn)比背一百個(gè)電容選型參數(shù)深刻。我覺(jué)得硬件教學(xué)最有效的路徑就是“先知道坑在哪再學(xué)怎么避坑”而不是把一堆元器件參數(shù)生硬地塞給新人。1.2 V0.2.1在V0.2基礎(chǔ)上改了什么有隊(duì)員問(wèn)我為什么這次叫V0.2.1而不是直接跳V0.3。我的習(xí)慣是小版本號(hào)改的是修正和補(bǔ)全大版本號(hào)改的是框架和思路。V0.2.1這個(gè)版本本質(zhì)上是V0.2的“排雷版”。改動(dòng)比較大的地方有三個(gè)。第一修正了V0.2里電容選型章節(jié)的計(jì)算錯(cuò)誤。原來(lái)我推薦用ESR估算紋波公式本身沒(méi)問(wèn)題但實(shí)際場(chǎng)景里負(fù)載是脈沖性的不是穩(wěn)態(tài)直接套公式算出來(lái)偏樂(lè)觀。V0.2.1里補(bǔ)了一組實(shí)測(cè)數(shù)據(jù)同一個(gè)降壓電路帶連續(xù)負(fù)載和帶發(fā)射機(jī)構(gòu)脈沖負(fù)載的紋波差別能到三倍這個(gè)不實(shí)測(cè)根本想不到。第二更新了連接器和線材選型表。這兩年隊(duì)里陸續(xù)換了更細(xì)的硅膠線也換了一批帶鎖扣的XH2.54端子。舊版本里沒(méi)提線徑和端子額定電流的關(guān)系導(dǎo)致有人把電源線拉到很細(xì)一過(guò)大電流就發(fā)熱。新版本加了一個(gè)簡(jiǎn)單的對(duì)照表多少A的負(fù)載至少配多少AWG的線什么位置必須用帶鎖扣的端子防止震動(dòng)脫落。第三新增了“硬件調(diào)試”章節(jié)。這是V0.2.1最有分量的一章后面我會(huì)專門(mén)展開(kāi)。里面全是裸板調(diào)試、故障排查、示波器使用的具體套路。V0.2發(fā)布之后我發(fā)現(xiàn)一個(gè)現(xiàn)象很多新人板子焊出來(lái)能亮燈但一接電機(jī)就出各種奇怪問(wèn)題而他們完全不知道從哪下手排查。所以V0.2.1里干脆把調(diào)試方法論寫(xiě)成了獨(dú)立章節(jié)。2. 講義的知識(shí)框架硬件基礎(chǔ)到底在搭什么地基V0.2.1的知識(shí)框架分四塊電源與功率、主控與最小系統(tǒng)、電機(jī)驅(qū)動(dòng)與反饋、傳感器與通信。這四塊不是我拍腦袋定的而是把一整輛步兵車(chē)拆開(kāi)之后按“能量流”和“信號(hào)流”兩條線梳理出來(lái)的。能量流從電池出發(fā)經(jīng)過(guò)電源變換到各個(gè)負(fù)載信號(hào)流從傳感器到主控再?gòu)闹骺氐綀?zhí)行器。兩條線交叉的地方恰恰是最容易出問(wèn)題的位置。2.1 電源與功率整個(gè)系統(tǒng)的血壓電源章節(jié)在所有硬件書(shū)里都是“月經(jīng)貼”但RoboMaster有自己的特殊性負(fù)載變化極其劇烈。云臺(tái)轉(zhuǎn)動(dòng)是幾瓦的小事發(fā)射機(jī)構(gòu)一個(gè)摩擦輪啟動(dòng)瞬間能拉走好幾安培電流超級(jí)電容充放電更是讓整個(gè)電源系統(tǒng)像在坐過(guò)山車(chē)。設(shè)計(jì)的時(shí)候你不能按照“典型負(fù)載電流”來(lái)算必須按照“最惡劣情況”來(lái)算。講義里給了一個(gè)電源樹(shù)設(shè)計(jì)模板。電池端進(jìn)來(lái)先過(guò)防反接和保險(xiǎn)絲再過(guò)電磁兼容濾波然后分三路一路直接給大功率負(fù)載電調(diào)、發(fā)射機(jī)構(gòu)一路通過(guò)DCDC降壓到12V給裁判系統(tǒng)和部分傳感器一路再降壓到5V和3.3V給主控和數(shù)字電路。這樣分級(jí)降壓的核心邏輯是不要讓大功率負(fù)載的波動(dòng)直接污染數(shù)字電路的電源。每一級(jí)降壓方案怎么選V0.2.1里用了一張對(duì)照表。表格對(duì)比了線性穩(wěn)壓器、普通降壓DCDC、低紋波DCDC三種方案的適用場(chǎng)景LDO適合小電流、對(duì)紋波敏感的模擬電路功耗大但簡(jiǎn)單可靠普通DCDC適合功率鏈路效率高但開(kāi)關(guān)噪聲要處理低紋波DCDC是給傳感器電源用的價(jià)格貴一截但值得。新人最容易犯的錯(cuò)就是拿著一塊LM2596走天下結(jié)果陀螺儀數(shù)據(jù)在溫度變化時(shí)漂得離譜。電源不是“能出電壓就行”紋波和動(dòng)態(tài)響應(yīng)決定了整個(gè)系統(tǒng)的血壓穩(wěn)不穩(wěn)。2.2 主控與最小系統(tǒng)讓代碼有地方跑主控章節(jié)的開(kāi)篇我寫(xiě)了一句很直白的話“比賽用的主控芯片選型就兩條原則外設(shè)夠用生態(tài)熟悉。”RoboMaster圈子里STM32是絕對(duì)主流F4系列又是主流中的主流。理由很現(xiàn)實(shí)隊(duì)友最熟例程最多CUBEMX一鍵生成遇到問(wèn)題隨便搜一下就有答案。你不一定需要最強(qiáng)的算力你需要的是團(tuán)隊(duì)的最低學(xué)習(xí)成本和最高的排錯(cuò)效率。最小系統(tǒng)章節(jié)是新人必須逐行讀懂的部分。STM32的最小系統(tǒng)包括晶振電路、復(fù)位電路、BOOT配置、SWD調(diào)試接口、電源去耦網(wǎng)絡(luò)。這六個(gè)部分每一項(xiàng)都有講究晶振負(fù)載電容算不對(duì)會(huì)導(dǎo)致時(shí)鐘頻率漂移復(fù)位引腳少放一個(gè)電容可能導(dǎo)致上電時(shí)序異常SWD接口不引出板載調(diào)試會(huì)讓人懷疑人生。V0.2.1里每個(gè)模塊都配了原理圖截圖和參數(shù)計(jì)算過(guò)程比如晶振負(fù)載電容的計(jì)算直接寫(xiě)出來(lái)是“C 2 × Cl - Cstray”并解釋了雜散電容為什么取5到10pF。這塊我特別想提醒新手不要把最小系統(tǒng)當(dāng)成“照抄參考設(shè)計(jì)就行”。參考設(shè)計(jì)給的參數(shù)在特定PCB布局下才成立你換了板層結(jié)構(gòu)、換了走線長(zhǎng)度晶振波形可能就是另一副樣子。講義里專門(mén)加了一節(jié)“最小系統(tǒng)上電后的五個(gè)必測(cè)點(diǎn)”3.3V電壓、復(fù)位引腳電平、晶振波形、BOOT0電平、SWD能否連上。這五個(gè)點(diǎn)量完最小系統(tǒng)基本就是健康的再出問(wèn)題就輪到查代碼了。2.3 電機(jī)驅(qū)動(dòng)與反饋機(jī)器人動(dòng)起來(lái)的關(guān)鍵閉環(huán)電機(jī)部分寫(xiě)起來(lái)最燒腦因?yàn)闋可娴綑C(jī)械、電控、硬件三方的接口邊界。步兵車(chē)的底盤(pán)電機(jī)M3508和云臺(tái)電機(jī)GM6020雖然都是無(wú)刷電機(jī)但控制方式完全不同M3508配C620電調(diào)走CAN總線GM6020是集成驅(qū)動(dòng)的一體化電機(jī)也是走CAN。CAN總線在硬件上看似簡(jiǎn)單兩根差分線一接就行但實(shí)際布線和終端電阻處理不對(duì)就會(huì)出現(xiàn)偶發(fā)丟包而且極難復(fù)現(xiàn)。講義里花了很大篇幅講終端電阻。很多新人以為CAN是兩根線直接并聯(lián)到每個(gè)節(jié)點(diǎn)實(shí)際上120歐終端電阻應(yīng)該放在總線物理兩端。隊(duì)里曾經(jīng)因?yàn)樯俜乓粋€(gè)終端電阻導(dǎo)致云臺(tái)在快速轉(zhuǎn)動(dòng)時(shí)偶爾抽搐一下查了整整一天才發(fā)現(xiàn)是總線反射問(wèn)題。我在V0.2.1里畫(huà)了三張拓?fù)鋱D正確接法、錯(cuò)誤接法、以及使用菊花鏈拓?fù)鋾r(shí)的注意事項(xiàng)讓新人一眼就能看懂。編碼器反饋這塊M3508電機(jī)本身自帶霍爾傳感器和編碼器通過(guò)C620電調(diào)把速度反饋給主控。硬件上要做的更多是“確保信號(hào)完整性和電氣隔離”。如果主控和電調(diào)之間的CAN收發(fā)器供電不干凈或者地電位不一致輕則速度環(huán)抖動(dòng)重則燒毀收發(fā)器。講義里推薦在CAN收發(fā)器電源處加共模電感和TVS管并在靠近主控端預(yù)留串聯(lián)電阻的位置調(diào)試時(shí)可以根據(jù)信號(hào)質(zhì)量調(diào)整。如果說(shuō)電源是系統(tǒng)的血壓那電機(jī)驅(qū)動(dòng)和反饋就是系統(tǒng)的手腳和神經(jīng)。硬件工程師不一定寫(xiě)控制算法但你必須保證電調(diào)收到的PWM/CAN指令和編碼器反饋的信號(hào)是完整干凈的否則電控調(diào)PID調(diào)到頭也救不回來(lái)。3. 每個(gè)知識(shí)點(diǎn)背后都是賽場(chǎng)上踩過(guò)的坑老實(shí)說(shuō)純理論的知識(shí)框架網(wǎng)上一抓一大把V0.2.1真正值錢(qián)的是里面收錄的故障案例。這些都是真金白銀的賽場(chǎng)和實(shí)驗(yàn)室時(shí)間換來(lái)的。我在寫(xiě)講義的時(shí)候定了一條規(guī)矩每個(gè)技術(shù)章節(jié)的末尾必須跟一個(gè)“典型故障與排查”沒(méi)有實(shí)際案例的內(nèi)容寧可先不寫(xiě)。硬件這東西沒(méi)踩過(guò)坑就寫(xiě)出來(lái)的教程基本都是紙上談兵。3.1 電源紋波和電流沖擊曾讓裁判系統(tǒng)死機(jī)先說(shuō)一個(gè)排查了兩天的疑難雜癥。那是在一次訓(xùn)練賽前步兵車(chē)只要一撥彈裁判系統(tǒng)的LED燈板就閃一下偶爾還會(huì)觸發(fā)“裁判系統(tǒng)重啟”的報(bào)錯(cuò)。一開(kāi)始大家以為是裁判系統(tǒng)自己的問(wèn)題換了一個(gè)還是這樣于是把矛頭指向主控的CAN通信。后來(lái)我用示波器掛在裁判系統(tǒng)電源入口才發(fā)現(xiàn)問(wèn)題根本不在通信而在電源。撥彈電機(jī)啟動(dòng)瞬間的堵轉(zhuǎn)電流非常大電源線上瞬間壓降能到1V以上而裁判系統(tǒng)的復(fù)位閾值恰好卡在這個(gè)邊緣。每次撥彈電源就跌到臨界點(diǎn)裁判系統(tǒng)重啟一次。這個(gè)問(wèn)題最坑的地方在于它不會(huì)每次都觸發(fā)因?yàn)槎罗D(zhuǎn)電流的大小跟彈丸卡位狀態(tài)有關(guān)所以間歇性出現(xiàn)特別難抓。解決辦法有三個(gè)層面講義里全部寫(xiě)了出來(lái)。最基礎(chǔ)的在撥彈電機(jī)電源入口加大容量電解電容利用電容的電荷儲(chǔ)備扛過(guò)啟動(dòng)瞬間的電流尖峰進(jìn)階的把撥彈電機(jī)供電和裁判系統(tǒng)供電從電源樹(shù)物理分開(kāi)中間加磁珠和LC濾波最徹底的給裁判系統(tǒng)的電源入口加一個(gè)寬壓輸入的DCDC把輸入范圍從“標(biāo)準(zhǔn)12V”拓寬到“9V到16V都能穩(wěn)定工作”。從那以后隊(duì)里所有新車(chē)設(shè)計(jì)時(shí)都保留了這三層措施。這個(gè)案例給了我很深的一個(gè)教訓(xùn)硬件設(shè)計(jì)時(shí)不能只關(guān)注“正常工作時(shí)的電壓”更要關(guān)注“負(fù)載突變瞬間的動(dòng)態(tài)響應(yīng)”。很多芯片標(biāo)稱工作電壓范圍很寬但那是穩(wěn)態(tài)指標(biāo)瞬態(tài)響應(yīng)跟不上一樣會(huì)死機(jī)。V0.2.1電源章節(jié)里我特意加了“動(dòng)態(tài)負(fù)載測(cè)試”這個(gè)小節(jié)教新人怎么用示波器抓取負(fù)載突變時(shí)的電壓跌落波形而不是只看空載時(shí)的輸出電壓。3.2 陀螺儀與傳感器裝法和I2C那些事云臺(tái)的姿態(tài)控制離不開(kāi)IMU我們用的是RoboMaster開(kāi)發(fā)板常見(jiàn)的BMI088六軸傳感器。硬件上要做的不僅僅是把芯片焊上去還要考慮安裝位置、方向、減震和走線。第一批板子就吃過(guò)虧IMU放在了離電機(jī)驅(qū)動(dòng)功率線特別近的位置云臺(tái)一高速旋轉(zhuǎn)陀螺儀數(shù)據(jù)就出現(xiàn)毛刺。原理其實(shí)不復(fù)雜功率線上流過(guò)大電流時(shí)會(huì)產(chǎn)生較強(qiáng)的磁場(chǎng)而MEMS陀螺儀對(duì)磁場(chǎng)變化和機(jī)械振動(dòng)都比較敏感。這個(gè)問(wèn)題的排查花了不少時(shí)間最后發(fā)現(xiàn)IMU的安裝位置正好在底盤(pán)到云臺(tái)的過(guò)線孔旁邊功率線從下面橫穿而過(guò)。解決辦法是調(diào)整板子布局把IMU盡量放到云臺(tái)電機(jī)軸線的中心位置同時(shí)遠(yuǎn)離功率走線在IMU下方增加軟性減震墊片過(guò)濾高頻機(jī)械振動(dòng)I2C信號(hào)線上加上拉電阻并用短線連接避免信號(hào)邊沿過(guò)緩導(dǎo)致通信錯(cuò)誤。這里多說(shuō)一句I2C上拉電阻。很多人以為裝上拉就完事實(shí)際上拉電阻太小會(huì)增加功耗、太大則信號(hào)邊沿變緩。BMI088在400kHz快速模式下V0.2.1推薦2.2k到4.7k之間的上拉電阻具體值還要結(jié)合總線電容和線長(zhǎng)來(lái)微調(diào)。如果云臺(tái)板上IMU的I2C通信偶爾報(bào)錯(cuò)不要急著改程序先用示波器看一下SCL和SDA的上升沿是不是太緩大概率是上拉電阻選大了或者走線太長(zhǎng)。傳感器章節(jié)里還有一個(gè)容易被忽略的點(diǎn)IMU的安裝方向必須和軟件里的坐標(biāo)系定義一致。硬件上把芯片轉(zhuǎn)了90度安裝軟件里沒(méi)改方向余弦矩陣姿態(tài)解算出來(lái)云臺(tái)就是歪的。這類問(wèn)題在賽場(chǎng)上經(jīng)常被當(dāng)成“玄學(xué)”其實(shí)是硬件和電控之間的接口文檔沒(méi)對(duì)齊。V0.2.1里專門(mén)給了一張表格標(biāo)準(zhǔn)列出“芯片絲印方向、板邊方向、軟件坐標(biāo)系、云臺(tái)朝向”四者的對(duì)應(yīng)關(guān)系要求硬件組在新板打樣前必須和電控組簽字確認(rèn)。3.3 調(diào)試接口與指示燈裸板救命的最后一根稻草V0.2.1新增的“硬件調(diào)試”章節(jié)里我掏心窩子地說(shuō)了一句話“一塊不能調(diào)試的板子跟一塊廢板沒(méi)有區(qū)別。”很多人畫(huà)板子的時(shí)候只想著功能完全不考慮調(diào)試便利性。結(jié)果就是板子一上電出問(wèn)題示波器探頭沒(méi)地方夾串口沒(méi)引出來(lái)LED指示燈一個(gè)沒(méi)有只能靠猜來(lái)排查。我給模板定了一個(gè)最小調(diào)試配置板載SWD調(diào)試接口必須引出至少預(yù)留一組串口TX/RX測(cè)試點(diǎn)電源指示燈用雙色LED分別指示主電源和數(shù)字電源關(guān)鍵信號(hào)線上預(yù)留測(cè)試點(diǎn)或0歐電阻位。這些“小東西”在量產(chǎn)時(shí)看似多余但在調(diào)板時(shí)每一個(gè)都能救你一命。以LED指示燈為例很多團(tuán)隊(duì)只用一顆電源燈。我建議至少設(shè)計(jì)三顆一顆指示電池是否接入一顆指示主控3.3V是否正常一顆接在GPIO上由固件控制可以用來(lái)顯示程序運(yùn)行狀態(tài)。當(dāng)板子出現(xiàn)“上電沒(méi)反應(yīng)”的時(shí)候這三顆燈能瞬間幫你縮小范圍電池?zé)袅琳f(shuō)明輸入端正常3.3V燈不亮說(shuō)明電源鏈路有問(wèn)題GPIO燈在閃說(shuō)明主控在跑但外設(shè)沒(méi)工作。這種分層次的指示邏輯比抱著萬(wàn)用表一個(gè)一個(gè)量快得多。串口測(cè)試點(diǎn)也值得多說(shuō)一句。很多主控板設(shè)計(jì)時(shí)只留了一個(gè)USB轉(zhuǎn)串口芯片但實(shí)際上調(diào)試時(shí)最需要的是直接訪問(wèn)MCU的原始串口引腳。V0.2.1要求設(shè)計(jì)時(shí)在串口的TX/RX引腳旁邊預(yù)留兩個(gè)過(guò)孔或排針間距2.54mm方便隨時(shí)焊線接USB轉(zhuǎn)TTL模塊。這樣做的好處是即使板載USB轉(zhuǎn)串口芯片壞了你依然可以通過(guò)外部模塊跟主控通信不至于被一顆芯片卡死整個(gè)調(diào)試進(jìn)度。4. 拿到講義后的實(shí)操路線怎么讓新人最快上手講義寫(xiě)再好新人看不進(jìn)去也是白搭。V0.2.1在最后一章給了一條完整的實(shí)操路線把“讀講義”和“動(dòng)手做”綁在一起每個(gè)階段都安排了具體的產(chǎn)出物。我?guī)Я巳龑藐?duì)員這套路線迭代下來(lái)效果還可以至少?zèng)]有再出現(xiàn)“看了三個(gè)月教程還不會(huì)畫(huà)板子”的隊(duì)員。4.1 先焊一塊最小系統(tǒng)板再談其他我讓新隊(duì)員做的第一塊板子不是整車(chē)的主控而是一塊最小系統(tǒng)板。挑戰(zhàn)規(guī)則很簡(jiǎn)單用STM32F405芯片自己畫(huà)原理圖和PCB打樣回來(lái)后焊好配合ST-Link把板載LED點(diǎn)亮。這個(gè)任務(wù)看著簡(jiǎn)單實(shí)際能檢驗(yàn)全部的硬件基本功原理圖庫(kù)畫(huà)得對(duì)不對(duì)、封裝有沒(méi)有問(wèn)題、焊接有沒(méi)有虛焊、最小系統(tǒng)能不能跑起來(lái)、GPIO配置對(duì)不對(duì)。很多新人一上來(lái)就想畫(huà)整車(chē)主控板覺(jué)得這樣才“有成就感”。結(jié)果要么是封裝弄錯(cuò)要么是電源設(shè)計(jì)不合理第一次打樣回來(lái)基本全是廢板。先做最小系統(tǒng)板成本低、變量少、問(wèn)題定位容易等這個(gè)流程完全跑通了再往上面加CAN收發(fā)器、電機(jī)驅(qū)動(dòng)、傳感器接口就是一步步搭積木的事。V0.2.1里給了最小系統(tǒng)板原理圖的完整清單F405芯片、8MHz晶振加兩個(gè)負(fù)載電容、復(fù)位按鍵加RC復(fù)位電路、BOOT0下拉電阻、SWD四針調(diào)試接口、3.3V LDO電源、AMS1117或RT9013都行、去耦電容一組。這些東西看似簡(jiǎn)單但每一項(xiàng)都有具體的設(shè)計(jì)理由。比如去耦電容為什么每個(gè)電源引腳旁邊都要放一個(gè)100nF因?yàn)樾酒袚Q內(nèi)部邏輯狀態(tài)時(shí)會(huì)產(chǎn)生高頻電流需求如果電流要從遠(yuǎn)處的電源引腳流過(guò)來(lái)走線上的寄生電感會(huì)導(dǎo)致電壓跌落有了就近的100nF電容就能在納秒級(jí)時(shí)間內(nèi)提供瞬態(tài)電流。焊接環(huán)節(jié)同樣有講究。新隊(duì)員第一次焊LQFP封裝的芯片我建議用拖焊法而不是一個(gè)一個(gè)引腳點(diǎn)焊。操作要點(diǎn)是先對(duì)準(zhǔn)芯片引腳和焊盤(pán)固定對(duì)角兩個(gè)引腳然后順著引腳一側(cè)均勻涂上松香焊錫用烙鐵頭拖著走讓焊錫自然流動(dòng)到每個(gè)引腳最后用助焊劑清洗液把多余焊錫和殘留洗干凈。這個(gè)方法練上兩次基本就能應(yīng)對(duì)比賽板卡上絕大多數(shù)貼片芯片了。4.2 板卡調(diào)通測(cè)試一份值得收藏的檢查清單從“把板子焊好”到“板子能正常工作”這中間還隔著一段調(diào)試的路。V0.2.1的調(diào)試章節(jié)里附了一份檢查清單我把它稱為“上電七步”。每個(gè)新板子第一次上電都必須嚴(yán)格按照這個(gè)順序來(lái)誰(shuí)都不能跳步。第一步目檢。用放大鏡仔細(xì)檢查焊點(diǎn)是否有橋連、虛焊IC方向是否裝反電解電容極性是否正確。這一步能擋住大約80%的低級(jí)錯(cuò)誤。第二步用萬(wàn)用表二極管檔測(cè)電源對(duì)地阻抗。正常的數(shù)字電路電源對(duì)地阻抗應(yīng)該在幾百歐以上如果量出來(lái)是幾歐甚至接近短路絕對(duì)不能上電回去繼續(xù)檢查。第三步空載上電。先用可調(diào)電源限制電流設(shè)定在預(yù)期電流的1.5倍緩慢上調(diào)電壓。這一步最重要的意義是防止“一上電就冒煙”。第四步量各級(jí)電源電壓。用萬(wàn)用表確認(rèn)3.3V、5V、12V每一路都在正常范圍內(nèi)。第五步量關(guān)鍵信號(hào)波形。用示波器看晶振波形是否正常起振幅度是否滿足芯片輸入要求。第六步嘗試連接調(diào)試器。如果SWD能識(shí)別到芯片說(shuō)明最小系統(tǒng)基本正常。第七步燒錄LED閃爍測(cè)試程序驗(yàn)證GPIO和基本外設(shè)。每一次調(diào)試都要把“現(xiàn)象”和“結(jié)論”記錄下來(lái)哪怕最后問(wèn)題解決了也要寫(xiě)。V0.2.1里留了空白的調(diào)試記錄表模板字段包括時(shí)間、板卡版本、故障現(xiàn)象、排查過(guò)程、根本原因、解決方案、花費(fèi)時(shí)長(zhǎng)。別小看這個(gè)記錄習(xí)慣它能讓團(tuán)隊(duì)避免在同一個(gè)坑里反復(fù)踩。我見(jiàn)過(guò)最離譜的情況是同一塊板卡設(shè)計(jì)問(wèn)題導(dǎo)致MOS管燒毀三個(gè)隊(duì)員分別在不同時(shí)間遇到各自排查花了半天卻因?yàn)闆](méi)人記錄讓第四個(gè)人繼續(xù)踩坑。另外再分享一個(gè)調(diào)試時(shí)的判斷邏輯優(yōu)先懷疑硬件而不是軟件。很多電控同學(xué)一遇到問(wèn)題就翻代碼實(shí)際上比賽場(chǎng)景里大量“軟件問(wèn)題”的根源都在硬件。CAN無(wú)通信先量收發(fā)器供電和波形編碼器讀數(shù)跳變先查接線和屏蔽傳感器數(shù)據(jù)異常先看I2C上拉和信號(hào)完整性。V0.2.1在調(diào)試章節(jié)開(kāi)篇就寫(xiě)了一行大字“用示波器看過(guò)波形之前不要急著改代碼。”這行字被很多隊(duì)員截圖當(dāng)壁紙。5. V0.2.1之后我還在持續(xù)修改的東西寫(xiě)V0.2.1的時(shí)候我就在想這份講義大概永遠(yuǎn)不會(huì)有“完結(jié)”的那一天。比賽的規(guī)則在變器件在變隊(duì)員也在變講義必須跟著變。目前我手頭已經(jīng)列了一堆待辦計(jì)劃在V0.3里加進(jìn)去。第一個(gè)要補(bǔ)的是超級(jí)電容模塊。這兩年超級(jí)電容在RoboMaster里越來(lái)越普及它本質(zhì)上是一個(gè)功率補(bǔ)償系統(tǒng)在底盤(pán)急加速時(shí)提供額外功率同時(shí)回充時(shí)又要把功率還給電容。這對(duì)硬件設(shè)計(jì)提出了全新要求充放電MOS管控制、預(yù)充電電路、電流采樣、與裁判系統(tǒng)功率計(jì)的數(shù)據(jù)聯(lián)動(dòng)每一個(gè)都是能單獨(dú)寫(xiě)一章的知識(shí)點(diǎn)。V0.2.1只在電源章節(jié)里提了一個(gè)引子內(nèi)容遠(yuǎn)遠(yuǎn)不夠。第二個(gè)想補(bǔ)的是無(wú)線通信和視覺(jué)硬件的接口標(biāo)準(zhǔn)。現(xiàn)在的比賽越來(lái)越依賴視覺(jué)無(wú)論是自瞄還是能量機(jī)關(guān)都涉及攝像頭、圖像處理板、主控板之間的高速數(shù)據(jù)傳輸。硬件上要處理的不再只是CAN和串口還有MIPI、USB3.0、甚至以太網(wǎng)。不同處理板之間的電平匹配、地線處理、帶寬預(yù)留這些都需要沉淀成標(biāo)準(zhǔn)規(guī)范不然每年都在重復(fù)踩坑。第三個(gè)想建立的是“硬件評(píng)審清單”。我打算把V0.2.1里的內(nèi)容濃縮成一頁(yè)自查表畫(huà)板前評(píng)審原理圖打樣前評(píng)審布局焊接后按“上電七步”調(diào)試比賽前做整車(chē)的電源和通信體檢。這份清單如果穩(wěn)定運(yùn)行起來(lái)硬件組的交接成本會(huì)大幅下降新人也能更快獨(dú)當(dāng)一面。寫(xiě)V0.2.1的過(guò)程讓我重新梳理了一遍自己踩過(guò)的所有坑也讓我意識(shí)到真正有價(jià)值的不是某一塊板子的設(shè)計(jì)細(xì)節(jié)而是把“為什么這樣設(shè)計(jì)”和“錯(cuò)了會(huì)怎樣”講清楚的能力。如果你也在帶團(tuán)隊(duì)的硬件方向我建議你也把隊(duì)里的知識(shí)點(diǎn)和案例整理成自己的版本。不用一開(kāi)始就追求完美先寫(xiě)一個(gè)V0.1在實(shí)戰(zhàn)中不斷修訂它自然會(huì)慢慢長(zhǎng)成你們團(tuán)隊(duì)最靠譜的技術(shù)資產(chǎn)。