Servo_Ansteuerung

OP #2736735
Lesenswert?

Moin Moin Mikrocontroller Freunde,

ich bin dabei einen Servo (Tower Pro Micro Servo 9g SG90) mit meinem µC 
(Atmel Mega32) anzusteuern. Dabei benutze ich diesen simplen Code:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define F_CPU 16000000UL               //externer Quarz, 
4
                                       //Fusebits sind gesetzt
5

6
int main (void)
7
{
8
  DDRB |= (1<<PB3);
9
  
10
  while( 1 ) {
11
    
12
      PORTB |= (1<<PB3);
13
    _delay_us( 1500 );     //µC in mittlere Position
14
    PORTB &= ~(1<<PB3);
15
    _delay_ms( 18 );       //unkritisch  
16
  }
17
 
18
  return 0;
19
}

Mein Problem ist folgendes: Auch nach vielen unterschiedlichen Versuchen 
fährt der Servo immer bis zum Anschlag und versucht weiterzufahren. ich 
habe es nur einmal geschafft, dass der Servo souverän auf eine Position 
fährt und das war als ich eine Pulslänge von 1us eingestellt habe. Die 
Position hat er sich gemerkt und ist er wieder angefahren. Ansonsten 
bekomme ich keine definierten Positionen angefahren!
Über Hilfe würde ich mich wirklich sehr freuen!!!
OP #2736882
Lesenswert?

Die Fuses stimmen definitiv
Der Servo ist es auch nicht, da ich drei vom gleichen Modell habe und 
alle gleich reagieren.
Die Verdrahtung ist einfach, aber auch die ist nach meinem Voltmeter 
fehlerfrei.

Kann es sein, dass die Bandbreite des Rechteckimpulses auf den Servo 
eine komplett andere ist? Oder ist die bei alles Servos immer gleich?
Ich lese etwas von "Dead band width 10us" 
[http://www.servoshop.co.uk/index.php?pid=SG90G], wobei die auf 
verschiedenen Seiten total unterschiedlich angegeben wird. Ich weiß aber 
nicht was das ist.

Das nervt mich wirklich. Hat mich schon den gesamten Tag gekostet!!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren