EBC-B10電池容量測試儀之通信協議分析

手上有臺EBC-B10電池容量測試儀,挺好的國貨。可以用來測試電池容量,也可以用來給鋰電池充電。

對於有數塊1S,3S電池的人來說,充電參數略多設置有些麻煩。好在可以通過串口接電腦設置參數。不過想着還是通過手機操作要方便快捷。

大體上有2個方案:

1.自己寫下位機固件,工作量有些大,目前看也沒有太大必要。

2.實現通信協議與下位機交互(zke可以考慮開源下協議,如果可以固件代碼也開源下)。網上沒有找到它的通信協議,想來也不會太複雜。畢竟是單片機的方案。

嘗試分析一下:

整理結果如下:

1. 可能是充電時,干擾大。通信採用9600bps 5V TTL電平,使用了奇偶校驗位(好像是奇校驗)。如果奇偶校驗不對,下位機是不會有反應的。

2. 上位機命令。

連接命令

FA 05 00 00 00 00 00 00 05 F8 

停止命令

FA 02 00 00 00 00 00 00 02 F8

斷開連接命令

FA 06 00 00 00 00 00 00 06 F8

啓動命令(帶4個參數)

示例參數:charge mode 1.33 A(85h) 4.13v(19d) 0.56a(38h)

消息頭 工作模式 最大充電電流max current 最大電壓(voltage) 截止電流(min current) 校驗字節 消息尾
FA        11(charge mode) 00 85 01 AD 00 38 0  F8 

檢驗算法:

1.就是有效載荷數據作一個按字節異或操作。

u8 TX_CheckSum(u8 *buf, u8 len) //buf爲數組,len爲數組長度
{
    u8 i, ret = 0;

    for (i = 0; i<len; i++)
    {
        ret ^= *(buf++);
    }
        return ret;
}

注:一開始以爲就是常用的crc8校驗,然而不是的,找遍了crc8都不配。看了下數據規律,發現不可能是crc;然後猜測是checksum(8),然而不是的。最後觀察數據規律。發現是簡潔的按字節異或操作(伽羅華域checksum?)。

參數設置的小坑。

電壓電流參數,每2.4v,或者2.4A都會補一個0x10的偏移。猜測是線性修正偏差?

試驗數據如下:

FA 11 01 00 04 EF 00 96 6D F8  //2.4a(f0) ->2.4a is point
FA 11 00 EF 04 EF 00 96 83 F8   // 2.39a(ef)

FA 11 00 C8 01 00 00 96 4E F8   //2.40 v(f0) -->+0x10

FA 11 00 C8 00 EF 00 96 A0 F8   //2.39v (ef)  

FA 11 01 A0 04 DD 01 6E 06 F8  //11.81v(49dh) 40h=11.81/2.4=4.92

3. 下位機回傳參數

消息頭 (machine type) 當前充電電流 timestamp? (capacity)  (?) (max current) now voltage min current) 校驗字節 消息尾
FA        charge mode 1.33 A(85h) 4.13v(19d) 0.56a(38h) 0B 00 50 11 1D 00 04  00 00(?)  00 50 01 B4  00 32 8  F8 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章