Forum: Mikrocontroller und Digitale Elektronik Servomotor über Attiny2313 ansteuern


von Chandler B. (chandler)


Lesenswert?

Hallo,
ich möchte ganz einfach einen Servomotor über einen Attiny2313 
ansteuern. Dazu habe ihc in diesem Forum etwas gefunden 
(http://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung).

den ersten Code
1
#define F_CPU 1000000UL
2
 
3
#include <avr/io.h>
4
#include <util/delay.h>
5
 
6
int main (void)
7
{
8
  DDRB = (1<<PB1);
9
 
10
  while( 1 ) {
11
 
12
    PORTB |= (1<<PB1);
13
    _delay_us( 1500 );    // in den 1500 steckt die Lageinformation
14
    PORTB &= ~(1<<PB1);
15
 
16
    _delay_ms( 18 );      // ist nicht kritisch
17
  }
18
 
19
  return 0;
20
}

habe ich so kopiert und auf meinen Controller gemacht. Den Servo höre 
ich rattern, aber er bewegt sich absolut nicht. Auch wenn ich die zeiten 
etwas ändere, passiert nichts.
Steuer ich den allerdings mit einem Arduino an, funktioniert er noch.
Woran kann das liegen?

Eigentlich möchte ich den Servo erst einmal ganz einfach immer um 90° 
hin und her drehen.

gruß
Chandler

von Georg G. (df2au)


Lesenswert?

Welche Taktfrequenz hat dein 2313?

von Stefanus (Gast)


Lesenswert?

Wenn die Taktfrequenz stimmt, dann wird der Servo eine bestimmte 
Position anfahren und dann dort bleiben. Um ihn hin und her zu bewegen, 
musst Du die Pulsbreite variieren, zum Beispiel eine Sekunde lang 1500µs 
und dann eine Sekunde lang 1800µs und dann wieder 1500µs usw.

von Chandler B. (chandler)


Lesenswert?

Ah,
ich glaube er hat eine Geschwindigkeit von 20MHZ
(http://www.reichelt.de/Atmel-Attiny-AVRs/ATTINY-2313-DIP/3/index.html?&ACTION=3&LA=446&ARTICLE=54568&GROUPID=2958&artnr=ATTINY+2313+DIP&SEARCH=ATTINY+2313+DIP)
muss ich dann die erste Zeile in
1
#define F_CPU 2000000UL
umwandeln?
Habe es gerade nicht hier um zu testen.
@Stefanus: Ja, du hast recht. Momentan gibt es da noch nicht so viel zu 
sehen.
Ich werde mir erstmal angucken, wie ich am Attiny ein PWM-Signal erzeuge 
und dann mal weiter testen.
Gruß
Chandler

von Stefanus (Gast)


Lesenswert?

Glauben hilft nicht. 20Mhz ist die maximal mögliche Frequenz. Mit 
welchem Taktsignal wird er denn versorgt bzw. wie ist der interne R/C 
Oszillator konfiguriert?

Default ist 1Mhz.

PWM ist auf jedenfall besser. Nichtsdestro trotz sollte dein Programm 
mit den Delays auch funktionieren. Wenn dieses nicht funktioniert, wirst 
Du mit PWm auch nicht weiter kommen. Finde erstmal die Problemursache 
und behebe sie.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.