Общение с батареями от ноутбука на чипах bq20z

Ну у вас первое сообщение на форуме и уже

Это не мой алгоритм и я не уполномочен его передавать кому-либо. Можете снять обфускацию с be2works и дизассемблировать …

3 лайка

Получилось сделать сброс.
На всякий случай, пока помню, записал подробно все шаги, может кому-то пригодится.

Samsung AA-PB9NC6B распиновка разъёма:
1 пин GND (P-)
Пропуск
2 пин GND (P-)
3 пин непонятно
4 пин SDA (D)
5 пин SCL (C)
6 пин Vcc (P+)
7 пин Vcc (P+)

BQ20Z453 разблокируется с помощью скетча SmartBattery для Arduino (GitHub - dsa-a/Arduino-Smart-Battery: Several utilities for working with TI bq20z... IC.).
Перед запуском скетча нужно изменить размер буфера в файлах библиотеки Wire:
Wire.h (путь C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src) на #define BUFFER_LENGTH 34
и twi.h (путь C:\Users\UserName\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries\Wire\src\utility) на #define TWI_BUFFER_LENGTH 34

Перед сбросом контроллера батареи нужно отпаять провода банок от контроллера строго в следующей последовательности: первым отпаивается плюсовой вывод (B+), за ним рядом (B2), за ним рядом (B1), последним отпаивается минусовой вывод (B0).

Вместо банок аккумуляторов нужно припаять резисторы по 470 Ом, и на всякий случай припаивается резистор около 50 Ом к минусу контроллера, далее через второй вывод этого резистора подключается минус внешнего блока питания, а плюс блока питания к плюсовому выводу контроллера (B+). Блок питания настраивается на напряжение 8,5 В.

Батарея подключается к Arduino следующим образом:
1 пин батареи GND (P-) к GND Arduino;
4 пин батареи SDA (D) через резистор 1 кОм к SDA Arduino (для Arduino Pro Mini это A4) и также между выводами Arduino SDA Arduino и 3.3V подключить резистор 10 кОм;
5 пин батареи SCL (C) через резистор 1 кОм к SCL Arduino (для Arduino Pro Mini это A5) и также между выводами Arduino SCL Arduino и 3.3V подключить резистор 10 кОм.

В самом скетче заменить #define new_capacity 4400 на нужную ёмкость в mAh, например в случае если новые банки ёмкостью 3500 mAh и две банки соединяются параллельно, то #define new_capacity 7000.
В 416 строке скетча WriteSMBWord(0x17,0x0000); заменил на WriteSMBWord(0x17,0x0001); чтоб количество циклов зарядки было не нулевым.

После заливки скетча открыть Serial Monitor и нажать Enter когда попросит.
После этого нужно на 2 секунды соединить проводком 7 пин Vcc (P+) разъёма с плюсовым выводом (B+).
После этого батарея проснётся и Arduino увидит батарею.
Далее нужно по очереди выбирать пункты 1,2,3,4,5,6,7,8, а потом снова пункты 1,2,3,4, и последним пункт 9. После этого нажать 1 и убедится, что в Pack Info… в поле DesignCapacity указана нужная ёмкость.

Если всё прошло правильно, то ошибки Wire-2 или Wire-3 не появляются. Если ошибки появились, то нужно всё проверить по подключению, исправить, и нажать Reset на Arduino или по новому залить скетч.

Перед подключением банок их нужно полностью зарядить и после соединить все параллельно на несколько часов для выравнивания напряжений.

Далее нужно отпаять резисторы и припаять банки строго в такой последовательности: первым припаивается минусовой вывод (B0), за ним рядом (B1), за ним рядом (B2), последним припаивается плюсовой вывод (B+).
После этого нужно на 2 секунды соединить проводком 7 пин Vcc (P+) разъёма с плюсовым выводом (B+).

Если всё хорошо, то между 1 пином GND (P-) и 7 пином Vcc (P+) будет напряжение порядка 12,6 В. Только после этого аккуратно уложить в корпус не забывая про датчик температуры.

Всё что после изменения размера буфера лишнее !

а для BQ20Z451 работает?

Если от Apple, то не факт …

Hello,
Thanks for the code. I want to unseal the apple bq20z451. I know it has different firmware but maybe you know how. Thanks

