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?
:
Bearbeitet durch User
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
:
Bearbeitet durch User
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
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....
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 ...
danke, für den Input, ich werde mich mit der Lösung zurückmelden....
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.
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.
Manfred P. schrieb: > Für solchen Kinderkram braucht man keinen Interrupt. Man setzt sich > einen Zeitstempel und vergleicht zyklisch gegen den Systemtimer. Das ist alles nur eine Frage des Geschmacks ...
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.
:
Bearbeitet durch Moderator
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.
Der ADC vom ESP8266 misst Hausnummern, nimm einen externen Analogwandler. Mit einem RC Glied die Analogspannung glätten, kann auch Wunder bewirken. Danach noch eine Mittelwertbildung und du kannst das letzte Bit sauber auflösen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.