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);
Wie wäre es mit einem Schaltplan?
Gast
#7291372
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.
Gast
#7291394
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?
Gast
#7291397
Keith S. schrieb: > Eine Mindestlänge fordern? Genau das
Gast
#7291400
Keith S. schrieb: > Wie denn? Eine Mindestlänge fordern? Ja, so macht man das normalerweise.
Wolfgang schrieb: > Genau das Hast Du dafür Beispielcode? Gibt ja ggfs. auch längere Störimpulse.
Gast
#7291406
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
Gast
#7291408
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!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.