Forum: Mikrocontroller und Digitale Elektronik PWM zur Servomotorsteuerung


von Klaus Günzel (Gast)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

Programmierst du in Assembler, Forth, Basic, C, Fortran, Cobol, Lisp
oder Pascal?

Olaf

von Klaus Günzel (Gast)


Lesenswert?

Hallo Olaf!

Ich programmiere in Assembler, AVR Studio nennt sich das Prorgamm

von Olaf (Gast)


Lesenswert?

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

von Buchmann (Gast)


Lesenswert?

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

von Klaus Günzel (Gast)


Lesenswert?

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

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.