Hi,

ich hab mal ein paar Bilder gemacht:

Die Sensoren hab ich auf einer Lochrasterplatine festgeschraubt:

Bild hier  


Die beiden Servos hab ich einfach mit Doppelklebeband verbunden:

Bild hier  


Hier noch mal eine Aufnahme von oben:

Bild hier  

------------------------------------------------------------------------------------

zur Software:

anfänglich hab ich mir das so vorgestellt, dass der US-Sensor einmal hin und herfährt und die Koordinaten, an denen sich ein Hindernis befindet, speichert. Danach soll der Servo zu diesen Positionen hinfahren und der IR-Sensor soll genaue Messungen vornehmen (eigentlich könnte der IR-Sensor auch gleich nach der Entdeckung des Objekts nachmessen).
Nach einem ersten Test stellte sich jedoch heraus, dass der US-Sensor so genau arbeitet, dass der IR-Sensor die meiste Zeit überflüssig ist (jedoch nicht immer).
Als Controllerboard verwende ich eine RN-Control, da dies mein erstes Projekt ist, und ich noch nicht so viel Erfahrung in sachen uCs hatte. Dieses Board steuert einerseits die beiden Servos und wertet andererseits die eingehenden Daten der Sensoren aus und bestimmt dann die Richtung, in der der Roboter ausweichen soll. Über den RS232 - Bus wird diese Information dann einem CCRP5 - Roboter von Conrad mitgeteilt, der das Fahrgestell bildet. Die CC1 am Roboter nimmt die Daten entgegen und führt das Ausweichmanöver aus.


Der Code am RN-Control sieht so aus:

Code:
' hier die nötigen Definitionen
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 16000000

' Definition der beiden Servos/angeschlossen an PortA.0 bzw. PortA.1
Config Servos = 2 , Servo1 = Porta.0 , Servo2 = Porta.1 , Reload = 20
Config Adc = Single , Prescaler = Auto

Config Porta.0 = Output
Config Pinc.6 = Output
Config Pinc.7 = Output
Config Pind.4 = Output
'Ports für rechten Motor
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pind.5 = Output
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02

Config Pina.2 = Input
Config Pina.3 = Output
Config Pina.4 = Input

Portd.4 = 0



Enable Interrupts


' Variablen definieren

Dim I As Byte
Dim Us As Byte
Dim X As Byte
Dim Status As Byte
Dim Zeitmessung As Word
Dim Entfernung As Word



' Hauptprogramm


Do

Gosub Usscan   'ruft Unterprogramm zur Messung durch US-Sensor auf

Loop

End





' Unterprogramme

Usscan:
    ' Scanschleife/zählt von 27 bis 85 und übermittelt den aktuellen Wert der Zählvariable den Servos, die sich an diese Position begeben
    For I = 27 To 85
         Servo(1) = I
         Servo(2) = 50

'eigentlicher Messvorgang des US-Sensors
         Pulseout Porta , 3 , 40
         Pulsein Zeitmessung , Pina , 4 , 1
         Zeitmessung = Zeitmessung * 10
         Entfernung = Zeitmessung / 58

'Bestimmen der Ausweichrichtung
         X = I
         If Entfernung < 40 And I < 50 Then
         Gosub Links
         End If

         If Entfernung < 40 And I > 50 Then
         Gosub Rechts
         End If


         If Entfernung > 40 Then Gosub Gerade


         Waitms 35
   Next
   Return

'Unterprogramme zur Übermittlung der Daten an CCRP5
Links:
   Status = 0
   Printbin Status
   Servo(1) = X
   Servo(2) = 50
   Waitms 50
   Return


Rechts:
   Status = 1
   Printbin Status
   Servo(1) = X
   Servo(2) = 50
   Waitms 50
   Return


Gerade:
   Status = 2
   Printbin Status
   Return

Weitere Informationen zum Bot findest du auf meiner Website (www.ires.roboterbastler.de (befindet sich allerdings noch im Alpha-Stadium)) bzw. im Forum (dort sind auch weitere Programme zu finden).


Viele Grüße
ikarus_177