Forum: Analoge Elektronik und Schaltungstechnik Bosch Athlet 25,2 V Akku 7 Stück Tauschen


von Klaus R. (klaus2)


Lesenswert?

Das halte ich auch für sehr merkwürdig wenn in der Software eine 
bestimmte zellenanzahl angegeben ist würde ich erwarten dass beim 
Auslesen nicht vorhandene zählen als Strich Strich oder na 
gekennzeichnet sind, min aber 0.0V

Klaus.

von Klaus (daleks)


Lesenswert?

Entwarnung !!
Die Software ist OK.
Auf der Platine ist der Balancerchip hinüber.
Das Programm auf mein 2. Sorgenkind (baugleich) gespielt, läuft ohne 
Änderung.

Sorry für die Falschmeldung.

Dale

P.S. Dale, sonst haben wir noch einen Klaus :-)

von Torsten (projectsun)


Lesenswert?

Hallo! Ich habe einen Bosch Athlet ProAnimal 25,2V BCH6Z000
Selbes Problem wie alle anderen auch. Das Board Layout sieht etwas 
anders aus. Ich wäre gern behilflich, diesen Sauger auch mit in die 
Firmware zu integrieren. Was braucht ihr da von mir? USBasp ist 
bestellt. Lötkenntnisse sind vorhanden ;)

mfg

Torsten

von Klaus R. (klaus2)


Lesenswert?

Torsten schrieb:
> Das Board Layout sieht etwas anders aus.

GUTE Fotos? 😅

Klaus.

von Torsten (projectsun)


Lesenswert?

so. daheim hab ich den kleber von der MCU gekratzt... es ist ein Renesas 
R7F0C901B2 ... kein 328p ... so ein müll. hat jemand mit sowas 
erfahrung?
RL78 Familie

von Evgeniy (evgeniy)


Angehängte Dateien:

Lesenswert?

Hast du ein ähnliches Board? Wahrscheinlich grün? Kann ich ein 
hochwertiges Foto der Tafel von oben machen, damit ich alle Markierungen 
lesen kann?

von Dariusz (jaszczur)


Angehängte Dateien:

Lesenswert?

Hallo,
dies ist mein erster Eintrag. Ich bin auf der Suche nach Hilfe, da ich 
das Board mit DIY-Dateien aktualisiert habe. Mein Glück war nur von 
kurzer Dauer. Der Staubsauger funktionierte, aber nach dem Zusammenbau 
nicht mehr. Beim Versuch, ihn zu starten, blinken 1 x 4 LEDs (1 Power 
und 3 für den Batteriestatus). Beim Einstecken des Ladegeräts leuchten 3 
LEDs auf. Wiederholte Versuche, das Gerät neu zu programmieren, bringen 
nichts. Das Modell, das ich habe, ist der BBH7320K. Ich weiß nicht, was 
schief gelaufen ist.

von Torsten (projectsun)


Lesenswert?

evgeniy ... ja genau das board ist es

von Werner V. (ducati-v_werner)


Lesenswert?

Ein Hoch auf dieses Forum!

Großen Dank an Lena und Daniel!
Mit Eurem Input konnte ich meinen Bosch Athlet mit 32,4V wieder zum 
Leben erwecken und so Schrott verhindern.

Gruß Werner

von Ampere 0. (ampere_0)


Lesenswert?

Hallo,
Vielen Dank an Lena, Daniel, Drago  und alle anderen, welche ihren 
aktiven Beitrag in diesem Forum gebracht haben.
Mein defekter Bosch Athlet BBH6P25K läuft wieder, nachdem ich die Akkus 
einzeln wieder auf die gleiche Spannung geladen habe und die neue 
Firmware mit eXtreme Burner AVR geflasht habe.
Das EEPROM lässt sich allerdings nicht löschen od. überschreiben, 
warum??? Der Staubsauger läuft trotzdem.
LG

von Teodor R. (teodor_r)


Lesenswert?

