====== Entfernungsmessung ====== Entfernungsmesser messen die Entfernung einiger emittierter Schwingungen (Schall oder Licht), die von einem bestimmten Objekt im Laufe der Zeit reflektiert werden. Von schallbasierten (Sonar-) Entfernungsmessern sind lichtbasierte genauer, und auch hier ist die Lasermessung genauer als die Infrarotreflexionsmessung (im Prinzip, wenn die Hardware zuverlässig ist). Typen: **Schallbasierte (Sonar-) Sensoren** \\ Die technische Lösung //English Ultra-Sonic Ranger// besteht aus zwei Elementen: einem "Lautsprecher" (//oder Signalgeber//), der Schallimpulse abgibt, und einem Mikrofon (//Signalempfänger//), das deren Reflexion erfasst. Aus der zwischen Ausgabe und Wahrnehmung verstrichenen Zeit kann die Entfernung berechnet werden, indem die Geschwindigkeit der Schallausbreitung bekannt ist. Hierher gehören: * [[#hcsr04|HC--SR04 Sonarsensor]] * [[#ultrasonic_abstandsmesssensor|Ultraschall-Abstandssensor]] {{ :hu:arduino:distant.png|Schema der Triangulationsmethode}} **Infrarot-Abstandssensoren** \\ Der Sensor arbeitet nach der sogenannten Triangulationsmethode. Der Sensor sendet einen schmalen Infrarotlichtstrahl (IR-Lichtwellenlänge 850 nm ± 70 nm) aus. Das emittierte IR-Licht wird von Objekten reflektiert. Der Sensor verwendet eine Optik, um das reflektierte Licht auf ein CCD abzubilden. Je nachdem, wie weit das Ziel entfernt ist, kehrt das reflektierte Licht unter verschiedenen Winkeln zurück und fokussiert entsprechend auf verschiedene CCD-Pixel. Daraus kann bereits die Entfernung ermittelt werden. * [[#sharp_ir-abstandssensoren|Sharp IR-Abstandssensoren]] **Laser-Abstandssensoren** \\ Lasersensoren arbeiten wie IR-Sensoren mit der sogenannten Triangulationsmethode. Der vom Sensor emittierte Laserstrahl, der von der gemessenen Oberfläche reflektiert wird, wird durch eine Linse auf die Oberfläche des CCD- oder CMOS-Lichtsensors des Sensors projiziert. Wenn sich die reflektierende Oberfläche nähert oder bewegt, ändert sich auch die Position des auf den Lichtsensor projizierten Punkts, und die Elektronik bestimmt die Entfernung. * [[#tof10120_laser-distanzsensormodul|TOF10120 Laser-Distanzsensormodul]] {{ :hu:arduino:tof10120.png?120|TOF10120 Laser-Distanzsensormodul}} ===== TOF10120 Laser-Distanzsensormodul ===== Die Entfernungsmessung des TOF10120 wird vom Hersteller mithilfe der Sharp SPAD-Methode (//Single Photon Avalanche Diodes//) implementiert, die unter Verwendung von CMOS verwendet wird. Es liefert genauere Ergebnisse, ist widerstandsfähiger gegen Umgebungslicht und dank seines optischen Designs ist die Form-Erkennung auch zuverlässiger.Das Modul verwendet für die Messung einen // Klasse 1 // 940-nm-Laser, dessen Erfassungsabstand 10 bis 180 cm beträgt. Sein Ausgang ist UART, seine Kommunikation kann RS-232, I²C oder IIC sein. ==== Technische Merkmale ==== * Erfassungsabstand: 100 .. 1800 mm * Stromversorgung: 3 .. 5V DC * Stromaufnahme: 35mA * Betriebstemperatur: -20 .. +70 ° C. * UART: 9600 Baud, 8N1, Flusskontrolle: Keine ==== Drahtzuordnung ==== * ①GND Black * ②VCC Red * ③RXD Yellow * ④TXD white * ⑤SDA blue * ⑥SCL purple ==== Verdrahtung mit Arduino ==== Die Verdrahtung hängt davon ab, ob I²C oder Seriell verwendet wird. Es ist nicht notwendig, alle 6 Drähte gleichzeitig anzuschließen, 4 sollten ausreichen. ^TOF10120^Arduino pin^Anm.| |1.fekete|Arduino GND|GND| |2.piros|Arduino 5v DC|5v DC| |3.sárga|Pin 1 Tx|RxD : Muss bei serielle Kommunikation angeschlossen sein| |4.fehér|Pin 0 Rx|TxD : Muss bei serielle Kommunikation angeschlossen sein| |5.kék|Pin A4|SDA : Muss bei I²C angeschlossen sein| |6.zöld|Pin A5|SCL : Muss bei I²C angeschlossen sein| Die Verwendung von seriellem Pin 1 Rx und Pin 0 Tx blockiert den seriellen Download und die Verwendung von seriellen Monitoren. {{:hu:arduino:tof10120_arduino.png?500|Verdrahtung des Laser-Distanzsensormoduls TOF10120 mit dem Arduino}} ==== Software ==== Die folgende Software verwendet I²C für die Kommunikation, dh Arduino Pin0 und Pin1 müssen nicht gemäß der obigen Tabelle verbunden werden. /* TOF10120 Distance Sensor Demonstration TOF10120-Demo.ino Demonstrates use of TOF10120 Distance Sensor Adapted from code from SurtrTech Displays results on Serial Monitor DroneBot Workshop 2019 https://dronebotworkshop.com */ #include unsigned char ok_flag; unsigned char fail_flag; unsigned short lenth_val = 0; unsigned char i2c_rx_buf[16]; unsigned char dirsend_flag=0; void setup() { Wire.begin(); Serial.begin(9600,SERIAL_8N1); printf_begin(); } void loop() { int x=ReadDistance(); Serial.print(x); Serial.println(" mm"); } int serial_putc( char c, struct __file * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } void SensorRead(unsigned char addr,unsigned char* datbuf,unsigned char cnt) { unsigned short result=0; // step 1: instruct sensor to read echoes Wire.beginTransmission(82); // transmit to device #82 (0x52) // the address specified in the datasheet is 164 (0xa4) // but i2c adressing uses the high 7 bits so it's 82 Wire.write(byte(addr)); // sets distance data address (addr) Wire.endTransmission(); // stop transmitting // step 2: wait for readings to happen delay(1); // datasheet suggests at least 30uS // step 3: request reading from sensor Wire.requestFrom(82, cnt); // request cnt bytes from slave device #82 (0x52) // step 5: receive reading from sensor if (cnt <= Wire.available()) { // if two bytes were received *datbuf++ = Wire.read(); // receive high byte (overwrites previous reading) *datbuf++ = Wire.read(); // receive low byte as lower 8 bits } } int ReadDistance(){ SensorRead(0x00,i2c_rx_buf,2); lenth_val=i2c_rx_buf[0]; lenth_val=lenth_val<<8; lenth_val|=i2c_rx_buf[1]; delay(300); return lenth_val; } {{ :wiki:arduino:gp2y0a21.png?120|GP2Y0A21 IR-Abstandssensoren} ===== Sharp IR-Abstandssensoren ===== {{anchor:gp2y0a21}} Sharp Fernsensoren sind beliebt für Projekte, die eine genaue Entfernungsmessung erfordern. Diese Serie von Infrarotsensoren unterscheidet sich von anderen IR-Sensoren durch ihre Zuverlässigkeit. Es kann einfach an Mikrocontroller angeschlossen werden: Ein Analogausgang kann für Entfernungsmessungen an einen Analog-Digital-Wandler angeschlossen werden, oder der Ausgang kann an einen Kompensator zur Schwellenwerterkennung angeschlossen werden. Der Erfassungsbereich der verschiedenen Versionen beträgt ungefähr 10 cm bis 150 cm; Der Abstand wird von den Maßeinheiten immer auf die Ausgangsspannung abgebildet. Die meisten Sharp-Modelle verwenden einen 3-poligen JST-Anschluss, der das 3-polige JST-Kabel mit Sharp-Fernsensoren verbindet. Von hinten gesehen sind die drei Verbindungen von links nach rechts Strom (rot), Masse (schwarz) und Ausgangssignal (gelb). Die Sharp IR-Fernsensoren verwenden einen PSD-Sensor zu messen: {{:wiki:sensor:psd_sensor.png?350|PSD-Sensor}} Es ist wichtig zu wissen, dass die Distanz-Spannungs-Umwandlung von Sensoren auch aus Versehen nicht linear ist. Die folgende Abbildung zeigt beispielsweise die Spannungsabstandskurve für GP2Y0A21YK: {{:wiki:sensor:gp2y0a21yk_volt.png|Spannungsabstandskurve für GP2Y0A21YK}} ==== Einige Arten von Sharp IR-Fernsensoren ==== ^Typ^Betriebsspannung^Stromaufnahme^Entfernungsmessung \\ Bereich^ Hinweis| |GP2Y0A60SZ(LF)|2 működési mód \\ 3V: 2,7..3,6V \\ 5V: 2,7V..5,5V|33 mA|10..150 cm|Modul: 3V Pololu \\ Reaktionszeit: 16.5 ± 4 ms \\ Es hat auch ein Enable-switch| |GP2Y0A02(YK0F)|4,5..5,5 V|33 mA|20..150 cm|Ausgangsspannungsdifferenz im Entfernungsbereich: 2,05 V \\ Reaktionszeit: 38.3ms ± 9.6ms| |GP2Y0A21(YK0F)|4,5..5,5 V|30 mA|10..80 cm (4"..32")|//Vielleicht der am häufigsten verwendete Typ// \\ Ausgangsspannungsdifferenz im Entfernungsbereich: 1,9 V \\ Reaktionszeit: 38.3ms ± 9.6ms| |GP2Y0A41(SK0F)|0,4..2,5 V|12 mA|4..30 cm|Ausgangsspannungsdifferenz im Entfernungsbereich: 2,3 V \\ Reaktionszeit: 16.5 ± 4 ms| |GP2Y0A51(SK0F)|0,4..2,5 V|12 mA|2..15 cm|Ausgangsspannungsdifferenz im Entfernungsbereich: 1,65 V \\ Reaktionszeit: 16.5 ± 4 ms| {{:wiki:sensor:sharp_ir.png?300|Sharp IR-Fernsensoren}} ==== Einige Datenblätter für Sharp IR-Fernsensoren ==== {{:wiki:downloads:distance_ir_analog_sharp_gp2y0a21yk.pdf |distance_ir_analog_sharp_gp2y0a21yk.pdf}} \\ {{:wiki:downloads:distance_ir_analog_sharp_gp2y0a21yk_new.pdf |distance_ir_analog_sharp_gp2y0a21yk_new.pdf}} \\ {{:wiki:downloads:distance_ir_analog_sharp_gp2y0a41sk0f.pdf |distance_ir_analog_sharp_gp2y0a41sk0f.pdf}} \\ ==== Verdrahtung ==== rot (Stromversorgung): Arduino +5V DC \\ schwarz (Grund): Arduino GND \\ gelb (Signal): Arduino Analogeingang \\ Aufgrund des internen Timings der IR-LED können Interferenzsignale vom Messgerät ausgegeben werden. Um diese zu beseitigen, empfehlen einige, dass Sie einen 1..10μF-Filterkondensator zwischen der Strom- und der Erdungsleitung installieren. ==== Szoftver ==== **GP2Y0A21(YK0F), GP2Y0A41(SK0F):** \\ Beispielsoftware aus Github: https://github.com/jeroendoggen/Arduino-distance-sensor-library {{ :wiki:arduino:hc_sr04.png?150|HC‑SR04}} ===== HC‑SR04 Sonarsensor ===== {{anchor:hcsr04}} Das Modul leitet die Entfernung durch Messen der Zeit der Schallreflexion ab, d. H. Es arbeitet nach dem Sonarprinzip (wie das Sonar von U-Booten). Natürlich ist dieses Modul auch unter mehreren Namen bekannt, zum Beispiel: **SRF04** - Ultra-Sonic Ranger. Die Messung kann mit einem 10 μs TTL-Impuls gestartet werden. Das Modul sendet dann 8 Zyklen lang 40-kHz-Schallimpulse aus und erkennt dann deren Reflexion mit dem Mikrofon. Die Entfernung beträgt //Reaktionszeit (μs) / 58 = Abstand (cm)// \\ oder \\ //Reaktionszeit (μs) / 148 = Abstand (Zoll)// \\ Der Hintergrund dieser Berechnung ist: Die Entfernung wird durch Beobachtung der Reflexion der Schallwellen gemessen. Bei Kenntnis der Zeit der Emission und der Rückkehr von Schallwellen kann die Zeit der Messung berechnet werden. {{ :wiki:proj:hc_sr04.png?250 |HC-SR04 Funktionsprinzip eines Sonarsensors}} Dies muss mit der Schallgeschwindigkeit multipliziert werden. Die dafür erforderliche Verdrehung bei der Berechnung besteht darin, dass die Schallgeschwindigkeit auch in Abhängigkeit von atmosphärischem Druck und Temperatur variiert. In diesem Fall wird nur die Temperaturkorrektur in die Berechnung einbezogen. Die dafür erforderliche Formel lautet: **331.5 + 0.6 * t** Wenn beispielsweise die Temperatur 20 °C beträgt, beträgt die Schallausbreitungsgeschwindigkeit 331,5 + 0,6 × 20 = 331,5 + 12 = 343,5 m / s, d.H. 0,03435 cm / us. Daraus kann auch umgerechnet werden, dass Schall 29.112 Mikrosekunden benötigt, um einen Zentimeter zu erzeugen (1 / 0,03435 cm / µs = 29,112 µs / cm). Im Falle von Geräuschen muss natürlich auch die Hin- und Rückfahrt berechnet werden, damit sie oben herauskommt (gerundet): Reaktionszeit (μs) / 58 = Abstand (cm) Messungen sollten nicht innerhalb von 60 ms wiederholt werden, da sie sich gegenseitig stören können: {{:wiki:arduino:hc_sr04_timing.png|Betrieb von HC-SR04}} Die Erfahrung hat gezeigt, dass es ratsam ist, das Modul an die Stromversorgung anzuschließen, damit der Grund (GND) zuerst auf das Modul angewendet wird. Die Messung wird unsicher, wenn die Reflexionsfläche weniger als 0,5 m² beträgt. Die meiste Software gibt einen Wert von "0" zurück, wenn die Überwachungszeit ohne Antwort abgelaufen ist (d.H. Der Abstand ist zu groß), was in der Software separat getestet werden muss. ====Technische Daten ==== ^Parameter^Wert| |Betriebsspannung|DC 5V| |Stromaufnahme|15 mA| |Betriebsfrequenz|40 kHz| |Maximale Entfernung|4m -- sehr theoretisch| |Mindestabstand|2cm| |Messgenauigkeit|> 3mm| |Messbereich (Winkel)|15°| |Triggersignal|10 μs TTL-Impuls| ==== Pins ==== ^Pin^Funktion| |Vcc|Stromversorgung, 5V DC| |Trig|"ping" Signal| |Echo|Antwort (Echo) auf "ping"| |GND|Grund| ==== HC - SR04 Datenblatt ==== {{:wiki:downloads:distance_ultrasonic_srf04.pdf |distance_ultrasonic_srf04.pdf}} \\ ==== Verdrahtung mit Arduino UNO ==== Arduino 5V ↔ HC-SR04 Vcc \\ Arduino GND ↔ HC-SR04 Gnd \\ Arduino pin 11 ↔ HC-SR04 "Echo" \\ Arduino pin 12 ↔ HC-SR04 "Trig" \\ {{:wiki:arduino:hc_sr04_wiring.png?500|HC‑SR04 Verdrahtung}} ==== Github ==== Die Bibliothek und Beispielprogramme für das Modul können von Github heruntergeladen werden: * https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 \\ * https://bitbucket.org/teckel12/arduino-new-ping/downloads/ \\ ===== Ultrasonic Abstandsmesssensor ===== {{anchor:ultrasonic}} {{ :wiki:sensor:ultrasonic_1.jpg?400|Ultrasonic Abstandsmesssensor}} Der Sensor, der in Autos als Umkehrradar fungiert, muss ähnlich wie der obige Sensor HC-SR04 verdrahtet und programmiert werden. Dies hat im Gegensatz dazu den Vorteil, dass es über größere Entfernungen erfasst und wasserdicht ist. Technische Daten: ** Betriebsspannung: ** DC 5V \\ ** Standby-Stromaufnahme: ** 5mA \\ ** Betriebsstromaufnahme: ** 30mA \\ ** Übertragungsfrequenz: ** 40KHz \\ ** Maximale Entfernung: ** 5M \\ ** Totraum: ** 25cm \\ ** Genauigkeit: ** 0,5 cm \\ ** Betrachtungswinkel: ** <50 ° \\ ** Betriebstemperatur: ** -10 bis 70 ° C \\ ** Lagertemperatur: ** -20 bis 80 ° C \\ ** Größe: ** 41x28,5 mm \\ ** Kabellänge: ** 2,5 m \\