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
Schau dir mal den "komplizierteren" PWM Modus an. Also nicht den Fast-PWM Modus. Der erzeugt, meine ich, keine Spikes bei den Grenzwerten.
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?
Also reichen dir 15kHz PWM nicht aus? Na dann habe ich auch keine Idee mehr.
Doch. 15khz würden reichen. aber ich möchte den Controller so langsam wie möglich betreiben (128kHz interner RC wären nicht übel)
Gast
#345645
Aber bei 15khz macht der Motor doch sicher noch die nervenden Fiepgeräusche, oder?
Gast
#345646
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.
Nein, bei ca. 15khz höre ich nichts mehr.
Blöde Frage: Aber was ist Modus 7 bzw. 14? im Datenblatt des M48 finde ich dazu nix.
Gast
#345649
Aktuelles Datenblatt Stand 06/05 (preliminary): Timer 0 auf Seite 101, Timer 1 auf Seite 130, schöne Tabelle mit allen Einstellungsmöglichkeiten
Gast
#345650
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
So war das also gemeint. Ok, das war das was ich nicht gefunden habe. Danke!
@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?
Gast
#345653
Im Zweifelsfall OCR0B...
Gast
#345654
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.
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.
>>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.
Gast
#345657
Wenn die PWM Frequenz min. 1/6 der Controllerfrequenz beträgt bin ich schon zufrieden
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.