在為機器人、無人機或 AGV 設計電池組時,電芯化學與外形通常佔據多數關注。但電池管理系統(BMS)與主控制器之間的通訊協定同樣至關重要——這也是許多硬體新創公司在開發後期付出昂貴代價的地方。
本指南涵蓋您最常會遇到的三種協定:CAN Bus、SMBus 與 I2C。我們會說明每種協定實際的作用、其優勢所在,以及不適合哪些應用場景。
電池通訊協定實際上做什麼?
在比較這些協定之前,值得先精確定義我們討論的內容。電池通訊協定讓您的 BMS 能夠向主機系統回報電量狀態(SOC)、健康狀態(SOH)、各電芯電壓、電池組溫度、電流消耗、故障代碼與剩餘可用時間。它也讓主機能夠發送指令——例如啟用充電、限制放電或緊急關機。
沒有這層通訊,您的系統就是在盲飛。您只能得到電源軌上的一個電壓值,僅此而已。對於簡單的遙控飛機來說這沒問題,但對醫療設備、自主機器人,或任何意外斷電會造成損害或傷害的系統來說,這絕對不行。
CAN Bus:工業標準
控制器區域網路(CAN Bus)由 Bosch 於 1980 年代為汽車應用開發。這是一種差分雙線匯流排(CANH 與 CANL),速度最高可達 1 Mbps,並可在單一匯流排上支援數十個節點。
工程師選擇 CAN Bus 的原因:
CAN Bus 專為電氣噪訊環境而生。差分訊號意味著共模噪訊——也就是馬達控制器、變頻器與開關電源產生的那類噪訊——會在接收端被排除。在一個同時運轉 20 台馬達的 AGV 倉庫中,這一點極其重要。
CAN Bus 也內建了硬體層級的故障偵測。每則訊息都包含 CRC 校驗,該協定還能自動處理多個節點同時嘗試傳輸時的匯流排仲裁。您不需要在韌體中自行實作碰撞偵測——晶片本身就會處理。
對於多電池組系統——例如配備 48V 主電池組與 24V 輔助電池組的 AGV——CAN Bus 可讓兩個 BMS 單元共用同一條雙線匯流排回傳至主控制器。若使用 SMBus 或 I2C,則需要獨立的匯流排或複雜的多工處理。
CAN Bus 不適合的情況:
CAN Bus 會增加成本與複雜度。您需要在兩端都配置 CAN 收發器、在匯流排每端配置適當的 120Ω 終端電阻,以及能夠處理 CANopen 或自訂訊息格式的韌體。對於 BMS 與主控 MCU 相距僅 5 公分、位於同一片電路板上的簡單手持醫療設備或小型消費級無人機而言,CAN Bus 顯得大材小用。
採用 CAN Bus 的 Sky Power 電池組: 我們專為 AGV 應用打造的 SKP-48V 系列,預設介面即為 CAN Bus,採用 CANopen DS401 協定,以相容於標準機器人控制器。
SMBus:智慧電池標準
系統管理匯流排(SMBus)是一種源自 I2C 的雙線協定,由 Intel 於 1995 年開發。它成為智慧電池規格(SBS)的基礎——這是定義筆記型電腦電池如何與充電器及主機通訊的標準。
工程師選擇 SMBus 的原因:
如果您正在打造需要與現成充電器通訊的產品,SMBus 就是答案。智慧電池規格明確定義了應讀取哪些暫存器:0x09 為剩餘容量、0x0F 為電池狀態、0x17 為循環次數,以此類推。實作 SBS 的 BMS 無需客製韌體,即可與任何符合 SBS 規範的充電器搭配運作。
相較於原始的 I2C,SMBus 也有更嚴謹的電氣規格——明確定義的電壓位準、逾時行為,以及強制性的錯誤復原機制。即便底層協定看似相似,這使其在實務上更為穩健。
對於尋求 IEC 62133 或 UL 2054 認證的醫療手持裝置,採用完整 SBS 實作的 SMBus 提供了認證機構所熟悉、有完整文件記錄的通訊介面,這能大幅簡化您的合規文件準備工作。
SMBus 不適合的情況:
SMBus 速度較慢(標準模式 100 kHz,高速模式 400 kHz),且傳輸距離短。它專為板載通訊設計——BMS 到充電 IC 再到主控 MCU,全部位於同一片電路板上或以短纜線連接。若在電氣噪訊環境中將 SMBus 佈線超過約 30 公分,就會開始出現通訊錯誤。
SMBus 對多主機的支援也不佳。在充電器與主控制器需要同時查詢 BMS 的系統中,您需要在韌體中謹慎處理匯流排仲裁邏輯。
I2C:靈活但脆弱
I2C(Inter-Integrated Circuit)是 SMBus 與許多 BMS 介面共同的始祖。這是一種雙線協定(SDA 與 SCL),透過 7 位元位址在同一匯流排上支援多個裝置。
工程師選擇 I2C 的原因:
I2C 無所不在。幾乎每一款 BMS 晶片——德州儀器 BQ 系列、Maxim DS2782、瑞薩 ISL9238——都提供 I2C 介面。若您是自行設計客製 BMS,而非採購現成的智慧電池模組,幾乎必然會透過 I2C 讀取電芯電壓與溫度。
I2C 的實作也相當簡單。多數微控制器都內建 I2C 硬體周邊,且從 Arduino、STM32 到 ESP32 等各平台皆有現成函式庫。對於首次打造客製電池組的無人機新創公司而言,一個下午內就能透過 I2C 取得電芯電壓遙測資料,是相當實際可行的目標。
I2C 不適合的情況:
除了接收端的 ACK/NACK 之外,I2C 沒有內建的錯誤偵測機制。在噪訊環境中——靠近無刷馬達、開關穩壓器或高電流放電源——資料可能損毀,卻毫無異常跡象。您的 SOC 讀數可能已是無效數值,而您的韌體卻渾然不知。
I2C 也有嚴格的電容限制。匯流排電容上限為 400pF,這將纜線長度限制在標準速度下約 1 公尺以內。對於 BMS 與主控制器不在同一片電路板上的任何系統,I2C 都會變得棘手。
協定選擇指南
| CAN Bus | SMBus | I2C | |
|---|---|---|---|
| 最適合 | AGV、多電池組系統、工業機器人 | 醫療設備、符合 SBS 規範的充電器 | 客製 BMS 設計、同板通訊 |
| 抗噪能力 | 優異 | 良好 | 較差 |
| 纜線長度 | 最長可達 40 公尺 | 小於 1 公尺 | 小於 1 公尺 |
| 速度 | 最高 1 Mbps | 100-400 kHz | 100 kHz - 3.4 MHz |
| 成本 | 較高(收發器 IC) | 低 | 極低 |
| 認證友善度 | CANopen 文件完善 | SBS 為認證機構所熟悉 | 客製化,需更多文件 |
| 多節點支援 | 優異 | 有限 | 良好 |
依應用場景的實務建議
無人機 / UAV: 原型階段先從 I2C 開始——實作快速,也適合無人機內部的短距離傳輸。若您正在打造較大型平台(超過 10 公斤),飛控與電池間距超過 30 公分,或需與期望使用 UAVCAN 的標準自動駕駛系統(如 PX4)整合,則應改用 CAN Bus。
地面機器人 / AGV: 從第一天就採用 CAN Bus。光是馬達噪訊就足以讓 I2C 或 SMBus 出現問題。使用 CANopen DS401 以達到與現成機器人控制器的最大相容性。
醫療手持裝置: 採用完整智慧電池規格實作的 SMBus。您的認證機構會預期採用此標準,您的充電 IC 很可能已支援,而短距離纜線也符合 SMBus 的限制條件。
小型電動載具(電動滑板車、電動自行車、輕型電動車): 對於 BMS 與車輛控制器分離的任何配置,皆應採用 CAN Bus。電池到控制器的線路長度通常超出 I2C 或 SMBus 的可靠傳輸範圍。
向我們洽詢符合您協定需求的電池組
當您向 Sky Power (US) 洽詢客製電池組報價時,請提前說明您的通訊協定需求。我們的標準配置包括:
- SKP-18650 / SKP-21700 系列: 可透過 BMS 韌體選擇 I2C 或 SMBus
- SKP-48V AGV 系列: 標準配備 CAN Bus(CANopen DS401),亦可選配 I2C
- SKP 醫療系列: 採用完整 SBS 1.1 實作的 SMBus,通過 IEC 62133 與 UL 認證
所有電池組均標準通過 UN38.3 與 CE 認證。我們也可協助辦理其他認證項目。從規格確認到交貨,前置時間通常為 10 週,開發階段最低起訂量為 50 組。
Free Tool
Simulate Your Battery Pack
Run a free certified thermal simulation and download a verification report for your engineering team.
Launch Simulator →