Forum: Mikrocontroller und Digitale Elektronik Ideen gesucht zum Experimentieren mit dem TDA1543 DA-Wandler


von Chris (Gast)


Lesenswert?

Hallo,

vor mir liegt eine Versuchssschaltung zum TDA1543 (serieller
DA-Wandler, zwei Kanäle) auf dem Tisch. Das Testprogramm ist im Stande,
einen Sägezahn auszugeben, indem es einfach die 16 Bits aufwärts zählt.
Ist etwas langweilig auf die Dauer.

Was könnte man damit noch anstellen? Einen kleinen DDS-Synthesizer
programmieren für 9 oder 10 Bit vielleicht? Einen Voltmeter nach der
Vergleichsmethode mit Komparator? Hat jemand andere Ideen? Der
Übertragungsfaktor zwischen Binärwert und analoger Ausgangsspannung ist
jedenfalls linear.

Gruß

von till (Gast)


Lesenswert?

bist du dir deiner sache sicher? wenn du die bits durchzählst müsste da
nicht etwas von einem sägezahn sich unterscheidendes rauskommen, weil
der TDA twos complement- formatierte datenworte erwartet?

von Chris (Gast)


Lesenswert?

Hallo,

auf dem Oszilloskop erscheint ein Sägezahn (kann auch auf dem Kopf
stehen, die Sägezahnform hat er aber dennoch). Der nachfolgende
invertierende OPAmp invertiert das analoge Ausgangssignal.
Hier mal ein kleiner Ausschnitt aus dem Testprogramm, das ich genau um
dies heraus zu finden so einfach gestaltet habe:

main:  adiw  r30,1  ; Doppelregister aufwärts zählen
  mov  temp3,r30  ; kopieren
  mov  temp2,r31  ; oberes Register kopieren
  rcall  out_rechts
  mov  temp3,r30  ; weil zuvor durch das Schieben alle Einsen 
verschwunden
sind
  mov  temp2,r31  ; muss man das Kopieren wiederholen
  rcall  out_links
  rjmp  main

von Chris (Gast)


Lesenswert?

... die Schrift der orangefarbenen Kopfzeile scheint sich selbständig zu
ändern und durch "(neu)" zu ergänzen. Welche Abwandlung erscheint als
nächstes?...

von Frank Simon (Gast)


Lesenswert?

Hallo, kannst Du bitte mal posten, wie du die Daten in den Wandler
geschoben hast?
Mit freundlichen Grüßen
Frank Simon

von Olaf (Gast)


Lesenswert?

Natuerlich kannst du einen DDS auch selber programmieren. Sowas verwende
ich als Signalgenerator.

Und wenn du schon einen Signalgenerator hast dann kannst du auch mal
einen FIR-Filter programmieren wenn noch einen AD-Eingang hast. Mache
ich gerade mit dem R8C. :-)

Olaf

von basti (Gast)


Lesenswert?

Wenn du ein scope hast bietet sich ne scope-clock an...

http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=10606

da bieten sich 16bit auflösung geradezu an...

von TheMason (Gast)


Lesenswert?

@Chris

Cool. Interessant was du da machst. Mit welcher Samplerate gibst du
denn die Samples aus ? (sprich wie schnell ist der Wandler).


@Olaf

hört sich interessant an mit dem R8C. werde ich demnächst auch mal
machen, aber mit iir-filtern. Mal schauen was dabei rauskommt. Kannst
ja mal ein MP3 reinstellen wie es nachher klingt *gg

Gruß
Rene

von Olaf (Gast)


Lesenswert?

Der R8C hat einen Assemblerbefehl der multiplziert und gleich addiert.
Da bieten sich halt Filter an wo bn-Koeffizienten 0 sind.

Ich hab auch mal ein IIR Filter probiert. Da konnte ich beliebige
Sinuskurven reinschicken und es kam immer Rauschen raus. Muss ich mir
mal patentieren lassen. :-) Vermutlich irgendwo ein Rechenproblem mit
dem Wertebereich.

Mein FIR Filter laeuft aber schon ganz gut. (mit 50Taps und 40kHz fs)
Momentan verwende ich bloss als DA-Wandler den PWM Ausgang und da
werden leider hoehere Frequenzen (alles ueber 5kHz) durch den PWM-Takt
etwas vergurkt.

