2 Bit PWM

OP #345640
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
OP #345642
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?
Gast #345646
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.
Gast #345650
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
Gast #345654
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.
Persönliche Seite #345656
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren