www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM am AVR um Tönhöhen eines Lautsprechers zu varrieren


Autor: AVR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich möchte einen Lautsprecher (vom Pc so einen kleinen) in Betrieb 
nehmen. Nun habe ich mir gedacht, dass ich mit PWM die Töne varriere. 
Ich möchte einen Pin des Controllers nehmen und einen Transistor damit 
schalten. Somit kann ich einen Lautsprechen entsprechend schalten.

Nun meine Frage:

Gibt es für die PWM einen besonderen Pin, oder ist es egal am welchem?

Arbeite mit dem ATMega 16 und schreibe das Programm in C.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibt es für die PWM einen besonderen Pin, oder ist es egal am welchem?

Ja.
Der heisst irgendwas mit "OC" und ist als eine der "Alternate 
pinfunctions" beschreiben.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AVR wrote:
> Hi,
> Ich möchte einen Lautsprecher (vom Pc so einen kleinen) in Betrieb
> nehmen. Nun habe ich mir gedacht, dass ich mit PWM die Töne varriere.
> Ich möchte einen Pin des Controllers nehmen und einen Transistor damit
> schalten. Somit kann ich einen Lautsprechen entsprechend schalten.
>
> Nun meine Frage:
>
> Gibt es für die PWM einen besonderen Pin, oder ist es egal am welchem?
>
> Arbeite mit dem ATMega 16 und schreibe das Programm in C.

PWM hat nichts mit der Tonhöhe zu tun. PWM ist nichts anderes als eine 
feste Frequenz mit variablem Tastverhältnis.

Was du brauchst, ist ein festes Tastverhältnis mit variabler Frequenz.

Gruß,
Magnetus


Edit:

Mit der PWM könntest du quasi die Lautstärke der Töne beeinflussen.

Tastverhältnis 50:50   ->   laut

Je mehr das Tastverhältnis von 50:50 abweicht, desto leiser ist der 
erzeugte Ton.

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man die PWM entsprechend langsam macht und auf 50% stellt, dann 
kann man durch verschiedene PWM-Frequenzen auch verschiedene Tonhöhen 
erzeugen.
(Allerdings nur Rechteckschwingung)

Allerdings würde ich das dann nicht mehr als PWM bezeichnen, da die 
Pulsweite ja konstant bleibt.
Du kannst dafür jeden PWM-Pin zweckentfremden, am Besten den eines 16Bit 
Timers, dann kan man die Frequenz feiner einstellen

Gruß
Roland

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn man die PWM (bei fester Frequenz) entsprechend schnell macht, 
dann kann man ihr einen Sinuston mit veränderbarer Frequenz 
aufmodulieren. Einige Spielereien damit sind hier beschrieben:
http://www.hanneslux.de/avr/divers/melody/index.html
Der Mega16 sollte dazu aber nicht optimal sein, da er keine PLL für den 
PWM-tauglichen Timer hat, der Timer also maximal mit Taktfrequenz 
klappert.

...

Autor: Frank Schlaefendorf (Firma: HSCS) (linuxerr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn du verschiedene tonhöhen erzeugen willst, gibt es zwei 
möglichkeiten.
1. den timer im ctc modus betreiben, sodass durch die einstellungen von 
vorteiler und teiler die resultierende frequenz festgelegt ist. wenn OCn 
auf toggled eingestellt wird, kannst du dort ein rechtecksignal 
entsprechender frequenz abnehmen.
2. den timer im pwm-modus betreiben. die pwm frequenz wird fest gewählt 
(muss nicht variabel sein), sodass sie möglichst über der hörgrenze 
liegt (10..20khz reichen, kommen aus den piepslautsprechern sowieso 
nicht mehr raus). die eigentliche tonschwingung muss nun durch änderung 
der werte im output compare register erzeugt werden, also die einzelnen 
amplitudenwerte der tonschwingung. damit kann man die tonhöhe in 
amplitude und frequenz modulieren. das einschreiben der amplitudenwerte 
sollte interruptgesteuert durch einen zweiten timer erfolgen. das alles 
ist aber wesentlich aufwändiger als die erste methode.

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.