Problem Modellbauservo-Ansteurung mit Atmega8

Gast #3961348
Lesenswert?

Hallo,
für ein Schulprojekt meines Sohne möchte ich ein Modellbauservo mit dem 
Atmega8 steuern. Hierzu brauche ich ja, wie ich gelesen habe eine 
20ms-Phase mit jeweils 1-2ms Peak, um die Position zu steuern.
Ich habe mir für meinen Atmega folgendes Programm geschrieben:
1
#define F_CPU 1000000UL
2

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

6
int main(void){
7

8
  TCCR1A |= (1<<COM1A1) | (1<<WGM11); // non-inverting mode for OC1A
9
  TCCR1B |= (1<<WGM13) | (1<<WGM12) | (1<<CS11); // Mode 14, Prescaler 8
10

11
  ICR1 = 2500; // 320000 / 8 = 40000
12

13
  DDRB |= (1<<PB1); // OC1A set to output
14

15
  while(1){
16
//125 = 1ms
17
//187 = 1,5 ms
18
//250 = 2ms
19

20
    OCR1A = 250; // set to 0° --> pulsewidth = 1ms
21
    _delay_ms(1000);
22
    //
23
    OCR1A = 187; // set to 0° --> pulsewidth = 1ms
24
    _delay_ms(1000);
25
    //
26
    OCR1A = 125; // set to 0° --> pulsewidth = 1ms
27
    _delay_ms(1000);
28
    //
29
  }
30
}

Auf dem Oszi bringt es auch genau den gewünschten Effekt (20ms mit 1-2ms 
Peak). (Angeschlossen an OC1A)
Aber, mein Servo macht keinen Mux?!? Habe ich hier einen Denkfehler?
Es sind mir 2 Dinge aufgefallen:
- am Ausgang des Atmega (OC1A bzw. PB1) habe ich ja keine +5V, sondern 
im Takt immer Masse
- zum Spaß habe ich mal die FB angeschlossen und nachgeschaut was da 
rauskommt --> da habe ich eine Sinuskurve.
Ich mach hieran schon sehr lange rum und komme einfach nicht weiter.
Gruß
Pfeiffy
Gast #3961366
Lesenswert?

Pfeiffy schrieb:
> Es sind mir 2 Dinge aufgefallen:
> - am Ausgang des Atmega (OC1A bzw. PB1) habe ich ja keine +5V, sondern
> im Takt immer Masse
> - zum Spaß habe ich mal die FB angeschlossen und nachgeschaut was da
> rauskommt --> da habe ich eine Sinuskurve.
> Ich mach hieran schon sehr lange rum und komme einfach nicht weiter.
> Gruß
> Pfeiffy

Wie hast du das Servo angeschlossen?
Wie misst du das Signal (Schaltplan-Skizze würde helfen).
Gast #3961437
Lesenswert?

Pfeiffy schrieb:
> hallo,
> das servo bekommt strom von einem trafo, ca. 6v, es muckt

Ein einfaches Modellbauservo erwartet 4,8V-6V Gleichspannung.
Hinter einem Trafo brauchst du eine Gleichrichtung und Glättung!

Bei Mikrosevos musst du mit Anfahr und Blockierströmen >500mA rechnen.


Pfeiffy schrieb:
> ? muss ich die Masse des Trafos mit der Masse vom Atmega verbinden?
ja natürlich. wie soll der Signaleingang denn Hi/Lo erkennen, wenn es 
kein Bezugspotential gibt?

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