2016-04-12 5 views
0

Eigentlich möchte ich diesen wasserdichten Ultraschallsensor DYP-ME007Y-PWM (http://hanjindata.lgnas.com:10000/myweb/P0400/P0400.pdf) auf meinem Himbeer PI Compute-Modul auf einem klassischen Raspbian OS verwenden. Es hat 4 Pins (gnd, Trig, Echo und 5V). Hier ist mein Schema:Verwenden von DYP-ME007Y-PWM Ultraschallsensor

Raspberry Pi | Sensor 
GND   | GND 
5V   | 5V 
22   | Trig 
23   | Echo 

ich einige Tutorials gefunden haben, die erklären, wie Ultraschallsensoren funktioniert und mannage gute Ergebnisse wie diese für exemple mit anderen Art von Ultraschallsensoren haben (http://www.micropik.com/PDF/HCSR04.pdf)

Hier mein Code:

# Import required Python libraries 
import time 
import RPi.GPIO as GPIO 

# Use BCM GPIO references 
# instead of physical pin numbers 
GPIO.setmode(GPIO.BCM) 

# Define GPIO to use on Pi 
GPIO_TRIGGER = 22 
GPIO_ECHO = 23 

print "Ultrasonic Measurement" 

# Set pins as output and input 
GPIO.setup(GPIO_TRIGGER,GPIO.OUT) # Trigger 
GPIO.setup(GPIO_ECHO,GPIO.IN)  # Echo 

# Set trigger to False (Low) 
GPIO.output(GPIO_TRIGGER, False) 

# Allow module to settle 
time.sleep(0.5) 

# Send 10us pulse to trigger 
while True: 
    GPIO.output(GPIO_TRIGGER, True) 
    time.sleep(0.00001) 
    GPIO.output(GPIO_TRIGGER, False) 

    start = time.time() 
    while GPIO.input(GPIO_ECHO)==0: 
     start = time.time() 

    while GPIO.input(GPIO_ECHO)==1: 
     stop = time.time() 

    # Calculate pulse length 
    elapsed = stop-start 
    # Distance pulse travelled in that time is time 
    # multiplied by the speed of sound (cm/s) 
    # That was the distance there and back so halve the value 
    distance = (elapsed * 34000)/2 

    print "Distance : %.1f" % distance 
    time.sleep(0.05) 
# Reset GPIO settings 
GPIO.cleanup() 

ich nicht, ich erhalten die gleiche Leistung immer funktioniert, was ich mit meinem Sensor tun hat jemand alreeady Spiel mit diesem Sensor hat? Wie du sehen kannst, ist das Datenblatt ziemlich hell, also wirst du vielleicht etwas sehen, was meine schlechte Elektronikfertigkeit vermisst hat.

Grüße!

Antwort

0

Sie erwarten von Anfang an GPIO_ECHO . Gemäß der Dokumentation ist es zuerst , dann , und dann zurück zu .

Vielleicht

while GPIO.input(GPIO_ECHO)==0: 
    # some short sleep might be better 
    pass 

start = time.time() 

while GPIO.input(GPIO_ECHO)==1: 
    pass 

while GPIO.input(GPIO_ECHO)==0: 
    pass 

stop = time.time() 

Es gibt Methoden, die für steigende Flanke und fallender Flanke Erfassen, siehe zum Beispiel raspi.tv arcticle. Es könnte besser sein, diese Methoden zu verwenden.

0

Nach:

https://forum.arduino.cc/index.php?topic=153700.30

der Sensor ist sehr empfindlich gegenüber genügend Energie bekommen - Überprüfen Sie, ob Ihre 5V nicht zu stark abfällt.

Auch die GPIO-Pins des Raspberry Pi sind 3V3 - Sie mögen vielleicht nicht die Ausgabe vom Sensor (die vermutlich 5V ist), und der Sensor wird möglicherweise nicht am 3V3-Ausgang vom Raspberry Pi ausgelöst.