raspberry waterflow meter aansluiten

Goeiemorgen,

ik kocht enkele weken geleden 2x volgende waterflowmeter:

https://aliexpress.com/item/32970615307.html

nu wil ik deze aansluiten op een raspberry 2b en deed dat via onderstaand voorbeeld dit omdat op de rpi maar 3.3v max op de GPIO's mag toekomen en de voeding 5V is (komt ook van rpi):

https://www.circuito.io/app?components=9443,200000,641455

echter kwam de meetmodule kokendheet en heb ik nu een constante spanning van 5v op de pulse pin = Kapot.

ik probeerde het nog eens op de andere maar ook die is kapot, maw ik doe duidelijk iets verkeerd, kan iemand me helpen over het hoe ik deze moet aansluiten.

ik heb nu ook deze besteld om niet meer met weerstanden te moeten werken:

https://aliexpress.com/item/32810810604.html

ik hoop hiermee meer geluk te hebben?

nog een andere vraag, is het zo dat de rpi zo veel pulsen kan tellen? er kunnen 400+ pulsen per liter zijn dus dat kunnen er meer dan 100 per sec zijn.

[Bericht gewijzigd door Sine op dinsdag 3 november 2020 10:31:32 (4%)

buckfast_beekeeper

Golden Member

100Hz mag geen probleem vormen.

Draden niet verkeerd aangesloten? Ik heb hier een flow sensor met rood-geel-zwart als pinning en een andere met rood-zwart-geel.

De weerstanden van 1k en 10k niet verwisselt? Zo een schema vind ik altijd heel onduidelijk. Zet er dan een deftig schema bij. (niet op u bedoelt)

Volgens vele schema's moet het ook gewoon op 3,3V werken. Maar dat moet ik zelf ook nog uitzoeken.

Je kan er altijd een level converter tussen zetten. Er zijn meerdere schema's met een mosfet. Met een SN54AHCT126 kan dat met eenrichtingsverkeer of een txb0104 heb je 2 richting verkeer.

Van Lambiek wordt goede geuze gemaakt.

Die sensor heeft een voedingsspanning nodig van 3.7v tot 18V dus is 3.3v te weinig.
Deze heeft ook een open collector als uitgang.

Volgens mij heb je die sensor verkeerd aangesloten, het schema ziet er goed uit, dat maakt van de 5V uitgang 3.3V voor de RPI maar met een foto van het schema op breadbord maak je heel vlug fouten.

Teken er eerst een schema van, dat is beter te volgen.

LDmicro user.

ik heb volgend schema gebruikt:

R1 aangesloten op de gele (puls) kabel.
R2 op GND aangesloten
R1 aan R2 gehangen zoals op schema om ertussen 3,3V te krijgen

wat dus blijkbaar niet werkte ...

[Bericht gewijzigd door mathiasc op maandag 19 oktober 2020 12:08:06 (48%)

Lambiek

Special Member

Op 19 oktober 2020 12:06:22 schreef mathiasc:
ik heb volgend schema gebruikt:

Je moet het op deze manier aansluiten.

Ik weet niet of de kleuren van de bedrading klopt, is niet goed te zien op het plaatje.

EDIT:

Even aangepast.

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik mis de pull-up voor de open-collector uitgang.

10K weerstand aan de 3.3V van de pi hangen, andere zijde van de weerstand aan de gele draad en IO.

Op 19 oktober 2020 14:10:26 schreef 2N3055:
Ik mis de pull-up voor de open-collector uitgang.

10K weerstand aan de 3.3V van de pi hangen, andere zijde van de weerstand aan de gele draad en IO.

ik vermoed niet dat het hierdoor is dat meetmodule is doorgebrand.

ik had het ook effectief aangesloten zoals op bovenstaand schema ...

ik vermoed dat ik deze:

https://nl.aliexpress.com/item/32810810604.html?spm=a2g0s.9042311.0.0.…

kan gebruiken ipv de weerstanden, zal dat een probleem geven met de open collector weerstand?

De tekening hieronder is aangepast zoals op de link die je hebt opgegeven.

LDmicro user.
Lambiek

Special Member

Ow, open collector. Even vergeten, maar MGP heeft dat opgelost. :)

Zal het ook even aanpassen. :)

