Moin,
ich versuche mit einem ESP8266 (nodemcu amica v2) meinen Gaszähler
auszulesen.
Ich programmiere über die Arduino IDE und versuche den Wert über MQTT zu
verschicken.
Ich habe einen Reed-Kontakt an Pin 0 (mit Pullup) und GND angeschlossen.
Das Programm sieht wie folgt aus:
Auf dem Schreibtisch funktioniert das auch wunderbar.
Nur am Gaszähler nicht.
Den Gaszähler habe ich mit einem Logic Analyser überprüft. Er gibt einen
2ms Impuls alle 0,01m3 aus.
Warum erkenne ich den Impuls nicht mit dem ESP? Was muss ich einstellen?
Vielen Dank und Gruß
Was für einen Impuls gibt der Gaszähler aus? Spannung, Strom, Licht?
Wie soll das ein Reed-Kontakt erkennen können? Oder macht der Gaszähler
wirklich ein wechselndes Magnetfeld? Ist das dann stark genug, um den
Reed-Kontakt zu schalten (ich glaube nicht, dass der in 2ms geschaltet
hat.)
ESP_FR schrieb:> IRAM_ATTR
Falls dein Arduino core älter als 3.0.0 ist, musst du ICACHE_RAM_ATTR
verwenden.
> Den Gaszähler habe ich mit einem Logic Analyser überprüft.> Er gibt einen 2ms Impuls alle 0,01m3 aus.> Warum erkenne ich den Impuls nicht mit dem ESP?
Messe die Spannungspegel am Eingang des ESP gegen GND. Vielleicht sind
sie in einem Grenzbereich wo es nicht zuverlässig funktioniert.
Hast du einen Pull-Up Widerstand am Reed Kontakt? Da ist zwar auch die
blaue LED mit dran, aber die zieht den Pin nicht hoch genug, um einen
eindeutigen HIGH Pegel zu geben.
Ich würde mal innerhalb des Interrupt-Handlers eine weitere LED toggeln,
um zu sehen, oder der überhaupt aufgerufen wird.
Ist deine Stromversorgung stark genug und stabil?
ESP_FR schrieb:> Auf dem Schreibtisch funktioniert das auch wunderbar.> Nur am Gaszähler nicht.>> Den Gaszähler habe ich mit einem Logic Analyser überprüft. Er gibt einen> 2ms Impuls alle 0,01m3 aus.>> Warum erkenne ich den Impuls nicht mit dem ESP? Was muss ich einstellen?>> Vielen Dank und Gruß
Aussagekräftiges Foto vom Aufbau?
>Was für einen Impuls gibt der Gaszähler aus? Spannung, Strom, Licht?>Wie soll das ein Reed-Kontakt erkennen können? Oder macht der Gaszähler>wirklich ein wechselndes Magnetfeld? Ist das dann stark genug, um den>Reed-Kontakt zu schalten (ich glaube nicht, dass der in 2ms geschaltet>hat.)
Das ist so üblich, die mit einem Reed-Kontakt auszulesen.
Ich gebe dir recht, die 2ms sind sportlich. Ich kann dazu aber leider
auch nichts im Netz finden.
>Falls dein Arduino core älter als 3.0.0 ist, musst du ICACHE_RAM_ATTR>verwenden.
Ich müsste 3.0.1 haben. Das prüfe ich aber noch einmal.
>Messe die Spannungspegel am Eingang des ESP gegen GND. Vielleicht sind>sie in einem Grenzbereich wo es nicht zuverlässig funktioniert.>Hast du einen Pull-Up Widerstand am Reed Kontakt? Da ist zwar auch die>blaue LED mit dran, aber die zieht den Pin nicht hoch genug, um einen>eindeutigen HIGH Pegel zu geben.
Das prüfe ich noch einmal bzw. probiere es aus.
Wie gesagt, der Aufbau funktioniert ja auf dem Schreibtisch. Nur am
Zähler bekommt er die Impulse nicht mit.
Danke und Gruß
ESP_FR schrieb:> Wie gesagt, der Aufbau funktioniert ja auf dem Schreibtisch. Nur am> Zähler bekommt er die Impulse nicht mit.
Trenne dich von diesem Gedanken. Er verleitet dich zu der Annahme,
keinen Fehler gemacht zu haben. Doch wenn das wahr wäre, würde die
Schaltung funktionieren. Du hast einen Fehler gemacht. Mach deinen Kopf
frei dafür, damit du ihn finden kannst. Trenne dich von offensichtlich
falschen Annahmen, die deine Gedanken in die falsche Richtung leiten.
Stefan ⛄ F. schrieb:> Trenne dich von diesem Gedanken
Da hast du natürlich Recht.
Stefan ⛄ F. schrieb:> Messe die Spannungspegel am Eingang des ESP gegen GND. Vielleicht sind> sie in einem Grenzbereich wo es nicht zuverlässig funktioniert.
Habe 3,3V mit dem Multimeter gemessen.
Stefan ⛄ F. schrieb:> Hast du einen Pull-Up Widerstand am Reed Kontakt? Da ist zwar auch die> blaue LED mit dran, aber die zieht den Pin nicht hoch genug, um einen> eindeutigen HIGH Pegel zu geben.
Ist die blaue LED nicht an GPIO 16 (D0)? GPIO 0 müsste der Taster sein,
oder?
Einen externen Pull-Up Widerstand muss ich gleich mal einlöten und
ausprobieren.
ESP_FR schrieb:> Habe 3,3V mit dem Multimeter gemessen.
Und die Werte gehen nur dich etwas an? So können wir nicht gut helfen.
ESP_FR schrieb:> Ist die blaue LED nicht an GPIO 16 (D0)?
Ja, das ist der Pin, wo du den Reed-Kontakt angeschlossen hast. Oder
doch nicht?
ESP_FR schrieb:> GPIO 0 müsste der Taster sein, oder?
Meinst du den "Flash" Taster für den Firmware Upload? Der hängt an GPIO
0 (D3) und hat mit deinem Problem nichts zu tun.
Stefan ⛄ F. schrieb:> Und die Werte gehen nur dich etwas an? So können wir nicht gut helfen.
Ich verstehe nicht ganz was meinst. Ich sollte am Eingang vom ESP gegen
Masse messen. Dort liegen 3,3V an. Welche Werte meinst du denn?
Stefan ⛄ F. schrieb:> ESP_FR schrieb:>> Ist die blaue LED nicht an GPIO 16 (D0)?>> Ja, das ist der Pin, wo du den Reed-Kontakt angeschlossen hast. Oder> doch nicht?>> ESP_FR schrieb:>> GPIO 0 müsste der Taster sein, oder?>> Meinst du den "Flash" Taster für den Firmware Upload? Der hängt an GPIO> 0 (D3) und hat mit deinem Problem nichts zu tun.
Der Reed-Kontakt ist an GPIO 0 angeschlossen. So steht es ja auch im
Quelltext. Und laut Schematic ist an diesem Pin ein Pull-up Widerstand
von 12k verbaut.
ESP_FR schrieb:> Stefan ⛄ F. schrieb:>> Und die Werte gehen nur dich etwas an? So können wir nicht gut helfen.>> Ich verstehe nicht ganz was meinst. Ich sollte am Eingang vom ESP gegen> Masse messen. Dort liegen 3,3V an. Welche Werte meinst du denn?
Beim Auslösen des Reed-Kontakts, messe ich natürlich 0V. Falls du das
wissen wolltest.
ESP_FR schrieb:> Ich verstehe nicht ganz was meinst. Ich sollte am Eingang vom ESP gegen> Masse messen. Dort liegen 3,3V an. Welche Werte meinst du denn?
Der Kontakt mus zwei eindeutige Werte liefern (LOW und HIGH), sonst ist
klar dass das nicht funktioniert. 3,3 Volt für High sind gut, aber wie
sieht der Low Pegel aus? So kurze Impulse wirst du wohl mit einem
Oszilloskop messen müssen.
Wenn du keins hast und Geld sparen musst, kaufe dir ein DSO150. Diese
Spielzeuge sind immer noch viel nützlicher, als gar keins zu haben.
ESP_FR schrieb:> Beim Auslösen des Reed-Kontakts, messe ich natürlich 0V. Falls du das> wissen wolltest.
Diese Info fehlte. Ich würde es trotzdem richtig im laufenden betrieb
messen, nicht durch manuelle Simulation (mit Magnet oder so).
ESP_FR schrieb:> Der Reed-Kontakt ist an GPIO 0 angeschlossen.
Das ist nicht gut. Wenn der Reed Kontakt bei Einschalten der
Stromversorgung im falschen Moment geschlossen ist, startet der ESP
nicht. Der Pin steuer nämlich den Bootloader.
Der Pull-Up an diesem Pin hat 12kΩ. Ich empfehle dir, einen mit 1kΩ zu
verwenden, damit deine Schaltung nicht auf Funk/Radiowellen reagiert.
Bedenke: Jede Leitung ist eine Antenne.
Wenn deine Leitung länger als 30cm ist, würde ich sogar einen R/C Filter
(Tiefpass) verwenden.