PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infos zum Servo ES-05 von Modelcraft (Conrad)



s.frings
27.05.2010, 08:24
Ich habe mir mal einen Servo vom Typ ES-05 angeschaut, und wollte hier meine Erkenntnisse heraus plaudern, für den Fall, daß jemand anderes Infos über diesen Servo braucht:

Abmessungen (ohne Hebel und Befestigungslaschen) ca: 23x23x13mm
Stromversorgung 4-6 Volt
Ansteuerung: PWM Signal

Ich habe den Servo direkt an einen AVR Angeschlossen, der mit 5V versorgt wurde. Dabei habe ich folgende Werte für das PWM Signal ermittelt:

Linker Anschlag: 0,4 ms
Mitte: 1,3 ms
Rechter Anschlag: 2,4 ms

Zwischen den High-Pulsen liegen Low-Pausen im Bereich 15-200ms. Bei deutlich mehr als 20ms bewegt sich der Servo langsamer und ruckelnd.

Der Stecker passt auf eine dreipolige einreihige Stiftleiste.

1 braun Gnd
2 rot VCC
3 orange PWM Signal

Dieser spottbillige Servo ist übrigens hochwertig verarbeitet. Das Getriebe ist ordentlich eingefettet, die Elektronik sauber gelötet und alle Anschlußdrähte sind mit Kleber fixiert. Das interne Poti ist gekapselt, was lange Haltbarkeit verspricht.

oberallgeier
27.05.2010, 09:09
Schön! Diesen Typ hatte ich vor zwei Jahren gehackt, (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=332283&sid=04c3b5548a203d42b421c6e807de252f#332283) danach Stromverbrauch und Wärmeentwicklung gemessen. Grund: ich hatte Berichte über schlechte Haltbarkeit gelesen und auch bei mir hielten die Dinge als Ser vos nicht lange. Die gehackten Dinger laufen bei mir als Getrie bemotoren mit Drehzahlerfassung durch die Gabellichtschranke - und laufen und laufen . . . Weil die sich so gut bewährten, hatte ich dann auch noch das Getri ebe für höhere Drehzahl umgebaut. (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=437282&sid=04c3b5548a203d42b421c6e807de252f#437282) Damit erreiche ich nach ursprünglich 1/sec als Abtriebsdrehzahl mittlerweile max. ca. 8,5 /sec bei 5V. Und wenn man am Ser vogehäuse rumschnitzt, dann kann man sogar auf eine Spurweite von 43 mm (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=432909&sid=bea6d77bdf6ad8a9f421f7c2b995a331#432909) kommen.

Searcher
27.05.2010, 09:15
Hallo,

ich benutze den Servo zum Lenken in einer Knicklenkung. Vielleicht kennst Du den thread. https://www.roboternetz.de/phpBB2/viewtopic.php?p=500614#500614

Durch Veränderung des Impulsabstandes von 18ms auf 9ms und dem daraus resultierenden veränderten Fahrverhalten des Vierrads habe ich den Schluß gezogen, daß der Servo bei kurzen high-Impulsen eine schlechtere Stellgeschwindigkeit/Ansprechgeschwindigkeit hat als bei den langen.

Es gibt also unterschiedlich lange Stellzeiten je nach Stellrichtung. Leider kann ich das nicht direkt zu messen um die Beobachtung zu bestätigen.

Die Anschlußbelegung bzw Farben treffen auf den "ES-05 JR" zu. Den Servo gibt es wohl auch noch als "ES-05 FUT" mit anderen Anschlußdrahtfarben.

Gruß
Searcher

s.frings
27.05.2010, 11:34
Meiner dreht sich auch in die beiden Richtungen unterschiedlich schnell. Ich halte das für normal, so verhält sich jeder Motor (mehr oder weniger).

s.frings
27.05.2010, 15:05
Ich habe heute ein C Programm erarbeitet, mit dem man bis zu 12 Servos unter Verwendung eines 8-Bit Timers ansteuern kann.


// Example source code, that may be used to control up to 6 servo
// motors using a single 8 bit timer.

// On each timer overflow, the next channel is handled, which allows us
// to multiplex between 6 channels. The timer compare register A is used
// to control the puls width. You could add code to use the timer compare
// register B which would allow handling of up to 12 channels.

// With a 20Mhz clock, the duty cycle is 19,8ms
// and the pulse width is pwm_value*00.128ms.

// With a 16Mhz clock, the duty cycle is 25ms
// and the pulse width is pwm_value*00.16ms.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

// Values for up to six PWM channels.
// On each channel, the special value 0 can be used to switch the signal off.
volatile uint8_t pwm_value[6];


// The timer compare interrupt ends the current PWM pulse
ISR(TIMER2_COMPA_vect) {
PORTC &= ~(1+2+4+8+16+32); // set all 6 PWM outputs to low
PORTB |= 4; // status LED off
}


// The timer overflow interrupt starts a PWM pulse,
// on each interrupt, another channels is handled.
ISR(TIMER2_OVF_vect) {
static uint8_t channel=0;
uint8_t value=pwm_value[channel];
if (value>0) {
switch (channel) {
// If you need less than 6 channels, then comment out the unused lines below
case 0: PORTC |= 1; break;
case 1: PORTC |= 2; break;
case 2: PORTC |= 4; break;
case 3: PORTC |= 8; break;
case 4: PORTC |= 16; break;
case 5: PORTC |= 32; break;
}
OCR2A=value;
PORTB &= ~4; // status LED on
}
if (++channel==6) { // Do not change the 6, even when you need less than 6 channels!
channel=0;
}
}


int main() {
// Initialize I/O Pins
DDRB |= 4; // status LED
DDRC |= 1+2+4+8+16+32; // six PWM outputs

// Initialize timer 2, normal mode, prescaler 256, interrupt on overflow and compare match A.
TCCR2A = 0;
TCCR2B = (1<<CS22) | (1<<CS21);
TIMSK2 = (1<<TOIE2) | (1<<OCIE2A);
sei();

// Move servo on channel 5 to three different positions repeatedly.
// The following values are designed for the servo ES-05 and 20Mhz CPU clock.
while (1) {
pwm_value[5]=38;
_delay_ms(2000);
pwm_value[5]=108;
_delay_ms(2000);
pwm_value[5]=188;
_delay_ms(2000);
}

return 0;
}