Hallo liebe Wissenden ;-) Ich lese mittels ESP32 einen Stromzähler per RS485 aus, Details siehe unten. Zwischen GPIO13 des ESP und GND hängt ein Taster. Ein Druck auf diesen Taster triggert einen Interrupt, der über einen entsprechenden Handler eine Aktion ausführt. Funktioniert. Aber: mehrmals am Tag wird der handler getriggert, OHNE dass jemand den Taster gedrückt hätte... Jemand eine Idee, wie ich dieses Problem sinnvoll analysieren kann? ESP32: https://www.wemos.cc/en/latest/d32/d32_pro.html RS485: https://eckstein-shop.de/WaveshareRS485communicationboard2CSP3485onboard2C33V Stromzähler: https://www.panda-solar.de/Victron-ET112-Energy-Meter.html Codeschnipsel, der den Interrupt setzt: pinMode(reset_pin, INPUT_PULLUP); attachInterrupt(reset_pin, reset_request_handler, FALLING);
:
Bearbeitet durch User
Keith S. schrieb: > Jemand eine Idee, wie ich dieses Problem sinnvoll analysieren kann? Wozu analysieren? Du musst immer mit Störimpulsen in deine Leitung rechnen. Programmiere eine vernünftige Tasterentprellung. Dann kann es dir egal sein.
Andreas M. schrieb: > Wie wäre es mit einem Schaltplan? Habe ich gerade nicht verfügbar. Ist aber trivial: GPIO13 -> Taster -> GND. GND verbindet GND des RS485 und des ESP, der wird über USB gespeist.
Der Internet PullUp Widerstand ist recht hochohmig, bietet keinen Schutz vor Radiowellen. Benutze einen externen Widerstand mit 2,2 kΩ, dann hast du sehr wahrscheinlich Ruhe. In ganz harten Fällen kannst du noch einen 10nF Kondensator zwischen GPIO und GND packen.
Wolfgang schrieb: > Wozu analysieren? Du musst immer mit Störimpulsen in deine Leitung > rechnen. > Programmiere eine vernünftige Tasterentprellung. Dann kann es dir egal > sein. Mir ist klar, dass ein Tasterdruck ohne Entprellung ggfs. mehrfach den handler triggert. Aber "Entprellung", um Fehlerkennung zu verhindern ist mir neu. Wie denn? Eine Mindestlänge fordern?
Keith S. schrieb: > Hast Du dafür Beispielcode? Schau dir die Methode von Peter an, vor allem die Erklärungen dazu https://www.mikrocontroller.net/articles/Entprellung#Debounce-Makro_von_Peter_Dannegger
Keith S. schrieb: > Hast Du dafür Beispielcode? Gibt ja ggfs. auch längere Störimpulse. Woher sollen die kommen? ESD liegt eher im Nanosekundenbereich. Du könntest den Taster regelmäßig, z.B. im 10ms-Takt o.ä. abfragen. Wenn du ein paarmal hintereinander "gedrückt" liest, wird da wohl was dran sein und du kannst deine Aktion auslösen.
Wow - vielen Dank Euch für die vielen Tipps in dieser kurzen Zeit! Damit komme ich auf jeden Fall weiter. Werde vorsichthalber sowohl auf externen Pull-up wechseln als auch die Mindestlänge implementieren. Nochmal: vielen Dank und friedliche Feiertage!
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.