Moin moin,
erstmal ich bin absoluter Laie bei fast allem was ich tue, warum tue ich
es trotzdem? Ich lebe in einem dritte Weltland und mein gefährliches
Halbwissen erscheint mit fast immer solider als das örtliche
Expertenwissen :-D
Damit sei auch noch kurz drauf hingewiesen, das es hier kein Problem
darstellt alles an Installationen und Bauarbeiten selber durchzuführen
und selber dran zu sterben ;-)
Jetzt zu meinem Problem:
Für meine Solaranlage habe ich eine LiFePo4 Batteriebank und insgesamt 6
Wechselrichter im 3 Phasenbetrieb installiert. Gerade an bewölkten Tagen
reicht manchmal die Sonne nicht aus um die Batterie am Abend wieder voll
zu haben. Manchmal ist auch ein zu hoher Verbrauch das Problem.
Also habe ich mir eine kleine Schaltung gebaut um meinen 3 Phasen
Generator zu starten, wenn die Batteriebank bei ca. 52 Volt ist.
Ich verwende dazu einen Arduino Uno. Die Stromversorgung kommt über die
Generatorbatterie (12 V) und wird von einem Schaltregler auf 10 Volt
begrenzt für den Hohlsteckereingang des Uno (Ich dachte es wäre
vielleicht Sinnvoll über den Linearregler zu gehen.
Die Batteriebank ist über zwei Widerstände (R1: 1MOhm, R2 100kOhm)
angeschlossen.
Außerdem gibt es zwei Schalter für den manuellen Start und Stop des
ganzen. Wobei der Stopknopf im Moment deaktiviert ist, weil der immer
wieder am "ghosten" war (besonders bei niedriger Spannung an der
Generatorbatterie)
Hier der Arduinocode:
1
constintRelaisZuendpin=19;
2
constintRelaisStartpin=18;
3
constintSpannungspin=A0;
4
constintKnopfAn=17;
5
constintKnopfAus=2;
6
intSpannung;
7
8
volatileintKnopfAusStatus=1;
9
10
voidsetup(){
11
// put your setup code here, to run once:
12
Serial.begin(9600);
13
pinMode(RelaisZuendpin,OUTPUT);
14
digitalWrite(RelaisZuendpin,HIGH);
15
pinMode(RelaisStartpin,OUTPUT);
16
digitalWrite(RelaisStartpin,HIGH);
17
pinMode(KnopfAn,INPUT_PULLUP);
18
pinMode(KnopfAus,INPUT_PULLUP);
19
// attachInterrupt(0, pin_ISR, CHANGE);
20
}
21
22
voidloop(){
23
// put your main code here, to run repeatedly:
24
// Spannung auslesen
25
Spannung=analogRead(Spannungspin);
26
// Spannung für debug and Serial
27
Serial.print(Spannung);
28
// Lesevorgänge minimieren um Fehler zu vermeiden
29
delay(10000);
30
// Vergleich der Spannung und Abfrage des Startknopfs
Probleme:
Ghosting beim Interupt (Ausknopf) Im Moment wird dann halt der
Stromausknopf betätigt um alles aus zu machen.
Starke Schwankungen bei dem Analogwert der Spannung, deswegen habe ich
schon das Delay von 10 Sek. eingebaut, weil sonst doch immer wieder ein
Wert innerhalb der Parameter auftaucht und das System den Generator
startet.
Die Zuleitung von der Batterie ist ca. 10m lang und ich habe hier schon
gelesen das diese eine Antennenfunktion haben kann und so hohe oder
niedrige Werte in das System schiebt --> Lösung ein Kondensator, aber
welcher?
Besser wäre es eins der Relais von den Wechselrichtern zu nutzen und das
als Startsignal zu nutzen (Kein Analogwert mehr) aber die Wechselrichter
sind direkt mit dem BMS der Batterie verbunden und dies überschreibt
scheinbar alle Spannungseinstellungen an den Wechselrichtern.
Perfekt: Den Arduino per RS485 mit dem BMS verbinden und den Ladezustand
der Batterie direkt auslesen. (Puh dafür bin ich doch zu sehr Laie, ich
denke ich würde es packen, aber das bräuchte viel viel Zeit)
Ok, Ich freue mich über eure Ansätze und Ideen, vielleicht gibt es ja
auch einen komplett anderen einfacheren Ansatz
Gruß, Stefan
Stefan schrieb:> um die Batterie am Abend wieder voll zu haben.
Offenkundig Inselnetz.
Warum soll der Akku voll sein, du weisst doch noch nicht, wie viel du in
der Nacht brauchst und wann die Sonne wieder kommt.
Generator starten wenn der Akku zu tief entladen wird, abschalten wenn
die Generatorlaufzeit vertretbar ist und der Akku wieder voller wurde.
Ganz voll muss er nicht, er würde den Generator wieder einschalten wenn
er wieder zu tief entladen wird.
Dazu tut es eine Tiefentladeschutzschaltung, die gibt es reihenweise für
12V als Fertigplatine aber ich wüsste jetzt keinen Link auf eine 48V
Version.
Die liefert ein Schaltsignal SO LANGE der Generator laufen sollte. Damit
er am Anfang gestartet wird, braucht es noch ein Impulsrelais, das
abschaltet wenn der Startversuch vergeblich war oder der Motor läuft.
Das alles kann man auch mit deiner schon vorhandenen Hardware des
Arduino aufbauen, mit Spannungsteiler und Relais, aber man muss es unter
Berücksichtigung von EMV Störungen bauen und dazu fehlen dir noch die
Kenntnisse. EMV lernt man in längeren Ausbildungen und es gibt Gurus mit
langjährigem Erfahrungsschatz, ist also nichts was du in 1 Absatz lernen
kannst.
Vielleicht reicht aber schon Sternverdrahtung und im Arduino den
Watchdog zu aktivieren
https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.25.2
Michael B. schrieb:> Warum soll der Akku voll sein, du weisst doch noch nicht, wie viel du in> der Nacht brauchst und wann die Sonne wieder kommt.
Nein der Akku muss natürlich nicht immer voll sein und das wäre auch
nicht die Aufgabe vom Generator. Auch eine Tiefentladung wird es nicht
geben, vorher schaltet das BMS halt alles ab.
Aber genau so weit soll es nicht kommen, deswegen soll der Generator ja
schon früher anspringen und die Batteriebank nachladen.
Er läuft dabei ungefähr eine Stunde und lädt ca. 7kWh in die
Batteriebank, außerdem übernimmt er für die Zeit jeden Verbrauch.
Die meisten Schaltungen für einen Schutz vor Tiefentladung sind nicht
vernünftig einstellbar, für einen Hinweis auf ein felxibles System wäre
ich Dankbar.
Liebe Grüße
Stefan
Edit: Die Skizze nochmal als png und nicht nur pdf
Stefan schrieb:> Skizze.png> 1,5 MB> Edit: Die Skizze nochmal als png und nicht nur pdf
Im Sinne der Forenregeln (vom Dateninhalt) ist das ein Photo - PNG ist
dafür denkbar ungeeignet.
Aaaalso.
Da es ja mehrere Probleme gibt, einzeln aufteilen und nicht alles auf
einmal.
Erstmal musst Du eine vernünftige Messung der Akkuspannung hinkriegen,
eine Anbindung über 1M-Ohm erscheint mir dafür verdammt viel, die
Störungen sind stärker.
Vielleicht auch die Steuereinheit nicht gerade in die Nähe der
Zündanlage des Generators bauen, sondern eher in die Nähe der Batterie
und den Generator von dort aus fernsteuern (Abschalteinrichtung am Ort
des Generators nicht vergessen, damit man einen ungewollten Anlauf
verhindern kann wenn man mal dran bauen muss).
Zweitens würde ich die Taster z.B. in Hardware entstören. Das bedeutet
beim AVR-Controller (für den Ardummino) den internen Pullup-Widerstand
nutzen und 100nF am Taster gegen Masse, Schalten ebenfalls gegen Masse.
Was ich noch Kacke finde: Die Relais-Ruhestellung mit High-Pegeln an den
Ausgängen. Das ist nicht die Grundeinstellung des AVR, bei jedem Reset
von dem Ding werden warscheinlich kurz die Relais anziehen bis das
Programm gestartet wurde. Bau das so, daß die Relais bei High-Pegel am
Pin aktiv sind.
Ben B. schrieb:> Erstmal musst Du eine vernünftige Messung der Akkuspannung hinkriegen,> eine Anbindung über 1M-Ohm erscheint mir dafür verdammt viel, die> Störungen sind stärker.
Jepp, sehe ich auch so, Die Widerstände Faktor 10 kleiner. (also 100k
und 10k)
Der Querstrom ist immer noch viel kleiner als die Selbstentladung der
Akkus.
Und zusätzlich parallel zu R2 einen 100nF Kondensator.
Damit sollte die Spannungsmessung deutlich besser sein.
Wichtig:
Immer eine Sache ändern und dann schauen ob dich am System etwas ändert.
Schraubst du gleichzeitig an mehreren "Schrauben" weisst du nie was eine
Änderung bewirkt hat.
Als zweites die Masseverdrahtung. Mach mal Bilder.
Wichtig ist dass die Masse sternförmig verdrahtet ist damit keine
Brummschleifen entstehen können.
Was ich bei Messungen in störanfälligen Umgebungen auch immer gerne
mache ist, die ADC-Messung nicht nur einmal auszuführen, sondern
beispielsweise 16 Messungen zusammenaddieren und die unteren 4 Bits
wegschmeißen. Man könnte es auch noch komplexer machen, z.B. 20
Messergebnisse speichern, das höchste und niedrigste Ergebnis
wegschmeißen und den Durchschnitt aus den verbliebenen errechnen.
Ben B. schrieb:> Was ich noch Kacke finde: Die Relais-Ruhestellung mit High-Pegeln an den> Ausgängen. Das ist nicht die Grundeinstellung des AVR, bei jedem Reset> von dem Ding werden warscheinlich kurz die Relais anziehen bis das> Programm gestartet wurde. Bau das so, daß die Relais bei High-Pegel am> Pin aktiv sind.
Tatsächlich ziehen die Relais nicht an wenn der Uno resettet, aber ich
weiss was du meinst und hatte mich da auch schon informiert, ich werde
das auf die ToDoListe setzen.
Ben B. schrieb:> Zweitens würde ich die Taster z.B. in Hardware entstören. Das bedeutet> beim AVR-Controller (für den Ardummino) den internen Pullup-Widerstand> nutzen und 100nF am Taster gegen Masse, Schalten ebenfalls gegen Masse.
Die Pullup habe ich ja im Code aktiviert, ich werde dann nun noch die
Kondensatoren an den Tastern nachrüsten
Ben B. schrieb:> Erstmal musst Du eine vernünftige Messung der Akkuspannung hinkriegen,> eine Anbindung über 1M-Ohm erscheint mir dafür verdammt viel, die> Störungen sind stärker.
Naja, die Empfehlung kam hier aus dem Forum bei einer Ähnlichen Frage zu
einer 48 V Batterie, es sind ja immerhin fast 60 V (Hier genau 57,6 V).
Klar kann ich die Aufteilung 1:11 auch mit kleineren Widerständen
machen, die Empfehlung für 1MOhm kam aber mit dem Argument, das der
Widerstand den Strom ausreichend begrenzt um im Fehlerfall den Uno zu
schützen.
Udo S. schrieb:> Jepp, sehe ich auch so, Die Widerstände Faktor 10 kleiner. (also 100k> und 10k)> Der Querstrom ist immer noch viel kleiner als die Selbstentladung der> Akkus.> Und zusätzlich parallel zu R2 einen 100nF Kondensator.
Danke für den Tipp! Zur Größe der Widerstände habe ich ja weiter oben
schon was geschrieben. Da der Kondensator parallel zu R2 ist, reichen
hier 25 V Festigkeit? Ist die Art des Kondensators hier egal, oder
sollte es ein Kerko sein?
Udo S. schrieb:> Als zweites die Masseverdrahtung. Mach mal Bilder.> Wichtig ist dass die Masse sternförmig verdrahtet ist damit keine> Brummschleifen entstehen können
Alle "Gnd" Verbindungen gehen direkt zum Uno, damit sind alle
verfügbaren Pins ausgenutzt :-D Einzig die beiden Taster teilen sich
einen GndPin
Wäre es besser nur von einem Pin Sternförmig zu verteilen?
Ben B. schrieb:> Was ich bei Messungen in störanfälligen Umgebungen auch immer> gerne> mache ist, die ADC-Messung nicht nur einmal auszuführen, sondern> beispielsweise 16 Messungen zusammenaddieren und die unteren 4 Bits> wegschmeißen. Man könnte es auch noch komplexer machen, z.B. 20> Messergebnisse speichern, das höchste und niedrigste Ergebnis> wegschmeißen und den Durchschnitt aus den verbliebenen errechnen.
Ja super Tipp, darauf bin ich überhaupt noch nicht gekommen, aber das
gefällt mir wirklich gut um stabilere "Messwerte" zu bekommen.
Vielen Dank für all eure Tipps, ich werde mich in der kommenden Woche
mal dran machen und hier berichten.
Gruß, Stefan
Edit: Fix
> Naja, die Empfehlung kam hier aus dem Forum bei einer Ähnlichen> Frage zu einer 48 V Batterie, es sind ja immerhin fast 60 V> (Hier genau 57,6 V). Klar kann ich die Aufteilung 1:11 auch mit> kleineren Widerständen
Die Frage ist halt das Umfeld, hat man da viele Störungen durch einen
leistungsstarken Wandler oder sogar eine Zündanlage, dann lege ich das
gerne etwas "robuster" aus, heißt mit mehr Querstrom.
Was ich gerne als Basis nehme, 10k Ohm als unteren
Spannungsteiler-Widerstand und die interne 2,56V Referenz des AVR. Gegen
die Betriebsspannung messen ist immer die Frage wie genau die ist oder
wie stabil, das führt nur zu Problemen wenn man hier "wird schon
reichen" annimmt.
Heißt, es sind 256µA Messstrom bei Vollausschlag, sollte reichen. 60V
maximale Messspannung (weiß nicht ob Dir das reicht, ist ziemlich nahe
an der Ladeendspannung, aber die Genauigkeit des ADC wird nicht besser
wenn man hier zuviel will, daher bleibe ich mal bei 60V... genaue
Messwertausgabe machst Du ja auch nicht) beutet 256µA bei 60V, macht gut
234kOhm Gesamtwiderstand, minus die 10k unten bleiben gut 224k für den
oberen Teilerwiderstand. Der nächstgrößere aus der E-48 Reihe wären
226k, das ist relativ dicht dran, heißt der 10k sollte nicht stark nach
oben vom Sollwert abweichen (sonst wäre der nächste 237k oder man nimmt
was aus E-96 oder baut sich ~230k aus 226k und 4,7k in Reihe). 236k
Gesamtwiderstand wären 60,4V maximale Messspannung, passt.
Verlustleistung bei 60,4V wären 15,5mW, das ist fernab von jedem
Problem.
Als Kondensator reicht ein 100nF Folienkondensator, Keramik geht evtl.
auch, nehme ich an der Stelle aber ungerne, weil Erschütterungen durch
den Piezo-Effekt gerne mal die Spannung um einige 10mV verschieben
können.