Hallo Gemeinde
Nach den verschiedenen Artikeln und Erklärungen hat ein Servo einen
Drehbreich von ca. 180°. Dabei nimmt man die Zeiteinstellung in dem
kleinen Programm mit _delay_us(1500) vor. Wie in diesem Beispiel
1 |
|
2 | #define F_CPU 16000000UL // Angabe Frequenz
|
3 |
|
4 | #include <avr/io.h>
|
5 | #include <util/delay.h>
|
6 |
|
7 | int main (void)
|
8 | {
|
9 | DDRA = (1<<PA1); // Angabe Ausgang
|
10 | while( 1 ) // Wiederholung
|
11 | {
|
12 | PORTA |= (1<<PA1); // Ausgang einschalten
|
13 | _delay_us(1950); // Zeit Drehung
|
14 | PORTA &= ~(1<<PA1); // Ausgang abschalten
|
15 | _delay_ms(18); // Wiederholt alle 18ms
|
16 | }
|
17 | return 0;
|
18 | }
|
Mit 2 verschiedenen Servos (unterschiedlicher Typ) musste ich die Zeit
von ca. 480 bis 2150 us einstellen um die 180° zu erreichen. Die Zeit
sollte aber nur von ca. 1ms bis 2 ms liegen (nach Artikeln). Mit diesen
Zeiten erreiche ich aber keine 180° (AT 1284p, C, 16MHz)
Wieso?
achim