PWM-Problem bei ATmega128

Nano

Neues Mitglied
03. Mai 2007
2
0
1
Sprachen
Hallo
ich weiss nicht ob mir hier jemand helfen kann, aber ich habe ein Problem mit der PWM beim ATmega128.

Ich bin gerade an einer Motorstuerung, wenn ich die PWM ändere, kommt es manchmal vor, dass durch den Motor ein "Ruck" geht, mit meinem Hameg Oszi kann ich nichts feststellen, die PWM scheint also in Ordnung zu sein. Allerdings glaube ich nicht daß es an meiner hardware liegt (Habe an einem Portpin direkt einen LogikMOSFET nach GND, Drain an Motor und dann Motor an Betriebsspannung).

Der Atmega128 läuft mit 16MHz. Der Effekt tritt ziemlich regelmäßig auf, ich ändere zum testen die PWM gleichmäßig und dann kann man diese Störung feststellen.

Vielleicht weiß ja jemand einen Rat.

Nano
 
Was für Interrupts hast du denn aktiviert, es kann sein daß eine Interruptroutine das Updaten der PWM-Werte unterbricht. Kannst du mal mehr Infos geben, vielleicht mal ein bisschen code posten?

minibit_8
 
Hallo,

Der Atmega128 läuft mit 16MHz. Der Effekt tritt ziemlich regelmäßig auf, ich ändere zum testen die PWM gleichmäßig und dann kann man diese Störung feststellen.
Du hast ja dann schon einmal deine Regelroutine "abgehängt", die also diesen Fehler nicht hervorrufen kann.

Hast Du Interrupts aktiviert, die vielleicht die Werte der Variablen ändern, welche für die PWM zuständig sind, wenn möchlich, die Interrupt ausschalten, um zu testen.

Wenn du mehr als 8Bit PWM-Auflösung nutzt, könnte es noch daran liegen, dass du die Compare-Register des Timers in der falschen Reihenfolge beschreibst. Wenn du den Comparewert updaten möchtest, unbedingt zuerst das High-Byte beschreiben (das kommt dann erst in ein Latch) danach das Low-Byte beschreiben, jetzt werden beide Register zietgleich upgedatet. Beim Lesen der Register zuerst Low-Byte dann High-Byte lesen. Wenn du das nicht berücksichtigst kann es vorkommen, dass der Timer bei einer Änderung des Comparewertes "vorbeiläuft" und eine komplette Periode ausgelassen wird. Je nach Konfiguration hast Du dann 100% oder 0% PWM, beim Motor könnte sich das als "Ruck" bemerkbar machen, mit einem Oszilloskop läßt sich sowas nicht immer einfach feststellen, da das Ereignis zufällig auftritt, auf das sich nicht einfach triggern läßt.

Du solltest antiparallel zu dem Motor eine Rücklaufdionde (zum Beispiel Schottky-Diode) nutzen.

Gruss,
Dirk
 
Hallo Dirk

:eek: Das mit dem Motor-Rucken lag tatsächlich an der falschen Reihenfolge, wie ich die Comparewerte des Timers beschrieben habe, jetzt wo du es erklärt hast, ist mir das auch klar, warum es da sporadisch zu einem "Rucken" kommt.

Danke nochmals, ich war schon fast am Verzweifenl :eek:

Nano
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)