Forum: Mikrocontroller und Digitale Elektronik Suche kleinen DAC für Sprachausgabe oder lieber PWM?


von Andreas (Gast)


Lesenswert?

Hallo,

ich suche einen kleinen, günstigen DAC, am besten im SMD-Gehäuse welche 
ich mittels SPI mit Daten füttern kann welch dann als Audio Ausgegeben 
werden.
Weiterer Nachteil: Ich bin Privatperson, kann also nur bei Firmen kaufen 
welche auch mein Geld wollen und das ohne Gewerbeschein.
Weiterhin brauch ich auch noch was wo ich die gesampelten Sounds 
reinstopfen kann. Ich dachte da an ein Dataflash von Atmel. Ist das 
Geeignet?

Mein Projekt:
Ein kleiner AVR (Tiny2313) soll per SPI daten zum DAC senden. Diese holt 
der uC aus dem Besagten Dataflash. Das ganze soll max. 5 Samples 
beinhalten welche beim bestromen eines dafür zugeordneten Pins 
abgespielt werden. Als Verstärkerbaustein verwende ich einen LM386, für 
einen kleinen Lautsprecher in einem 5V System ist der absolut 
ausreichend.

Da ich in Bascom Programmiere (für Zeitkritische Sachen würde ich dann 
Inline-Assembler verwenden) wäre ein kurzer Abriss über den 
Funktionsablauf sehr hilfreich. Ich arbeite mich in C gerade erst seit 
kurzer Zeit ein, daher traue ich mir das in C noch nicht zu, soweit ist 
mein Wissensstand noch nicht.

Falls man sich den DAC schenken kann und das ganze mit PWM erledigen 
kann bin ich natürlich auch nicht traurig. Nur kann der Tiny2313 das 
ganze schnell genug verarbeiten (mit 20MHz)? Ich dachte vom Sound her an 
8 Bit Mono mit 22 oder 32Khz. Besser ist natürlich immer gut, allerdings 
brauche ich nicht unbedingt CD-Qualität. Alternativ zum PWM wäre ein 
R2R-DAC da auch geeignet für 8 Bit? Widerstände mit 1% Toleranz 
vorausgesetzt? Sollte halt einigermaßen Verständlich sein.

Vielleicht kann mir jemand etwas auf die Sprünge helfen.

MFG
Andreas

von hans (Gast)


Lesenswert?

Atmel hat sowas schonmal vorbereitet:

http://www.atmel.com/dyn/resources/prod_documents/doc1456.pdf

hans

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Der Tiny261/461/861 mit seiner HighSpeed-PWM ist Dein Freund, 10Bit mit 
64kHz Samplerate sind da durchaus möglich und für Sprache und einfache 
Töne absolut ausreichend. Bis auf einen passiven Tiefpass und natürlich 
den Sound-Datenspeicher brauchst Du keine weiteren Bauelemente.

von Lukas K. (carrotindustries)


Lesenswert?

Ich verweise mal auf http://elm-chan.org/works/sd8p/report.html
'ne µSD-Karte dürfte womöglich sogar billiger als ein Dataflasch kommen

von Falk B. (falk)


Lesenswert?


von Andreas (Gast)


Lesenswert?

Knut Ballhause schrieb:
> Der Tiny261/461/861 mit seiner HighSpeed-PWM ist Dein Freund

Wo gibts den zu kaufen?

von Oliver J. (skriptkiddy)


Lesenswert?

Andreas schrieb:
> Wo gibts den zu kaufen?

Bei CSD zum Beispiel.

von Achim M. (minifloat)


Lesenswert?

Ich hab vor paar Wochen einen Atmega16 Schlagzeug spielen lassen.
Die Samples(Bassdrum, Snare, Hihat) fressen im Moment ~4kB(8000kHz 8bit 
Mono). Das geht mit einem Timer im PWM-Modus, ge-PROGMEM-ten Wave 
Dateien und unter 30 Zeilen Code.

Meine nächste Spielerei in der Richtung ist, die Zahlen von 1-10 und 
noch ein paar andere Schnipsel in Silben zu zerlegen, um z.B. 
GPS-Koordinaten eines Geocaches oder die Uhrzeit anzusagen.
mfg mf

von Andreas (Gast)


Lesenswert?

@minifloat,

gibst du nähere infos, z.B. wie du die samples abspielst? Welche 
Programmiersprache benutzt du?

von Achim M. (minifloat)


Angehängte Dateien:

Lesenswert?

Ist in C geschrieben. Sourcen gezippt angehängt.

Nicht schön, Qualität ist mies aber funzt einigermaßen.
Musste die Sourcen noch von meinem Realnamen usw. bereinigen.
Ist auch nicht schön geschrieben, die ISR ist ellenlang, Spaghetticode, 
teilweise vom rumprobieren falsche Kommentare usw.

Die Wav-Dateien wurden mit Audacity aus einem freien Drumloop 
herausgeschnitten, nach 8kHz unsigned 8bit umgewandelt und mit einem 
selber geschriebenen billigen Kommandozeilen-Konvertertool in unfertige 
Headerdateien verwandelt. Unfertig, weil ich musste noch den Header der 
Wav-Datei manuell aus dem Array herausnehmen sowie Schlüsselwörter, wie 
PROGMEM usw, dazueditieren. Wenn du das "Konvertertool" haben willst, 
geb ich dir gern die Source. Eigentlich, wenn ichs recht überlege, 
stimmt die Samplefrequenz beim Abspielen auch nicht wirklich. Müssten 
8,192kHz sein.

Häng einen PC-Lautsprecher über sagen wir mal 100Ω + kleinem Elko an 
einen der OCR-Pins und lausche den abgehackten 8bit Samples :)

mfg mf

von Klaus D. (kolisson)


Lesenswert?

.. da es neulich mal irgendwo genannt wurde konnte ich mich erinnern:

http://www.mcselec.com/index.php?option=com_content&task=view&id=234&Itemid=57

von Dieter S. (dolivo)


Lesenswert?

Für mich bleiben die ISD-Schaltkreise für solche Zwecke erste Wahl: 
einfache Ansteuerung, beste Sprachqualität.
http://www.nuvoton-usa.com/

von Ulrich (Gast)


Lesenswert?

Für Sprachausgabe reichen 8 Bit und auch eine niedrigere Abtastrate 
(z.B. 8 kHz). Mehr hat man beim Telefon auch nicht. Ganz 8 Bit 
Genauigkeit sind schon schwer per R2R, aber 6-7 Bit sind realistisch und 
auch noch ausreichend.   Für die Auflösung reicht auch noch ein normaler 
µC ohne high speed PWM.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ulrich schrieb:
> Für Sprachausgabe reichen 8 Bit und auch eine niedrigere Abtastrate
> (z.B. 8 kHz). Mehr hat man beim Telefon auch nicht.

Telefon benutzt aber eine nichtlineare Bewertung der 8 Bits und klingt 
dadurch weitaus besser, als lineare 8 Bit PCM.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.