EDIT:

Je kunt het ook nog op deze manier doen, via een optocoupler.
Dan maakt de voedingsspanning voor de sensor ook niet zoveel uit, die kun je dan voeden tussen de 5 en 12VDC.

Als je haar maar goed zit, GROETEN LAMBIEK.

bedankt Lambiek voor je duidelijke uitleg.

ik vermoed dat ik ook met de LDO Module de spanning naar 3.3 kan brengen zonder die optocoupler en zonder weerstanden en dan gewoon die 1K er nog tussen als pullup?

Lambiek

Special Member

Op 19 oktober 2020 17:30:34 schreef mathiasc:
ik vermoed dat ik ook met de LDO Module de spanning naar 3.3 kan brengen zonder die optocoupler en zonder weerstanden en dan gewoon die 1K er nog tussen als pullup?

Je flow sensor werkt niet met 3.3VDC, dat is te laag. De minimale spanning is 3.5VDC, maar daar kun je beter boven gaan zitten. Ze raden minimaal 5VDC aan.

Als je haar maar goed zit, GROETEN LAMBIEK.

Wellicht zie ik iets over het hoofd maar een PI heeft toch geen analoge poorten? Altijd buiten de PI om voeden, word al snel teveel voeding via z'n bordje laten lopen.

Alles met een knipoog ;-)
Lambiek

Special Member

Op 19 oktober 2020 17:43:32 schreef RvEldijk:
Wellicht zie ik iets over het hoofd maar een PI heeft toch geen analoge poorten?

Wie heeft het over analoog dan? Je moet gewoon pulsen tellen binnen een X tijd.

Als je haar maar goed zit, GROETEN LAMBIEK.

Hehe dat zag ik dus over het hoofd ;)

Nog nooit iets met pulsen gedaan, heb dezelfde meter al 2 jaar in de kast, dit voorjaar gaat die ertussen, samen met de solenoid klep.

Alles met een knipoog ;-)
Lambiek

Special Member

Op 19 oktober 2020 18:01:36 schreef RvEldijk:
Nog nooit iets met pulsen gedaan,.....

Gegevens volgens de site.

Nauwkeurigheid [in 2 ~ 50L \ MIN] ± 5%. Flow puls kenmerken (6 * Q-8) Q = L/Min ± 5%.

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 19 oktober 2020 17:30:34 schreef mathiasc:
ik vermoed dat ik ook met de LDO Module de spanning naar 3.3 kan brengen zonder die optocoupler en zonder weerstanden en dan gewoon die 1K er nog tussen als pullup?

Niet doen....maar als die sensors niet werken heb je een fout gemaakt, die gaan zomaar niet kapot.
Zoek eerst uit wat er mis is gegaan.

LDmicro user.

Op 19 oktober 2020 18:10:44 schreef Lambiek:
[...]
Gegevens volgens de site.

Nauwkeurigheid [in 2 ~ 50L \ MIN] ± 5%. Flow puls kenmerken (6 * Q-8) Q = L/Min ± 5%.

aan allen die geholpen hebben, ik moet toch iets verkeerd hebben gedaan, inmiddels zijn de 2 nieuwe binnengekomen en werkt het perfect!

echter zit ik nu met een nieuwe vraag.

ik zou volgens bovenstaande flow = (6 * Q-8) = L/min

ik probeer echter de liters te berekenen die ik dan via MQTT wens te versturen.

ik heb eens de pulsen geteld maar ik raak er niet aan uit.

als ik bvb 0,5L vul heb ik:

- 45 pulsen als ik de kraan een beetje opendraai
- 95 pulsen als ik de kraan volledig opendraai.

ik dacht dat ik bvb kon zeggen 45 pulsen = 0,5l, 90 pulsen = 1L, maar zo werkt het duidelijk niet.

vermoedelijk moet ik de pulsen over een bepaalde tijdspanne tellen.

momenteel is dit m'n code die dus de pulsen gewoon "telt" maar ik zou dus een andere output moeten hebben, alleen weet ik zelf niet hoe/wat :)

code:

