Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

AxxlFoley
Beiträge: 12
Registriert: 26.03.2018, 22:36

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von AxxlFoley » 08.04.2018, 21:05

Hab leider keine PN bekommen.

Ich versuche das ganze mit Polling, aber er will irgendwie den Flankenwechsel nicht erkennen. Egal was ich mache der digitalRead (INPUTPIN_FC) ist immer 1.

Code: Alles auswählen

void loop() {

  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  state = digitalRead (INPUTPIN_FC);

  //Flankenwechsel erkennen
  if (laststate == LOW && state == HIGH) {

    count++;
    Serial.println("Counter-Event will be send!\n");

    Serial.println(count);
    lit_str = String(count);
    lit_str.toCharArray(lit, lit_str.length() + 1);

    // client.publish("Wasserzaehler",lit);
    //inputCounter == lastDigInputState;
  }
  //wait 50ms before next measurement
  laststate = state;
  delay(100);
}
Wohingegen, wenn ich einen Interrupt verwende scheint er zu erkennen, wenn sich am SunEx was tut. Also Probleme mit der Verkabelung schließe ich mal aus.

Code: Alles auswählen

attachInterrupt(digitalPinToInterrupt(INPUTPIN_FC), handleInterruptInputCounter, HIGH);
Das Problem ist, wenn ich in dem Interrupt meine MQTT Meldung veschicke, bekomme ich irgendwie einen WDT Reset. Denke so ein Interrupt sollte nicht zuviel machen, kann das sein ?

Also vielleicht kannst du ja nochmal die PN senden. Merci !

dondaik
Beiträge: 12925
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1599 Mal
Danksagung erhalten: 222 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von dondaik » 08.04.2018, 21:24

am rande ... bevor klassisch antwortet ;-)
der interrupt springt eigentlich nur in ein unterprogramm setzt den zähler eins rauf und zurück gehts
die flange auf die der IRQ reagiert kann man festlegen.

ggf mal in die demos schauen.

https://www.arduino.cc/reference/en/lan ... interrupt/
Zuletzt geändert von dondaik am 09.04.2018, 09:09, insgesamt 1-mal geändert.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von klassisch » 09.04.2018, 00:24

Habe die PN nochmals geschickt und das zip-file in ein txt file umbenannt. Also zuerst wieder in ein zip file umbenennen und dann entpacken.

Bei meiner ersten Version habe ich noch gepollt und das sah in der void loop() so aus:

Code: Alles auswählen

  if (digitalRead(INPUTPIN_FC) == lastDigInputState); // do nothing
  else {
  inputCounter++ ;
  lastDigInputState = ! lastDigInputState; // toggle   
  }
Thats all, aählt bei jeden Flankenwechsel eins hoch
Dabei gilt:

Code: Alles auswählen

#define INPUTPIN_FC 14   // GPIO14, D5

...

// Definitions for WaterMeter
boolean lastDigInputState;// Definitions for WaterMeter
boolean lastDigInputState;
unsigned long inputCounter, inputCounterLastCycle;
...

AxxlFoley
Beiträge: 12
Registriert: 26.03.2018, 22:36

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von AxxlFoley » 10.04.2018, 13:49

Danke ! Ist angekommen. Ich habe gestern abend auch mal etwas weiter probiert.
Mit Polling passiert bei mir gar nichts. Da läuft er einfach nie in den else Zweig.
Hast du absichtlich dafürf einen anderen PIN GPIO14, D5 genommen , oder ist das eigentlich egal ?

Mit dem Interrupt passiert wenigstens etwas. Nur leider auch nicht zuverlässig, manchmal sehe ich eine Counter Erhöhung und manchmal, obwohl das LED am Sesonr eine Erkennung anzeigt, wird keine Erhöhung ausgelöst.
Im Interrupt mache ich eigentlich nicht viel, sondern erhöhe nur den Counter inputCounter++ ; Im Loop reagiere ich dann auf einen neuen Counter Stand und sende meine MQTT message und mach Serial.println(inputCounter).

