Änderungen

KY-050 Ultraschallabstandssensor

3.228 Byte hinzugefügt, 15:38, 28. Apr. 2016
/* Codebeispiel Raspberry Pi */
==Codebeispiel Raspberry Pi==
Das Beispielprogramm aktiviert nach o.g. Prinzip die Abstandsmessung und misst mit Hilfe einer Art Stoppuhr die Zeit, wie lang das Ultraschallsignal in der Luft ist. Diese Stoppuhr wird realisiert, indem beim Zeitpunkt des Umschaltens des Echosignals, die aktuelle Systemzeit aus time.time() herausgelesen wird<span style="color: #ff6600; die Differenz zwischen der Einschaltzeit und der Ausschaltzeit ist die gesuchte Zeit wie lang das Signal unterwegs ist. Diese Zeit wird dann für die Umrechnung des Abstands als Basis genommen - das Ergebnis wird danach in der Kosnole ausgegeben. Sollte das Signal außerhalb des Messbereichs sein, wird eine entsprechende Fehlermeldung ausgegeben.">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">5V Spannungslevel</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span>
Der Raspberry Pi arbeitet mit seinem ARM-Prozessorkern, anders als der auf Atmel Atmega basierende Arduino, mit 3,3V Spannungslevel, anstatt mit 5V - dieser Sensor funktioniert jedoch nur mit dem höheren Spannungslevel. Würde man den Sensor uneingeschränkt am Raspberry Pi ohne Vorsichtsmaßnahmen betreiben, könnten dies bei den Eingängen des Raspberry Pi's permanente Schäden hervorrufen. Für solche Fälle Grund besitzt dieses Sensorkit-Set mit dem KY-051 einen Voltage-Translator, welcher die Spannungslevel anpasst und somit einen sicheren Betrieb gewährleistet. <u>Dieser muss bei diesem Sensor zwischen den Rasperry Pi und dem Sensor zwischengeschaltet sein</u>. Nähere Informationen entnehmen Sie der Informationsseite zum [[KY-051 Voltage Translator / Level Shifter]] <span style="color: #ff6600;">!! <span style="color: #ff0000;">Achtung</span> !! <span style="color: #99cc00;">5V Spannungslevel</span>  !! <span style="color: #ff0000;">Achtung</span> !!</span> ---- Das Beispielprogramm aktiviert nach o.g. Prinzip die Abstandsmessung und misst mit Hilfe einer Art Stoppuhr die Zeit, wie lang das Ultraschallsignal in der Luft ist. Diese Stoppuhr wird realisiert, indem beim Zeitpunkt des Umschaltens des Echosignals, die aktuelle Systemzeit aus time.time() herausgelesen wird; die Differenz zwischen der Einschaltzeit und der Ausschaltzeit ist die gesuchte Zeit wie lang das Signal unterwegs ist.<br /> Diese Zeit wird dann für die Umrechnung des Abstands als Basis genommen - das Ergebnis wird danach in der Kosnole ausgegeben. Sollte das Signal außerhalb des Messbereichs sein, wird eine entsprechende Fehlermeldung ausgegeben.   <pre class="brush:py"># Benoetigte coding=utf-8# Benötigte Module werden importiert eingefügt und eingerichtetimport RPi.GPIO as GPIOkonfiguriert
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
# Hier wird der können die jeweiligen Eingangs-Pin deklariert, an dem der Sensor angeschlossen ist. Zusaetzlich wird auch der PullUP Widerstand am Eingang aktiviert/Ausgangspins ausgewählt werdenGPIO_PIN Trigger_AusgangsPin = 2417GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down Echo_EingangsPin = GPIO.PUD_UP)27 print "Sensor-Test [druecken Sie STRG+C, um # Die Pause zwischen den Test zu beenden]"einzelnen Messugnen kann hier in Sekunden eingestellt werdensleeptime = 0.8 # Diese AusgabeFunktion wird bei Signaldetektion ausgefuehrtHier werden die Ein-/Ausgangspins konfiguriertdef ausgabeFunktionGPIO.setup(nullTrigger_AusgangsPin, GPIO.OUT): printGPIO.setup("Signal erkannt"Echo_EingangsPin, GPIO.IN) # Beim Detektieren eines Signals (fallende Signalflanke) wird die Ausgabefunktion ausgeloestGPIO.add_event_detectoutput(GPIO_PINTrigger_AusgangsPin, GPIO.FALLING, callback=ausgabeFunktion, bouncetime=100False)
# Hauptprogrammschleife
try:
while True: # Abstandsmessung wird mittels des 10us langen Triggersignals gestartet GPIO.output(Trigger_AusgangsPin, True) time.sleep(0.00001) GPIO.output(Trigger_AusgangsPin, False)  # Hier wird die Stopuhr gestartet EinschaltZeit = time.time() while GPIO.input(Echo_EingangsPin) == 0: EinschaltZeit = time.time() # Es wird solange die aktuelle Zeit gespeichert, bis das Signal aktiviert wird  while GPIO.input(Echo_EingangsPin) == 1: AusschaltZeit = time.time() # Es wird die letzte Zeit aufgenommen, wo noch das Signal aktiv war  # Die Differenz der beiden Zeiten ergibt die gesuchte Dauer Dauer = AusschaltZeit - EinschaltZeit # Mittels dieser kann nun der Abstand auf Basis der Schallgeschwindigkeit der Abstand berechnet werden Abstand = (Dauer * 34300) / 2  # Überprüfung, ob der gemessene Wert innerhalb der zulässigen Entfernung liegt if Abstand < 2 or (round(Abstand) > 300): # Falls nicht wird eine Fehlermeldung ausgegeben print("Abstand außerhalb des Messbereich") print("------------------------------") else: # Der Abstand wird auf zwei Stellen hinterm Komma formatiert Abstand = format((Dauer * 34300) / 2, '.2f') # Der berechnete Abstand wird auf der Konsole ausgegeben print("Der Abstand beträgt:"), Abstand,("cm") print("------------------------------")  # Pause zwischen den einzelnen Messungen time.sleep(sleeptime)
# Aufraeumarbeiten nachdem das Programm beendet wurde
except KeyboardInterrupt:
GPIO.cleanup()  
</pre>
 
