Ansteuern des Servomotors funktioniert nicht

OP #5414227
Lesenswert?

Hallo,

Ich wollte einen SG90 mit meinem Atmega328P ansteuern, aber es 
funktioniert nicht. Dazu habe ich mir folgendes angeschaut: 
http://extremeelectronics.co.in/avr-tutorials/servo-motor-control-by-using-avr-atmega32-microcontroller/

Die PWM Leitung des Servos ist an PD5 angeschlossen

Mein Code:
1
#define F_CPU 16000000UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
int main() {
7
    TCCR1A |= (1 << COM1A1) | (1 << COM1B1) | (1 << WGM11);
8
    TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10);
9
    ICR1 = 4999;
10

11
    DDRD |= 1 << DDD5;
12

13
    while(1) {
14
        OCR1A = 250;
15
        _delay_ms(1500);
16
    
17
        OCR1A = 500;
18
        _delay_ms(1500);
19
    }
20
}

Woran könnte das liegen?
(Firma: matzetronics) #5414247
Lesenswert?

Grevak D. schrieb:
> Wo stehen die jeweiligen PINs für die Buffer?

Was für Buffer? Die Pinbelegung der Mega48-328 stehen im Datenblatt auf 
der 2. Seite. Die Belegung ist fix, also liegt z.B. OC1A auf PB1, OC1B 
auf PB2 usw.

Grevak D. schrieb:
> Und wie finde ich heraus welche Winkel welcher Wert für OCR1A ist?

Schon der indische Artikel sagt ja, das das von Servo zu Servo etwas 
unterschiedlich ist. Im Allgemeinen bewegen sich die Servopulse immer 
zwischen 1ms und 2ms, so das die Mitte etwa bei 1,5ms liegt.
Beitrag #5414466 wurde von einem Moderator gelöscht.
Gast #5414474
Lesenswert?

Grevak D. schrieb:
> Also muss es kleiner als 1 ms und größer als 2 ms sein der Bereich

Das ist bei den meisten Servos so. Der Bereich 1..2ms wird garantiert. 
Bei deutlich kürzeren oder längeren Zeiten kann exemplar- und 
typabhängig der Anschlag sein, so dass der Motor blockiert wird.

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