Steuerung Batterie oder Netz.ESP8266

OP (Firma: Solarkraftzwerg) #7511707
Lesenswert?

ESP8266

Ich möchte eine Hysterese für einen Umschaltzeitpunkt programmieren, wobei die Schwellwerte: < 11,1V und > 12V betragen.

Aber Schwankungen sollten abfangen sein, d.h. der Schwellwert sollte ca. 2min. über, oder unterschritten sein bevor "digital.print" HIGH oder LOW gesetzt wird.

Kann mir jemand einen Tipp geben, wie ich das recht einfach umsetzen kann?

#7511714
Lesenswert?

Wie wird denn die Spannung gemessen?

Kannst du die Schwellwert-Überprüfung nicht in Software mit einem zyklisch (z.B. alle 100msec) ausgeführten Programmabschnitt erledigen? Da drin dann zwei Zählvariablen bedienen und bei Endwert den Pin entsprechend setzen.

Es empfiehlt sich, außerhalb der genannten Grenzen noch weitere Grenzen zum unverzögerten Zustandswechsel zu nutzen.

Was ein digital.print ist, weiß ich leider nicht.

mfg mf

#7511717
Lesenswert?

Peter K. schrieb:

Kann mir jemand einen Tipp geben, wie ich das recht einfach umsetzen kann?

Also, das ganze soll mit einem ESP8266 umgesetzt werden? Zunächst mußt Du einen passenden Spannungsteiler einrichten um 10 V bis 14 V messen zu können. Und dann mußt Du nur entsprechend auf Deine Meßwerte reagieren. Im einfachsten Fall wird das eine IF-Abfrage in Schleife sein. Wo ist das Problem? mfg Klaus

OP (Firma: Solarkraftzwerg) #7511725
Lesenswert?

Ich bekomme den Messwert über einen Spannungsteiler auf AnalogIN.... das hab ich schon, ich suche nur noch nach einer "schlanken Lösung" um erst nach einem Zeitraum von ca. 2 min zu Schalten um Mess-Spannungs-Schwankungen die durch Lasten mit hohem Anlaufstrom ausgelöst werden auszuschließen.

Ja klar eine "If Abfrage Schleife, ich möchte aber erst schalten wenn die Schwellen stabil unter oder überschritten werden....

#7511726
Lesenswert?

Peter K. schrieb:

Aber Schwankungen sollten abfangen sein, d.h. der Schwellwert sollte ca. 2min. über, oder unterschritten sein bevor "digital.print" HIGH oder LOW gesetzt wird.

Die Spannung wird mit einem ADC erfaßt. Entweder ständig in der Mainloop machen, oder via ADC-Interupt beim Schwellwert feuern lassen. Wenn Schwellwerte über-/unterschritten werden, startest Du einen Timer, der nach 2min die Print-Routine auslöst (Timerinterupt). Wenn vor Ablauf der zwei Minuten die Schwellwerte in der jeweils anderen Richtung überschritten werden, wird der Timer zurückgesetzt und gestoppt. Mußt Du jetzt nur noch in Software gießen ...

#7511743
Lesenswert?

Peter K. schrieb:

Ich möchte eine Hysterese für einen Umschaltzeitpunkt programmieren, wobei die Schwellwerte: < 11,1V und > 12V betragen.

Dann musst du unterschiedliche Schwellwert verwenden. Umschaltung auf High bei Überschreitung von 12.0V, umschaltung auf Low bei Unterschreitung von 11,1V.

Aber Schwankungen sollten abfangen sein, d.h. der Schwellwert sollte ca. 2min. über, oder unterschritten sein bevor "digital.print" HIGH oder LOW gesetzt wird.

Dazu musst du deine Daten Filtern. Wie ein geeignetes Filter aussieht, hängt davon ab, wie deine Daten schwanken (Rauschen, Spikes, ...), d.h. was die herausfiltern willst.

#7511783
Lesenswert?

Jens G. schrieb:

Wenn Schwellwerte über-/unterschritten werden, startest Du einen Timer, der nach 2min die Print-Routine auslöst (Timerinterupt).

Für solchen Kinderkram braucht man keinen Interrupt. Man setzt sich einen Zeitstempel und vergleicht zyklisch gegen den Systemtimer.

Es macht dabei auch Sinn, mehrere Messungen zu machen und den Mittelwert zu bilden, Oversampling genannt. Der ESP steht in den Ruf, eingermaßen wackelige Werte zu liefern.

Moderator (Firma: Titel) Persönliche Seite #7511911
Lesenswert?

Peter K. schrieb:

Aber Schwankungen sollten abfangen sein, d.h. der Schwellwert sollte ca. 2min. über, oder unterschritten sein bevor "digital.print" HIGH oder LOW gesetzt wird.

Diese Spec hat ein leicht erkennbares "Loch". Was sollte dann in so einem Fall passieren:

1
15V . . . ----         -         -         -         -         ---- . . .
2
10V           |       | |       | |       | |       | |       |
3
5V             -------   -------   -------   -------   -------
4
0V
5
t(min)   0    1    2    3    4    5    6    7    8    9   10   11   12

Also wenn die Spannung im Mittel über lange Zeit die Grenze klar unterschreitet, aber eben niemals länger als 2 Minuten?

Abhilfe: simple Mittelwertbildung mit langer Zeitkonstante und dazu die Hysterese. Dann tauchen zwar die selbst ausgedachten und gewünschten 2 Minuten nirgends auf, aber das Verhalten "Schwankungen sollten abfangen sein" ist wie gewollt.

OP (Firma: Solarkraftzwerg) #7522814
Lesenswert?

Danke für die "Beiträge" die Mittelwert Bildung ist die Lösung!

// Mittelt ADC-Werte zur besseren Stabilität der ADC-Reading. // Es werden Samples aufeinanderfolgende Messwerte aufgenommen // Der jeweils höchste und niedrigste wird verworfen. // Der Messwert ist der Mittelwert aus den Samples-2 verbliebenen Werten. // Der Messwert wird anschließend gegen die eingestellte Hysterese geprüft.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren