講義V0.2.1:從電源設(shè)計到電機驅(qū)動的完整知識框架)
1. 硬件組的第一份“正經(jīng)教材”應(yīng)該長什么樣帶了三屆RoboMaster戰(zhàn)隊之后我最深的體會是新人培養(yǎng)最大的瓶頸從來不是天賦而是一份靠譜的硬件基礎(chǔ)講義。每年招新季都會有十幾個大一大二的同學(xué)興沖沖地跑進實驗室開口第一句話就是“學(xué)長我想學(xué)硬件”但真到了要上手的時候很多人連萬用表蜂鳴檔是用來干嘛的都不清楚。市面上關(guān)于STM32、關(guān)于PCB設(shè)計的教程很多但那些資料要么偏向純理論學(xué)習(xí)要么是通用電子設(shè)計的內(nèi)容跟RoboMaster的實際場景貼合度不高。機器人賽場上真正需要的硬件知識其實是有一套自己的邏輯的——電源怎么分配、電機驅(qū)動怎么選型、傳感器信號怎么處理、CAN總線怎么布這些內(nèi)容散落在各種數(shù)據(jù)手冊和論壇帖子里新人靠自己摸索效率極低。所以我一直覺得一個戰(zhàn)隊最值得沉淀的資產(chǎn)除了車和代碼就是一本屬于自己的硬件基礎(chǔ)講義。今天想跟大家分享的就是我們隊伍內(nèi)部迭代到V0.2.1的《Robomaster硬件基礎(chǔ)講義》聊聊這份講義的內(nèi)容框架、核心知識點的設(shè)計邏輯以及我在整理和授課過程中踩過的坑。這份講義面向的讀者很明確剛進入戰(zhàn)隊、有一定C語言基礎(chǔ)但對硬件電路還比較陌生的大一大二同學(xué)以及所有想系統(tǒng)梳理機器人硬件知識體系的嵌入式愛好者。2. 講義內(nèi)容設(shè)計與版本迭代邏輯2.1 為什么硬件組需要一份“自己的”講義很多人會問網(wǎng)上現(xiàn)成的資料那么多為什么非要自己寫一份我的回答是因為通用資料解決不了比賽場景下的具體問題。舉個例子網(wǎng)上講BUCK降壓電路的教程很多但沒有人會告訴你當(dāng)你的底盤電機堵轉(zhuǎn)時24V母線上的瞬態(tài)電壓跌落能到多少伏、該怎么計算輸入電容的容量也沒有人告訴你在賽場上因為一個電源指示燈放錯位置導(dǎo)致電調(diào)上電時序錯亂整臺車直接趴窩。這些細節(jié)只有打過比賽的人才知道而這些恰恰是硬件新人最需要的東西。我們這份講義的核心定位不是替代數(shù)據(jù)手冊而是做“手冊與實戰(zhàn)之間的橋梁”。每個章節(jié)都遵循同一個邏輯鏈這個電路解決什么問題 → 原理是什么 → 在RoboMaster的哪個模塊里用到了 → 實際設(shè)計時要注意什么。這樣新人學(xué)完之后不是記住了一堆孤立的知識點而是能夠在腦子里形成一張“機器人硬件地圖”。2.2 V0.2.1版本改了什么講義的版本號從V0.1一路走到V0.2.1并不是我一個人的功勞而是好幾屆隊員用實戰(zhàn)經(jīng)驗喂出來的。V0.1版其實就是一個Word文檔里面塞滿了各種截圖和鏈接內(nèi)容非常零散新人看完之后依然不知道從哪下手。V0.2版做了第一次大重構(gòu)把內(nèi)容分成了“電源系統(tǒng)、主控最小系統(tǒng)、電機驅(qū)動、傳感器接口、通信總線”五大模塊每個模塊配了實物圖、原理圖局部截圖和調(diào)試注意事項。到了V0.2.1又重點補充了兩塊內(nèi)容一是增加了大量“故障現(xiàn)象→排查思路”的案例比如CAN通信偶發(fā)斷連、ADC采樣值漂移、電機驅(qū)動芯片過熱等二是把調(diào)試工具的使用方法單獨拎出來成章因為很多新人不是不會設(shè)計電路而是不會用示波器去驗證電路。這個版本迭代過程給我最大的啟發(fā)是講義不能是一勞永逸的它必須跟著實戰(zhàn)經(jīng)驗走。每賽季結(jié)束后我都會拉著硬件組的隊員做一次“復(fù)盤”把本賽季踩過的坑一件件寫進講義里這比任何理論說教都管用。2.3 內(nèi)容主線從整機到模塊再到調(diào)試V0.2.1的內(nèi)容編排遵循的是“先搭框架、再填細節(jié)”的思路。第一卷講整機硬件架構(gòu)讓新人知道一臺步兵機器人從上到下有哪些硬件模塊、它們之間怎么連接第二卷開始逐模塊深入每個模塊先講原理再給參考設(shè)計第三卷是調(diào)試方法論教新人怎么用儀器驗證一個電路到底工作正常不正常。這條主線的好處在于新人無論從哪一章開始讀都能清楚地知道自己學(xué)的這部分內(nèi)容在整個機器人系統(tǒng)里處于什么位置。比如講電機驅(qū)動的時候如果新人不知道電機驅(qū)動的上游是電源管理板、下游是主控板他就很難理解為什么驅(qū)動電路的地線布線和電源板的地線規(guī)劃有那么大關(guān)系。3. 核心硬件模塊拆分與原理精講3.1 電源系統(tǒng)機器人的“心臟”怎么設(shè)計電源系統(tǒng)在RoboMaster硬件里地位怎么強調(diào)都不過分。一臺標(biāo)準(zhǔn)步兵機器人的功耗峰值可以到幾百瓦而電池電壓會隨著放電從滿電的25.2V一路跌到保護值附近同時底盤電機頻繁啟停、云臺電機快速反轉(zhuǎn)都會讓母線電壓劇烈波動。如果電源設(shè)計不到位輕則單片機復(fù)位重則直接燒板子。講義的電源章節(jié)第一件事是教新人畫“電源樹”。所謂電源樹就是從電池接口開始把一路電壓怎么分配到各個子模塊畫成一張樹狀圖。比如24V母線直接給電機驅(qū)動板和部分電調(diào)供電再通過一個BUCK電路降到12V給散熱風(fēng)扇和部分傳感器供電12V再通過一個BUCK降到5V給主控板和接收機供電5V再通過LDO降到3.3V給MCU和邏輯電路供電。每一步降壓是怎么實現(xiàn)的、效率大概多少、紋波能不能接受都需要新人自己算一遍。這里我要特別強調(diào)一下V0.2.1里新增的BUCK/BOOST計算案例。我們隊伍自研過一塊雙向BUCK-BOOST電源板用來在24V和48V之間做電壓變換。講義里不是直接給公式而是帶著新人一步一步算輸入電壓范圍、輸出電流、開關(guān)頻率、電感紋波電流系數(shù)最終確定電感感值和輸入輸出電容容值。計算過程本身不復(fù)雜但對新人來說第一次真正理解“為什么數(shù)據(jù)手冊上推薦的是22uH而不是我隨便選的10uH”這個認知突破比記住任何公式都重要。電源設(shè)計的另一個重點是軟啟動。BUCK電路剛上電時輸出電容相當(dāng)于短路瞬間沖擊電流可以輕松燒掉保險絲或者觸發(fā)電源保護。講義里推薦的做法是先讓單片機通過一個MOS管控制使能引腳等電池電壓穩(wěn)定后再開啟主電源通路或者使用帶軟啟動功能的電源芯片通過調(diào)整SS引腳的外部電容來控制啟動時間。3.2 主控最小系統(tǒng)從STM32到GD32的選型思考主控最小系統(tǒng)是硬件新人的“第一個完整作品”也是講義里篇幅最長的一章。V0.2.1里用了大量篇幅講MCU選型因為很多新人有一個誤區(qū)以為主控越貴越好、性能越強越好結(jié)果畫出來的板子一大片很多管腳根本用不到還白白增加了設(shè)計難度。從比賽實際需求出發(fā)步兵機器人的主控需要處理的事情其實很明確讀取遙控器信號、控制底盤電機、控制云臺電機、讀取IMU和編碼器數(shù)據(jù)、和視覺板通信。這些任務(wù)對主頻要求并不極端但對定時器、ADC、CAN外設(shè)的數(shù)量有要求。目前主流方案依然是STM32F4系列和GD32F4系列居多。我們在講義的選型對比表里把常用型號的Flash、RAM、定時器數(shù)量、ADC通道數(shù)、CAN數(shù)量、價格、采購難度列成了一張大表見下表讓新人根據(jù)自己的功能需求去反推選型而不是反過來先選芯片再勉強湊功能。型號主頻FlashRAM高級定時器ADC通道CAN適用場景STM32F407VET6168MHz512KB192KB2個16路2路主控主力性能均衡STM32F103C8T672MHz64KB20KB1個10路1路低成本副板、傳感器板GD32F450VET6200MHz512KB256KB2個24路2路國產(chǎn)替代主頻更高GD32E230C8T672MHz64KB16KB1個11路1路小型執(zhí)行機構(gòu)控制板主控最小系統(tǒng)除了MCU本身還有幾個“最小配套”供電電路、復(fù)位電路、時鐘電路、調(diào)試接口和啟動模式配置。供電電路要注意數(shù)字電源和模擬電源的分離即使MCU內(nèi)部有LDOADC的參考電壓輸入也盡量走獨立的濾波網(wǎng)絡(luò)。時鐘電路看起來簡單但晶振的負載電容選得不合適會導(dǎo)致系統(tǒng)時鐘跑偏串口波特率直接亂掉這類問題在調(diào)試中特別容易讓人抓狂。調(diào)試接口的設(shè)計也值得一提。很多新人畫板子的時候SWD接口只管連了SWDIO和SWCLK兩根線結(jié)果一旦固件里把引腳復(fù)用改了或者程序跑飛禁用了調(diào)試口就只能干瞪眼。講義里明確要求SWD接口必須同時引出NRST復(fù)位腳必要時還要引出串口一作為備用日志輸出口。這個習(xí)慣在后期聯(lián)調(diào)時能節(jié)省大量時間。3.3 電機驅(qū)動電路大電流背后的“工程藝術(shù)”電機驅(qū)動是RoboMaster硬件里電流最大、發(fā)熱最嚴(yán)重、也最容易出問題的部分。無論是底盤的有刷電機/直流無刷電機還是云臺的直流無刷電機驅(qū)動電路的核心都是功率MOSFET構(gòu)成的H橋或三相橋以及對應(yīng)的柵極驅(qū)動芯片。講義的電機驅(qū)動章節(jié)我從H橋和半橋的拓撲講起然后重點講三個容易被新人忽略的細節(jié)。第一個是柵極驅(qū)動電阻的選擇。MOSFET的柵極不是理想電容開關(guān)瞬間的電流變化率受柵極電阻控制。電阻太大會導(dǎo)致開關(guān)速度過慢MOS管長時間工作在放大區(qū)發(fā)熱劇增電阻太小會導(dǎo)致開關(guān)瞬間的電壓尖峰過大甚至產(chǎn)生振鈴干擾附近的敏感電路。講義的推薦做法是在柵極串聯(lián)一個10Ω到22Ω的電阻具體阻值用示波器觀察開關(guān)波形來確定以“沒有明顯振鈴又能快速開通”為準(zhǔn)。第二個是續(xù)流回路的設(shè)計。電機是感性負載MOS管關(guān)斷瞬間會產(chǎn)生反向電動勢必須通過續(xù)流二極管或者MOS管體二極管進行泄放。這個環(huán)節(jié)的問題是如果續(xù)流通路過長寄生電感會阻礙電流換向?qū)е码妷杭夥灏袽OS管擊穿。所以畫板時續(xù)流回路必須短而粗這點講義里反復(fù)強調(diào)還有幾張因為續(xù)流不好燒管的實物照片作為反面教材。第三個是電流采樣。電流采樣是電機控制閉環(huán)的基礎(chǔ)常見方案有低邊采樣電阻加運算放大器放大、以及專用電流傳感器芯片。低邊采樣電路簡單便宜但采樣電阻的精度和溫漂直接影響電流環(huán)精度而且采樣點要盡量靠近電機驅(qū)動橋避免地線壓降引入誤差。講義里給了一個工作溫度范圍下的采樣電阻選型建議包括電阻的額定功率至少要留有2倍余量避免連續(xù)大電流工作下溫漂導(dǎo)致采樣值持續(xù)偏移。3.4 傳感器接口與信號調(diào)理從“接上”到“穩(wěn)定”傳感器章節(jié)覆蓋了編碼器、IMU、測距模塊等常見模塊核心內(nèi)容其實就是兩個字匹配。電平匹配、時序匹配、阻抗匹配任何一個不匹配傳感器就工作不穩(wěn)定。電平匹配是最常見的問題。很多傳感器模塊是5V供電、輸出5V信號而主控是3.3V的邏輯電平直接硬接輕則信號識別不了重則把MCU引腳燒掉。講義里的處理方案很明確能用雙向電平轉(zhuǎn)換芯片就用電平轉(zhuǎn)換芯片例如TXS0108EPWR這類自動方向識別的芯片信號速率不高的情況下也可以用電阻分壓加施密特觸發(fā)器整形的方式處理。ADC信號調(diào)理是V0.2.1新增的重點內(nèi)容。我們隊伍有一塊自研的超級電容能量管理板需要對電壓和電流進行實時采集發(fā)現(xiàn)ADC采樣值總是不穩(wěn)定。查到最后問題出在采樣信號線上疊加了高頻噪聲。解決方案是在ADC輸入端加了一級RC低通濾波截止頻率設(shè)定在幾十kHz左右如果噪聲還要更徹底地濾除可以使用MFB結(jié)構(gòu)的二階有源濾波器。不過這里要提醒大家ADC硬件濾波和軟件濾波要搭配著來硬件濾波器負責(zé)扛住高頻干擾軟件濾波負責(zé)平滑剩余的低頻隨機噪聲兩層都用上數(shù)據(jù)才會穩(wěn)。傳感器接口還有一個容易忽視的點就是傳感器的電源去耦。很多模塊對電源紋波很敏感IMU尤其是這樣電源上一點毛刺都可能讓陀螺儀零漂變大。所以IMU這類高精度傳感器的供電最好用單獨的LDO供電并且在靠近芯片電源腳的位置放一個1uF陶瓷電容加一個0.1uF小電容并聯(lián)去耦。3.5 通信總線硬件CAN、UART、SPI怎么選、怎么接RoboMaster戰(zhàn)車上的通信總線主要有三種CAN、UART、SPI。講義的通信章節(jié)重點不是講協(xié)議格式而是從硬件設(shè)計的角度幫新人建立“選型直覺”。CAN總線是機器人內(nèi)部通信的骨干特點是差分傳輸、抗干擾能力強、支持多節(jié)點組網(wǎng)底盤電機、云臺電機、裁判系統(tǒng)基本都掛在CAN總線上。硬件上要特別注意三個點一是終端電阻CAN總線兩端各需要120Ω終端電阻順序不能亂二是共模電感進入板卡的CAN差分線習(xí)慣上加一個共模電感來抑制共模干擾三是隔離方案CAN收發(fā)器選用帶隔離的型號例如ISO1050或者外加數(shù)字隔離器能有效阻斷地環(huán)路和電機驅(qū)動帶來的干擾。UART在機器人上主要用于和接收機、視覺板、雷達等點對點設(shè)備通信。硬件上看似簡單但有一個細節(jié)經(jīng)常被忽略——串口空閑引腳的電平狀態(tài)。很多傳感器模塊的串口Tx端在空閑時是弱上拉如果主控那邊配置成了強下拉就會出現(xiàn)靜態(tài)電流偏大甚至信號錯亂的情況。講義里建議所有串口引腳默認配置為上拉輸入并且在板級設(shè)計時預(yù)留串口調(diào)試接口的外部跳線方便出問題時用USB轉(zhuǎn)串口模塊直接抓數(shù)據(jù)。SPI是高速短距離通信的典型選擇比如IMU、外部Flash、顯示屏這類設(shè)備。SPI硬件設(shè)計的重點在于片選信號的處理。我看過很多新人的板子喜歡在軟件里直接拉低GPIO來控制片選也就是所謂的軟件片選Soft CS。這種方式在系統(tǒng)復(fù)雜后很容易出問題程序在中斷里頻繁操作片選引腳的時序和SPI時鐘不匹配導(dǎo)致通信偶發(fā)失敗。如果條件允許盡量使用SPI外設(shè)自帶的硬件片選NSS由外設(shè)自動控制片選時序能省掉不少排查調(diào)試的麻煩。講義里也放了對比表格把硬件片選和軟件片選的時序差異、適用場景寫得很清楚。4. 硬件調(diào)試實操從零開始驗證一塊新板4.1 新板子上電前的檢查與上電流程V0.2.1里我最堅持的一個章節(jié)是“新板子上電檢查清單”。因為每一屆總有隊員迫不及待地把剛焊接好的板子直接接到電源上然后一聲悶響板子冒煙了芯片燒了只能重畫重焊白白浪費一周時間。這份清單其實很簡單但每一條都是用教訓(xùn)換來的。上電之前先用萬用表二極管檔測量電源入口處的正負極之間是否短路正常情況下會有一定的二極管壓降讀數(shù)但絕對不會接近零然后檢查電源芯片的輸入輸出電容是否焊接正確、極性有沒有裝反再檢查MCU和其他關(guān)鍵芯片的供電引腳對地是否短路。這些檢查都通過之后才允許上電。上電流程也不建議一步到位。如果電源系統(tǒng)比較復(fù)雜先用可調(diào)電源設(shè)置一個比較低的限流值比如500mA再慢慢往上調(diào)電壓同時觀察電流表讀數(shù)變化。如果上電瞬間電流就飆升到限流值說明板上還有短路點趕緊斷電排查。這個操作習(xí)慣能避免絕大多數(shù)“上電即燒”的悲劇。4.2 使用示波器和萬用表驗證核心信號很多新人拿到示波器就懵不知道從哪里下手。講義里給出了一個“三板斧”驗證方法先測電源再測時鐘再測通信。電源測試的目標(biāo)是確認各路電壓在允許范圍內(nèi)并且紋波可控。測量紋波時要使用示波器帶寬限制功能比如限制到20MHz探頭使用接地彈簧而不是長地線夾子否則測出來的紋波大部分是環(huán)境噪聲而不是真實的電源紋波。這個細節(jié)我至少給不下十個隊員糾正過。時鐘信號測試相對來說直觀得多晶振引腳上應(yīng)該能看到正弦波或者方波頻率和標(biāo)稱值對得上。如果發(fā)現(xiàn)沒有波形先檢查晶振負載電容和供電如果波形頻率不對多半是負載電容配得不合適。這里推薦大家用示波器的FFT功能看一下時鐘信號的頻譜偶爾會有奇次諧波偏大的情況這通常是信號完整性問題的前兆。通信信號的驗證需要分兩步走。第一步先看波形是否存在且幅度正確比如CAN的差分信號總線空閑時CANH和CANL都應(yīng)該在2.5V附近顯性時CANH拉到3.5V、CANL拉到1.5V波形呈明顯的“眼皮”狀第二步才是用邏輯分析儀抓協(xié)議幀確認數(shù)據(jù)內(nèi)容正確。很多新人上來就接邏輯分析儀波形都不看一幀看到一堆亂碼就慌了實際上往往是CAN收發(fā)器工作不正常導(dǎo)致的。4.3 用“最小可運行系統(tǒng)”思想定位故障我在講義里反復(fù)灌輸一個非常重要的調(diào)試?yán)砟钆龅焦收舷瓤彻δ芑貧w最小可運行系統(tǒng)。所謂最小可運行系統(tǒng)就是只保留“MCU 電源 調(diào)試接口 一個指示LED”這個最小組合先讓這個組合穩(wěn)定跑起來再一步步把其他外設(shè)加回去。這個思想在實戰(zhàn)中特別管用。有一次隊員反饋說主控板上電后無法下載程序他們懷疑是烙鐵焊接時把MCU搞壞了準(zhǔn)備直接換芯片。我讓他們先量MCU供電發(fā)現(xiàn)3.3V只有2.1V再用手摸LDO燙得不行。把LDO后端焊的傳感器模塊斷開后電壓恢復(fù)正常。最終定位是傳感器模塊電源引腳焊橋短路。整個過程不到十分鐘如果當(dāng)初直接換芯片問題會變得更難查。4.4 硬件白盒測試與版本管理V0.2.1在測試方法論上有一個比較大的更新引入了“硬件白盒測試”的概念。所謂白盒測試就是針對每一塊自研硬件板卡編寫一份詳細的測試用例文檔列出每一項功能對應(yīng)的測試方法和通過標(biāo)準(zhǔn)。硬件白盒測試文檔的編寫邏輯很簡單但執(zhí)行起來需要紀(jì)律。每塊板子發(fā)到隊員手里之前硬件負責(zé)人應(yīng)該先按測試文檔跑一遍完整的測試。比如電源板就測試每一路輸出在不同負載情況下的電壓、紋波、效率主控板就測試每一個外設(shè)接口能否正常枚舉、CAN能否發(fā)出正確的測試幀。全部用例通過后板卡才能進入實際裝車環(huán)節(jié)。這里的額外收益是白盒測試用例本身就是極好的教學(xué)內(nèi)容。新人拿到一塊新板子照著測試用例一項項操作很快就能掌握這塊板子的每個功能模塊。所以說硬件調(diào)試文檔寫得好比學(xué)長帶新人效率高很多。5. 常見問題與排查技巧實錄5.1 上電即短路別急著懷疑芯片先找焊橋上電短路是最常見的硬件故障但絕大多數(shù)情況下問題不是芯片燒了而是焊接時產(chǎn)生的焊錫橋連。尤其是TSSOP、QFN這類腳距小的封裝焊錫膏刷多了、溫度稍微高一點相鄰引腳就可能粘連在一起肉眼還不一定能看出來。排查焊橋的辦法是分段排查先斷開電源入口和后面電路的連接分別測量各路電源對地阻抗找到阻抗異常的那一路后再斷開該路上的各負載芯片挨個測量。如果發(fā)現(xiàn)某顆芯片附近的電源和地之間阻抗為零用放大鏡仔細檢查引腳多半能找到焊橋。處理辦法也很簡單用烙鐵加助焊劑把多余焊錫吸走就行。在講義里我專門強調(diào)了一個紀(jì)律不要用萬用表的電阻檔去測帶電的板卡也不要直接用萬用表去“戳”MCU的引腳那樣很容易造成新的短路。5.2 單片機頻繁復(fù)位十有八九是電源干擾機器人在賽場上出現(xiàn)“突然死機、過一會兒又自己恢復(fù)”的現(xiàn)象大家第一反應(yīng)是程序bug但我負責(zé)地講在硬件層面最典型的誘因就是電源跌落。底盤電機啟動瞬間的電流可能高達幾十安培如果電源母線電容容量不夠母線電壓會被瞬間拉低到欠壓閾值以下MCU檢測到供電異常就直接復(fù)位了。排查辦法是用示波器探頭夾在MCU供電引腳上在電機全速啟停的時候觀察電壓波形如果能看到明顯低于復(fù)位閾值的跌落那問題基本實錘。解決思路也寫在講義里首先在電機驅(qū)動板的母線輸入端加大容量電解電容比如用4個470uF的電解電容并聯(lián)其次檢查電調(diào)或者驅(qū)動板的PWM頻率設(shè)置頻率太低會導(dǎo)致電流紋波更大最后可以考慮在MCU的供電前端做一個簡單的電源監(jiān)控復(fù)位芯片例如TPS3823讓復(fù)位門限更穩(wěn)定同時增加掉電檢測的中斷處理機制避免程序跑飛。5.3 CAN通信偶發(fā)丟幀終端電阻和地回路CAN通信的問題很典型單獨用萬用表量電阻、量電壓都正常一裝到車上或者多節(jié)點通信時就會出現(xiàn)偶發(fā)丟幀、甚至整條總線癱瘓的情況。排查方向基本就兩個終端電阻配置和地回路。先查終端電阻。CAN總線兩端必須在物理上位于總線的兩個端點而且阻值要準(zhǔn)120Ω左右。很多人把終端電阻焊在了一個中間節(jié)點的板子上或者焊了兩個終端電阻導(dǎo)致總線阻抗異常信號反射嚴(yán)重。還有一種情況是板卡上的終端電阻焊了但通過跳線帽沒有正常接入電路。再查地回路。機器人是一個金屬架構(gòu)底盤、云臺、發(fā)射機構(gòu)之間的地連接路徑可能不相同如果CAN總線在多個板卡之間連接地線壓差可能導(dǎo)致共模電壓超出收發(fā)器的容忍范圍。排查方法是把示波器的兩個探頭分別接在CANH和CANL上參考地接在板卡的地觀察共模波形是否干凈如果有明顯的噪聲疊加在CAN差分信號背景上就要考慮在總線兩端加共模電感或者改用隔離型CAN收發(fā)器。5.4 ADC采樣值漂移從硬件濾波到軟件濾波ADC采樣值漂移這個問題在超級電容能量管理、電流閉環(huán)、電池電壓監(jiān)測這些場景里經(jīng)常遇到?,F(xiàn)象是同樣的輸入電壓讀出來的AD值一直在跳而且跳動的幅度還不小不是那種正常的±1個LSB抖動。硬件排查第一件事是確認參考電壓是否穩(wěn)定。很多MCU的內(nèi)部參考電壓精度一般隨溫度變化也會有漂移如果對精度要求高建議外部使用高精度基準(zhǔn)源。第二件事是確認采樣信號源的輸出阻抗如果信號源阻抗太大ADC內(nèi)部的采樣電容在采集瞬間會抽走大量電荷導(dǎo)致采樣值偏高這時需要在前級加一個電壓跟隨器做緩沖。第三件事才是重點——硬件濾波電路。前面提到過RC低通濾波是標(biāo)配但這里要注意ADC采樣本質(zhì)上是“瞬間取一個點”如果RC濾波器的截止頻率太低信號變化速率快的時候采樣結(jié)果反而是“滯后且偏小”的。所以RC濾波器的截止頻率要根據(jù)被測信號的最高頻率來設(shè)計截止頻率至少是信號最高頻率的5到10倍才能兼顧濾噪和實時性。軟件層面再加上滑動平均或者中值濾波整體配合下來AD值才真正“可信”。5.5 調(diào)試器連不上MCU排查“最小系統(tǒng)”是否完整每次有隊員來求助說“J-Link連不上芯片了”我的第一反應(yīng)永遠是先檢查最小系統(tǒng)而不是懷疑調(diào)試器壞了。第一步量MCU供電電壓第二步量NRST復(fù)位腳電平正常運行時復(fù)位腳應(yīng)該為高電平如果復(fù)位腳被外部電容或者別的電路拉低芯片會一直處于復(fù)位狀態(tài)自然連不上。第三步確認BOOT0引腳的啟動模式如果是Boot from RAM或者Boot from System Memory調(diào)試器能不能正常連接行為也不一樣這點在STM32上特別常見。第四步檢查SWDIO和SWCLK是否被其他外設(shè)占用很多新人在初始化代碼里把這兩個引腳復(fù)用成了GPIO或者別的功能程序一跑起來調(diào)試口就斷開了。還有一個容易被忽略的問題調(diào)試器供電。有些調(diào)試器可以從目標(biāo)板取電也可以給目標(biāo)板供電兩種模式不能搞混。如果目標(biāo)板已經(jīng)有獨立供電調(diào)試器的供電模式還選在“給目標(biāo)板供電”兩邊電壓打架輕則連不上重則燒接口電路。講義里給的建議是統(tǒng)一使用調(diào)試器只連信號線、目標(biāo)板獨立供電的方案這樣排查問題時能少一個變量。6. 從講義到實戰(zhàn)硬件新人的成長路徑與團隊協(xié)作6.1 新人拿到這份講義應(yīng)該怎么學(xué)講義寫得好不好最終要看新人能不能用起來。V0.2.1在每一章后面都配了“動手任務(wù)”并且按照難度分了三個級別。第一級是“照著焊”和“照著測”比如焊接一塊最小系統(tǒng)板并完成點燈第二級是“照著改”比如在現(xiàn)成的電源板上修改反饋電阻把輸出電壓從5V改成12V第三級是“自己畫”比如從原理圖開始設(shè)計一塊完整的小型驅(qū)動板。我強烈建議新人按順序做任務(wù)不要跳級。因為硬件的知識體系是層層遞進的沒搞懂BUCK電路的反饋原理就去改電源板輸出電壓很可能改完輸出完全不對還得回頭補課。每個任務(wù)做完后都要求寫一份實驗報告不要求多長但要寫清楚“我做了什么、測到了什么、出現(xiàn)了什么問題、怎么解決的”。這份實驗報告就是你自己的硬件調(diào)試筆記積累起來是非常寶貴的個人成長檔案。6.2 硬件和電控、機械怎么配合很多新人對硬件工程師的理解是“畫板子的”但實際上硬件是連接電控和機械的樞紐。一個合格的硬件工程師至少要能看懂電控的接口需求也要能理解機械結(jié)構(gòu)對電路板形狀、接口位置、散熱空間的限制。講義里專門有一節(jié)講“硬件設(shè)計需求確認清單”要求在畫板之前必須和電控、機械負責(zé)人開一次需求對齊會。具體內(nèi)容包括電控需要哪些通信接口、每個接口的電氣參數(shù)是什么、供電需求多少機械給出的板卡空間尺寸是多少、接插件朝向有沒有要求、哪些區(qū)域禁止布置元件還有整機的功耗預(yù)算電池容量能撐多久這些都需要硬件工程師心里有數(shù)。這個環(huán)節(jié)最容易出的問題是接插件選型和安裝朝向。很多板子畫得沒問題但裝到機器人上發(fā)現(xiàn)接插件被結(jié)構(gòu)件擋住、線材彎折半徑不夠、或者接口朝向和線束走向沖突最后只能飛線解決可靠性大打折扣。提前和機械對齊能避免返工。6.3 硬件設(shè)計評審畫完板子不能馬上就投板隊伍里我定了一條規(guī)矩原理圖畫完、PCB布局布線完成之后必須做一次硬件設(shè)計評審才能投板。評審內(nèi)容不是走形式而是對著設(shè)計檢查清單逐項過。清單里包括但不限于電源入口有沒有反接保護、電源樹每一級的電流余量是否充足、MCU所有電源腳是否都有去耦電容且靠近引腳放置、晶振匹配電容是否選對、SWD調(diào)試口是否引出了復(fù)位腳每種通信總線的終端電阻和上下拉是否按手冊配置、電機驅(qū)動MOS管的散熱面積是否足夠、關(guān)鍵信號線有沒有被打孔穿過造成環(huán)路面積過大、板上接插件的機械強度和固定方式是否可靠等等。評審可以由戰(zhàn)隊里的硬件老隊員來主持新人也必須參加讓他學(xué)著怎么去審視一塊板子的設(shè)計。這個過程對新人的成長幫助極大因為“看懂別人的設(shè)計”比“自己畫一個設(shè)計”難度更高也更容易積累經(jīng)驗。6.4 V0.2.1之后講義還能怎么擴展V0.2.1是我目前比較滿意的一個版本但這遠遠不是終點。接下來我計劃在V0.3里重點補充三塊內(nèi)容一是視覺硬件的相關(guān)內(nèi)容包括攝像頭接口、視覺處理板的供電和散熱設(shè)計、以及圖像傳輸鏈路的帶寬考慮二是整機線束設(shè)計的規(guī)范包括線徑計算、扎線方式、防拉防磨處理這塊內(nèi)容看似不起眼實際上是賽場可靠性的生命線三是更系統(tǒng)化的硬件測試與可靠性驗證方法比如高低溫測試、振動測試和長時運行穩(wěn)定性測試。我個人在實際操作中有一個很深的體會講義寫到后面不僅僅是給新人看的學(xué)習(xí)材料也是給自己看的知識庫。每年賽季結(jié)束重新翻一遍講義總會發(fā)現(xiàn)“這里可以寫得更好理解一點”“這個案例應(yīng)該補充進來”。如果你也在帶隊伍我強烈建議你也開始沉淀一份屬于自己的硬件基礎(chǔ)講義不管版本號是V0.1還是V0.5先寫起來再一點點迭代總有一天它會成為你們戰(zhàn)隊最值錢的傳承。