Das nachfolgende Beispiel demonstriert wie der neue Ultraschallsensor SRF05 an ein Controllerboard angeschlossen und per Software die Entfernung ermittelt wird. Hier wird absichtlich der neue zweite Mode demonstriert, da es hierzu im Netz kaum Beispiele gibt. Dieser Mode erlaubt es die komplette Steuerung über nur einen Port durchzuführen. Also die Verbindung erfolgt nur über ein dreipoliges Kabel (+5V, GND, Digitalport). Das Beispiel ist zwar für RN-MiniControl, kann aber auch auf andere Boards (z.B. RN-Control) übertragen werden, es muss lediglich ein freier Port genutzt werden.
Weiteres Beispiel siehe unter "Siehe auch"
'################################################### 'srf05beispiel.bas 'Dieses Programm demonstriert die Verwendung 'des Ultraschall Entfernungssensors SRF05 'mit dem Controllerboard RN-MINICONTROL ' 'Verwendeter Compiler Bascom V 1.11.8.2 ' 'Aufgabe: 'Entfernung wird gemessen und in Zentimetern über 'RS232 ausgegeben ' 'Autor: Frank 'Weitere Beispiele und Beschreibung der Hardware 'unter http://www.Roboternetz.de bzw. robotikhardware.de '################################################### 'Die üblichen Definitionen bei Standardprogrammen auf Miniboard $regfile = "m168def.dat" $crystal = 16000000 'Quarzfrequenz $baud = 9600 $hwstack = 32 $framesize = 32 $swstack = 32 Dim Zeitmessung As Word Dim Entfernung As Word Print "**** SRF05 mit RN-MINICONTROL *****" Print "Entfernung in cm anzeigen" Config Pind.2 = Output Do Portd.2 = 0 'Port Low Pulseout Portd, 2, 40 'Min. 10uS Impuls senden Pulsein Zeitmessung, Pind, 2, 1 Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter Print "Entfernung: "; Entfernung; " cm" Wait 1 Loop
Das nachfolgende Beispiel demonstriert wie der Ultraschallsensor SRF05 mit dem RN-Contol programmiert und angeschlossen wird.
'################################################### '# ultraschall.bas # '################################################### '#Dieses Programm demonstriert die Verwendung # '#des Ultraschall Entfernungssensors SRF05 # '#mit dem Controllerboard RN-Control # '# # '#Aufgabe: # '#Entfernung wird gemessen und in Zentimetern über # '#RS232 ausgegeben # '################################################### $regfile = "m32def.dat" ' Bestimmung des Prozessors $crystal = 16000000 ' Quarzfrequenz $baud = 9600 ' RS232-Uebertragungsrate $hwstack = 32 $framesize = 32 $swstack = 32 Dim Zeitmessung As Word Dim Entfernung As Word Print "**** SRF05 mit RN-MINICONTROL *****" Print "Entfernung in cm anzeigen" ' Der Ultraschallsensor wird am Port A Pin 7 angeschlossen Config Pina.7 = Output ' Bestimme den Anschluss des Sensors und setze ihn auf Output Do Porta.7 = 0 'Port Low Pulseout Porta , 7 , 40 '10uS Impuls bei 4 MHz senden (10*4=40) Pulsein Zeitmessung , Pina , 7 , 1 ' Den Puls wieder empfangen Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt 'Echo-Impuls ist 100uS bis 25 mS lang. Über 30 mS bedeutet, dass kein Objekt im Bereich ist. ' Um eine Messung zu starten, wird ein Impuls von 10 us an den Triggereingang gelegt. ' Der Wandler wird darufhin für 200 us (8 Zyklen mit je 40 KHz) getaktet. Der Echo-Ausgang geht auf High. ' Das erste hereinkommende Echo schaltet den Echo-Ausgang wieder auf Low. ' Die Entfernung ergibt sich rechnerisch als Produkt aus der Schallgeschwindigkeit (344 m/s in Luft bei 21 Grad Celsius) ' und der Länge des Echoimpulses. Da die Streckes des Schalls doppelt zurück gelegt wird, ist das Ergebnis ' durch 2 zu dividieren. ' s[m] = 344 m/s * t[s] / 2 ' ==> s[m] = 172 m/s * t[s] ' Je nach Genauigkeit sind Vereinfachungen möglich und Sinnvoll ' s[cm] = 172 * t[us] / 10000 ' ==> s[cm] = t / (10000 / 172) ' ==> s[cm] = t / 58,14 Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter ' Beträgt die Entfernung einen Abstand von mehr als 10 cm, dann gib zwei Töne aus. If Entfernung = 0 Then Print "Sensor not activ!" End If If Entfernung > 10 Then Sound Portd.7 , 400 , 450 Waitms 5 Sound Portd.7 , 400 , 600 Waitms 5 End if If Entfernung = 0 Then Print "Sensor not activ!" End If Print "Entfernung: " ; Entfernung ; " cm" Wait 1 Loop
Siehe auch
- Distanzmessung_mit_SRF05_an_RN-MiniControl_und_RN-DIGI
- RN-MiniControl
- RN-Control
- Sensorarten
- Bascom
- Avr