mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Grundsätzliches zur Ansteuerung von Servos mit AVR und ASM


Autor: Mario Keppler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie muß man dabei grundsätzlich vorgehen ?

Pulslänge 1-2ms Wiederholung alle 20ms, soweit klar.

Einen Timer mit Interupt verwende ich für die 1-2ms oder für die 20ms
?

Oder für beides einen Timer mit Interupt ? Oder für eines mit normaler
Loop schleifen ?

Wenn ich nun die Stellung vom Servo verändern will müssen ja beide
Timer angepasst werden damit die 20ms nicht überschritten oder
unterschritten werdenm also wie bei PWM, aber jetzt hab ich gelesen das
PWM dafür nicht so gut ist. Ich möchte die Ansteuerung korrekt machen
auch wenn die Servos die Signale nicht so genau brauchen.

Grüß
Mario

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist ein Beispiel mit einem AT90S4433 in ASM:

http://www.hanneslux.de/avr/7ksend/7ksend01.html

Heute würde ich das eleganter lösen, doch es tut zuverlässig seine
Arbeit und ein gut funktionierendes System soll man ja bekanntlich
nicht unnötig modifizieren...


Weitere Beispiele gibt es übrigens ganz in der Nähe dieser Seite...

...

Autor: Mario Keppler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke für die Hilfe, leider geht der link zu dem asm File nicht.

Gruß
Mario

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis...

Der Link funktioniert nun.

Es war der typische Fehler beim Umzug der Seite auf einen Linux-Server:
Groß-Kleinschreibung der Dateinamen. Ist bisher unter WIN nicht
aufgefallen... ;-(

WIN erzieht nunmal zur Schlampigkeit...

...

Autor: Gino (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab hier ein Programm für einen 90S8535 mit 4Mhz Quarz für meinen
Sechsbeiner Quo vadis. Damit steuere ich 13 Servos an. Die Ansteuerung
läuft einwandfrei, nur der Bewegungsablauf ist in dieser Version noch
Mist. Hab ich inzwischen verbessert, aber das Programm ist damit kaum
noch lesbar. Auf diese Weise kann man noch wesentlich mehr Servos
ansteuern. Man kann die sache auch noch eleaganter machen, wenn man
nach dem Port high setzen den Timer auf 1ms einstellt und sofort wieder
zurückspringt.
Wenn man dann wieder in den Interupt wechselt und prüft, welcher Port
als nächstes dran ist und dem entsprechend den Timer einstellt, kann
man noch sehr viel Zeit sparen.
Hab ich so aber noch nicht gemacht, weil zu faul.
Falls es interessiert: www.ginotronik.de

Gino

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.