Servo mit Attiny ansteuern

OP #4605753
Lesenswert?

Hi,


Ich möchte einen Servomotor mit einem Attiny85 ansteuern. Der Attiny 
wird mit dem Arduino als ISP programmiert.

Mir ist klar, dass der Attiny nicht "direkt", wie der Atmega328 des 
Arduinos ansteuern kann, somit muss man laut dem Internet PWM verwenden.

Hier meine Frage:

Um einen Servo einfach anzusteuern muss man den Ausgang zum Servo 
regelmäßig ein und ausschalten;

Wie genau sind denn die einzelnen Zeitabstände, wenn mein Servo "normal" 
z.B. 0° hat und nach 5 sekunden ich um 85° dreht?

MfG
Gast #4605806
Lesenswert?

Patryk D. schrieb:

> Mir ist klar, dass der Attiny nicht "direkt", wie der Atmega328 des
> Arduinos ansteuern kann, somit muss man laut dem Internet PWM verwenden.

Auch der Mega328 muss das natürlich per PWM machen. Er hat gegenüber 
einem Tiny im Allgemeinen nur einen Vorteil: Er verfügt über einen 
16Bit-Timer. Das macht es einfacher, die PWM für einen Servo zu 
erzeugen.

Aber:

Erstens gibt es ATtinys, die ebenfalls über 16bit-Timer verfügen.

Zweitens kann man (mit erhöhtem Programmieraufwand) auch mit einem 8 Bit 
Timer das gleiche Ergebnis erzielen.

Zumindest die erste Lösung sollte auch für Arduino-Dümmlinge gangbar 
sein...
Gast #4606189
Lesenswert?

Hallo pad_dy,

hast Du deinen Attiny in der ArduinoIDE jetzt "sichtbar" machen können?
Dein Beitrag dazu war "Offtopic", als Gast kann ich darin nicht 
antworten.
Habe übrigens selbst mal einen Attiny25 in der Arduino IDE programmiert 
und mit ISP geflasht.

Gruß
Gast #4606217
Lesenswert?

Bevor man fragen stellt, sollte man immer mindestens bei Wikipedia und 
in der Artikelsammlung nachschauen, um Peinlichkeiten zu vermeiden.

https://de.wikipedia.org/wiki/Servo
https://www.mikrocontroller.net/articles/Modellbauservo_Ansteuerung

Mein Buch geht auch detailliert auf Servos ein.

http://stefanfrings.de/mikrocontroller_buch/index.html

Mit einem Attiny2313 kann man ohne großen Aufwand an sämtliche I/O Pins 
Servos anschließen. Wenn Dich das interesseirt, dann schau von dem 
Projekt auf http://stefanfrings.de/servocontroller/index.html ab, 
nachdem du die entsprechenden Kapitel aus meinem Buch gelesen hast. Da 
steuere ich 10 Servos mit einem Timer. Der Chip hat noch einen zweiten 
Timer frei.
#4606290
Lesenswert?

Man kann die 20ms Pulsabstand mit einem Timerinterrupt erzeugen und 
darin die Pulsdauer 1..2ms mit Delay. Das ergibt dann max 10% 
CPU-Auslastung, ist also verkraftbar. Damit erreicht man eine feine 
Auflösung auch ohne 16Bit-Timer.
Man muß die Funktion _delay_loop_2() benutzen, damit zur Laufzeit kein 
float gerechnet wird.
Gast #4606302
Lesenswert?

Hallo steanus,

Er will eigentlich nur vom Anschlag auf Servomitte fahren. Die 
Impulsbreite muss sich von 1ms auf 1.5ms ändern. Die Zeit zwischen zwei 
steigenden Flanken dieses Impulses beträg bei normaler Servo PWM 20ms 
und bleibt immer gleich. Ist alles nicht neues wurde hier schon 
durchgekaut.
arduinospielwiese.de -> Servomotor ansteuern

Gruß

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