Forum: Analoge Elektronik und Schaltungstechnik DAC per Spannungsteiler, N Schließer, 2^N Werte?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Anonymer Bastler (Gast)


Lesenswert?

Bei einem Spannungsteiler mit R1 und R2 bestehend aus Parallelschaltung 
von N Widerständen mit Schließern an Masse - wie sind die 
Widerstandswerte zu wählen, so dass die Ausgangsspannungen gleichmäßig 
abgestuft, oder anders gesagt, möglichst weit voneinander entfernt sind?

Mit 2 Tastern und Widerständen ergeben sich 4 Kombinationen, bei einer 
Eingangsspannung von "1" und R1=1 sollen die Ausgangsspannungen 
beispielsweise 1, 0,75, 0,5, 0,25 sein.

    -   1.00 = 1*inf
    A   0.75 = 1*(1/(1/R2a))/(1+1/(1/R2a)),
    B   0.50 = 1*(1/(1/R2b))/(1+1/(1/R2b)),
    A+B 0.25 = 1*(1/(1/R2a+1/R2b))/(1+1/(1/R2a+1/R2b))

Wie findet man dafür eine möglichst gute Lösung?

Für einen R2R-DAC müssen die Bits leider push-pull sein, mit Schließer 
geht es nicht.

von Wolfgang (Gast)


Lesenswert?

Anonymer Bastler schrieb:
> Bei einem Spannungsteiler mit R1 und R2 bestehend aus Parallelschaltung
> von N Widerständen mit Schließern an Masse - wie sind die
> Widerstandswerte zu wählen, so dass die Ausgangsspannungen gleichmäßig
> abgestuft, oder anders gesagt, möglichst weit voneinander entfernt sind?

Das kommt auf deine Schaltung an, d.h. wo deine Widerstände parallel 
geschaltet werden sollen und wo die Schließer liegen sollen (Shunt oder 
on/off)?

Stelle die Gleichung auf und rechne dir die Werte aus

von Anonymer Bastler (Gast)


Lesenswert?

R2a = 3, R2b = 1 aber 1/(1/R2a+1/R2b) != 1/3

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Anonymer Bastler schrieb:
> Für einen R2R-DAC müssen die Bits leider push-pull sein, mit Schließer
> geht es nicht.
Ich würde den Schaltern einen niederohmigen Pullup verpassen und dann 
den Spannungsteiler "verhältnismäßig hochohmig" auslegen. Der Wandler 
wird ja nicht viel mehr als 4 Bit haben, da kommt man dann mit 1k Pullup 
und 100k in der R2R Kette schon hin... ;-)

von Anonymer Bastler (Gast)


Lesenswert?

Wolfgang schrieb:
> Stelle die Gleichung auf und rechne dir die Werte aus

Nicht hilfreich :-(

von Peter D. (peda)


Lesenswert?

Das geht nicht, eine Parallelschaltung addiert die Leitwerte. Ein 
Spannungsteiler wird daher immer nichtlinear teilen.

Anonymer Bastler schrieb:
> Für einen R2R-DAC müssen die Bits leider push-pull sein, mit Schließer
> geht es nicht.

Einfach Pullups an die Schließer und einen Treiber dahinter, z.B. 
74HC541.

von Alois R. (Gast)


Lesenswert?

Lothar M. schrieb:
> Anonymer Bastler schrieb:
>> Für einen R2R-DAC müssen die Bits leider push-pull sein, mit Schließer
>> geht es nicht.
> Ich würde den Schaltern einen niederohmigen Pullup verpassen und dann
> den Spannungsteiler "verhältnismäßig hochohmig" auslegen. Der Wandler
> wird ja nicht viel mehr als 4 Bit haben, da kommt man dann mit 1k Pullup
> und 100k in der R2R Kette schon hin... ;-)

Ich würde die (1/2/4/8 gewichtete) Widerstände gegen eine Referenz 
schalten, und in einen I/U-Wandler speissen lassen.

von Egon D. (Gast)


Lesenswert?

Alois R. schrieb:

> Ich würde die (1/2/4/8 gewichtete) Widerstände gegen
> eine Referenz schalten,

Man kann die Widerstände auch gegen Masse schalten, wenn
man den anderen Eingang des I/U-Wandlers mit der Referenz
verbindet. Erfordert ggf. noch einen zweiten OPV, um den
Offset zu eliminieren.


> und in einen I/U-Wandler speissen lassen.

Genau.

von Anonymer Bastler (Gast)


Lesenswert?

Peter D. schrieb:
> Das geht nicht, eine Parallelschaltung addiert die Leitwerte. Ein
> Spannungsteiler wird daher immer nichtlinear teilen.

Oh, ja.

Lothar M. schrieb:
> Ich würde den Schaltern einen niederohmigen Pullup verpassen und dann
> den Spannungsteiler "verhältnismäßig hochohmig" auslegen.

Das könnte funktionieren. Braucht allerdings 3*N Widerstände.

Alois R. schrieb:
> Ich würde die (1/2/4/8 gewichtete) Widerstände gegen eine Referenz
> schalten, und in einen I/U-Wandler speissen lassen.

Das ist dann ja schon ein "richtiger" DAC.

Danke für die Hilfe!

von Pandur S. (jetztnicht)


Lesenswert?

Normalerweise nimmt man ein R2R Netzwerk. Die gibt's bit 8 oder 10 Bit 
auf einem Keramik mit 9 oder 11 pins

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Anonymer Bastler schrieb:
> Wie findet man dafür eine möglichst gute Lösung?

Falls dich die digitale Transformation schon erreicht hat, überlässt du
die Lösungsfindung am besten dem Computer. Es handelt sich hier um ein
Optimierungsproblem, wofür es fertig implementierte Algorithmen in
großer Auswahl bspw. in SciPy, Octave und Matlab gibt.

Du wirst aber feststellen, dass selbst mit der optimalen Dimensionierung
der Widerstände die Ausgangsspannungen für die verschiedenen
Tastenkombinationen sehr ungleichmäßig verteilt sind. Deswegen sind
andere Schaltungskonzepte, wie sie hier vorgeschlagen wurden, die
bessere Wahl, auch sie ein paar zusätzliche Bauteile benötigen.

von Alois R. (Gast)


Angehängte Dateien:

Lesenswert?

Anonymer Bastler schrieb:
> Alois R. schrieb:
>> Ich würde die (1/2/4/8 gewichtete) Widerstände gegen eine Referenz
>> schalten, und in einen I/U-Wandler speissen lassen.
>
> Das ist dann ja schon ein "richtiger" DAC.

Du summierst bei einen DAC gewichtetet Ströme. Streng funktioniert das 
nur, wenn sich die Spannung am Summationspunkt nicht ändert, der 
Innenwiderstand Ri also 0 Ohm beträgt.

Je weiter du von Ri = 0 Ohm abweichst, umso schlechter wird das. Bei 
einem 2-bit Wandler (wie in deinem Fall) hat man da etwas an Spielraum.

(R0, R1 über Schalter an Vref, Ri an 0V, Summenpunkt = Ausgang)

Nimmt man Vref = 10V, R0 = 2k (der Widerstand für 2^0) und R1 = 1k (der 
Widerstand für 2^1), berechnet man z.B. mit Calc (-> Anlage) die 
Ausgangsspannungen zu:

@ Ri = 1k:   0V, 3.33V, 5.00V, 6.00V
@ Ri = 100R: 0V, 476mV, 909mV, 1304mV
@ Ri = 10R:  0V, 49.8mV, 99.0mV, 147.8mV
@ Ri = 1R:   0V, 5.00mV, 9.99mV, 14.98mV

Du kannst mit R0 und R1 spielen - bei Ri im selben Widerstandsbereich 
wird das nicht wirklich gut.

von Wolfgang (Gast)


Lesenswert?

Anonymer Bastler schrieb:
> Wie findet man dafür eine möglichst gute Lösung?

Was heißt für dich "gut"?
[ ] Geringer Bauteilaufwand
[ ] hohe Linearität (wie groß?)
[ ] hohe Unabhängigkeit von Bauteiltoleranzen
[ ] als integrierte Lösung verfügbar

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.