Suche kleinen DAC für Sprachausgabe oder lieber PWM?

Gast #2082011
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
#2082368
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
#2082472
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
Angehängte Dateien:
Gast #2083411
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren