PWM am AVR um Tönhöhen eines Lautsprechers zu varrieren

Gast #573414
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.
Gast #573421
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.
#573424
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
#573466
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.

...
(Firma: HSCS) #573489
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.