Also entweder hat mein Sensor nen Hau weg oder meine Verkabelung ist nicht optimal. Ich habe jetzt das schwarze Kabel des Sensors in eine WAGO Klemme(Reihe 221) und dann ein Male-to-Male Jumper Kabel in die WAGO Klemme und von dort zum GPIO D3 des WeMos.
Ich habe auch mit den Justierung des Sensors etwas probiert. Es leuchtet eine "Grüne" LED wenn kein Liter Zeiger da ist. Sobald der LIter Zeiger vorbeikommt schaltet er von grün auf gelb und dann wenn wieder zurück. Aber eben nicht jedesmal wird auch ein Count ausgelöst. Ich vermute so bei 10 Litern verschluckt er 2. Das ist mir leider deutlich zu hoch.

Ich werde mal meinen Versuchssteckaufbau verlöten.. seltsam seltsam..

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von klassisch » 10.04.2018, 19:11

Hallo, aus der Anleitung zum EX-26
Orange LED (lights up when the output is ON) (thru-beam type: located on the receiver)
Green LED (lights up under stable light received condition or stable dark condition)
Ich habe auch mit den Justierung des Sensors etwas probiert. Es leuchtet eine "Grüne" LED wenn kein Liter Zeiger da ist. Sobald der LIter Zeiger vorbeikommt schaltet er von grün auf gelb und dann wenn wieder zurück.
Das sieht doch gut aus.
Aber eben nicht jedesmal wird auch ein Count ausgelöst.
Das nicht so gut. Jedesmal, wenn die gelbe LED an bzw. aus geht, mußt Du im WeMos ein Signal sehen.
D3 IO,10k Pull-up GPIO0
Das ist ein für diese Anwendung "guter" Pin. Er hat auf der Platine bereits einen Pullup von 10K. Wenn Deine Leitung sehr lang ist, kannst Du nochmals einen 10kOhm Widerstand von D3 auf +3.3V schalten.
Heute verwende ich

Code: Alles auswählen

#define INPUTPIN_FC 0   // GPIO0, D3  here WeMos has external pull up 10k Ohm. this makes it easy to use sensors with open collector
pinMode(INPUTPIN_FC, INPUT_PULLUP);
Den D5 habe ich früher verwendet, der braucht aber einen Pullup z.B. 4k7 auf +3.3V. Ohne Pullup geht dort nichts. Wenn Du D5 den verwenden möchtest, dann mußt Du diesen Widerstand einsetzen.
Mein oben referenzerter Polling Sketch erzeugt bei beiden Flanken ein Signal, also wenn der Zeiger kommt und wenn der Zeiger geht.
Die Beschreibung der Pins und der Beschaltung steht dort:
https://escapequotes.net/esp8266-wemos- ... d-diagram/

