Общение с батареями от ноутбука.

sfs
Offline
Зарегистрирован: 05.07.2021
void info() {
  ReadSMB(byte(0x18)); Serial.print(F("DesignCapacity: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mAh");
  ReadSMB(byte(0x10)); Serial.print(F("FullChargeCapacity: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mAh");
  ReadSMB(byte(0x17)); Serial.print(F("CycleCount: ")); Serial.println(buff[1]*256+buff[0]);
  ReadSMB(byte(0x1B)); Serial.print(F("Date: ")); Serial.print(1980+(buff[1]>>1)); Serial.print("."); Serial.print(((buff[1]&0b00000001)<<3)+(buff[0]>>5));Serial.print("."); Serial.println(buff[0]&0b00011111);
  ReadSMB(byte(0x19)); Serial.print(F("DesignVoltage: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadBlockSMB(0x20); Serial.print(F("ManufName: ")); printBlock();
  ReadBlockSMB(0x21); Serial.print(F("DeviceName: ")); printBlock(); 
  ReadSMB(byte(0x1C)); Serial.print(F("SerialNumber: ")); printHEX(buff[1]); printHEX(buff[0]); Serial.println(" Hex");
  ReadSMB(byte(0x14)); Serial.print(F("ChargingCurrent: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mA");
  ReadSMB(byte(0x15)); Serial.print(F("ChargingVoltage: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadBlockSMB(0x22); Serial.print(F("DeviceChemistry: ")); printBlock(); 
  ReadSMB(byte(0x08)); Serial.print(F("Temperature: ")); Serial.print(float(buff[1]*256+buff[0])/10-273); Serial.println(" C");
  ReadSMB(byte(0x09)); Serial.print(F("Voltage: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadSMB(byte(0x0A)); Serial.print(F("Current: ")); Serial.print(int(buff[1]*256+buff[0])); Serial.println(" mA");
  ReadSMB(byte(0x0D)); Serial.print(F("RelativeSOC: ")); Serial.print(buff[0]); Serial.println(" %");
  ReadSMB(byte(0x0E)); Serial.print(F("AbsoluteSOC: ")); Serial.print(buff[0]); Serial.println(" %");
  ReadSMB(byte(0x0F)); Serial.print(F("RemainingCapacity: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mAh");
  ReadSMB(byte(0x3C)); Serial.print(F("VCELL4: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadSMB(byte(0x3D)); Serial.print(F("VCELL3: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadSMB(byte(0x3E)); Serial.print(F("VCELL2: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadSMB(byte(0x3F)); Serial.print(F("VCELL1: ")); Serial.print(buff[1]*256+buff[0]); Serial.println(" mV");
  ReadSMB(byte(0x1A)); Serial.print(F("SpecificationInfo: ")); printHEX(buff[1]); printHEX(buff[0]); Serial.println(" Hex");
  ReadSMB(byte(0x16)); Serial.print(F("Battery Status: ")); printHEX(buff[1]); printHEX(buff[0]); Serial.println(" Hex");
  if (buff[1]&0b10000000) Serial.print("OCA|");
  if (buff[1]&0b01000000) Serial.print("TCA|");
  if (buff[1]&0b00010000) Serial.print("OTA|");
  if (buff[1]&0b00001000) Serial.print("TDA|");
  if (buff[1]&0b00000010) Serial.print("RCA|");
  if (buff[1]&0b00000001) Serial.print("RTA|");
  if (buff[0]&0b10000000) Serial.print("INIT|");
  if (buff[0]&0b01000000) Serial.print("DSG|");
  if (buff[0]&0b00100000) Serial.print("FC|");
  if (buff[0]&0b00010000) Serial.print("FD|");
  if (buff[0]&0b00001000) Serial.print("EC3|");
  if (buff[0]&0b00000100) Serial.print("EC2|");
  if (buff[0]&0b00000010) Serial.print("EC1|");
  if (buff[0]&0b00000001) Serial.print("EC0|");
  Serial.println();
  ReadBlockSMB(0x54); Serial.print(F("Operation Status: ")); printHEX(buff[3]); printHEX(buff[2]); printHEX(buff[1]); printHEX(buff[0]); Serial.println(" Hex");
  if (buff[1]&0b10000000) Serial.print("PRES|");
  if (buff[1]&0b01000000) Serial.print("FAS|");
  if (buff[1]&0b00100000) Serial.print("SS|");
  if (buff[1]&0b00010000) Serial.print("CSV|");
  if (buff[1]&0b00000100) Serial.print("LDMD|");
  if (buff[0]&0b10000000) Serial.print("WAKE|");
  if (buff[0]&0b01000000) Serial.print("DSG|");
  if (buff[0]&0b00100000) Serial.print("XDSG|");
  if (buff[0]&0b00010000) Serial.print("XDSGI|");
  if (buff[0]&0b00000100) Serial.print("R_DIS|");
  if (buff[0]&0b00000010) Serial.print("VOK|");
  if (buff[0]&0b00000001) Serial.print("QEN|");
  Serial.println();
Komandir
Offline
Зарегистрирован: 18.08.2018

Судя по 90 странице в Sealled режиме 0x54 считать НЕЛЬЗЯ - N/A

Видимо именно это и происходит.

sfs
Offline
Зарегистрирован: 05.07.2021

Вот я тоже так и предполагал, но теплилась надежда, что есть какие-то нюансы с кодом. Жаль, значит контроллер в мусор, банки - на повербанк. 

Спасибо за помощь и потраченное время!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

у меня маркировка на разъёме батареи - p- p- ALERT SYS BATT DAT CLK p+ p+
к каким выводам подключать? контроллер bq20857DBT
батарея от DELL

PS а что там за термодатчик

 

Komandir
Offline
Зарегистрирован: 18.08.2018

p- dat clk

имхо - кроме основной информации ничего не прочитается...

Geluk
Offline
Зарегистрирован: 14.09.2021

Недавно пришлось поковырять акб, срочно надо сделать, она на bq20z955. Акб от Асеr AP13B8K, была одна банка в кз заменил, для проверки на другую, напругу подогнал. Чип считал с помощью нежадной BE2. Видимо пароль стандартный, но чип залочен. Писать прога его пишет. На этом в данный момент остановился. Нужна помощь в сбросе, вопрос можете снять в дампе биты защиты и установить емкость, его сбросить? Вот дамп. https://dropmefiles.com/0HdFH

Komandir
Offline
Зарегистрирован: 18.08.2018

Стандартные пароли у вас:

Komandir
Offline
Зарегистрирован: 18.08.2018

Через скетч не запускается ???

Geluk
Offline
Зарегистрирован: 14.09.2021

Через скетч нужен ардуино, я его как раз ищу. Не помню где я его положил. Потому для меня проблема его сделать. По паролям я не знаю или стандартный, мне удалось его вычитать через BE2, потому подумал что он стандартный. Я не очень сильно углублялся в данные вопросы так как батареи эти не часто делаю. Поэтому возник вопрос можно ли подправить вручную. Если бы ардуино был под рукой я бы сразу попробовал.

Geluk
Offline
Зарегистрирован: 14.09.2021

Нашел у себя wemos XI, пробую, скетч загрузило, данные батареи считало. Пункты 1-7 проходят 8 не идет, 9-й проходит, емкость поменяло правда мне надо 3510мА, я его поправил, теперь поменяло, дату изменило, циклы сбросило в 0, но статусы флагов не сбросило. Еще не удалось считать дамп программы, то же в ошибку выпадает. Eeprom еще не пробовал читать.  https://sxema.com.ua/p798454258-arduino-nano-wemos.html?source=merchant_center&gclid=Cj0KCQjws4aKBhDPARIsAIWH0JUQEf9RB-mQvqNhA1U6SPn3BDr7IsCBoPSUQXsDULSkGbN3tpm2zDYaAurBEALw_wcB

Komandir
Offline
Зарегистрирован: 18.08.2018

Geluk http://arduino.ru/forum/proekty/obshchenie-s-batareyami-ot-noutbuka#comment-599155

там указан порядок выполнения операций

после этого батарей должна начать работать, если физически исправна !

Geluk
Offline
Зарегистрирован: 14.09.2021

Не получается как-то не так работает. Ардуино часто затирает модель и номер. Из за этого приходится перезаливать eeprom, но уже переподключая на be2. Вы когда разбирались с этим чипом не помните по какому адресу находятся локи TDA TCA RCA? Может вручную обнулить их? только вот знать бы где. Кстати ардуино при чтении выдает PEC Error !!! и 46!=0D Может так что у Вас другая варь, у меня пишет что 2,03 версия. И из за этого не корректно работает, или этот ардуино не подходит. Хотя врядле так бы поидее ничего не делал бы.

Нашел UNO попробовал тоже самое, встает на 8 пункте. Считать программу и епром не получается при помощи ардуино. В чем может быть вопрос? У Вас нет случайно прошивок от данной батареи правленой и битой для сравнения?

Komandir
Offline
Зарегистрирован: 18.08.2018

Чипы с трехзначным номером типа 955 - это то что произведено для вендоров. Сами вендоры могут прошить их чем угодно.

У меня на руках только с прошивкой 0302 

P.S. Подозреваю что ошибки из-за переполнения буфера библиотеки Wire !!! Вы сделали то, что написано сделать в 19 строке ???