7. 如何設計一個「好的電控系統」
7. 如何設計一個「好的電控系統」
7.1 穩定性
硬體穩定性:
- 去耦電容(Decoupling Capacitor):每個 IC 電源腳旁放 100nF + 10μF,濾除高頻雜訊
- 保護電路:TVS 二極體保護 GPIO 輸入,防止靜電和高壓脈衝
- 電源設計:使用低壓差穩壓(LDO)或 DC-DC,確保 MCU 電源在 HV 切換時不抖動
- PCB Layout:類比訊號遠離高頻數位線;差分對等長走線;CAN Bus 終端電阻靠近連接器
軟體穩定性:
- Watchdog Timer:啟用 Hardware Watchdog,若程式超時未餵狗 → 自動 Reset(搭配 AMS_OK 硬體設計)
- Stack Overflow 保護:設定 Stack Canary
- ROM/Flash 校驗:上電時校驗程式完整性(CRC 校驗)
7.2 安全性
電氣安全:
- 所有超過 60V 的裸露導體必須有絕緣保護或物理隔離
- HV 接線使用橙色(FSAE 賽車 HV 線束標準色)
- HV 連接器使用不同於 LV 的物理形式,防止誤插
功能安全:
- 關鍵感測器(油門踏板、煞車)使用雙通道冗餘設計(兩個獨立感測器,互相比對)
- 單點故障分析(FMEA):列出所有可能的單點故障,確認每個都有對應的 Fail-safe 處理
7.3 可維護性
這是新人最容易忽略的部分,但也是讓車隊長期競爭力的關鍵。
硬體可維護性:
- 每條線束貼標籤,標明起點、終點、功能
- 使用快拆連接器(如 Deutsch DT/DTM 系列)而非直接焊接
- 關鍵節點(SDC 各節點、CAN Bus)設計測試點(Test Point)
軟體可維護性:
- 使用版本控制(Git)管理所有程式碼
- 重要變數(閾值、超時時間)定義為
#define常數,集中在一個 config 文件 - 寫清楚的 commit message,讓半年後的你(或下一屆學弟妹)看得懂當時為什麼這樣改
7.4 Debug 能力
設計時就要為 Debug 準備:
- CAN 數據 Log:使用 CAN Logger(或 Raspberry Pi + candump)記錄所有 CAN 訊息,比賽後可以回放分析
- LED 狀態指示:每個關鍵狀態(SDC 狀態、各 AIR 狀態、Fault 碼)用 LED 指示,不用接示波器就能知道系統狀態
- Serial Debug Output:保留一個 UART 接口,可以輸出系統狀態和故障記錄
- Fault Code 設計:定義數字故障碼,儲存在 EEPROM 或 Flash,斷電後仍可讀取
💡 學長心得:「只在實驗室能 Debug 的系統,不是好系統。」賽場上你沒有示波器、沒有電腦,你需要能在 5 分鐘內靠 LED 和 CAN 讀值判斷問題出在哪裡。這種設計能力要從一開始就建立。
小結
好的電控系統不是功能最多的,而是最可預期的:在任何條件下,你都知道它會做什麼,為什麼這樣做。設計的每一個決策都要能回答:「如果這裡壞了,會發生什麼?」