PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servomotoren steuern / Greifer bauen



Schifty
05.03.2010, 12:19
Hallo,

ich habe einen VSD-1 Servomotor von Modelcraft gekauft und an meinen RP6 über einen I2C I/O Expander angeschlossen. Mit diesem Code, der innerhalb einer Endlosschleife läuft, aktiviere und deaktiviere ich eine 5 Volt Spannung die als Steuersignal beim Servomotor ankommt.






if (firstRun == 0){
I2CTWI_transmitByte(PCF8574_8LEDS_ADR, (0b00000000) );
firstRun = 1;
}

uint8_t bumper_left = getBumperLeft();
uint8_t bumper_right = getBumperRight();


if (bumper_left) {
if(flipLeft == 0){
flipLeft = 1;
I2CTWI_transmitByte(PCF8574_8LEDS_ADR, (0b00000000) );
}
else {
flipLeft = 0;
I2CTWI_transmitByte(PCF8574_8LEDS_ADR, (0b11111111) );
}

}
if (bumper_right) {
I2CTWI_transmitByte(PCF8574_8LEDS_ADR, (0b00000000) );

}


mSleep(50);




Der RP6 hat vorne zwei Bumper die ich als Steuerknöpfe missbrauche.
Halte ich den linken Bumper gedrückt und drücke dann den rechten Bumper erreiche ich eine Winkelveränderung von 20 Grad auf ca. 160 Grad. Lasse ich den rechten Bumper wieder los dreht sich der Servo zurück auf 20 Grad. Ab und zu "zittert" der Motor hörbar.


Wie würde ein setzeWinkel(Winkel) Befehl aussehen?

Kennt ihr Bauanleitungen (mit Einkaufslisten) für Greifer?

pointhi
04.04.2010, 10:58
Die PWM-Signale von Servos haben eine länge von 1-2ms. Dabei ist ein positives signal von 1,5ms die Mittelstellung. Diese Signale werden ca. alle 20ms ausgesendet. Wenn ich eine funktion bauen sollte, die den Winkel in Signalzeiten umrechnet, würde ich einen PWM-Ausgang nutzen. Der Rest sind ein paar Register und eine Formel zum umrechnen. Genau kann ich dir aber nicht helfen, da ich selber PIC Programmiere, und der Roboter RP6 mittels AtmelController gesteuert wird.