Wenn Du nach all dem noch ein Problem hast:
- bitte kontrolliere die Verkabelung auf Wackelkontakt.
Falls da alles i.O. ist und es dennoch zu solchen "Zufälligkeiten" kommt, brauchst Du wahrscheinlich noch eine Zwischenstufe zur Pegelanpassung. Das ist denkbar, denn je nach Toleranzlage der Bauteile kann das erforderlich sein. Bei mir war es nicht, aber theoretisch ist das denkbar. Oder anders ausgedrückt: Für eine Serienfertigung mit hoher Stückzahl und einem weiten Bereich der Einsatztemperatur würde diese Pegelwandlungsstufe laut den vorliegenden Spezifikationen benötigt.
Warum?
Die Endstufe im EX-26 ist kein reiner NPN-Transistor, sondern hat noch eine Diode in Serie geschaltet. Das ist im Datenblatt https://www3.panasonic.biz/ac/e_downloa ... e_cata.pdf auf Seite 7 ersichtlich.
Und auf Seite 6 wird zugesichert:
NPN open-collector transistor
• Maximum sink current: 50 mA
• Applied voltage: 30 V DC or less (between output and 0 V)
• Residual voltage: 2 V or less (at 50 mA sink current)
1 V or less (at 16 mA sink current)
Das heißt wenn 16 mA fließen (das wäre be3.3V bei R < 210 Ohm der Fall, so schlimm treiben wir es nicht; bei uns fließt weniger als 1mA) kann die Spannung am schwarzen Kabel im geschalteten Zustand bis zu 1 Volt betragen.
Das passt aber nicht zum Eingangsverhalten des ESP8266 im worst case. Dazu gibt es dort http://henrysbench.capnfatz.com/henrys- ... hresholds/ eine schöne Erklärung. => Für ein eindeutiges Low Signal erwartet der ESP8266 weniger als 0.825V an seinem Eingang. Also theoretisch ist es denkbar, daß bei Dir die Paarung nicht richtig passt.
Mein Ersatz EX-26 ist gerade verliehen. Wenn ich ihn am Wochenende wieder habe, messe ich den mal aus und entwickle ggf. eine einfache Anpasschaltung.
Hast Du ein Multimeter zur Verfügung?

AxxlFoley
Beiträge: 12
Registriert: 26.03.2018, 22:36

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von AxxlFoley » 10.04.2018, 20:35

Danke für die Hinweise! Ja habe mir jetzt auch diesen Multimeter besorgt. Leider sind die Messspitzen etwas grob. Damit kommt man leider nicht in die WAGO Klemme.

Also wenn ich den Sensor messe, dann muss das schwarzes Kabel des Sensors an Rote Messspitze und Blaues Kabel des Sensord(GND) and Schwarze Messspitze.
Was wäre jetzt der Erwartungswert mit und ohne Signal ? Muss nachher wieder in den Keller und mal messen. Ich meine beim ersten Messversuch hatte ich da kaum einen Unterschied gesehen.

Beim Interrupt hatte ich auch erst "CHANGE", aber dann zählt er den Liter ja doppelt, oder nicht ? Habe Deswegen auf "RISING" gestellt.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von klassisch » 10.04.2018, 23:09

Die Meßspitzen kann man auch wie einen Draht in einen freien Platz der Wago Klemme klemmen.
Erwartungswert wäre normalerweise 3.3V und bei Betätigung (Zeiger gesehen) etwa 0.7V, jesenfalls <0.825V.

AxxlFoley
Beiträge: 12
Registriert: 26.03.2018, 22:36

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von AxxlFoley » 13.04.2018, 21:05

