PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensoren auslesen und Werte an Servos weitergeben



semicolon
04.07.2006, 12:31
Hallo Leute

Ich bräuchte von euch ein paar Ideen bezüglich meiner Programm-Struktur von den Roboter.

Ich verwende drei Sharp GP2D12 Distanzsensoren für links, rechts und nach vorne. Weiter verwende ich eine AVR Atmega32 Controller der die Daten aus den Sensoren ausliest. Diese werden anschliessend einerseits an den Lenkservo und andererseits an den Fahrtregler ausgegeben.

Nun zu meinem Problemchen:

Wie soll ich mein Programm strukturen (auslesen, dann ausgeben)?

Zuerst Sensor links, dann entscheiden ob lenken.
Dann Sensor nach vorne, entscheiden Bremsen oder Gas geben.
Dann Sensor rechts, entscheiden ob lenken.

So war mal meine erste Idee.

Hat jemand eine bessere oder "intelligentere" Lösung?

Danke für eure Hilfe

0tes_Gesetz
04.07.2006, 20:06
Wie ist denn deine Vorstellung von der zeitlichen Dimension?

Der Sensor arbeitet doch instantan.. dh. die Totzeit deines Systems sind nur durch die jeweiligen Wartezeiten für das A/D-Wandeln gegeben.
Wenn ich mal 10Bit Wandlung annehme als genauestes (mit zB. bei 16MHz ADC-Prescaler: 128, bei 1MHz ADC-PS: 8 ) dann kommt man auf 125kHz Clock für den AD-Wandler.
Bei ner einzelnen Wandlung braucht man maximal 25 AD Clocks, also 0,2ms..

Wenn Du die AD-Wandlung in dein Main Programm packst, kannst Du minimal alle 0,2ms einen Sensor auslesen..
Wenn Du die Wandlungen nicht single machst, gehts fast doppelt so schnell.
Wenn du nur 8Bit nimmst (den AD-Wert Left-Orientated und nur oberes Byte auslesen) kannst Du nochmal ein bisschen schneller machen..

Insofern ist der gepostete Ablauf..

Zuerst Sensor links, dann entscheiden ob lenken.
Dann Sensor nach vorne, entscheiden Bremsen oder Gas geben.
Dann Sensor rechts, entscheiden ob lenken.
.. ein wenig "daneben" ;)

Ich würde erst alle 3 Sensoren abfragen und dann ne Richtungs-/Geschwindigkeitsentscheidung treffen.

Grüße
0tes_Gesetz

semicolon
04.07.2006, 22:36
Ok, ich glaube der Flaschenhals liegt eher an der Geschwindigkeit der Distanzsensoren. Die arbeiten ja nur mit 40ms. Deshalb denke ich, dass ich mit er A/D Wandlung genügend Zeit habe. Oder was meinst du??

0tes-Gesetz
05.07.2006, 13:53
Oh, dachte die gehen instantan.. im schlimmsten Fall also 54ms pro Sensor..

hm..

Dh. für 3 Sensoren rund 150ms, dann ne Rechnung und "do it again, sam".

Wenn ne Entscheidung alle 150ms schnell genug ist (wie schnell fährt dein Robbi?), würd ich erst alle drei abfragen und dann weitermachen..

Btw. der Sensor gibt doch PWM aus, oder?
Dh. man könnte auch per rising/falling Edge mit nem Timer die Werte abholen.. das nur so als Idee, falls dir die AD's ausgehen sollten ;)

Grüße
0tes-Gesetz