Klangerzeugung

Wechseln zu: Navigation, Suche

Für die Klangerzeugung mit Microcontrollern gibt es eine Reihe unterschiedlicher Ansätze und Umsetzungen. Die jeweils optimale Methode hängt von der Art des zu erzeugenden Geräusches, der zur Verfügung stehenden Hardware, dem akzeptierten Aufwand an Software und dem gewünschten Ergebnis ab.

Im einfachsten Fall erzeugt ein externer Klangerzeuger (z.B. ein Piezo-Element an einer Messingmembran) durch simples Ein- und Ausschalten Warn- oder Piepsgeräusche, wie es z.B. im PC üblich ist. Mit entsprechendem Aufwand sind aber auch Musik- und Sprachwiedergabe über Lautsprecher ist möglich.

Im allgemeinen Fall, wenn ganz bestimmte Wellenformen wiedergegeben werden sollen, kann mit dem Microcontroller eine zuvor in einem RAM gespeicherte Wertefolge ausgegeben und mit einem externen Wandler in ein analoges Signal verwandelt werden. Die Wertefolge entspricht dabei direkt der Amplitude. Konkretes Beispiel für eine solche direkte digitale Klangerzeugung ist das DDS-Verfahren. Auf der Basis dieses Verfahrens existieren auch fertige Chips, die präzise Sinussignale generieren, sowie solche, die ganze Tonmelodien abspielen können.

Im Einzelfall können die Werte auch wie bei der synthetischen Klangerzeugung generisch erzeugt werden.

Automatische Erzeugung von Tonfrequenzen[Bearbeiten]

Voltage controlled Oscillator (VCO)[Bearbeiten]

  • XR8038 oder MAX038
  • XR2206

Spezielle Klang-ICs[Bearbeiten]

Für spezielle Klänge werden ICs angeboten z.B.

Der klassische Gong-IC SAE800 -> Conrad, Reichelt, Bausatz bei ELV Desweiteren:

Mit Voice-Recorder lassen sich kurze Audiosequenzen über ein Mikrofon aufnehmen und auf Befehl abspielen.

  • ISD25xx z. B. ISD2560 -> Reichelt
  • ISD17xx z. B. ISD1730 -> ?
  • ISD14xx z. B. ISD1416 -> Conrad
  • Beispiel aus Roboternetz.de

DTMF, Telefongetute

  • MT 8880 -> Conrad
  • MT 8870 -> Conrad
  • CM 8870

Der Klassiker aus dem C64

  • MOS 6581/SID 6581 C64-Soundchip -> eBay
  • SID-Emulator mit AVR
  • [1] Beitrag hier im Forum, SID an AVR

Manuelle Erzeugung von Tonfrequenzen[Bearbeiten]

Sinustabelle[Bearbeiten]

Man kann z.B. im Flash eine Sinustabelle ablegen, die je nach gewünschter Frequenz schneller oder langsamer abgetastet wird und so einen quasi analogen Momentanwert als Vorgabe zur Bildung einer PWM ermöglicht. Damit und zusätzlich einem Tiefpass hat man Sinustöne variabler Frequenzen, die sehr schön rund klingen können, sofern die Abtastung fein genug und die Bildung der PWM schnell genug erfolgt. Mit etwas Rechenaufwand kann man noch Lautstärke-Hüllkurven draufmodulieren (AM) und somit glockenähnliche Sounds erzeugen.

Sinusoszillators[Bearbeiten]

Mit Hilfe eines IIR-Filters, kann ein einfacher, selbstschwingender Oszillator programmiert werden.

Weblinks

  1. Doorbell bei www.microsyl.com (en, AVR, C)

Digital-Analog-Wandlung (DAC)[Bearbeiten]

Die analoge Ausgangsspannung für den Verstärker und später den Lautsprecher bzw ein elektronikfreies Piezoelement kann außerhalb des Mikrocontrollers auf verschiedene Weise erzeugt werden:

R2R-Netzwerk[Bearbeiten]

Siehe Widerstandsnetzwerk, R2R-Netzwerk Samplerate direkt in der Ausgabe

Nach dem R2R folgt in der Regel ein OPV. Mit einem Kondensator in der Signalleitung kann dabei ein eventuell vorhandener Gleichspannungsanteil (DC-Offset) reduziert werden.

PWM[Bearbeiten]

Für hochwertiges Audio wird eine schnell laufende PWM benötigt, d.h. der Controller wird schnell getaktet - z.B. mit 256facher Samplerate.

Wenn Piezo zum Einsatz kommt, dann sollte mit 50% Duty-Cycle gearbeitet werden. Die Toggle-Frequenz entspricht der halben Tonhöhe (zwei mal Umschalten pro Periode).

Meistens liefert eine Direktbeschaltung der Ausgangsstufe an einem Mikrocontroller nicht genügend Leistung. Bereits eine einfache Treiberstufe kann Abhilfe schaffen.

Pwm-wandler.svg

Die 20Ω Widerstand/ 4,7 µF Kondensator Kombination als Tiefpass entfernt die hohen Frequenzen des PWM-Signals aus dem Audiosignal.

Durch Verringern des Ausgangswiderstandes kann noch etwas mehr Leistung herausgeholt werden.

Noch besser ist eine Drossel im Ausgangszweig.

Weblinks

  1. Simple SD Audio Player with ATtiny85 (elm-chan.org)
  2. PIC18F SD WAV Audio Player ähnlich 1 zusätzlich mit Tiefpassfilter
  3. AVR-Synthesizer

Hardware[Bearbeiten]

Piezo-Element[Bearbeiten]

Piezo-Elemente sind einfach anzusteuern und als Buzzer/Summer von Reichelt, Conrad... erhältlich.

Es gibt hier zwei Typen:

  • Mit integrierter Elektronik; braucht nur mit Gleichspannung versorgt zu werden.
  • Ohne Elektronik; braucht eine Wechselspannung.

Die Piezo-Elemente haben eine Eigenresonanzfrequenz um 1,5 kHz ("Fiep"), und sind damit am lautesten. Fertige Module sind oft mit Resonanzkörper ausgestattet (Helmholtz-Resonator).

Piezo Elemente ohne integrierte Elektronik können direkt an die Pins eines AVR oder PIC angeschlossen werden. Um die Lautstärke zu erhöhen, kann man zwei Pins benutzen, die immer abwechselnd auf LOW bzw. HIGH gesetzt werden. Dadurch ergibt sich eine Wechselspannung um V_cc. (Prinzip der H-Brücke)

Bei selbsterregenden Elementen (die aus einer Gleichspannung ihre Frequenz selbst erzeugen) sollte man auf die Daten achten. Im Allgemeinen brauchen kleine Module aber auch nur einige mA.

Lautsprecher[Bearbeiten]

Um Lautsprecher an einem µC betreiben zu können, bedarf es in den meisten Fällen eines Verstärkers, da die Portpins des µC i.d.R. nur wenige mA Strom vertragen (Datenblatt!).

Weblinks[Bearbeiten]

(TODO: Sichten und den verschiedenen Methoden zuordnen)