Forum: Mikrocontroller und Digitale Elektronik Servo mit Attiny ansteuern


von Patryk D. (pad_dy)


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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du ein normales Fernsteuerservo meinst:
https://en.wikipedia.org/wiki/Servo_control

von c-hater (Gast)


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...

von Wolfgang (Gast)


Lesenswert?

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

Auf die Periode kommt es nicht an. Entscheidend ist die Pulslänge, also 
die 1..2ms

von Herr M. (herrmueller)


Lesenswert?

zB. der Attiny2313 hat einen 16bit Timer und kann mit Timer Mode 14  2 
Servos 'im Hintergrund' ansteuern. Man braucht dann nur die 
Positionswerte in die Compare Register schreiben.


Beitrag "Re: Servo Ansteuerung"

von Rumburak (Gast)


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ß

von Stefan F. (Gast)


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.

von Rumburak (Gast)


Lesenswert?

Stefan U. schrieb:
> Mit einem Attiny2313 kann man ohne großen Aufwand an sämtliche I/O Pins
> Servos anschließen.

Der Threadersteller verwendet einen Attiny85. Für Arduinos bzw. Atmegas 
gibt es die Servo Library. Ob die ohne Probleme bei den Attiny85 
funktioniert?

von Stefan F. (Gast)


Lesenswert?

Sie lässt sich sicher leicht anpassen, nachdem man den Artikel aus der 
Artikelsammlung verstanden hat.

von Peter D. (peda)


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.

von Rumburak (Gast)


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ß

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.