Änderungen

KY-050 Ultraschallabstandssensor

4.429 Byte hinzugefügt, 15:38, 28. Apr. 2016
/* Codebeispiel Raspberry Pi */
==Pin-Belegung==
[[Datei:4_G_S_T_VKY-050_Anschluss.png|none|450x235px]]
==Funktionsprinzip==
[[Datei:KY-050-Ultraschall.jpg|859x534px|none|859x534px]]
==Codebeispiel Arduino==
Das Beispielprogramm aktiviert nach o.g. Prinzip die Abstandsmessung und misst mit Hilfe der Arduino Funktion [https://www.arduino.cc/en/Reference/PulseIn pulseIn] die Zeit, wie lang das Ultraschallsignal in der Luft ist. Diese Zeit wird dann für die Umrechnung des Abstands als Basis genommen - das Ergebnis wird danach in der seriellen Ausgabe ausgegeben. Sollte das Signal außerhalb des Messbereichs sein, wird eine entsprechende Fehlermeldung ausgegeben.
<pre class="brush:cpp"> /*HC-SR04 Ping distance sensor:VCC to arduino 5vGND to arduino GNDEcho to Arduino pin #define Echo_EingangsPin 7Trig to Arduino pin 8This sketch originates from Virtualmix: http://goo.gl/kJ8GlHas been modified by Winkle ink here: http://winkleink.blogspot.com.au/2012/05/arduinoEcho Eingangs-hc-sr04-ultrasonic-distance.htmlPinAnd modified further by ScottC here: http:#define Trigger_AusgangsPin 8 //arduinobasics.blogspot.com.au/2012/11/arduinobasicsTrigger Ausgangs-hc-sr04-ultrasonic-sensor.htmlon 10 Nov 2012Further modified by Peter Takacs on 04/02/04 https://patakacs.wordpress.com/2014/02/04/ultrasonic-sensor-hc-sr04-and-piezo-speakers-measuring-distance-and-playing-a-tone-with-piezo/*/Pin
int echoPin = 7;int trigPin = 8;int LEDPinYellow = 2; // Yellow LEDBenoetigte Variablen werden definiertint LEDPinGreen maximumRange = 4300; // Green LEDint soundPin minimumRange = 122; // Piezo int maximumRange = 100;int minimumRange = 0long Abstand;long duration, distanceDauer;
void setup() {
Serial.begin (9600); // Init communications to serial monitor pinMode(trigPinTrigger_AusgangsPin, OUTPUT); pinMode(echoPinEcho_EingangsPin, INPUT);pinMode Serial.begin (LEDPinYellow, OUTPUT);pinMode(LEDPinGreen, OUTPUT9600);
}
void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Abstandsmessung wird mittels des 10us langen Triggersignals gestartet digitalWrite(trigPinTrigger_AusgangsPin, HIGH); delayMicroseconds(10); digitalWrite(Trigger_AusgangsPin, LOW); // Nun wird am Echo-Eingang gewartet, bis das Signal aktiviert wurde // und danach die Zeit gemessen, wie lang es aktiviert bleibt Dauer = pulseIn(Echo_EingangsPin, HIGH); // Nun wird der Abstand mittels der aufgenommenen Zeit berechnet Abstand = Dauer/58.2; // Überprüfung ob gemessener Wert innerhalb der zulässingen Entfernung liegt if (Abstand >= maximumRange || Abstand <= minimumRange) { // Falls nicht wird eine Fehlermeldung ausgegeben. Serial.println("Abstand außerhalb des Messbereichs"); Serial.println("-----------------------------------"); } else { // Der berechnete Abstand wird in der seriellen Ausgabe ausgegeben Serial.print("Der Abstand betraegt:"); Serial.print(Abstand); Serial.println("cm"); Serial.println("-----------------------------------"); } // Pause zwischen den einzelnen Messungen delay(500);}</pre>
digitalWrite(trigPin, LOW);duration = pulseIn(echoPin, HIGH);'''Anschlussbelegung Arduino:'''
//Calculate the distance (in cm) based on the speed of sound.distance {| style= duration/58.2"height: 58px;padding-left: 30px;" width="228"|-||VCC||=||[Pin 5V]|-||Echo||=||[Pin 7]|-||Trigger||=||[Pin 8]|-||Sensor GND||=||[Pin GND]|}
if (distance '''Beispielprogramm Download''' [[Medium:KY-050-UltraschallabstandSensor.zip|KY-050-UltraschallabstandSensor.zip]] ==Codebeispiel Raspberry Pi==<span style="color: #ff6600;">!! <span style= maximumRange || distance "color: #ff0000;">Achtung</span> !! <span style= minimumRange){"color: #99cc00;">5V Spannungslevel</span>  !! <span style="color: #ff0000;">Achtung</ Yellow led indicated out of maximumRangespan> !!</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. Prints “Out Of Range” to serial if target is outside maximumRangeWü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.Serial 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.println(“Out Of Range”)<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;digitalWrite(LEDPinYellow">!! <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, HIGHwie 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;digitalWrite(LEDPinGreendie 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, LOWwird eine entsprechende Fehlermeldung ausgegeben.   <pre class="brush:py"># coding=utf-8# Benötigte Module werden eingefügt und konfiguriertimport timeimport RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM);}else { # Hier können die jeweiligen Eingangs-/Ausgangspins ausgewählt werdenTrigger_AusgangsPin = 17Echo_EingangsPin = 27 # Die Pause zwischen den einzelnen Messugnen kann hier in Sekunden eingestellt werdensleeptime = 0.8 # Hier werden die Ein-/ When ultasonic sensor picks up a signal _within_ maximumRangeAusgangspins konfiguriertGPIO.setup(Trigger_AusgangsPin, print distance in cm to serial monitorGPIO.OUT)GPIO.setup(Echo_EingangsPin, turn off YellowLed and turn on GreenLEDGPIO.IN)SerialGPIO.printoutput(“Distance = ” Trigger_AusgangsPin, False);Serial# Hauptprogrammschleifetry: while True: # Abstandsmessung wird mittels des 10us langen Triggersignals gestartet GPIO.printoutput(distanceTrigger_AusgangsPin, True);Serial time.printlnsleep(” cm” 0.00001);digitalWrite GPIO.output(LEDPinYellowTrigger_AusgangsPin, LOWFalse);digitalWrite # Hier wird die Stopuhr gestartet EinschaltZeit = time.time(LEDPinGreen) while GPIO.input(Echo_EingangsPin) == 0: EinschaltZeit = time.time() # Es wird solange die aktuelle Zeit gespeichert, HIGHbis das Signal aktiviert wird  while GPIO.input(Echo_EingangsPin);== 1:tone AusschaltZeit = time.time(soundPin) # Es wird die letzte Zeit aufgenommen, 800wo 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);:delay # Falls nicht wird eine Fehlermeldung ausgegeben print(distance"Abstand außerhalb des Messbereich") print("------------------------------") else: # Der Abstand wird auf zwei Stellen hinterm Komma formatiert Abstand = format((Dauer * 34300); // Distance is the delay in ms between tones2, ie Near maxRange -> Long tones'.2f') # Der berechnete Abstand wird auf der Konsole ausgegeben print("Der Abstand beträgt:"), Near minimumRange Abstand,("cm") print("-> Rapid tones-----------------------------")  # Pause zwischen den einzelnen Messungen time.sleep(sleeptime)noTone# Aufraeumarbeiten nachdem das Programm beendet wurdeexcept KeyboardInterrupt: GPIO.cleanup(soundPin);
}
// Mandatory delay
delay(50);
}
</pre>
Quelle'''Anschlussbelegung Raspberry Pi: https://patakacs.wordpress.com/2014/02/04/ultrasonic-sensor-hc-sr04-and-piezo-speakers-measuring-distance-and-playing-a-tone-with-piezo/'''
Sensor KY-050:
“This document can be copied and modified under the conditions of GNU General Public License{| style="height: 85px; padding-left: 30px;" width="441"|-||VCC||=||5V||[Pin 2 (RPi)]|-||Trigger||=||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 01(RPi)]|-||Pin A1||=||GPIO17||[Pin 11(RPi)]|-||Pin A2||=||GPIO27||[Pin 13(RPi)]|-||GND||=||Masse||[Pin 06(RPi)]|} * Alle restlichen Pins am KY-051-Voltage-Translator-Modul müssen nicht angeschlossen werden (OE,B3,B4,A3,A4).  '''Beispielprogramm Download''' [[httpMedium://wwwKY-050-RPi_UltraschallAbstandSensor.gnuzip|KY-050-RPi_UltraschallAbstandSensor.org/licenses/gpl.html httpzip]] Zu starten mit dem Befehl://www.gnu <pre class="brush:bash">sudo python KY-050-RPi_UltraschallAbstandSensor.orgpy</licenses/gpl.html]“pre>
Bürokrat, Administrator
611
Bearbeitungen