yes, i can read out the voltages of each cell and the current
// akku einlesen
i2cadr = 0x30; // OZ: adr. 30 statt 60h!!
adr = 0x0; // chip id an adr. 0h
// strom lesen
adr = 0x54; // strom an adr. 54h
// register adresse übermitteln
Wire.beginTransmission(i2cadr);
Wire.write(adr);
stat1 = Wire.endTransmission(false); // 0:sucess
// register daten lesen
stat2 = Wire.requestFrom(i2cadr, 2); // anzahl der gelesenen bytes
val1 = Wire.read();
val2 = Wire.read();
// bytes auswerten
val2 = (val2 & 0x7F); // VZ ausblenden, noch auswerten
amp = 7.63 * (val2 * 256 + val1)/1000; // mV-Spannungsabfall
// spannungen lesen
adr = 0x32; // spannung zelle 1 an adr 32h
zelle = 1+count % 8; // für 8 Zellen
adr = adr + 2*(zelle-1);
// register adresse übermitteln
Wire.beginTransmission(i2cadr);
Wire.write(adr);
stat1 = Wire.endTransmission(false); // 0:sucess
// register daten lesen
stat2 = Wire.requestFrom(i2cadr, 2); // anzahl der gelesenen bytes
val1 = Wire.read();
val2 = Wire.read();
// bytes auswerten
val1 = val1/8; // 3 bits ausblenden
val2 = (val2 & 0x7F); // VZ ausblenden
switch (zelle) {
case 1:
volt1 = 1.22 * (val2 * 32 + val1);
break;
case 2:
volt2 = 1.22 * (val2 * 32 + val1);
break;
case 3:
volt3 = 1.22 * (val2 * 32 + val1);
break;
case 4:
volt4 = 1.22 * (val2 * 32 + val1);
break;
case 5:
volt5 = 1.22 * (val2 * 32 + val1);
break;
case 6:
volt6 = 1.22 * (val2 * 32 + val1);
break;
case 7:
volt7 = 1.22 * (val2 * 32 + val1);
break;
case 8:
volt8 = 1.22 * (val2 * 32 + val1);
break;
}
// Gesamt-, MIN und MAX
volt = (volt1+volt2+volt3+volt4+volt5+volt6+volt7+volt8)/1000;
voltMIN = min(volt1,min(volt2,min(volt3,min(volt4,min(volt5,min(volt6,min(volt7,volt8)))))));
voltMAX = max(volt1,max(volt2,max(volt3,max(volt4,max(volt5,max(volt6,max(volt7,volt8)))))));