Aber da kann man mal schoen die guten alten Kenntnisse aus dem Studium
wieder auffrischen....

Olaf

von TheMason (Gast)


Lesenswert?

Hallo Olaf,

wenn die Berechnung der FIR-Koeffizienten nicht so lange dauern würde
bzw. mehr möglichkeiten bieten würde (überschwingen usw). würde ich
wahrscheinlich auch eher FIR nutzen, aber ich will ja gerade das es
quietscht, zirpt und knarzt :-))
Aber deinen Rauschgenerator solltest du dir echt Patentieren lassen
*gg.
Hatte auch mal einen Synthesizer in einem FPGA realisiert (bzw bin
immer noch dabei) und größere Probleme was das Rechnen von IIR-Filtern
angeht hatte ich eigentlich nicht (ok es kommt zwar leider nicht das
heraus was ich möchte, aber das liegt an meiner struktur)
Bei dem R8C hab ich vor einen DAC0808 als DA Wandler zu nehmen, da ich
mir kein Widerstands-DA-Wandler aufbauen wollte. Bin mal gespannt was
dabei rauskommt.
Aber ein paar Audio-Beispiele würden mich echt mal interessieren.

Gruß
Rene

von Olaf (Gast)


Lesenswert?

Ich hatte mit dem IIR auf dem PC auch keine Probleme, aber da hab
ich halt Fliesskommazahlen verwendet. Irgendwo beim umstellen auf
Festkomma und skalieren muss ich wohl noch einen Fehler gemacht haben.

DA_Wandler mit Parallelport gefallen mir nicht so weil sie soviele
Pinne verwenden. Ich werde wohl noch einen seriellen Wandler an SPI
pappen den ich aus einem CD-Player geschlachtet habe.
Fuer erste Tests ist aber der PWM-Ausgang auch ganz okay. Der macht
79kHz Takt bei 8Bit Aufloesung. Da man Puls und Pausenzeiten getrennt
einstellt muesste es sogar moeglich sein noch deutlich hoehere
Taktraten zu erreichen wenn man z.B nur 6 oder 7Bit verwendet. Muss ich
heute Abend mal probieren.

Olaf

von TheMason (Gast)


Lesenswert?

Hallo Olaf,

also mit Fließkomma ists ja kein Problem. Bei Festkomma muß man sich
lediglich auf feste Größen (Audio-Daten und Koeffizient) achten.
Bei meinem FPGA-Biquad hab ich 32Bit Audio (24Bit Daten + 8Bit
Overhead) und 32Bit Koeffizienten (8Bit Vorkomma, 24Bit Nachkomma)
benutzt. Einfach multiplizieren, begrenzen (wichtig), um 8 Bit nach
rechts schieben, abschneiden, fertig.
Funktioniert sehr gut.
So hatte ich es auf dem PC in Festkomma auch gemacht. Klappt
hervorragend.
Das einzige was bei der portierung auf einem uC nervig ist, das man bei
der Koeffizientenberechnung Fließkomma nutzen muß (sollte), was einfach
irre viel zeit kostet. Aber da kommt man nicht drum herum wenn der
Filter moduliert werden soll.
Können ja mal zwecks Erfahrungsaustausch Emailen.
Hab auch deinen Thread zum Wecker gelesen.
Ich würd nen DA-Wandler nehmen, einen Oszillator mit Multiplizierer
(für die Lautstärke) und eine Hüllkurve (einfache Attack-Decay), sowie
einen kleinen Sequencer (8 Schritte) für die Tonhöhe nehmen.
Insgesamt dürfte das bestenfalls 2k Code kosten und sehr einfach zu
implementieren sein.

Gruß
Rene

von Olaf (Gast)


Lesenswert?

Also ICH habe keinen Wecker, das muss dann wohl ER sein. Vielleicht
gehoert ER ja auch zu IHNEN, aber ICH nicht. :-)

Olaf (der Echte)

von TheMason (Gast)


Lesenswert?

oh entschuldigung bitte ... hatte den unterschied zwischen
olafK und olaf für marginal gehalten *gg.

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.