Forum: Mikrocontroller und Digitale Elektronik dürftige informationen über servo


von Daniel K. (camarril)


Lesenswert?

Guten Abend liebe Leute :P

Ich war heute bei Conrad und habe mir solch einen Servo gekauft: 230500 
- 62
Leider fällt das Datenblatt recht dürftig aus.
Ich habe ihn vorsichtshalber nicht direkt an meinen ATmega8535 
angeschlossen, sondern über einen Motortreiber.
Standartmäßig wird wohl von den meisten Servos ein 50Hz Signal erwartet, 
wobei die dauer in der Das signal auf 5V liegt die gewünschte Position 
bestimmt(http://www.flugleiter.de/rc/servo). Leider ist es meinem Servo 
wohl vollkommen egal wie lange diese 5V anliegen, er dreht immer ganz 
nach links und verweilt dort.
Hier einmal das Testprogramm, dürfte eigentlich nicht falsch sein^^, die 
Verkabelung habe ich auch 100 mal überprüft.
1
#include <avr/io.h>
2
#define F_CPU 4000000UL
3
#include <util/delay.h>
4
 
5
int main( void )
6
{
7
    DDRA = 0xFF;
8
  while(1)
9
  {
10
    PORTA = 0x00;
11
    _delay_ms(VCC);//VCC+GND immer 20ms
12
    PORTA = 0xFF;
13
    _delay_ms(GND);
14
  }
15
    return 0;
16
}

Hat jeman eine Idee wo der Fehler liegen könnte?

von Lukas K. (carrotindustries)


Lesenswert?

Die Servos sind alle gleich anzusteuern.
Auf http://www.rn-wissen.de/index.php/Servo ist das ganz anschaulich 
beschrieben.

von holger (Gast)


Lesenswert?

AVCC angeschlossen?
Ich sehe keine Definition für VCC oder GND.
Optimierung des Compilers eingeschaltet?

Fragen über Fragen.

von max power (Gast)


Lesenswert?

>Hier einmal das Testprogramm, dürfte eigentlich nicht falsch sein^^
eingentlich!

das signal sieht bei dir folgendermasen aus:
20ms 0volt
20ms 5volt

es sollte aber so aussehen:
die signalleitung ist 0 volt und jede 20 ms kommt ein 5 volt impuls der 
für 1-2ms auf 5 volt bleibt und dach wieder auf 0 volt zurück geht.

von MarioT (Gast)


Lesenswert?

Daniel Hallmann schrieb:
> wobei die dauer in der Das signal auf 5V liegt die gewünschte Position
> bestimmt(http://www.flugleiter.de/rc/servo).

Das stimmt ja gar nicht. Suche in Google mal ne neue Seite.

von Bernd O. (bitshifter)


Lesenswert?

Daniel Hallmann schrieb:
> Guten Abend liebe Leute :P
>
> Ich war heute bei Conrad und habe mir solch einen Servo gekauft: 230500
> - 62
> Leider fällt das Datenblatt recht dürftig aus.
> Ich habe ihn vorsichtshalber nicht direkt an meinen ATmega8535
> angeschlossen, sondern über einen Motortreiber.
> Standartmäßig wird wohl von den meisten Servos ein 50Hz Signal erwartet,
> wobei die dauer in der Das signal auf 5V liegt die gewünschte Position
> bestimmt(http://www.flugleiter.de/rc/servo). Leider ist es meinem Servo
> wohl vollkommen egal wie lange diese 5V anliegen, er dreht immer ganz
> nach links und verweilt dort.
> Hier einmal das Testprogramm, dürfte eigentlich nicht falsch sein^^, die
> Verkabelung habe ich auch 100 mal überprüft.
>
1
> #include <avr/io.h>
2
> #define F_CPU 4000000UL
3
> #include <util/delay.h>
4
> 
5
> int main( void )
6
> {
7
>     DDRA = 0xFF;
8
>   while(1)
9
>   {
10
>     PORTA = 0x00;
11
>     _delay_ms(VCC);//VCC+GND immer 20ms
12
>     PORTA = 0xFF;
13
>     _delay_ms(GND);
14
>   }
15
>     return 0;
16
> }
17
>
>
> Hat jeman eine Idee wo der Fehler liegen könnte?
Vielleicht am falschen Timing?

Ein Servo wird folgendermaßen angesteuert:

Ein Hign-Impuls von 1 ms Dauer bedeutet Linksanschlag, ein High-Impuls 
von 2 ms Dauer bedeutet Rechtsanschlag. Dazwischen ist es linear, das 
heisst ein Impuls von 1,5 ms bedeutet Mittelstellung.
Zwischen den Impulsen sollten so ca. 20 ms liegen. Ob die damit 
entstehende Periodendauer jetzt genau 50 Hz ergibt spielt keine Rolle.

Probier einfach mal mit 1ms Impulsdauer und 20ms Pause und dann mit 2ms 
Impulsdauer und 20 ms Pause. Dann sollte das Servo an die Endanschläge 
laufen.
Wenn das mal funktioniert, kannst Du dich immer noch dabei verkünsteln, 
bei jeder Impulsdauer eine gesamte Periodendauer von 20 ms einzuhalten.

Wenn das nicht funktioniert, dann prüfe das Signal am Ausgang des 
Motortreibers. Wenn Du kein Oszi hast, dann klemme den Motortreiber ab 
und einen Widerstand von ca. 1k zwischen AVR und Servo - das schützt 
schon genug.



Gruß,
Bernd

von max power (Gast)


Lesenswert?

>kannst Du dich immer noch dabei verkünsteln,
>bei jeder Impulsdauer eine gesamte Periodendauer von 20 ms einzuhalten.
ob die periode nun 30ms oder 10 ms hat ist nebensächlich.
im focus steht die 1-2 ms fein aufzulösen.

von Daniel K. (camarril)


Lesenswert?

holger schrieb:
> Ich sehe keine Definition für VCC oder GND.

Sry, ich habe mich da blöd ausgedrückt^^
Also VCC und GND habe ich im AVR studio natürlich durch Zahlen ersetzt 
und

max power schrieb:
> das signal sieht bei dir folgendermasen aus:
> 20ms 0volt
> 20ms 5volt

das meinte ich auch eher so: VCC + GND = 20, also ich hab z.B. VCC 1 und 
GND 19 gewählt.

von max power (Gast)


Lesenswert?

holger schrieb:
> AVCC angeschlossen?

von max power (Gast)


Lesenswert?

>VCC + GND = 20, also ich hab z.B. VCC 1 und GND 19 gewählt.
so sollte das funktionieren.

von Daniel K. (camarril)


Lesenswert?

Ich habe gerade herausgefunden, wo das Problem lag... ich hatte mich auf 
eine Internetseite verlassen, die scheinbar nur Schwachsinn schreibt.
Laut dieser war Rot=VCC, ORANGE = GND und Braun für den Impuls Aufreg

Luk4s K. schrieb:
> Die Servos sind alle gleich anzusteuern.
> Auf http://www.rn-wissen.de/index.php/Servo ist das ganz anschaulich
> beschrieben.

Wenn ich ihn so anschließe, dann klappts. Natürlich dreht der immer nach 
links, wenn der Impuls dauerhaft Low ist... und ich hatte mich auch 
gewundert, dass er viel langsamer war als angegeben^^, wurde ja auch 
über PWM gesteuert...

Naja, ich danke trotzdem allen, die sich Zeit für nen Trottel wie mich 
genommen haben:)

von max power (Gast)


Lesenswert?

>eine Internetseite verlassen, die scheinbar nur Schwachsinn schreibt.
>Laut dieser war Rot=VCC, ORANGE = GND und Braun für den Impuls Aufreg
je nach hersteller sind die kabel andersfarbing und mit anderen steckern 
belegt.

>dass er viel langsamer war als angegeben^^, wurde ja auch
>über PWM gesteuert
also der servo motor wurde vom atmega pin versorgt, die dinger ziehen je 
nach größe ordenlich strom.
wenn da mal der pin nicht davon ne kleine make hat...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.