Pack Info…
DesignCapacity: 4381 mAh
FullChargeCapacity: 4171 mAh
CycleCount: 30
Date: 2020.4.14
DesignVoltage: 11490 mV
ManufName: SMP
DeviceName: bq20z451
SerialNumber: 0001 Hex
ChargingCurrent: 0 mA
ChargingVoltage: 0 mV
DeviceChemistry: LION
Temperature: 27.00 C
Voltage: 11763 mV
Current: 0 mA
RelativeSOC: 61 %
AbsoluteSOC: 58 %
RemainingCapacity: 2539 mAh
VCELL4: 0 mV
VCELL3: 3922 mV
VCELL2: 3922 mV
VCELL1: 3920 mV
SpecificationInfo: 0031 Hex
Battery Status: 58C0 Hex
TCA|OTA|TDA|INIT|DSG|
Operation Status: E443 Hex
PRES|FAS|SS|LDMD|DSG|VOK|QEN|
Sealed
Device Type: 0451 Hex
Firmware Version: 1002 Hex
Hardware Version: 00A6 Hex

Discharge to RemainingCapacity : 0

наконец-то пришла моя Arduino-Nano с алиэкспреса и я попробовал разлочтить свою батарею, ничего не удалось, но Командир обещал временные ключи по результатам, поможете?
Кнопка “написать в личку” у меня к сожалению отсутствует (или не могу найти), вот моя батарея N1 разряженная до нулевой капасити:

GArduino Smart Battery
Several utilities for working with TI bq20z… IC
Press Enter…
Checking communication with the device at address 0x0B…
The device was found !!!

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Pack Info…
    DesignCapacity: 8755 mAh
    FullChargeCapacity: 5601 mAh
    CycleCount: 197
    Date: 2019.6.13
    DesignVoltage: 11360 mV
    ManufName: SMP
    DeviceName: bq20z451
    SerialNumber: 0001 Hex
    ChargingCurrent: 0 mA
    ChargingVoltage: 0 mV
    DeviceChemistry: LION
    Temperature: 27.70 C
    Voltage: 7377 mV
    Current: 0 mA
    RelativeSOC: 0 %
    AbsoluteSOC: 0 %
    RemainingCapacity: 0 mAh
    VCELL4: 0 mV
    VCELL3: 1 mV
    VCELL2: 3784 mV
    VCELL1: 3592 mV
    SpecificationInfo: 0031 Hex
    Battery Status: 4AD0 Hex
    TCA|TDA|RCA|INIT|DSG|FD|
    Operation Status: E461 Hex
    PRES|FAS|SS|LDMD|DSG|XDSG|QEN|
    Sealed
    Device Type: 0451 Hex
    Firmware Version: 0702 Hex
    Hardware Version: 00A6 Hex

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Reseting…

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Unsealing…

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Move to Full Access mode…

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Clearing a Permanent Failure…

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Pack Info…
    DesignCapacity: 8755 mAh
    FullChargeCapacity: 5601 mAh
    CycleCount: 197
    Date: 2019.6.13
    DesignVoltage: 11360 mV
    ManufName: SMP
    DeviceName: bq20z451
    SerialNumber: 0001 Hex
    ChargingCurrent: 0 mA
    ChargingVoltage: 0 mV
    DeviceChemistry: LION
    Temperature: 27.60 C
    Voltage: 7378 mV
    Current: 0 mA
    RelativeSOC: 0 %
    AbsoluteSOC: 0 %
    RemainingCapacity: 0 mAh
    VCELL4: 0 mV
    VCELL3: 0 mV
    VCELL2: 3784 mV
    VCELL1: 3593 mV
    SpecificationInfo: 0031 Hex
    Battery Status: 4AD0 Hex
    TCA|TDA|RCA|INIT|DSG|FD|
    Operation Status: E461 Hex
    PRES|FAS|SS|LDMD|DSG|XDSG|QEN|
    Sealed
    Device Type: 0451 Hex
    Firmware Version: 0702 Hex
    Hardware Version: 00A6 Hex

Select operation:

  1. Read pack info.
  2. Pack Reset.
  3. Unsealing a pack.
  4. Move pack to Full Access mode.
  5. Clearing a Permanent Failure.
  6. Clearing CycleCount.
  7. Setting current date.
  8. Writing DesignCapacity, QMAX, Update status, Ra_table.
  9. Begin the Impedance Track algorithm.
    Wire error - 3
1 лайк

