ラズベリーで水流センサーを使用する方法?


8

この水流センサーをラズベリーで使用しようとしています:

https://www.adafruit.com/products/828

私はこのpythonコードを使用してパルスを読み取っています。

#!/usr/bin/env python

import RPi.GPIO as GPIO
import time, sys

FLOW_SENSOR = 23

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

global count
count = 0

def countPulse(channel):
   global count
   count = count+1
   print count

GPIO.add_event_detect(FLOW_SENSOR, GPIO.RISING, callback=countPulse)

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

残念ながら、このコードは適切に機能しておらず、ラズベリーの初心者なので問題の解決方法がわかりません。

MCP3008などのラズベリーの別のコンポーネントを使用する必要があるかどうか知りたいのですが。

可能であれば、センサーケーブルの配線方法もラズベリーです。


上記にリンクした製品ページからリンクされているこの投稿learn.adafruit.com/adafruit-keg-botをご覧になりました か?
Steve Robillard、

回答:


10

水道メーターのパルス出力は通常、オープンドレインです。

これは、パルスに信号を送るためにグランドに引き下げられ、外部電圧に対してハイにフロートすることを意味します。

簡単なチェックとして、次の2行を変更します。

GPIO.setup(FLOW_SENSOR、GPIO.IN、pull_up_down = GPIO.PUD_DOWN)

GPIO.setup(FLOW_SENSOR、GPIO.IN、pull_up_down = GPIO.PUD_UP

そして

GPIO.add_event_detect(FLOW_SENSOR、GPIO.RISING、callback = countPulse)

GPIO.add_event_detect(FLOW_SENSOR、GPIO.FALLING、callback = countPulse)


1
こんにちは、ジョーン、コードは現在機能しており、パルスがカウントされます。ありがとう!!
Thiago Scodeler、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.