import RPi.GPIO as GPIO
import time, sys

FLOW_SENSOR = 17

GPIO.setmode(GPIO.BCM)
GPIO.setup(FLOW_SENSOR, GPIO.IN, pull_up_down = GPIO.PUD_UP)

global count
count = 0

def countPulse(channel):
   global count
   count = count+1
   print(count);
GPIO.add_event_detect(FLOW_SENSOR, GPIO.FALLING, callback=countPulse)

while True:
    try:
        time.sleep(1)
    except KeyboardInterrupt:
        print('\ncaught keyboard interrupt!, bye')
        GPIO.cleanup()
        sys.exit()

ook heb ik volgend script geprobeerd maar hier krijg ik gewoon ook de flow rate in L/min volgens mij:

code:

import json
import time
from datetime import datetime
import RPi.GPIO as GPIO

class FlowMeter():
    ''' Class representing the flow meter sensor which handles input pulses
        and calculates current flow rate (L/min) measurement
    '''

    def __init__(self):
        self.flow_rate = 0.0
        self.last_time = datetime.now()

    def pulseCallback(self, p):
        ''' Callback that is executed with each pulse
            received from the sensor
        '''

        # Calculate the time difference since last pulse recieved
        current_time = datetime.now()
        diff = (current_time - self.last_time).total_seconds()

        # Calculate current flow rate
        hertz = 1. / diff
        self.flow_rate = hertz / 6

        # Reset time of last pulse
        self.last_time = current_time

    def getFlowRate(self):
        ''' Return the current flow rate measurement.
            If a pulse has not been received in more than one second,
            assume that flow has stopped and set flow rate to 0.0
        '''

        if (datetime.now() - self.last_time).total_seconds() > 1:
            self.flow_rate = 0.0

        return self.flow_rate

def main():
    ''' Main function for repeatedly collecting flow rate measurements
        and sending them to the SORACOM API
    '''

    # Configure GPIO pins
    INPUT_PIN = 17
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    # Init FlowMeter instance and pulse callback
    flow_meter = FlowMeter()
    GPIO.add_event_detect(INPUT_PIN,
                          GPIO.RISING,
                          callback=flow_meter.pulseCallback,
                          bouncetime=20)

    # Begin infinite loop
    while True:

        # Get current timestamp and flow meter reading
        timestamp = str(datetime.now())
        flow_rate = flow_meter.getFlowRate()
        print('Timestamp: %s' % timestamp)
        print('Flow rate: %f' % flow_rate)

        # Delay
        time.sleep(5)

if __name__ == '__main__':
   main()

Op 2 november 2020 19:06:02 schreef mathiasc:
als ik bvb 0,5L vul heb ik:

- 45 pulsen als ik de kraan een beetje opendraai
- 95 pulsen als ik de kraan volledig opendraai.

De handleiding heeft het over

code:

(6 * Q-8) Q = L/Min 

Dit is onduidelijk omdat niet gegeven is wat de uitkoms van de formule is.

Ik heb even zitten zoeken op internet wat een normale kraan in NL doet. Ik heb gevonden dat dit 7L/min is.

Als dat de uitkomst van de formule pulsen-per-minuut is, dan krijg je bij 7L/min dus... Nul pulsen per minuut.

Maar dan nog. Als je 15L/min zou trekken, dan krijg je dus (15-8)*6 = 42 pulsen per minuut. Dat lijkt me erg weinig. Bovendien meet jij al veel meer.

Als de uitkomst van de formule pulsen per sec is.... Dan zou je bij 15 l/min dus 42 pulsen per seconde mogen verwachten. Dan krijg je een halve liter in 4 sec, dus 120 pulsen... Weer veel meer dan jij gemeten hebt.

Wat je in ieder geval zou kunnen concluderen is dat de formule lineair is met een "nulpuntsfout". Dus probeer de tijd te meten dat het je kost om de "langzaam" 0.5L en "snel 0.5L" te tappen. Dan kunnen we uitrekenen wat de formule is.

Merk op: Het is een flow meter. Je kan (binnen bepaalde grenzen" meten hoeveel er per min (sec) stroomt, niet echt hoeveel er verbruikt is.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/