I discharged to remainingCapacity : 0. But I can`t able to unseal it. Thanks
Pack Info…
DesignCapacity: 4381 mAh
FullChargeCapacity: 4170 mAh
CycleCount: 30
Date: 2020.4.14
DesignVoltage: 11490 mV
ManufName: SMP
DeviceName: bq20z451
SerialNumber: 0001 Hex
ChargingCurrent: 0 mA
ChargingVoltage: 0 mV
DeviceChemistry: LION
Temperature: 28.70 C
Voltage: 10623 mV
Current: 0 mA
RelativeSOC: 0 %
AbsoluteSOC: 0 %
RemainingCapacity: 0 mAh
VCELL4: 0 mV
VCELL3: 3549 mV
VCELL2: 3543 mV
VCELL1: 3531 mV
SpecificationInfo: 0031 Hex
Battery Status: 5AD0 Hex
TCA|OTA|TDA|RCA|INIT|DSG|FD|
Operation Status: E441 Hex
PRES|FAS|SS|LDMD|DSG|QEN|
Sealed
Device Type: 0451 Hex
Firmware Version: 1002 Hex
Hardware Version: 00A6 Hex

Read PM …

it doesn’t work :cry:

Battery from Apple ?

Yes, apple.

Приветствую!
Уважаемый Komandir, прошу помощи в общении с АКБ на контроллере bq20z45
Немного вводной инф.:
АКБ на полимерных элементах, 2s2p. пара элементов разрядились в 0, вторая пара с напряжением 3,7.АКБ в ноутбуке не заряжается (ASUS EEE PC T101MT). Отпаял контакты в последовательности от “+” к “-”, подпаял через делитель с ограничением тока в 30мА стороннее питание. Через плату CP2112 с ПО demo be2works - считать данные не удаётся, в том числе после подачи низкого уровня на “S”. Предохранитель на плате 10AH2 был замкнут и вдоль и поперёк. Подпаял на контакты платы АКБ (от “-” к “+”) - пред перестал прозваниваться (вдоль по контактам на длине). Вновь подключился через делитель с ограничением, поставил перемычку из “волоска” МГТФ (как в одном из сообщений в этой ветке форума). Подключился arduino, контроллер отвечает. Проходя по пунктам, выдаёт ошибку на пункте 6 ошибку Wire error - 3. Паролей к контроллеру не выдаёт. Последний опрос контроллера имеет следующий результат (из монитора порта):
Pack Info…
DesignCapacity: 4900 mAh
FullChargeCapacity: 3175 mAh
CycleCount: 166
Date: 2011.9.15
DesignVoltage: 7300 mV
ManufName: AS15BME3LD
DeviceName: T101-49
SerialNumber: 01BD Hex
ChargingCurrent: 0 mA
ChargingVoltage: 0 mV
DeviceChemistry: OTI0
Temperature: 23.60 C
Voltage: 6554 mV
Current: 0 mA
RelativeSOC: 0 %
AbsoluteSOC: 0 %
RemainingCapacity: 0 mAh
VCELL4: 0 mV
VCELL3: 0 mV
VCELL2: 3288 mV
VCELL1: 3267 mV
SpecificationInfo: 0031 Hex
Battery Status: 4AD0 Hex
TCA|TDA|RCA|INIT|DSG|FD|
Operation Status: 6445 Hex
FAS|SS|LDMD|DSG|R_DIS|QEN|
Sealed
Device Type: 0450 Hex
Firmware Version: 0105 Hex
Hardware Version: 00A6 Hex

Что делать, куда копать? Прошу подсказку.

В личку выслал ключи…

1 лайк

Приветствую!
Уважаемый Komandir, прошу помощи в общении с АКБ на контроллере bq20z45

DesignCapacity: 5200 mAh
FullChargeCapacity: 0 mAh
CycleCount: 959
Date: 2011.03.26 yyyy.mm.dd
DesignVoltage: 10800 mV
ManufName: AS15BUI3iE
DeviceName: K53–52
SerialNumber: 38C8
ChargingCurrent: 0 mA
ChargingVoltage: 0 mV
DeviceChemistry: LGL0
Temperature: -37.8 C
Voltage: 10420 mV
Current: 0 mA
RelativeSOC: 0%
AbsoluteSOC: 0%
RemainingCapacity: 0 mAh
VCELL4: 0000 mV
VCELL3: 3475 mV
VCELL2: 3466 mV
VCELL1: 3478 mV
SpecificationInfo: 0031 Hex
Battery Status:
TCA|TDA|RCA|INIT|DSG|
MaxError: 5%
Operation Status:
FAS|SS|DSG|QEN|
Safety Status:
PF|
PFStatus:
RSVD14|RSVD13|DFETF|SOV|PFIN|
Device Type: 0450
Firmware Version: 1.05
Hardware Version: A6
Manufacturer Status:
FET1|PF1|ST3|ST0|
Chemistry ID: 0230

Это Вы чем считывали ?

1 лайк

BE2works + ev2300

В личке смотрите …

1 лайк

да, это сработало. Марокко/СС зеленый. Но я не могу изменить данные. Что еще мне нужно сделать?