mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Lautsärke einstellen bei PWM Sound


Autor: Läubi .. (laeubi) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Benutze derzeit zur Sounderzeugung folgende Schaltung:
http://www.hanneslux.de/avr/divers/melody/melody02.html
Das ganze mach an 5V schon ordentlich krach ;)
Da ich es mir nicht mit meinen Nachbarn verscherzen wollte habe ich mir 
überlegt die Lautstärke einstellbar per Poti zu machen.

Allerdings bin ich jezt am rätzeln wo und wie ich das realisiere:

* Spannungsteiler an der Basis gegen GND
* Spannungsteiler vor dem Elko gegen GND
* Spannungsteiler nach dem Elko gegen ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schnell: mach einfach einen Serienwiderstand vor den Lautsprecher.
Richtig: du mußt die Aussteuerung der PWM in der Software anpassen.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Poti in Reihe zum Lautsprecher, 1/4W oder 1/2W Typ sollte reichen, ca. 
500 Ohm sollte es leise genug machen. Oder 2-3 umschaltbare 
Festwiderstände.

Bei der Art der Schaltung machen sich alle anderen Varianten schlecht.

PS: irgendwie bin ich heute zu langsam... ;)

Gruß aus Berlin
Michael

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm.. wie regel ich das den in SW?? Da kann ich doch nur an/aus oder steh 
ich da gerade auf dem Schlauch? Welchen Nachteil hat ein 
Reihenwiderstand und welcher Bereich wäre da sinnvoll?

Autor: Mandrake (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einer PWM kannst du die Lautstärke über das Tastverhältnis 
einstellen.
Ich hoffe ich bekomme es so einigermaßen erklärt:
Du musst quasi deine maximale On-Time einstellbar machen. Das Signal 
(also deine Abfolge von Tastverhältnissen) musst du dann auf diese 
maximale On-Time beziehen.

Beispiel:
1.
Maximale Lautstärke = Max On-Time = 100%
Tastverhältnis aus Signal = 10%
Ausgabe-Tastverhältnis = 10% x 100% = 10% (also das was wirklich 
rauskommt)

2.
Halbe Lautstärke = Max On-Time = 50%
Tastverhältnis aus Signal = 10%
Ausgabe-Tastverhältnis = 10% x 50% = 5%


Ich hoffe es ist so einigermaßen klar was gemeint ist.

Gruß

Mandrake

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hm.. wie regel ich das den in SW??
Ich hab mir den Code angeschaut. Das ist keine PWM, sondern einfach ein 
Rechteck-Generator mit änderbarer Frequenz. Fazit: die Lautstärke kannst 
du nicht (so ohne weiteres) über SW ändern.

Kleb doch einfach auf den Lautsprecher eine 50-Cent-Münze drauf. Das 
wirkt als Tiefpass und verschiebt die Grenzfrequenz, sodass der störende 
Frequenzbereich gedämpft wird ;-)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mit anderen Worten, wenn ich meinen Code dahingehen ändere das ich 
ne PWM nehmen bestimmt mir das Tastverhältnis die Lautstärke? (Nutze 
nicht den Code von der Homepage aber z.Z. auch den CTC Modus...)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit einer PWM steckt die Information zum Ton nicht mehr im 
Rechtecksignal selber, sondern in der Änderung des Tastverhältnisses.

D.h. du mußt eine PWM aufsetzen (können), die mindestens soviel auflösen 
kann, wie du Lautstärkestufen haben willst. Und dann mußt du in dem 
Rhythmus, in dem jetzt der Pin ein- und ausgeschaltet wird, den PWM-Wert 
ändern.

Wenn ich z.B. eine PWM mit einem Zählbereich von 0...255 habe, dann ist 
eine Lautstärke von 0 erreicht, wenn EIN=127 und AUS=127 sind. Maximale 
Lautstärke erhalte ich mit EIN=255 und AUS=0 (so ist es messtechnisch 
jetzt auch schon: EIN=5V, AUS=0V). Andere Lautstärken sind die Schritte 
dazwischen (z.B. EIN=191 und AUS=63).

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm... irgenwie steh ich jezt auf dem Schlauch: 100% EIN bedeutet doch 
das ich glechspannung hab und der Lautsprecher garnix von sich geben 
dürfte oder?
Bisher ist es ja so:
- Timer läuft bis zum CompareWert = Pin toggelt
- Timer läuft bis zum CompareWert = Pin toggelt
.
.
- Timer läuft bis zum CompareWert = Pin toggelt

