Externer DAU am Mikrocontroller
Mikrocontroller haben leider sehr selten D/A-Wandler integriert!
Oftmals kann man sich mit einer Pulsweitenausgabe behelfen,
aber auch dabei ist die Kanalanzahl, die Abtastrate und die Auflösung begrenzt.
TDA1543
Dieser Schaltkreis scheint die Lösung des Problems zu sein.
Die Kurzdaten:
- Zwei unabhängige (Stereo-)Kanäle
- Eingabeformat: vorzeichenbehaftete Zahlen
Pro:
- reichlich: 16 bit Auflösung
- mittelschnell: 200 kHz maximale Abtastrate
- klein: 8poliges DIL-Gehäuse
- bequem: Betriebsspannung 5 V (3..8 V)
- seriell: Drei-Draht-Schnittstelle (für synchron-serielle Schnittstellen [SPI u. ä] geeignet)
- spottbillig: kostet 60 Cent das Stück (Reichelt)
Kontra:
- hungrig: 50 mA (scheidet für Batteriebetrieb aus!)
- Stromausgang: –2,3 mA full-scale bei kurzgeschlossenem Ausgang an Vref = 2,2 V
(das kann man auch vorteilhaft nutzen!)
- Hoher exemplarischer Offset- und Verstärkungsfehler,
erfordert (ggf. softwaremäßigen) Abgleich in Schaltungen mit Gleichspannung
Der Leser sollte das
Datenblatt
vor sich liegen haben, und vermutlich wird er
auch nach mehrmaligem Durchlesen nicht schlau daraus.
Deshalb hier das Ergebnis meiner Untersuchungen in hoffentlich
verständlicherer Form, sowie deutsch
(da werden die Vxx zu Uxx).
Wechselspannung
Für die Ausgabe von Wechselspannung genügt die folgende Schaltung:
Einfachste Schaltung für Wechselspannung;
Dimensionierung der Widerstände siehe Text!
Je nach Datenquelle eigent sich diese Schaltung für die Wiedergabe in
CD-Qualität!
Dann sollte der Schaltkreis mit einem extra Festspannungsregler mit 8 V
versorgt werden.
Hier wird der Ausgang nicht im Kurzschluss mit der Referenzspannung
wie im Datenblatt beschrieben betrieben, sondern an einem Lastwiderstand.
Es wird kein OPV benötigt!
Dimensionierung:
Zur Dimensionierung ist das Wissen über die ausgangsseitigen Stromquellen, -senken und -spiegel erforderlich!
Ausgangsseitige Stromquellen, -senken und -spiegel
Man sieht, dass man mit dem Programmierwiderstand
Rbias den Quellstrom Ibias
einstellt.
Intern wird dies sicherlich über eine sog. Stromspiegelschaltung mit
pnp-Transistoren realisiert.
Die Stromstärkeverhältnisse werden über die wirksamen Emitterflächen
eingestellt, angedeutet durch die Doppel-Emitter.
Genauso gut kann man sich zwei Transistoren parallel geschaltet denken.
Als ein typischer Vertreter der integrierten Analogschaltungstechnik
funktioniert der Stromspiegel nur in integrierten Schaltungen!
(Nicht nachbauen!)
Dass sich der Programmierwiderstand am Referenzspannungsausgang
befindet ist nur eine trickreiche Art, Pins einzusparen.
Zurück zur Schaltung:
Der Lastwiderstand darf nicht zu groß werden, denn der Ausgang muss ja immer
noch möglichst Kurzschluss »sehen«.
Die Ausgangsspannung UOC(DC) darf zwischen
1,8 .. UDD – 1,2 V liegen.
Bei UDD = 5 V also zwischen 1,8 .. 3,8 V.
Damit ist die Amplitude klar begrenzt, auf 2 VSS.
Mit dem maximalen Stromhub von IFS = 2,65 mA ergibt sich für
den maximalen Spannungshub ein Widerstand RL
= 2 V / IFS = 760 Ω.
Das ergibt bei 3,8 V einen Strom von 5 mA, und der ist gerade so zulässig.
Damit ist der Hub von 2 VSS auch der Mindesthub!
Günstiger werden die Verhältnisse bei höherer Betriebsspannung.
Die beiden Ausgänge sind normalerweise Stromsenken.
Mit einem Programmierwiderstand von Uref
(Referenzspannung von 2,2 V, Pin 7) nach Masse kann man an den Ausgängen
eine Stromquelle hinzufügen und so die Ausgangsspannung auf ein
mittleres Potenzial von 2,8 V hochziehen.
Also braucht man einen Ruhe-Biasstrom von
3,8 V / 760 Ω = 5 mA, einen Programmierwiderstand
Rbias = 2,2 V / 2,5 mA = 880 Ω.
Betriebsspannung | UB5 V | 8 V
| maximaler Hub | ΔUDAU2 V (± 1 V) | 5 V (± 2,5 V)
| Ausgangsspannungsbereich | UDAU1,8 .. 2,8 .. 3,8 V | 1,8 .. 4,3 .. 6,8 V
| Arbeitswiderstand | RL755 Ω | 1,88 kΩ
| Stromeinstellwiderstand | Rbias880 Ω | 1,22 kΩ
| Ausgangsstrom (in RL) | IL2,4 .. 5 mA | 0,96 .. 3,6 mA
| | | | | | |
---|
Dimensionierung für übliche Betriebsspannungen und maximalem Hub
Sicherlich ist diese Stromprogrammierung nicht sonderlich langzeitstabil
und auch nicht kanalgleich, was den Einsatz in DC-Schaltungen weiter unten
erschwert.
Unipolare (oder, wer will, auch bipolare) Gleichspannung
Wenn der oben genannte Ausgangsspannungsbereich UOC(DC)
ausreicht, lässt man im Bild 1 einfach die Kondensatoren weg, und fertig.
Bei Bezugnahme auf die Referenzspannung Uref Pin 7 muss dies
(wechsel)stromfrei geschehen, bspw. mit einem Spannungsfolger am Pin 7.
Da rächt sich das Pinsparen.
Beachte: Das niedrigste Kodewort -32768 = 8000h ergibt die größte,
das höchste Kodewort 32767 = 7FFFh die kleinste Spannung.
In allen anderen Fällen benutzt und dimensioniert man einen I/U-Wandler.
I/U-Wandler am Ausgang.
Der NE5532 bekommt allerdings zu wenig Betriebsspannung…
Bei der Ausgabe einer Gleichspannung würde man normalerweise eine
Potenzialversatzstufe verwenden.
So etwas tut man aber nicht, wenn man eine Stromquelle hat!
(= Vorteil des Stromquellen-Ausgangs)
Dimensionierung
Die Ausgangsspannung UOC(DC) beträgt hier immer
Uref und spielt bei der Dimensionierung keine Rolle.
RIU wird als Quotient zwischen gewünschtem
Ausgangsspannungshub (in Volt) und Stromhub IFS = 2,3 mA
(typ.) ermittelt.
RIU muss einstellbar sein, wenn die Ausgangsspannung
definiert sein soll; besser ist eine softwaremäßige Verstärkungskalibrierung.
Hier gilt: Das niedrigste Kodewort -32768 = 8000h ergibt die kleinste,
das höchste Kodewort 32767 = 7FFFh die größte Spannung.
Der Strom in den I/U-Wandler ist theoretisch Null beim Kode 8000h und –2,3 mA
beim Kodewort 7FFFh.
Daher kommt es am Ausgang nur zu höheren Spannungen als Uref.
Die maximale Aussteuerfähigkeit des OPV ist dabei zu beachten.
Will man kleinere Spannungen, ist ein positiver Konstantstrom in den Eingang
des I/U-Wandlers einzuspeisen.
Im einfachsten Fall mit je einem Festwiderstand von UDD,
denn die Spannung ist ja konstant.
(Dies ist auch der Weg der Kalibrierung, oder für unterschiedliche Bereiche
für die beiden Ausgänge.)
Genau dafür ist der Programmierwiderstand Rbias zuständig und
nutzbar!
Zur Nullpunktkalibrierung (Offsetkalibrierung) sollte Rbias
einstellbar sein.
Es kann jedoch nur auf einen der beiden Kanäle kalibriert werden.
Müssen beide Kanäle offset-kalibriert werden, sind Einstellpotenziometer
zwischen Eingang des I/U-Wandlers und UDD oder besser
Masse vorzusehen.
Noch besser ist softwaremäßige Offsetkalibrierung.
Sollen die Betriebsspannungen erreicht werden, müssen ausgangsseitig sog.
Rail-To-Rail-OPVs eingesetzt werden, beispielsweise LMV358.
Bipolare Gleichspannung mit Nullpunktfixierung
Statt mit einem weiteren Widerstand den innewohnenden Offsetfehler zu
kompensieren bietet sich auch die Bezugnahme auf die Referenzspannung
mittels Instrumentationsverstärker an.
Das ergibt einen Potenzialversatz.
Potenzialversatzstufe hinter dem I/U-Wandler
Das sieht jedoch m. E. nicht sehr empfehlenswert aus, da aufwändig.
Je nach Beschaltung am Potenzialversatz steigt oder sinkt die
Ausgangsspannung mit steigenden Kodewörtern.
Serielle Ansteuerung
Ich hätte es fast vergessen, den Schaltkreis muss man auch mit Daten füttern.
Auch hier ist die Darstellung im Datenblatt zweifelhaft.
Datenfütterung
Nützlich zu wissen: Man muss nicht alle Bits senden; braucht man nur einen
8-bit-DAU, schickt man dem Schaltkreis einfach nur 8 statt 16 Bits.
Zu viele gesendete Bits werden vom IC ignoriert.
Man kommt nicht umhin, stets beide Kanäle zu aktualisieren,
auch wenn sich nur an einem etwas ändert.
Beide Analogwerte erscheinen einen BCK-Takt nach der fallenden
WS-Flanke, also gleichzeitig.
Mehrere TDA1543
Will man mehrere TDA1543 benutzen, dann bieten sich zwei Arten der
Mehrfachausnutzung von Mikrocontroller-Pins an.
Eine mikrocontroller-interne SPI-Einheit kann man dann leider nicht direkt
benutzen!
Für massive oder
exakt zeitgleiche Datenübertragung bietet es
sich an, die Taktleitungen BCK und WS zu verbinden und die
Daten von je einem Pin des Mikrocontrollers liefern zu lassen.
Das erfordert etwas Bitschaufelei in der Firmware.
Bei geringerem Datenaufkommen erscheint es
leichter, die Taktleitung BCK einzeln heranzuführen und die
Leitungen DATA und WS parallel zu schalten.
Will man das SPI doch benutzen, muss man einen Demultiplexer oder Dekoder
einsetzen.
Diese Verschaltung erlaubt außerdem unterschiedliche
Aktualisierungsraten der D/A-Umsetzer.
Im Allgemeinen wird man jedoch entsprechend mehrkanalige D/A-Wandler einsetzen,
bspw. Texas Instruments TLV5630 (8 Kanäle, 12 bit, 200 kHz/Kanal, 6-16 mA,
20-pol. SMD-Gehäuse, Spannungsausgänge, interne Referenzspannung).
Code-Beispiele
8051 | ATmega | ...
|
---|
ADC2USB.A51 ab Label T0ISR trotz Ping-Pong-Verfahren für 48 kSa/s,
allerdings nur einkanalig. | steht noch aus | ???
|