Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

K
 
(6 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Das nachfolgende Beispiel demonstriert wie der neue Ultraschallsensor SRF05 an ein Controllerboard angeschossen und per Software die Entfernung ermitelt wird. Hier wird absichtlich der neue zweite Mode demonstriert, da es hierzu im Netzt 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 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.
+
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"
  
 
[[Bild:srf05mode2.gif|center]]
 
[[Bild:srf05mode2.gif|center]]
Zeile 47: Zeile 49:
  
 
Do
 
Do
     Portd 0.2 = 0                            'Port Low
+
     Portd.2 = 0                            'Port Low
 
     Pulseout Portd, 2, 40                    'Min. 10uS Impuls senden
 
     Pulseout Portd, 2, 40                    'Min. 10uS Impuls senden
 
     Pulsein Zeitmessung, Pind, 2, 1
 
     Pulsein Zeitmessung, Pind, 2, 1
Zeile 58: Zeile 60:
  
 
</pre>
 
</pre>
 +
 +
Das nachfolgende Beispiel demonstriert wie der Ultraschallsensor SRF05 mit dem RN-Contol programmiert und angeschlossen wird.
 +
 +
<pre>
 +
'###################################################
 +
'#              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
 +
</pre>
 +
 +
==Siehe auch==
 +
* [[Distanzmessung_mit_SRF05_an_RN-MiniControl_und_RN-DIGI]]
 +
* [[RN-MiniControl]]
 +
* [[RN-Control]]
 +
* [[Sensorarten]]
 +
* [[Bascom]]
 +
* [[Avr]]
 +
 +
==Weblinks==
 +
*  [http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=329 SRF10 Deutsches und englisches Datenblatt]
 +
 +
[[Kategorie:Quellcode Bascom]]
 +
[[Kategorie:Robotikeinstieg]]
 +
[[Kategorie:Praxis]]
 +
[[Kategorie:Sensoren]]

Aktuelle Version vom 13. April 2009, 08:21 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.

Weiteres Beispiel siehe unter "Siehe auch"

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