Ist für mich gleich zu ner PWM mit TOPWert = 2*CompareWert und 
Tastverhältnis 50%...

Hab bisher noch nie was mit PWM gemacht vieleicht seh ich das jezt auch 
falsch :)

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
google mal nach...

"klasse d" verstärker

bzw.
http://de.wikipedia.org/wiki/Digitalendstufe

Das ist das nämlich...

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> CompareWert = Pin toggelt...
Genauso ist es, und wenn eine 1 ausgegeben wird geht die 
Lautsprechermembran nach aussen, wenn eine 0 ausgegeben wird nach innen 
(oder vice versa). Du erzeugst mit dieser Toggle-Frequenz gleichzeitig 
den Ton (bzw. die Grundwelle, und weil es ein Rechteck ist, auch noch 
die entsprechenden ungeraden Oberwellen).

> Ist für mich gleich zu ner PWM mit TOPWert = 2*CompareWert und
> Tastverhältnis 50%...
Das schon, aber die PWM-Frequenz (Zyklusdauer) ist dann gleich der 
Frequenz des ausgegebenen Tones. D.h. die Lautstärke wird sich auch mit 
einem anderen Compare-Wert (in weiten Bereichen) gleich bleiben, nur der 
Klang ändert sich etwas (Oberwellengehalt).

Wenn du einen Ton mit 440Hz ausgeben willst, solltest du mit einer 
PWM-Frequenz von > 10kHz arbeiten. Und dann das Tastverhältnis dieses 
hochfrequenten PWM-Signals im Takt deiner 440Hz ändern.

@ ... ... (docean)
> "klasse d" verstärker
> Das ist das nämlich...
Nein, das ist ein einfacher Komplementärtreiber zur Stromverstärkung.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Lothar für die Erklärung, ich versuchs mal soweit ichs verstanden 
habe:

- Ich habe ne PWM > 10khz 0...255, Tastverhältnis X:Y
- Ich will den Ton 440hz erzeugen
- Alle 1/440 Sekunden vertausche ich X und Y

Wenn:
 X = Y --> Lautsprecher ist Stumm
 X 127...255 --> Verschiedene Lautstärken von Leise bis Laut

Hab ich das so richtig verstanden?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Läubi Mail@laeubi.de (laeubi)

Kannst Du mal ne akustische Kostpobe geben! (wav od pm3)
Das muß ja furchtbar klingen :)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Läubi Mail@laeubi.de (laeubi)
Gratulation: Soweit korrekt verstanden.

> - Ich will den Ton 440hz erzeugen
> - Alle 1/440 Sekunden vertausche ich X und Y
Fast richtig, aber du solltest noch den Faktor 2 dazubringen. Also mit 
1/880Hz auswechseln. Sonst ist der Ton eine Oktave zu tief.

> X 127...255 --> Verschiedene Lautstärken von Leise bis Laut
Besser: X=127-L und Y=127+L, mit L = Lautstärke 1..127

EDIT:
Wobei man Tastverhältnisse üblicherweise nicht mit Thi:Tlo sondern mit 
Thi:(Thi+Tlo) beschreibt. Aber das ist nur mathematische Makulatur ;-)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus wrote:
> @ Läubi Mail@laeubi.de (laeubi)
>
> Kannst Du mal ne akustische Kostpobe geben! (wav od pm3)
> Das muß ja furchtbar klingen :)
Klang ist okay, in etwa vergleichbar mit nem Piezzo summer, nur tierisch 
laut :P

@Lothar Miller Ich werds mal ausprobieren mit der PWM, muß ich noch nen 
Filer vorsehen oder sowas? Oder "puffert" der Kondesator das ausreichen 
ab? Will ja auch nicht alle Tiere in der Umgebung scheu machen :D

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> @ Lothar Miller Ich werds mal ausprobieren mit der PWM,
> muß ich noch nen Filer vorsehen oder sowas?
Du kannst dann eine Spule in Reihe zum Lautsprecher schalten.

> Oder "puffert" der Kondesator das ausreichen ab?
Nein, der lässt das sogar noch besser durch (Hochpass).

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich die Spule mir irgenwei aus etwas Kupferlackdraht macehn oder 
braucht die spezielle Werte?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läubi Mail@laeubi.de wrote:
> Kann ich die Spule mir irgenwei aus etwas Kupferlackdraht macehn oder
> braucht die spezielle Werte?
Lass sie für die ersten Versuche einfach weg ;-)

