Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Laderegler Test Tueftler Seite

(Siehe auch)
Zeile 129: Zeile 129:
  
 
==Siehe auch==
 
==Siehe auch==
 +
* [[Distanzmessung_mit_SRF05_an_RN-MiniControl_und_RN-DIGI]]
 
* [[RN-MiniControl]]
 
* [[RN-MiniControl]]
 
* [[RN-Control]]
 
* [[RN-Control]]

Version vom 13. April 2009, 08:20 Uhr

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.

Srf05mode2.gif


Srf05minicontrol.gif


'###################################################
'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

Weblinks


LiFePO4 Speicher Test