mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unklarheit beim Fast PWM Mode (ATmega16)


Autor: Blaubär (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tach Leute

beim Durcharbeiten des ATmega16 Spec ist mir beim Fast-PWM zunächst mal 
diese Unklarheit aufgefallen:

Im Anhang ist das Bild, laut Spec eine Fast-PWM Mode 15  bei der TOP 
Wert durch OCR1A variabel gemacht wird.
Bei Erreichen von TOP (=OCR1A) schaltet der Ausgang OCnx auf HIGH. Kann 
mir jemand erklären wie ich auf LOW schalte, also wann ist der Punkt 
erreicht der im Bild als der Schnittpunkt am TCNTn Graph markiert ist? 
Scheint ja auch irgendwas variables zu sein. Nur meinen einzigen 
Freiheitsgrad, nämlich OCR1A habe ich ja schon für TOP benutzt. :-(

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Garnicht. Wenn du OCR1A als Top Wert nimmst, kannst du OC1A nicht 
nutzen, nur OC1B. Alternativ verwende ICR1 als Top Wert, dann bleiben 
OCR1A und B für die PWM nutzbar.

Autor: Blaubär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
d.h. damit kann ich keinen PWM Pin treiben? Ist das eine 
Eingangs-Schaltung zum Zählen von reinkommenden Impulsen?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Modus 15 nur mit OC1B. Modus 14 funktioniert genauso, nur dass eben 
der Topwert in ICR1 geschrieben wird, wodurch OCR1A und B weiterhin für 
die PWM frei bleiben.

Autor: Blaubär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welcher Mode ist denn eurer Meinung nach am besten geeignet um einfach 
einen Motor mit unterschiedlicher Spannung zu versorgen?

Den Wert lege ich dann in OCR1A.

Ist also Mode 5..7 (Fast PWM mit festem TOP Wert) am besten für mich?

Ich versteh den Sinn der "Phase and Frequency-Correct" PWM nicht.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blaubär schrieb:
> Welcher Mode ist denn eurer Meinung nach am besten geeignet um einfach
> einen Motor mit unterschiedlicher Spannung zu versorgen?
>
> Den Wert lege ich dann in OCR1A.
>
> Ist also Mode 5..7 (Fast PWM mit festem TOP Wert) am besten für mich?
>
> Ich versteh den Sinn der "Phase and Frequency-Correct" PWM nicht.

Die Phase and Frequency Correct PWM ist dann interessant, wenn du mit 
mehreren Timern jeweils ein PWM Signal erzeugst und diese PWM-Signale in 
einer festen Phasenbeziehung zueinenader stehen müssen.

Autor: Blaubär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke!

Ich verwende demnach lieber den Mode5: Fast-PWM, 8-Bit

Bis jetzt läuft alles gut. Nur ist der Spannungspegel den ich messen 
kann nicht direkt linear zum PWM duty cycle.

OCR1A = 255   -> ergibt 10,96 VDC
OCR1A = 200   -> ergibt 10,95 VDC
OCR1A = 100   -> ergibt 10,45 VDC 10,10
OCR1A = 80    -> ergibt 9,9 VDC
OCR1A = 50    -> ergibt 9,3 VDC
OCR1A = 30    -> ergibt 8,0 VDC


Alles oberhalb 100 (0x96) liefert den gleichen Spannungswert.
Leider habe ich im Moment kein Oszilloskop, aber ich hoffe schon, dass 
sich mein PWM Signal entsprechend ändert.

Nur warum ist das der Spannung egal? Komischer Effekt oder normal?

Autor: Christian T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Womit hast die Spannung denn gemessen?

Autor: Blaubär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Digitales Multimeter am Motor. Also nicht im PWM-Leerlauf.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nur warum ist das der Spannung egal? Komischer Effekt oder normal?
Dann läuft dein Motor scheinbar ab 100 auf 100%.
Wie hoch ist denn deine PWM-Frequenz?

Autor: Blaubär (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

meine Frequenz ist 1,953 kHz.
Leider kenne ich die Zeitkonstante des Motors nicht, so muss ich mit der 
Frequenz rumprobieren.

Ich habe heute am Oszilloskop gemessen - Bild !
In einer Schleife durchlaufe ich Werte von 0..255 und habe es beobachtet 
- alles normal am PWM Ausgang.
Am L293D Ausgang hat es diese Haifischflosse die sich entsprechend 
verändert (Messung allerdings ohne Motor).
Ist das normal so?

Ansonsten kann ich mir die Lücke bei 100% nicht erklären. D.h. ich 
prodoziere hier gar nicht vollen Gleichstrom. Die Lücke ist 2µs lang.
Das ist genau 1 CLK(i/o)/8 lang:
CLK(i/o)/8 = OSC/Prescaler = 4MHz/8

Da fehlt genau 1 Schritt würde ich sagen, aber mehr als 0xFF kann ich 
wohl nicht ins OCR1 reinschreiben :-(

Wäre sehr nett, wenn dies jemand kennt und eine Lösung hat

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die kurze Lücke ist vom Atmel :
The extreme values for the OCR1x Register represents special cases when generating a PWM
waveform output in the fast PWM mode. If the OCR1x is set equal to BOTTOM (0x0000) the output
will be a narrow spike for each TOP+1 timer clock cycle. Setting the OCR1x equal to TOP
will result in a constant high or low output (depending on the polarity of the output set by the
COM1x1:0 bits.)

und hängt von deiner konfiguration ab.
Entweder du hast "Echtes Aus" oder "Echtes Vollgas", ein Spike
bleibt bei Fast-PWM immer (bei normaler PWM geht es ohne).

Die Ausgangskurve ist eine Ladekurve der Kapazitäten.
Mit Motor sollte es anderst aussehen.

avr

Autor: Bläubär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Setting the OCR1x equal to TOP will result in a constant high or low output
Hmm, aber genau das mache ich ja:
OCR1A = 0xFF

demnach müsste genau "High" anliegen..

Soll ich es sonst mit dem Phase Correct Mode probieren? Ich brauche auf 
jeden Fall einen Pegel der keine Lücke aufweist, wenn ich 100% 
einstelle.

Autor: Fedo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benedikt K. schrieb:
> Garnicht. Wenn du OCR1A als Top Wert nimmst, kannst du OC1A nicht
> nutzen, nur OC1B. Alternativ verwende ICR1 als Top Wert, dann bleiben
> OCR1A und B für die PWM nutzbar.

Ich könnte dich Küssen !
Ich habe jetzt drei Stunden versucht den Mode 15 zum laufen zu bringen, 
Datasheet Mist, google Mist! Du hattest die Lösung !

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.