PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN-Control + SRF05 als Anti-Kollisionssystem



Torrentula
23.04.2011, 13:08
Hallo!

Für meinen geplanten Bot möchte ich als Controller das RN-Control benutzen. Das Fahrgestell ist das des Robby RP5.

Programmiert wird in C.

Nun meine Frage:

Wenn ich den SRF05 auf den Servo montiere, muss ich den Servo ein kleines Stück nach jeder Messung drehen. Um wie viel Grad sollte ich den Servo jedesmal drehen? Kann ich den Servo ohne Treiber an einen Freien Pin meines RN-Control anschließen?

Wie lange dauert eine Messung? Im Datenblatt steht, wenn nach 30 Sekunden kein Echo kommt ist nichts im Weg. Die Entfernung berechnet sich ja so: Dauer gesendeter Impuls / 58 = Abstand in cm.

Allerdings muss ich ja neben der Abfrage-Routine für den Sensor und dem Drehen des Servos auch noch mein Programm per Interrupt unterbrechen. Ich möchte nämlich nicht jedesmal nach ca. 1m stoppen und dann warten bis er gemessen hat und dann wieder anfahren (bis die Motoren anlaufen dauerts so ca. 3(!) Sekunden).

Wie kann ich das realisieren?

Viele Fragen... hoffe ihr könnt mir helfen!

Gruß

Torrentula

P.S.: Wenn der Thread nicht mehr hierher passen sollte (aufgrund von Fragen zur Programmierung) bitte in das passenden Forum verschieben! Danke!

TobiKa
23.04.2011, 13:32
Wenn ich den SRF05 auf den Servo montiere, muss ich den Servo ein kleines Stück nach jeder Messung drehen. Um wie viel Grad sollte ich den Servo jedesmal drehen?
Kommt drauf an welche Auflösung du möchtest.


Kann ich den Servo ohne Treiber an einen Freien Pin meines RN-Control anschließen?
Hmm ja, das Signalkabel kann so an den Controller. Wenn du den Servo mit an den Spannungsregler hängst, an dem auch der Controller hängt, KANN es zu Problemen kommen.


Wie lange dauert eine Messung? Im Datenblatt steht, wenn nach 30 Sekunden kein Echo kommt ist nichts im Weg. Die Entfernung berechnet sich ja so: Dauer gesendeter Impuls / 58 = Abstand in cm.
Du sagst es ja selbst, die exakte Dauer hängt von der Entfernung ab.


Allerdings muss ich ja neben der Abfrage-Routine für den Sensor und dem Drehen des Servos auch noch mein Programm per Interrupt unterbrechen. Ich möchte nämlich nicht jedesmal nach ca. 1m stoppen und dann warten bis er gemessen hat und dann wieder anfahren (bis die Motoren anlaufen dauerts so ca. 3(!) Sekunden).
Die steuerung des Servos kannst du über ein PWM machen, das läuft dann nebenbei und unterbricht den eigentlichen Code nicht.
Die Geschwindigkeit der Motoren steuerst du auch über PWM, warum sollte sich da was wegen der Messung ändern?!

Torrentula
23.04.2011, 13:40
Die steuerung des Servos kannst du über ein PWM machen, das läuft dann nebenbei und unterbricht den eigentlichen Code nicht.
Die Geschwindigkeit der Motoren steuerst du auch über PWM, warum sollte sich da was wegen der Messung ändern?! Ja die Motoren werden über PWM gesteuert aber das Problem ist, wenn der Sensor dann was erfasst, muss der Programmablauf von "Fahre geradeaus" zu "weiche dem Hindernis aus" geändert werden.

Wie kann ich anhand der Messung erkennen wo sich das Objekt befindet? Einfach anhand der Nummer der Messung, die das Hindernis erkennt?

Die Motoren des Chassis steuere ich so an, wie im C-Beispielprogramm aus dem Wiki:



void Motortest(void) {
Mlinksvor();
Mrechtsvor();

setPWMlinks(0);
setPWMrechts(0);
waitms(40);

for(uint8_t i=0; i<255; i=i+5) {
setPWMlinks(i);
setPWMrechts(i);
waitms(40);
}

setPWMlinks(255);
setPWMrechts(255);
waitms(40);

for(uint8_t i=255; i>0; i=i-5) {
setPWMlinks(i);
setPWMrechts(i);
waitms(40);
}

setPWMlinks(0);
setPWMrechts(0);

Mlinksstop();
Mrechtsstop();
waitms(300); }

TobiKa
23.04.2011, 13:51
Na wenn du den Servo auch mit diesem setPWM (die richtige Frequenz vorrausgesetzt) und 0 - 255 steuerst (daraus den Winkel ermitteln) und die Entfernung kennst, dann kannst du mit einer Winkelfunktionen die Position des Objekts errechnen.

Torrentula
24.04.2011, 13:50
Naja dafür kann ich ja eine eigene Funktion bauen (diese ist für den RN-Control Motortreiber).

Aber wie muss ich dann die Bits fürs PWM und den Vorteiler einstellen?

Servo ist dieser hier: http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=70&products_id=48