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







Zitieren

Lesezeichen