Forum: Mikrocontroller und Digitale Elektronik 2 Bit PWM


von Luky S. (luky)


Lesenswert?

Ich möchte die Geschwindigkeit eines Kleinmotors mit einem Mega48
regeln.
Im Moment verwende ich 8Bit FastPWM und der Controller läuft auf 1MHz.
doch mich stören 2 Dinge:
Zum einen ist es mir nicht gelungen, ein durchgehendes LOW Signal zu
erzeugen da er inm nichtinvertirerenden Modus ja bei jedem Erreichen
der Zählgrenze den Portpin auf HIGH schaltet (und sofort wieder auf 0)
und daher einen kurzen Pike erzeugt.
Verwende ich den nichtinvertierenden Modus gibts eben kein sauberes
HIGH Signal.
Darüberhinaus fiept der Motor bei der aktuellen Frequenz.
Lasse ich den Controller auf 8Mhz laufen ist alles bestens.
Ich möchte also die PWM Frequenz steigern.
Da ich die 8Bit Auflösung nicht ausnutze, sondern nur AUS 25%, 50%, 75%
und Vollast verwende, haeb ich mir gedacht, 2-3Bit PWM zu verwenden,
habe aber nicht herausgefunden wie das geht.
Kan mir jemand weiterhelfen?
mfg Lukas

von Simon K. (simon) Benutzerseite


Lesenswert?

Schau dir mal den "komplizierteren" PWM Modus an. Also nicht den
Fast-PWM Modus. Der erzeugt, meine ich, keine Spikes bei den
Grenzwerten.

von Luky S. (luky)


Lesenswert?

Dann halbiert sich die effektive Frequenz und das ist genau das
gegenteil von dem, was ich erreichen will.
Wen man die Auflösung verringern könnte, würde ich sicher die anderen
Modi nehmen.
Software PWM möchte ich vermeiden da der Controller eh schon genug
beschäftigt ist und wen er schon 6 HW PWM hat, wieso sollte man die
nicht auch verwenden?

von Simon K. (simon) Benutzerseite


Lesenswert?

Also reichen dir 15kHz PWM nicht aus? Na dann habe ich auch keine Idee
mehr.

von Luky S. (luky)


Lesenswert?

Doch. 15khz würden reichen.
aber ich möchte den Controller so langsam wie möglich betreiben (128kHz
interner RC wären nicht übel)

von Freak5 (Gast)


Lesenswert?

Aber bei 15khz macht der Motor doch sicher noch die nervenden
Fiepgeräusche, oder?

von johnny.m (Gast)


Lesenswert?

Wenn Du eine 2-3-Bit-PWM machen willst, warum tust Du es nicht einfach?
Wenn Du Timer 1 benutzt, dann nimm z.B. PWM-Modus 14 (Bei Timer 0 Modus
7) und Du kannst jede beliebige Auflösung einstellen... Das Problem mit
dem einen Taktzyklus Peak wird sich dadurch zwar nicht beheben lassen,
aber Du kannst die Frequenz weitgehend frei wählen.

von Luky S. (luky)


Lesenswert?

Nein, bei ca. 15khz höre ich nichts mehr.

von Luky S. (luky)


Lesenswert?

Blöde Frage:
Aber was ist Modus 7 bzw. 14?
im Datenblatt des M48 finde ich dazu nix.

von johnny.m (Gast)


Lesenswert?

Aktuelles Datenblatt Stand 06/05 (preliminary):
Timer 0 auf Seite 101, Timer 1 auf Seite 130, schöne Tabelle mit allen
Einstellungsmöglichkeiten

von Philipp (Gast)


Lesenswert?

BEi mir am Mega8 passte das für die PWM mit dem Pin leider nicht,
deshalb habe ich einfach den Overflow und den Compare Interrupt
angemacht. Im Overflow macht er den Portpin an, ausser der Comparewert
ist 0 und im Compare macht er den Pin aus, ausser der Compare wert ist
255. So habe ich keine Peaks bei 0 und 255 und ich konnte den Pin frei
wählen. Man hat zwar so 2 Interrupts pro PWM Periode, aber immernoch
besser als direkt Software PWM.

Gruß Philipp

von Luky S. (luky)


Lesenswert?

So war das also gemeint.
Ok, das war das was ich nicht gefunden habe.
Danke!

von Simon K. (simon) Benutzerseite


Lesenswert?

@Johnny: Bei deinen genannten Modi wird das OCR0A Register für die
Manipulation der Timer-Auflösung benutzt um die Frequenz zu ändern.
Welches Register beinhaltet denn den Duty Cycle dann?

von johnny.m (Gast)


Lesenswert?

Im Zweifelsfall OCR0B...

von Freak5 (Gast)


Lesenswert?

Bist du dir sicher, dass du dann nichts mehr hörst? Ich habe mir mal
einen Frequenzgenerator gebaut, an einen Lautsprecher angeschlossen und
die Frequenz mit einem Oszilloskop gemessen. Erst ab ~18 - 18.5kHz habe
ich nichts mehr gehört. Ab 18kHz wurde es deutlich leiser. Ab 19kHz
glaubte ich nichts mehr zu hören und bei 19.5 habe ich definitiv nichts
mehr gehört.

Vielleicht ist aber der Motor einfach nur ein zu schlechter
Resonanzkörper, so dass die Leistung nicht ausreicht um es zu hören.

von Luky S. (luky)


Lesenswert?

Ja, ich höre nix mehr.
Aber um das geht es ja eigendlich gar nicht.
Wen ich eine niedrige Frequenz wähle bei der der Motor auch nicht Fiept
hat er Anlaufprobleme.
Also besser eine möglichst hohe PWM Frequenz bei möglichst geringem
Controllertakt.

von Simon K. (simon) Benutzerseite


Lesenswert?

>>Also besser eine möglichst hohe PWM Frequenz bei möglichst geringem
Controllertakt.

Hm, das Problem ist, dass deine PWM Frequenz immer ein Teiler des
Controllertakts sein wird. Also wird der Controllertakt immer
(wesentlich) höher liegen, als deine PWM Frequenz.

Ausnahme: Irgndein Tiny (oder sogar mehrere) haben eine PLL
(Frequenzvervielfacher) integriert. Dann kann man bei xx kHz
Controllertakt die Timer mit xx MHz versorgen.

von Lukas Slz (Gast)


Lesenswert?

Wenn die PWM Frequenz min. 1/6 der Controllerfrequenz beträgt bin ich
schon zufrieden

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.