mal wieder ein Zwischenstand von dieser Geschichte...:
Grundsätzlich funktioniert es jetzt erst mal, teilweise.... Danke an dieser Stelle an die Helfer.
Der Fehler sass nätürlich mal wieder vor dem Bildschirm.
Ich hatt im sketch die Vergleichswerte falsch (auf die Spannung vor dem Spannungsteiler statt nach ihm), also viel zu hoch, gesetzt.
Nachdem ich die Werte korrigiert habe, wird jetzt der Ladestrom bei 2,55V Zellenspannung getrennt und bei 2,25 wieder eingeschaltet.
Allerdings leider nur an den Zellen die am A1, A2, A5 und A6 hängen.
An A3 und A4 misst der Arduino scheinbar nichts, denn A5 schaltet bei einer Wert wie wenn "spanndiv4" 0 wäre, A6 schaltet dann wieder richtig.
Was auch für das Fehelen eines Messwertes spricht: Die "Unterspannungs Sicherung" reagiert auch unmittelbar nach dem Einschalten des Arduino.
Spannung liegt an A3 und A4 aber jeweils die Richtige an, das habe ich wiederholt nachgemessen.
Auch den sketch habe ich jetzt wiederholt durch ohne noch einen Fehler (außer der unprofessionellen Struktur) zu erkennen...
/*
Experimentelle Laderegelung für "12V" LTO Akkus.
Die Regelung misst jede Zelle einzeln und schaltet den Ladestrom bei Erreichen der Ladeschlussspannung ab.
Es wird jede Zelle separat geladen, weshalb auch die Zellenspannung separat gemessen und der Ladestrom
für jede Zelle separat geschalten wird.
*/
const byte voltin1 = A1; // input Pin für Spannung Zelle 1
const byte voltin2 = A2; // input Pin für Spannung Zelle 2
const byte voltin3 = A3; // input Pin für Spannung Zelle 3
const byte voltin4 = A4; // input Pin für Spannung Zelle 4
const byte voltin5 = A5; // input Pin für Spannung Zelle 5
const byte voltin6 = A6; // input Pin für Spannung Zelle 6
//const byte voltinall = A7; // input Pin für Spannung ganze Batterie
const int lssp = 130; // digitalwert für Ladeschlussspannung
const int lwasp = 114; // digitalwert für wiederaufnahme des Ladevorgangs
const int cutoffsp = 100; // digitalwert für Unterspannungs Abschaltung
int voltzelle1 = 120; // Startwerte setzen
int voltzelle2 = 120;
int voltzelle3 = 120;
int voltzelle4 = 120;
int voltzelle5 = 120;
int voltzelle6 = 120;
void setup() {
digitalWrite(2, HIGH);
pinMode(2, OUTPUT);
digitalWrite(3, HIGH);
pinMode(3, OUTPUT);
digitalWrite(4, HIGH);
pinMode(4, OUTPUT);
digitalWrite(5, HIGH);
pinMode(5, OUTPUT);
digitalWrite(6, HIGH);
pinMode(6, OUTPUT);
digitalWrite(7, HIGH);
pinMode(7, OUTPUT);
digitalWrite(10, HIGH);
pinMode(10, OUTPUT);
}
void loop() {
int spanndiv1 = 0; // Spannungs Ausgleichswerte auf 0 setzen
int spanndiv2 = 0;
int spanndiv3 = 0;
int spanndiv4 = 0;
int spanndiv5 = 0;
voltzelle1 = analogRead(voltin1); //Spannung an A 1 auslesen
spanndiv1 = voltzelle1; // ausgelesenen Wert merken
voltzelle2 = analogRead(voltin2); //Spannung an A 2 auslesen
spanndiv2 = voltzelle2;
voltzelle2 = voltzelle2 - spanndiv1;
voltzelle3 = analogRead(voltin3); //Spannung an A 3 auslesen
spanndiv3 = voltzelle3;
voltzelle3 = voltzelle3 - spanndiv2;
voltzelle4 = analogRead(voltin4); //Spannung an A 4 auslesen
spanndiv4 = voltzelle4;
voltzelle4 = voltzelle4 - spanndiv3;
voltzelle5 = analogRead(voltin5); //Spannung an A 5 auslesen
spanndiv5 = voltzelle5;
voltzelle5 = voltzelle5 - spanndiv4;
voltzelle6 = analogRead(voltin6); //Spannung an A 6 auslesen
voltzelle6 = voltzelle6 - spanndiv5;
if (voltzelle1 >= lssp) digitalWrite(2, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle1 <= lwasp) digitalWrite(2, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle1 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
if (voltzelle2 >= lssp) digitalWrite(3, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle2 <= lwasp) digitalWrite(3, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle2 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
if (voltzelle3 >= lssp) digitalWrite(4, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle3 <= lwasp) digitalWrite(4, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle3 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
if (voltzelle4 >= lssp) digitalWrite(5, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle4 <= lwasp) digitalWrite(5, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle4 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
if (voltzelle5 >= lssp) digitalWrite(6, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle5 <= lwasp) digitalWrite(6, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle5 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
if (voltzelle6 >= lssp) digitalWrite(7, LOW); //Schaltet bei Ladeschlussspannung den Ladestrom ab
if (voltzelle6 <= lwasp) digitalWrite(7, HIGH); //Schaltet bei Wiederaufnahmespannung den Ladestrom an.
if (voltzelle6 <= cutoffsp) digitalWrite(10, LOW); //Nimmt bei Unterspannung einer Zelle die Last von der Batterie.
}