PWM zur Servomotorsteuerung

Gast #106429
Hallo allerseits,

ich, blutiger Anfänger, taste mich gerade mit einem Candip+Atmel ATmega
162 in Richtung PWM-Erzeugung. Mein Ziel ist es in Abhängigkeit einer
gespeicherten Kennlinie einen kleinen Modellbauservo mit
Pulsweitenmodulation anzusteuern. Führungsgröße soll hier die Drehzahl
eines Verbrennungsmotors sein, die ich schon im MC habe.

Das Programm für eine bestimmte PWM-Frequenz und ein festes
Taktverhältnis habe ich schon geschrieben. Nun würde ich gerne wissen,
wo und wie ich am besten meine Kennlinie (eindimensional, ca. 50 Werte)
abspeichern kann.
Ich habe von einem Bekannten gehört, dass man bei den ATMEL uC's unter
".dseg" prima etwas abspeichern kann. Leider kann ich das in meinem
Handbuch bislang nicht finden.

Auch weiss ich nicht, wie ich es managen soll, dass das Programm aus
der eingespeisten Stellgröße die abgespeichterte Pulsweite ermittelt
und dann an das Unterprogramm zur Erzeugung der eigentlich Pulssignale
übergibt.

Hilfe!

Kann natürlich auch sein, dass es einen viel einfacheren Weg gibt und
ich gleich was viel zu kompliziertes plane....

Ein kleiner Tip, Buch, Fachschrift oder auch was persönliches wäre ein
Segen für mich.

Klaus
Gast
In dem Falle kannst du deine Konstanten mit einer Assembler direktive
direkt in dein Programm stellen, und dann indirekt adressieren.

Ich kann dir nur leider kein Programmbeispiel zeigen weil ich die AVRs
normalerweise in C programmiere und wenn schon in Assembler dann mit
Arnolds Assemler, da will ich nichts falsches sagen.

Lies dir mal die Anleitung zum Assembler durch. Da steht irgendwo was
ueber .db, .dw oder .data

Olaf
Gast
di hast also eine Messgröße, und abhaengig von der willst du diw
Pulsweite deines Stellsignals verändern  - hoffe das ist soweit
richtig. Du brauchst nur den "Fast PWM Mode" (oder auch den normalen)
je anch Frequenz die du haben willst, eines Timers starten, der selbigen
unterstützt, und kannst dann in das Compare-Register einen Wert,
abhängig von deiner Messgröße laden. dadurch veränderst du die
Pulsweite des Ausgangssignals.

mfg Buchmann
Gast
Hallo Micheal!

Das ist schon soweit klar (PWM-Mode und Compare-Funktionen), nur die
Umsetzung in einen Code läuft noch nicht so ganz, schätze mal, ich muss
mich durch die harte Wurst des Datenblatts durchknabbern.
Vielen Dank jedoch für alle Tips!

Klaus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.