www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 100kHz PWM mit AVR?


Autor: Christine R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich möchte eine PWM erzeugen mit 100kHz. Am liebsten würde ich einen AVR 
nehmen. 8Bit sollten ausreichen.
Doch ist dies mit den AVR überhaupt möglich?
Denn bei 16Mhz Takt erreicht man mit dem 8Bit Timer maximal 62,5kHz. 
Gibts einen anderem Weg?

Ich hatte mal einen 8051 der hatte eine PLL für die Peripherie, also 
konnten die Timer höher getaktet werden. Gibts auch einen AVR der das 
kann?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christine R. wrote:

> Ich möchte eine PWM erzeugen mit 100kHz. Am liebsten würde ich einen AVR
> nehmen.

Welchen AVR?

> 8Bit sollten ausreichen.
> Doch ist dies mit den AVR überhaupt möglich?
> Denn bei 16Mhz Takt erreicht man mit dem 8Bit Timer maximal 62,5kHz.

Bei neueren AVRs kann man den oberen Zählwert der 8-bit-Timer in
einem Register angeben, damit kannst du den auf 160 setzen.  Das sind
dann aber nicht mehr 8 bit, sondern nur noch 7,5 bit.

Ansonsten kannst du dir die ATtiny261/461/861 angucken, die haben
einen Highspeed-PWM-Modus, bei dem der Timer über eine PLL höher
getaktet wird als der Systemtakt.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tiny25/45/85 kann das auch - Timertakt per PLL bis 64MHz.

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
soweit ich weiss muss man nicht umbedingt mit Timern arbeiten! Du kannst 
auch deine PWM in eine Endlosschleife setzen,inder noch eine interne 
schleife läuft die immer einen Schritt bis 255 hochzählt und mit einem 
vorgegebenen wert abgleicht.Sobald der vorgegebene Wert erreicht 
ist,setzt oder löscht du in der Schleife ( je nachdem ob invertierendes 
Verhalten gewünscht ist oder nicht) z.B. einen PortPin.Habe das ganze 
schon öfters mit einem PIC gemacht,je nachdem wieviele PWM -Ausgänge du 
betreiben möchtest und was du sonst noch mit dem Mikrocontroller vorhast 
kommst du mit deinen 100kHz hin.

hier mal ein Beispiel für eine PWM in C zur ansteuerung einer RGB-LED:

  while(1)
    {
      i++;

      if(i>=Val_Blau) Pin_Blau=1;
      else Pin_Blau=0;
      if(i>=Val_Gruen) Pin_Gruen=1;
      else Pin_Gruen=0;
      if(i>=Val_Rot) Pin_Rot=1;
      else Pin_Rot=0;

      //if(i==255) i=1;

    }

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andre wrote:

> soweit ich weiss muss man nicht umbedingt mit Timern arbeiten! Du kannst
> auch deine PWM in eine Endlosschleife setzen,inder noch eine interne
> schleife läuft die immer einen Schritt bis 255 hochzählt und mit einem
> vorgegebenen wert abgleicht.

Hast du mal nachgerechnet, auf welche Frequenzen du damit kommst?

Nur als Vergleich: der Timer zählt bei jedem CPU-Takt um 1 hoch.
Das mach mal in Software, ganz zu schweigen vom Vergleichen...

Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem kann der µC dann nix anderes mehr machen. Was meist auch 
schlecht ist.

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay da haste wohl recht,da hab ich nich gut überlegt sry:-)

Ist aber vllt. dennoch ein einfacher weg für den anfang ...

Autor: Christine R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich brauch nur einen PWM Kanal, und das in Hardware.
Soft PWM geht nicht, der µC hat noch andere Aufgaben.

Ich werd mir also den ATtiny261 und 25 anschaun.

Danke!

Autor: wt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tiny26 ist gute Wahl, wenn du PWM Verhältnis variiren möchtest(z.B. 
20/80% u.ä.) Alternativ kannst Du auch AT90PWM3 nutzen.
Wenn Du eher in richtung 50/50 PWM schilst, dann hast du leichtes Spiel. 
Suche bei AVR's nach 'Fast PWM' gibt's genug!

gruß
wt

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Vorschlag:

Über den DAC des AVR eine Spannungsausgeben, die Spannung auf einen 
Komperator, zweites Eingangssignal des Komperators ein Dreiecksignal und 
schon hat man ein ein PWM-Signal :)

Die Maximalfrequenz ist aber über die Voreinstellungen des 
Dreiecksignals gegeben.

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
markus wrote:
> Über den DAC des AVR eine Spannungsausgeben,

Der übliche DAC eines typischen AVR... Mmmh, was ist der Schwachpunkt 
des Plans?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas B. wrote:

> Der übliche DAC eines typischen AVR...

...ist ein PWM. ;-)

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pssst! Markus (Gast) arbeitet wohl schon mit den Xmegas... ;-)

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Thomas B. wrote:
>
>> Der übliche DAC eines typischen AVR...
>
> ...ist ein PWM. ;-)

Wohl wahr. Den filtern und den ganzen externen Zinnober machen klingt 
nicht einfacher, als einen Controller finden, der ne hinreichend 
schnelle PWM selber kann.

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.