mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einfache Soundausgabe (I2S, PWM, DAC,.)


Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

für mein aktuelles Projekt möchte ich einen einfache Soundausgabe 
umsetzen.
Im Prinzip reichts wenn ich ein klicken (für den Touchscreen) und ein 
Piepen(als Warnton) ausgeben kann.

Der STM32, den ich verwende bietet DAC, I2S und PWM Kanäle.

Was davon sollte ich nehmen um möglichst einfach zum Ziel zu kommen?
Wie sieht die Peripherie aus?

Grüße,
Peter

Autor: DerER (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Nimm doch einfach einen fertigen Summer
Beispiel Reichelt "SUMMER HDB 06"

Einfach per Transitor an einen Portpin,
einige ms ansteuern: Klicken
einege s ansteuern: Piepsen

Wenn es verschiedene Tonhöhen werden sollen:

Lautsprecher und PWM

Grüße!

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh jee, das sind ja alles so Riesenviecher.

Habe mir jetzt diesen hier:
http://www.reichelt.de/?ACTION=3;ARTICLE=35918;PROVID=2402
mal rausgesucht, der dürfte noch grad so auf meine Platine passen.

Werde den Summer dann über nen Transistor an meinen DAC hängen. Damit 
sollte es dann möglich sein die Lautstärke zu regulieren.

Soweit die Theorie, muss das ganze erstmal austesten. Die Datenblätter 
von den Dingern sind ja nicht gerade besonders aussagekräftig.

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

Bewertung
0 lesenswert
nicht lesenswert
peterguy schrieb:
> Werde den Summer dann über nen Transistor an meinen DAC hängen. Damit
> sollte es dann möglich sein die Lautstärke zu regulieren.
Was bringt dich zu dieser Annahme?
Da steht übrigens: Vcc = 4-6,5 VDC

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Summer würde ich nie verwenden. Das würde verhindern, eigene Töne 
zu generieren.
Mit einer 8Bit PWM kann man schon eine relativ passable Audio Qualität 
erreichen und wav-Dateien ausgeben.

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Was bringt dich zu dieser Annahme?
> Da steht übrigens: Vcc = 4-6,5 VDC
Na ich würde den Summer mit "+" an 12V hängen, an "-" einen Widerstand, 
an diesen dann den Collector von nem Transistor. Dessen Basis wird von 
dem µC beschaltet und von Emitter zu Ground kommt auch noch ein 
Widerstand.
Je nach höher der Spannung an der Basis wird die Spannung über dem 
Emitter-GND Widerstand eingestellt und damit dann der Strom. Soweit die 
Theorie :-)

chris schrieb:
> Einen Summer würde ich nie verwenden. Das würde verhindern, eigene Töne
> zu generieren.
> Mit einer 8Bit PWM kann man schon eine relativ passable Audio Qualität
> erreichen und wav-Dateien ausgeben.
Das wäre natürlich auch eine gute Lösung.
Hast du eine Beispielschaltung parat?

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist relativ einfach: In einer Interruptroutine werden mit einer 
Frequenz von ca. 30kHz Werte in das PWM-Register geladen. Die Werte sind 
die Abtastwerte aus dem WAV-File.
Wenn Du nur Töne erzeugen willst, kannst Du via DDS einen Akku in der 
Interruptroutine hochzählen.
An den PWM-Ausgang kannst Du entweder direkt eine Piezo-Speaker, einen 
RC-Tiefpass an eine Cinch Buchse, oder einen RC-Tiefpass und einen LM358 
mit Lautsprecher anschließen.

Autor: Holger P. (holg_i)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe einfach ein Piezo an einen Port angeschlossen und folgendes 
geschrieben:
.def Dummy2    = r17
.def Dummy3    = r18

Ton:
  ldi  Dummy3,$7F
Ton1:
    sbi   PortD,2
  ldi  Dummy1,$AF
  rcall Delay
  cbi   PortD,2
  ldi  Dummy1,$AF
  rcall Delay
  dec   Dummy3
  brne  Ton1
  rcall Delay2

  ldi  Dummy3,$7F
Ton2:
    sbi   PortD,2
  ldi  Dummy1,$7F
  rcall Delay
  cbi   PortD,2
  ldi  Dummy1,$7F
  rcall Delay
  dec   Dummy3
  brne  Ton2
  ldi   Dummy3,$6
W1: rcall Delay2
  dec   Dummy3
    brne  W1

  ldi  Dummy3,$FF
Ton3:
    sbi   PortD,2
  ldi  Dummy1,$DF
  rcall Delay
  cbi   PortD,2
  ldi  Dummy1,$DF
  rcall Delay
  dec   Dummy3
  brne  Ton3
  sbi   PortD,2   ; TonBit auf High damit nicht immer Strom fließt
  ret

; ============================= 
;    Delay 
;    :bei 8 MHz
; ----------------------------- 
Delay2:
         push Dummy1
         push Dummy2

         ldi  Dummy1, $30
S3:      ldi  Dummy2, $FF
S4:      dec  Dummy2
         brne S4
         dec  Dummy1
         brne S3
         
     pop  Dummy2
     pop  Dummy1
     ret


; ============================= 
;    Delay 
;    :bei 8 MHz
; ----------------------------- 
Delay:
         ldi  Dummy2,$5
S2:      dec  Dummy2
         brne S2
         dec  Dummy1
         brne Delay
     ret


macht schön düdeldidüd

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, habe jetzt eine super simple Schaltung mit einen 
Miniaturlautsprecher (vermutlich piezo) gefunden. Der Lautsprecher hat 
vllt einen Durchmesser von 1cm, is 5mm hoch und hat zwei Beinchen zum 
Anlöten (THT). Leider habe ich keine Bezeichnung von dem.

Was mir jetzt noch fehlt ist eine Bezugsquelle für so einen 
Lautsprecher, kann mir da jemand einen Typen + Lieferanten nennen?
Bei Reichelt gibts da anscheinend nix..

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.