mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2 Bit PWM


Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Simon K. (simon) Benutzerseite
Datum:

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

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Freak5 (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, bei ca. 15khz höre ich nichts mehr.

Autor: Luky S. (luky)
Datum:

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

Autor: johnny.m (Gast)
Datum:

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

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Luky S. (luky)
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Zweifelsfall OCR0B...

Autor: Freak5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Luky S. (luky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lukas Slz (Gast)
Datum:

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

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.