Hallo zusammen, mein Beitrag ist zwar schon etwas älter, aber euer Code 
hat meinen Staubsauger gerettet. Entschuldigt mein Deutsch, ich benutze 
Google Translate. Ich habe die Funktion `battmeas()` leicht angepasst. 
Sie lieferte fehlerhafte Werte und schaltete sich ständig ab und lud 
dann wieder auf. Hier ist die neue Funktion:
1
void battmeas(){
2
  // 1. Switch to Host Mode and LATCH FETs 
3
  // We force CHG and DSG high so the BQ doesn't "blink" the power during measurement
4
  I2C_8Bit_writeToModule(0x10, 2, 0b00000010); 
5
  I2C_8Bit_writeToModule(0x10, 1, 0b00000110); 
6
7
  // 2. Measure Current with Filtering
8
  analogReference(DEFAULT); // 3.3V Ref
9
  delay(50);                 // CRITICAL: Let ADC voltage settle
10
  
11
  long currentSum = 0;
12
  for(int i=0; i<10; i++) {  // Take 10 samples to filter out noise
13
    currentSum += analogRead(IBAT);
14
    delay(2);
15
  }
16
  
17
  float avgIbat = currentSum / 10.0;
18
  I_CHG_BRUSH = IBAT_ZERO - avgIbat;
19
  I_CHG_BRUSH = I_CHG_BRUSH * 3.3 / 1023.0 / 10.0 / 0.005;
20
21
  // 3. Robust Charging Logic (Debounced)
22
  Serial.println("----- start of cyclic measurement -------");
23
  Serial.print("I_CHG_BRUSH="); Serial.print(I_CHG_BRUSH,2);
24
  
25
  if (I_CHG_BRUSH > 0.18) charging = HIGH;      // Slightly higher threshold
26
  else if (I_CHG_BRUSH < 0.08) charging = LOW; // Lower hysteresis floor
27
  
28
  Serial.print("A -> CHARGE:"); Serial.println(charging);
29
  brush_OC = (I_CHG_BRUSH < (BRUSH_I_MAX * -1.0));
30
31
  // 4. Measure Pack Voltage
32
  analogReference(INTERNAL); // 1.1V Ref
33
  delay(50);                 // Let ADC settle again
34
  BAT = analogRead(VBAT) * 1.1 / 1023.0 * 50.0;
35
  Serial.print("U_PACK = "); Serial.print(BAT, 2); Serial.println("V");
36
37
  // 5. Measure Individual Cells (Balancing OFF for accuracy)
38
  I2C_8Bit_writeToModule(0x10, 3, 0b00000001); 
39
  I2C_8Bit_writeToModule(0x10, 4, 0b00000000); 
40
  
41
  UCELLMIN = 5.0;
42
  UCELLMAX = 0.0;
43
  for (int x = 0; x < NUM_OF_CELLS; x++) {
44
    I2C_8Bit_writeToModule(0x10, 05, x); 
45
    delay(10); // Slightly longer delay for MUX to settle
46
    UCELL = ((0.975 - analogRead(VBAT) * 1.1 / 1023.0) / 0.15);
47
    
48
    Serial.print("Ucell_"); Serial.print(x+1); Serial.print("= ");
49
    Serial.print(UCELL, 3); Serial.println("V");
50
    
51
    if (UCELL < UCELLMIN) UCELLMIN = UCELL;
52
    if (UCELL > UCELLMAX) UCELLMAX = UCELL;
53
  }
54
55
  Serial.print("Ucmin= "); Serial.print(UCELLMIN,3);
56
  Serial.print("V / Ucmax= "); Serial.print(UCELLMAX,3);
57
  Serial.print("V / delta= "); Serial.println(UCELLMAX-UCELLMIN,3);
58
59
  // 6. Re-enable Balancing if needed
60
  if (NUM_OF_CELLS == 7) {
61
    I2C_8Bit_writeToModule(0x10, 3, 0b00010011);
62
    I2C_8Bit_writeToModule(0x10, 4, 0b01111111);
63
  }
64
65
  // 7. THE SAFETY EXIT: Only go back to Standalone if we are NOT charging
66
  // This prevents the BQ from shutting down the 5V LDO while charging
67
  if (!charging) {
68
    I2C_8Bit_writeToModule(0x10, 2, 0b11000000); 
69
    Serial.println("Mode: Standalone (Economy)");
70
  } else {
71
    Serial.println("Mode: Host (Active Charging)");
72
  }
73
  
74
  Serial.println("------ end of cyclic measurement --------");
75
  t_meas = 0;
76
}

von Klaus R. (klaus2)


Lesenswert?

Danke, Teodor :)

Klaus.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.