'''Anschlussbelegung Raspberry Pi:'''
Sensor KY-050: {| style="height: 58px85px; padding-left: 30px;" width="228441"
|-
||SignalVCC
||=
||GPIO245V||[Pin 182 (RPi)]
|-
||+VTrigger||=||Pin B1||[KY-051-Voltage Translator]|-||Echo||=||Pin B2||[KY-051-Voltage Translator]|-||GND||=||Masse||[Pin 6 (RPi)]|} KY-051- Voltage Translator: {| style="height: 127px; padding-left: 30px;" width="436"|-||VCCb||=||5V||[Pin 04(RPi)]|-||Pin B1||=||Trigger||[KY-050-UltraschallSensor]|-||Pin B2||=||Echo||[KY-050-UltraschallSensor]|-||VCCa
||=
||3,3V
||[Pin 101(RPi)]|-||Pin A1||=||GPIO17||[Pin 11(RPi)]|-||Pin A2||=||GPIO27||[Pin 13(RPi)]
|-
||GND
||=
||Masse
||[Pin 606(RPi)]
|}
 
* Alle restlichen Pins am KY-051-Voltage-Translator-Modul müssen nicht angeschlossen werden (OE,B3,B4,A3,A4).
'''Beispielprogramm Download'''
[[Medium:SensorTest_RPiKY-050-RPi_UltraschallAbstandSensor.zip|SensorTest_RPiKY-050-RPi_UltraschallAbstandSensor.zip]]
Zu starten mit dem Befehl:
<pre class="brush:bash">sudo python SensorTest_RPiKY-050-RPi_UltraschallAbstandSensor.py
</pre>
Bürokrat, Administrator
611
Bearbeitungen