EDIT: ab hier gilt dann wieder der 
Beitrag "Re: Lautsärke einstellen bei PWM Sound"

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs gerade ausprobiert, funktioniert echt gut! Auch wenn ich zuerst nen 
extrem fiesen Ton erzeugt hab durch falsche PWM Einstellungen (nutze 
jezt die FastPWM) Ich wußte nicht das der Lautsprecher solche fieß hohen 
Töne erzeugen kann :D
Habe als Grundfrequenz 78326,69 hz genommen da war der Fehler zu 440/880 
hz am geringsten und hört sich ganz vernünftig an :)
Nur beim Ein/Ausschalten gibts noch nen Knacksen aber das kann man wohl 
nicht verhindern.
Um das ganze perfekt zu machen müßte ich jezt wie auf der Wikiseite jezt 
noch nen Tiefpaß nachschalten oder? Also einfach ne Spule in Reihe und 
nen Kondesator (brauch ich da sonen Bipolaren?) parrallel? Wie bestimme 
ich da die Werte für C und L? Hab sonen anz einfachen Minilautsprecher 
0.5W, 8 Ohm.

Mal ne ganz übermütige Idee: Kann man das jezt auch anwenden um WAV 
Files abzuspielen?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich wußte nicht das der Lautsprecher solche fieß hohen
> Töne erzeugen kann :D
Na gut, der erzeugt die ja nicht, er gibt sie "nur" wieder ;-)

> Um das ganze perfekt zu machen müßte ich jezt wie auf der Wikiseite jezt
> noch nen Tiefpaß nachschalten oder? Also einfach ne Spule in Reihe und
> nen Kondesator parrallel?
Nein, du brauchst nur eine Spule in Reihe zum Lautsprecher. Diese Spule 
muß so dimensioniert sein, dass sie für eine bestimmte PWM-Einstellung 
(PWM-Frequenz) den Strom einfach glättet. Das ist dann ein L-R-Tiefpass.
Siehe z.B. dort: http://www.elektroniktutor.de/analog/tiefpass.html
Der R ist übrigens der Widerstand, der dann den Ton macht (Wirkleistung 
gibt es nur an einem Widerstand).

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay.. Hab dazu folgende Seite gefunden:
http://sim.okawa-denshi.jp/en/PWMtool.php

Hab einfach mal meine PW Frequenz eingegeben (78640hz)

L = 10 µH, R = 8 Ohm

Den Rest habe ich mal so gelassen. Da kommt dann ne nette Kurve raus und 
ein paar Werte, nur... welche Parameter sind da jezt in meinem Fall 
wichtig? Leider ist die Analogtechnik nicht so mein Gebiet ;)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der interessante Wert ist die Grenzfrequenz (cut-off-frequency). Die 
sollte in deinem Fall so bei 5-10kHz liegen (Hörbereich). Alles darüber 
soll rausgefiltert werden. Also z.B. so wie im Screenshot.

Wobei die 8 Ohm noch zu kontrollieren wären: Schließ die Spule an den 
Lautsprecher an und mess den Widerstand. Das ist R.
Das was auf dem Lautsprecher steht ist die Impedanz bei 1kHz.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jezt zwei 100µH Spulen in Reihe angeschlossen funktioniert 
wunderbar, R lag bei ziemlich genau 8 Ohm.
Klang ist auf jedenfall besser geworden hört sich ganz nett an. Vielen 
Dank schonmal!

Was mich noch interessiert: Könnte man das auch zur Widergabe einer WAV 
Datei verwenden? Da ist ja nicht der Ton sondern ein ADC wert pro Sample 
gespeichert könnte man den nutzen?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da ist ja nicht der Ton sondern ein ADC wert pro Sample
> gespeichert könnte man den nutzen?
Einfach als PWM-Wert ausgeben.
Der PWM-Wert muss dann, abhängig von der Sample-Rate, z.B. 8000 mal oder 
noch öfter pro Sekunde geändert werden.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PWM Wert = CompareWert?

Also so wie ich das jezt mache nur das ich in das Compare register nicht 
meine Gewünschte Lautstärke sondern das Sampel reinschreibe und diesen 
Wert alle 1/8000 Sekunden (bei 8khz Samplerate) aktualisiere?

Autor: Klausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bestehe auf den Soundcheck! :)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Na gut Klausi hier hast du es :)

Meldodien von der oben angegeben Seite übernommen :)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Traut sich keiner? ;)

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.