Ich habe den Sensor jetzt gemessen und bin irgendwie nicht besonders schlauer :(
Mein Sensor hat übrigens noch eine Rote LED die direkt nach der gelben LED (die eine Erkennung signalisiert) kurz aufblinkt. Ist das normal ?

Ich bekomme irgendwie komplett andere Werte im Multimeter. Wenn keine Erkennung ist zeigt er 0.37 V. Wenn der Zeiger vorbeikommt geht es irgendwie sogar in Minus. Na ja bevor ich hier viel Text schreibe anbei mal ein Video vom Multimeter, da sieht man wie sich die Spannung ändert. Vielleicht habe ich ja auch was falsch gemacht.

Das zweite Video zeigt den Sensor bei laufendem Wasser. Da sieht man die LEDs und auch die kurze aufblinkende Rote LED.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von klassisch » 14.04.2018, 01:20

Das sieht seltsam aus.
Negative Spannung? Das sollte nicht sein, wenn alles richtig angeschlossen ist. Da der Zeiger so schnell drüber läuft sieht man nicht genau was Sache ist. Ich könnte -12V raten, was für den WeMos fatal wäre. Also entweder weniger Durchfluss (und den dann stoppen, wenn die gelbe LED leuchtet) oder besser den EX-26 wieder ausbauen und gegen eine Fläche testen (Abstand variieren).

Richtig angeschlossen zu Testzwecken:
- WeMos komplett abklemmen.
- Zwischen + Versorgung (braunes Kabel) und dem Ausgang des EX-26 (schwarzes Kabel) wird ein Vorwiderstand geschaltet, z.B. 10 kOhm. Nur zu testzwecken und ohne den WeMos, der würde das kaum überleben.

Braun -> + Versorgungsspannung (z.B. 12V) -> Vorwiderstand 10 kOhm
Blau -> GND -> Minus vom Multimeter
Schwarz -> Plus vom Multimeter -> Vorwiderstand 10 kOhm


Dann sollte es so sein:
- grüne LED-an, gelbe aus: Spannung am Multimeter: Versorgungsspannung
- Abstand wird verkleinert: zusätzlich geht die gelbe LED an. Spannung am Multimeter: <0.8V, wahrscheinlich um 0.3V

Meiner hat nur eine rote LED, aber das ist die Arbeits-LED der Lichtschranke und strahlt nach unten.
Zur Status- Anzeige hat er vorne an der Stirnseite 2 LEDs. Eine grüne wenn er messbereit ist und eine gelbe, die in etwa mit dem Ausgang korreliert: gelbe LED an = Ausgang schaltet aus GND. Eine weitere rote LED gibts nicht. Auf dem Werksbild kann man es erahnen https://www3.panasonic.biz/ac/ae/search ... =EX-26A-PN : Die Led links (vom Betrachter aus) ist grün, die rechts ist gelb.

Habe noch andere Unterlagen zum ES-26 gefunden. Bei denen fehlt die zusätzliche Diode im Ausgangszweig.
http://www.produktinfo.conrad.com/daten ... _EX26A.pdf
Dazu passt auch die Spezifikation der Ausgansspannung:

Code: Alles auswählen

NPN-Transistor mit offenem Kollektor
•   Maximale Senke: 50mA
•   Anliegende Spannung: Max. 30V DC (zwischen 
Ausgang und 0V)
•   Restspannung: max. 1V (bei 50mA Laststrom), 
max. 0,4V (bei 16mA Laststrom)
Also solange man bei dem Strom durch den Ausgang <16mA bleibt, dann ist die Spannung auch <= 0.4V und damit immer passend zum ESP8266. Bei dieser Version wird keine Adaptionsschaltung (ausser dem Pull-Up-Widerstand auf die 3.3V des WeMos) gebraucht. Keine Ahnung, welche Version der Anleitung gilt. Muß man also messen.
Mache ich im Laufe des Samstag.

P.S.
Habe zusätzlich noch zur Verwendung bzw. Einschränkung der Pins recherchiert und eine Empfehlung gefunden, daß man den Pin D3 GPIO0 besser nicht als Eingang verwenden solle, weil es sonst u.U. zu Startproblemen kommen könne. https://github.com/espressif/esptool/wi ... -Selection ; http://www.instructables.com/id/ESP8266 ... as-inputs/
Ich hatte es jetzt das letzte Jahr so und wenn er läuft dann läuft er. Aber bei einem Neuaufbau berücksichtigen und besser auf D5 gehen (und dann auch einen pullup Widerstand auf 3.3V verwenden [irgendetwas zwischen 1kOhm und 10kOhm]). Hat aber nichts mit dem oben geschilderten Thema zu tun.

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Wasserzähler erfassen - hochauflösend - Leckagekontrolle

Beitrag von klassisch » 14.04.2018, 10:30

Edit: habe jetzt meinen Reserve Sensor vermessen und der scheint diese Diode nicht zu haben und schaltet auf etwa 0,29 V durch. Da braucht man keine weitere Schaltung (außer dem Pull up Widerstand auf 3,3 V) und kann das direkt an den Eingang des ESP 8266 anschließen .

Gesendet von meinem ZTE A2016 mit Tapatalk

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“