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!!!