Charging current is displayed incorrectly.

SefanH

Well-known member
In the PFOD-App is displayed 0,5A and my multimeter shows 1A. The Voltage is correct. Where can i change this?
 
What kind of platform do you use ?

in the code the bat charge current is read here.
Code:
  if (powerboard_I2c_line_Ok) {
      chgvolt = ChargeIna226.readBusVoltage() ;
      curramp = ChargeIna226.readBusPower(); //  ?? sense don't work
      batvolt = MotRightIna226.readBusVoltage() ;
      batvolt = batvolt + D5VoltageDrop;
      readingDuration = millis() - nextTimeBattery + 500;
      if (readingDuration > 30 ) {  //leave 30 ms to I2C reading
        ShowMessage("Error in INA226 Bat Voltage Timeout reading I2C : ");
        ShowMessageln(readingDuration);
      }
    }
    if (chgvolt != 0) {
      curramp = curramp / chgvolt;
    }
    else
    {
      curramp = 0;
    }
    double accel = 0.05;  //filter percent
    if (abs(batVoltage - batvolt) > 8)   batVoltage = batvolt; else batVoltage = (1.0 - accel) * batVoltage + accel * batvolt;
    if (abs(chgVoltage - chgvolt) > 8)   chgVoltage = chgvolt; else chgVoltage = (1.0 - accel) * chgVoltage + accel * chgvolt;
    if (abs(chgCurrent - curramp) > 0.4) chgCurrent = curramp; else chgCurrent = (1.0 - accel) * chgCurrent + accel * curramp; //Deaktiviert für Ladestromsensor berechnung
    //bber30 tracking not ok because reduce the speed loop with this but can check the chgvoltage

if you really want to have a perfect value you need to add an offset to chgCurrent

replace the line for a 0.5A offset
if (abs(chgCurrent - curramp) > 0.4) chgCurrent = 0.5 + curramp; else chgCurrent = 0.5 + ((1.0 - accel) * chgCurrent + accel * curramp);


BUT.
it's better to have a BMS on your battery and use a true 29.4V battery Li-Ion charger and not a simple 24V power simply to power the charging station.

The sense you see in the INA226 battery is the total sense of the PCB + the battery charging process and don't need to have a kind of precision but only a reference for software to stop charging cycle when you don't use a li-ion charger.

So the process i use to set the battery optimum charge cycle .
Always use a BMS on the battery and a li-ion charger with a green/red led.
Use mower until the battery is 24.00V
Remove mower battery and charge it directly with the charger and no PCB connected.
Try to find the duration for the charger led to change from red to green. (certainly 3 or 4 hours according your size battery and charger).

if the duration is 3.5 Hours.
you need to repeat the cycle with the mower fully build.
Use mower until 24.00V
Put mower in the charging station and wait 3.5Hours , now read the chgCurrent into arduremote and adjust the value :
Battery is fully charged if current is below to this new sense to stop charging after correct duration.

You can also set
Battery is fully charged if current is below to 0.05 to leave the charger manage the full charging process alone,
 
Hallo, ich habe mal mit einem inatest sketch herumgespielt und der zeigt alles ganz gut an könnte mann den nicht in den Wifisketch von Stefan einfügen?!
ich habe leider nicht so viel Ahnung davon. deswegen kann es sein das es auch alles quatsch ist. aber ich finde der sketch liest die Inas ganz gut aus!?


erstes Bild mit perimeterschleife angesteckt beim 2. habe ich sie abgezogen um zu testen....
 

Attachments

  • Screenshot 2023-06-25 141511.jpg
    Screenshot 2023-06-25 141511.jpg
    53.3 KB · Views: 10
  • Screenshot 2023-06-25 141540.jpg
    Screenshot 2023-06-25 141540.jpg
    53.4 KB · Views: 7
  • Screenshot 2023-06-25 142315.jpg
    Screenshot 2023-06-25 142315.jpg
    228.7 KB · Views: 7
Den hatte ich auch mal dort eingebaut. Hatte auch ganz gut funktioniert.

Bei den Inas wird ja nur der Spannungsabfall am Shunt gemessen und der Spannungsabfall über dem Verbraucher. Aus den Werten wird dann der Rest berechnet.

Die Frage ist: Braucht man so eine Bibliothek oder nutzt man lieber nur das was man wirklich benötigt?
 
Den hatte ich auch mal dort eingebaut. Hatte auch ganz gut funktioniert.

Bei den Inas wird ja nur der Spannungsabfall am Shunt gemessen und der Spannungsabfall über dem Verbraucher. Aus den Werten wird dann der Rest berechnet.

Die Frage ist: Braucht man so eine Bibliothek oder nutzt man lieber nur das was man wirklich benötigt?
Hmm ja auch wieder war, nur leider bekomme ich noch immer noch kein Currentwert vom perimeter angezeigt, sodas er immer wieder sagt "wire is cut". was aber nicht der fall ist. Er bekommt nur keine werte wie es aussieht. Aber rein vom Platz her dürfte es ja kein Problem sein auf dem esp32 der hatt bestimmt noch Reserven.

Da hätte ich noch eine frage wäre es möglich den Esp auch als Standalone zu beteiben. Ich habe kein Wlan im Garten, so könnte mann sich mit dem Handy direkt verbinden. oder über Bluetooth ähnlich wie beim Robi!?
 
Theoretisch ist es möglich dass die Station auf Access Point umschaltet.
Kein current-wert? Die Brücke hast du eingelötet?
 
Nur noch mal zum Verständnis @Richtel,
der Sketch für den INA, welches du oben gepostet hast, funktioniert auf der SenderPCB und zeigt dir die Werte an?
Der Sender Sketch von @SefanH, zeigt dir keine Werte an?
 
Nur noch mal zum Verständnis @Richtel,
der Sketch für den INA, welches du oben gepostet hast, funktioniert auf der SenderPCB und zeigt dir die Werte an?
Der Sender Sketch von @SefanH, zeigt dir keine Werte an?
jep hab ihn da drauf geflasht und es funzt wunderbar....

genau der von stefan zeigt mir nur im browser die werte an leider nur Volt und keine Ströme und eigentl garnicht auf dem dem kleinem oled display bzw. Serial Monitor.
 

Attachments

  • Screenshot 2023-06-25 195809.jpg
    Screenshot 2023-06-25 195809.jpg
    78.6 KB · Views: 4
  • Screenshot 2023-06-25 195751.jpg
    Screenshot 2023-06-25 195751.jpg
    97.6 KB · Views: 5
  • Screenshot 2023-06-25 195715.jpg
    Screenshot 2023-06-25 195715.jpg
    111.2 KB · Views: 8
  • 20230625_195509[1].jpg
    20230625_195509[1].jpg
    563 KB · Views: 7
Last edited:
Theoretisch ist es möglich dass die Station auf Access Point umschaltet.
Kein current-wert? Die Brücke hast du eingelötet?
brücke auf den inas? ja hatt er, einmal offen lassen für die Perimeter Wire INA für 0x40 und eine Setzen bei der Charge INA für 0x44
 
Last edited:
OK also funktioniert die Hardware und es ist ein Software Problem.
Ich würde erst einmal das LCD weg lassen und mit einem INA starten, wenn dort die Ausgabe OK ist, den zweiten drauf packen und dann weiter gucken. Und als letztes den LCD.
 
Hast du "USE_PERI_CURRENT 1" angegeben?

Du kannst auch diese Zeilen, fast am ende des Scriptes, aktivieren um den Spannungsabfall am Perimetershunt anzeigen zu lassen. Wenn der Wert unter eine bestimmte Schwelle fällt, wird davon ausgegangen dass der Draht unterbrochen ist.


// sResponse += "V<br>PeriShuntVoltage= "; // Shows the PeriShuntVoltage
// sResponse += PeriShuntVoltage;
// sResponse += "m";
 
Hast du "USE_PERI_CURRENT 1" angegeben?

Du kannst auch diese Zeilen, fast am ende des Scriptes, aktivieren um den Spannungsabfall am Perimetershunt anzeigen zu lassen. Wenn der Wert unter eine bestimmte Schwelle fällt, wird davon ausgegangen dass der Draht unterbrochen ist.


// sResponse += "V<br>PeriShuntVoltage= "; // Shows the PeriShuntVoltage
// sResponse += PeriShuntVoltage;
// sResponse += "m";
Ok super, das teste ich morgen mal aus...
Danke schön...
 
Sonst musst du mal PERI_CURRNET_MIN auf 0 setzen. Dann wird der Wert nicht auf 0 gesetzt!
 
Sonst musst du mal PERI_CURRNET_MIN auf 0 setzen. Dann wird der Wert nicht auf 0 gesetzt!
So ich habe mal Peri_Current_Min auf 0 gesetzt, jetzt kommt kein "wire is cut" mehr aber nach wie vor auch keine Strommessdaten, leider nur volt...
Ich habe auch diese werte
"
// sResponse += "V<br>PeriShuntVoltage= "; // Shows the PeriShuntVoltage
// sResponse += PeriShuntVoltage;
// sResponse += "m";
"
mal auskommentiert aber leider auch da nichts....
 

Attachments

  • Screenshot 2023-06-26 221234.jpg
    Screenshot 2023-06-26 221234.jpg
    90.5 KB · Views: 7
  • Screenshot 2023-06-26 222340.jpg
    Screenshot 2023-06-26 222340.jpg
    112.9 KB · Views: 11
Ich habe den Code soweit geändert, dass der ESP32 einen Accesspoint öffnet, wenn er sich nicht mit dem Angegebenen Netzwerk verbinden kann. Der Accesspoint öffnet mit eben diesen Daten (SSID, Passwort, IP-Adresse).
Die Bibliothek INA226_WE wurde jetzt wieder integriert. ArduinoOTA kann genutzt werden. Das Display muss konfiguriert werden, dann sollte es auch laufen.

Wer kann - Bitte testen - Danke.


I modified the code so that the ESP32 opens an access point when it cannot connect to the specified network. The access point opens with this data (SSID, password, IP address).

The INA226_WE library has now been integrated again. ArduinoOTA can be used. The display needs to be configured, then it should work.



Who can - please test - thanks.
 
Hier ist nochmmal ein Testsketch für @Richtel

Standart "Continous" Sketch aus den Beispielen, nur erweitert auf ein 2. Modul!

Wenn das nicht läuft, dann weiß ich auch nicht mehr?!?
 

Attachments

  • Continuous_INA226_WE_two_Moduls.zip
    1.8 KB · Views: 0
Last edited:
Hier ist nochmmal ein Testsketch für @Richtel

Standart "Continous" Sketch aus den Beispielen, nur erweitert auf ein 2. Modul!

Wenn das nicht läuft, dann weiß ich auch nicht mehr?!?
Korrekt,
nur in zeile 27 noch wire begin angepasst...
Wire.begin(22,21); // SDA, SCL if different from original

das scheint gut zu laufen.... (y)
 

Attachments

  • Screenshot 2023-07-02 131704.jpg
    Screenshot 2023-07-02 131704.jpg
    124.7 KB · Views: 8
Last edited:
Bei Richtel scheint es nun zu laufen. Scheinbar war ein IMU defekt?!? Es konnte nur der Spannungsabfall am Shunt ausgelesen werden, der Strom jedoch nicht.
Die Software läuft nun soweit. Welche Software nutzt du @Sascha ?
 
Back
Top