Wasserzähler detektieren mit TCRT5000

OP #5328276
Lesenswert?

Hallo,
ich versuche gerade meinen Wasserzähler mit einem TCRT5000 Modul von 
Aliexpress zu detektieren.

Leider scheint der TCRT schon die Glasscheibe als Relfexion zu erkennen 
und schaltet daher sofort durch.
Abstand Sensor->Glasscheibe ca. 2mm, bis zum Rädchen in der Wasseruhr 
noch einmal geschätzte 4mm.

Hat jemand so etwas schon einmal gemacht? Gibt es Erfahrungen?

Wasserzähler ist ein Sensus620, das Modul ist das hier: 
https://www.hotmcu.com/ir-reflective-sensor-tcrt5000-p-184.html
OP #5329977
Lesenswert?

So, ich habe es jetzt hinbekommen, dass die silberne Scheibe detektiert 
wird. Allerdings werden manchmal ein paar (10) Liter zuviel gezählt. 
Aber nicht immer.
Getriggert wird auf die steigende Flanke.

Auswertung erfolgt auf einem Raspi mit:
1
#!/usr/bin/python
2
import time, sys, os
3
import datetime
4
import MySQLdb
5
import RPi.GPIO as GPIO
6

7

8
Counter = 0
9
Sendout = 0
10
timeSend=time.time()
11
channel=25   # GPIO Pin
12

13
GPIO.setmode(GPIO.BCM)
14

15

16
GPIO.setup(channel, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
17

18
def writeDatabase():
19
        global Counter
20

21
        db = MySQLdb.connect("hostname", "xxx", "yyy", "zzz")
22

23
        stmt="INSERT INTO wasser (Liter) VALUES(" + str(Counter) +  ")"
24
        cur = db.cursor()
25
        cur.execute(stmt)
26
        db.commit()
27
        Counter=0
28
        db.close()
29

30
        return
31

32
def Interrupt(channel):
33
        global Counter
34

35
        Counter = Counter + 1
36
        #print "Counter " + str(Counter)
37

38

39

40
GPIO.add_event_detect(25, GPIO.RISING, callback = Interrupt, bouncetime = 400)
41

42
try:
43
        while True:
44
                time.sleep(0.1)
45

46
                # save every quarterly hour to the database
47
                if (time.time()-timeSend)>900:
48
                        writeDatabase()
49
                        timeSend=time.time()
50

51

52
except KeyboardInterrupt:
53
        GPIO.cleanup()
54
        print "\nBye...\n"
#5330818
Lesenswert?

Hallo,
> Pete K. schrieb:
> ich versuche gerade meinen Wasserzähler mit einem TCRT5000 Modul von
> Aliexpress zu detektieren.
> Leider scheint der TCRT schon die Glasscheibe als Relfexion zu erkennen
> und schaltet daher sofort durch.
> Abstand Sensor->Glasscheibe ca. 2mm, bis zum Rädchen in der Wasseruhr
> noch einmal geschätzte 4mm.
> Wasserzähler ist ein Sensus620, das Modul ist das hier:
> https://www.hotmcu.com/ir-reflective-sensor-tcrt5000-p-184.html
Wenn du das Modul statisch, so wie es ist, verwendest, reagiert es auch 
auf Umgebungslicht und statische Reflexe.

Eine Möglichkeit ist es, das Signal zu differenzieren und dann eine 
definierte Triggerschwelle zu setzen. Das siehst du nur noch die 
Hell-Dunkel-Änderungen von der drehenden Scheibe.
Allerdings kommt es dann auch möglicherweise zu Zählverlusten, falls der 
Zähler bei sehr geringen Verbräuchen nur schleicht.

Die statische Messung kannst du auch machen, dann solltest du den Sender 
vom Empfänger aber besser entkopplen (mit vorgesetzten Blenden bzw. 
Röhrchen.), so daß tatsächlich nur der Reflex von der Zählscheibe auf 
die Empfangsoptik fällt. Der Sendestrahl kann auch so eingegrenzt 
werden, dass auf dem recht kleinen Zaählrad nur ein kleiner lichtpunkt 
projiziert wird.

Aber auch da kann es zu Fehlzählungen kommen, weil die Schaltung keine 
Hysterese hat. Diese kannst du aber auch programmtechnisch einführen.
Gruß Öletronika
OP #5331252
Lesenswert?

Lothar M. schrieb:
> Ein Interrupt ist für so ein schnarchlangsames Signal der vollkommen
> falsche Ansatz. Oder wieviel tausend(!) Impulse erwartest du pro
> Sekunde(!)?

Aber das ist so schön einfach mit dem Interrupt ;-)

Ok, ich werde es mal mit GPIO Auswertung versuchen.

Anbei zwei Bilder vom Aufbau sowie der "Messung" von gestern und heute. 
Der Deckel ist bis auf ca. 1/2 cm geschlossen.
#5364961
Lesenswert?

Lothar M. schrieb:
> Pete K. schrieb:
>> Getriggert wird auf die steigende Flanke.
> Und wie sieht das Signal jetzt aus?
>
> Ein Interrupt ist für so ein schnarchlangsames Signal der vollkommen
> falsche Ansatz. Oder wieviel tausend(!) Impulse erwartest du pro
> Sekunde(!)?

Hö, aber wieso soll man jetzt keinen Interrupt nehmen, nur weil das 
Ereignis nicht so oft passiert? Das leuchtet mir nicht ein. Wenn ich in 
mein Notebook ein USB-Gerät einstecke, generiert das auch einen 
Interrupt, und das passiert vielleicht dreimal am Tag ...

Es mag aus anderen Gründen (Rauschen) in dem Fall nicht die beste Lösung 
sein, ok.
Gast #5365299
Lesenswert?

Pete K. schrieb:
> Getriggert wird auf die steigende Flanke.

Zur Filterung könnte man die Zeit zwischen steigender und fallender 
Flanke messen. Ist diese zu kurz, werden die Pulse als Störung 
ignoriert. Ist in der Flankendetektion bereits ein Filter integriert?

Liesse sich ein Wake Up mit den Flanken auslösen?
Während der meisten Zeit fliesst kein Wasser. Ausser der Spülkasten 
leckt.
Gast #5365719
Lesenswert?

moin moin,

habe hier ReflexKoppler EE-SPY402 von omron liegen.
Da die Dinger sehr empfindlich sind, Sende-Empfänger sind mit Cu-Blech 
abgeschirmt.
Ev. mal in diese Richtung prüfen.

Würde mich zum auslesen des Gaszählers interessieren.
Gast #5365847
Lesenswert?

Hi,

Man kann den Wasserzähler sehr gut mit einem billigen Lasermodul und 
Fotodiode/transistor auslesen. Der Laserpunkt wird auf das Flügelrad 
gerichtet. Je nachdem ob das Flügelrad oder der Zwischenraum getroffen 
wird wird das ganze Zählergehäuse weniger oder mehr ausgeleuchtet. Die 
Fotodiode muss gar nicht genau ausgerichtet werden. Eine Abdeckung 
schützt vor Fremdlicht.

Ich habe noch ein altes Foto gefunden. Mittlerweile gibt es eine 
3d-gedruckte Version der Halterung für Laser und Diode. Foto liefere ich 
nach.

BG, Tom

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren