Hallo Leute,
ich war auf der Suche nach einem "günstigen" DAC mit seriellem Interface
und min. 12Bit Auflösung. Geschwindigkeit ist relativ egal, da er nur
eine Sollwertvorgabe macht die nicht unter einer Sekunde verändert wird.
Also zurück zum Problem.
ADCs mit größer 10Bit sind relativ teuer, von 12 Bit und drüber ganz zu
schweigen.
Meine Idee wäre es jetzt, einfach zwei 8Bit DACs mit einer Referenz von
jeweils 1,024V über einen Summierverstärker zu jagen bei einer
verstärkung von 1V/V. Die Lösung kostet nur gut 1/3 eines 12Bit DACs.
Ist sowas "galant" oder wird soetwas auch wo anders gemacht?
Hannes schrieb:> Meine Idee wäre es jetzt, einfach zwei 8Bit DACs mit einer Referenz von> jeweils 1,024V über einen Summierverstärker zu jagen bei einer> verstärkung von 1V/V. Die Lösung kostet nur gut 1/3 eines 12Bit DACs.
Und was du an Auflösung gewinnst, verlierst du an Genauigkeit.
Bleib bei 10bit oder nimm gleich einen anständigen 12bit ADC.
Einen zwei Kanal 8 Bit DAC hätte ich im µC.
Aber wie ich bereits festgestellt habe, verdoppet sich ja nicht die
Auflösung, sondern ich bekomme immer nur 1 Bit mehr :-(
Hannes schrieb:> Einen zwei Kanal 8 Bit DAC hätte ich im µC.>> Aber wie ich bereits festgestellt habe, verdoppet sich ja nicht die> Auflösung, sondern ich bekomme immer nur 1 Bit mehr :-(
Ein Bit mehr = Verdopplung.
cyblord ---- schrieb:> Ein Bit mehr = Verdopplung.
Okay, Formulierungsfehler!
ich würde statt den 256 Schritten 512 bekommen. Brauche aber mehr als
1024.
Ja ich hab bereits eingesehen das das ganze ad absurdum von mir war...
:-(
Hannes schrieb:> Aber wie ich bereits festgestellt habe, verdoppet sich ja nicht die> Auflösung, sondern ich bekomme immer nur 1 Bit mehr :-(
Mit unterschiedlichen Referenzspannungen könnte vielleicht mehr gehen.
Aber bis 12 Bit kommst Du vermutlich nicht. Allerdings habe ich diese
Idee jetzt nicht tiefer durchdacht ...
Gruß Dietrich
Man kann den ersten 8bit DAC mit Eins, den zweiten DAC mit 1/256
gewichten und erhaelt 16 bit. Allerdings ist der Output dann nicht mehr
monoton... die Frage ist nun, erreicht man monotone 12 Bit ? 10 Bit ?
Hannes schrieb:> da er nur> eine Sollwertvorgabe macht die nicht unter einer Sekunde verändert wird.
Dann bietet sich doch eine PWM mit RC-Filter geradezu an. Billiger gehts
nicht.
Hallo Hannes,
Atmel hat interessante Ansätze in den Apllikationsbeispielen "AVR400"
und "AVR401". Dort wird der Analogkomparator eines µC, mit ein paar
externen Bauteilen, zum A/D-Wandler.
Ich habe das vor Jahren mal aufgebaut, und dann mit einem geeichten
Kalibrator überprüft. Die Schaltung war erstaunlich genau. Nur in den
unteren und oberen ca. 5% des Messbereichs waren die Meßwerte nicht
linear.
Da dieser A/D-Wandler hauptsächlich aus Software besteht, bist du nicht
an die 6- oder 8-Bit Auflösung gebunden. Für höhere Auflösungen dauern
die Messungen nur länger.
Schau es dir, bei Interesse, einfach mal an.
Gruß. Tom
TomA schrieb:> Da dieser A/D-Wandler hauptsächlich aus Software besteht, bist du nicht> an die 6- oder 8-Bit Auflösung gebunden. Für höhere Auflösungen dauern> die Messungen nur länger.
Ich glaube er möchte einen DAC und keinen ADC, auch wenn er oben beides
vermischt.
Hallo Christoph,
danke für den Hinweis, ich dachte Hannes sucht einen ADC.
Für einen DAC ist es ja noch einfacher: Ein R2R-Netzwerk mit 12
Eingängen und nachgeschalteten Impedanzwandler (OP) sollte genügen!
Gruß. Tom
Hallo Tom,
ist nicht so schlimm, denn Hannes will ja seriellen Anschluß.
Also zwei 8Bit-Schieberegister mit einer stabilen Versorgung als
Referenz mit 1%igen Widerständen reichen dafür sicher und kosten nicht
die Welt.
Mit Versorgung 4,096V am Schieberegister, bei 12Bit-Auflösung, ergibt
sich eine Schrittweite von 1mV - das ist noch gut handhabbar. Kleinere
Ausgangsspannungen kann er durch Spannungsteiler herunterteilen, was
gleichzeitig den Rauschanteil heruntersetzt.
Gruß. Tom :)
TomA schrieb:> Also zwei 8Bit-Schieberegister mit einer stabilen Versorgung als> Referenz mit 1%igen Widerständen reichen dafür sicher und kosten nicht> die Welt.
1% ergibt nur knapp 7Bit.
Für 12Bit brauchst Du 0,02% Widerstände, die Fehler der Schaltstufen
nicht mit eingerechnet. Das wird teuer.
Hannes schrieb:> ich war auf der Suche nach einem "günstigen" DAC mit seriellem Interface> und min. 12Bit Auflösung.Hannes schrieb:> Einen zwei Kanal 8 Bit DAC hätte ich im µC.Peter Dannegger schrieb:> Dann bietet sich doch eine PWM mit RC-Filter geradezu an.
Man kann auch einen n-Bit-DAC mit einer m-Bit-Software-PWM kombinieren,
indem man den DAC periodisch mit einem durch die m Bits vorgegebenen
Tastverhältnis zwischen zwei benachbarten Analogwerten hin und her
schaltet. Durch dieses Konstrukt wird ein n+m-Bit-DAC nachgebildet. Die
Monotonie ist dabei garantiert.
Das setzt natürlich voraus, dass man einen schnellen Zugriff auf den
Hardware-DAC hat, was aber bei im µC integrierten DACs meist der Fall
ist.
Da die Amplitude des auf diese Weise generierten PWM-Signals nur 1/2**n
der Amplitude eines reinen (bspw. mittels einer Hardware-PWM-Einheit
generierten) PWM-Signals beträgt, ist die Restwelligkeit bei gleicher
PWM-Frequenz und gleicher Zeitkonstante des nachgeschalteten
Tiefpassfilters ebenfalls um den Faktor 2**n niedriger. Um mit einer
reinen PWM die gleiche Restwelligkeit zu erhalten, muss die deren
Frequenz um den Faktor 2**n höher liegen.
Beispiel:
Ein µC habe einen Prozessor- und I/O-Takt von f0=16777216Hz (2**24). Es
soll damit auf zweierlei Weise ein 12-Bit-DAC realisiert werden.
Alternative 1:
Man lässt einen mit f0 getakteten 12-Bit-Zähler/Timer ein reines
PWM-Signal generieren. Dieses hat den Spitze-Spitze-Wert û = VCC und die
Frequenz f = f0 / 4096 = 4096Hz.
Alternative 2:
Man benutzt einen 8-Bit-Hardware-DAC und generiert damit wie oben
beschrieben softwaremäßig ein PWM-Signal mit dem Spitze-Spitze-Wert û =
VCC/256 und der Frequenz f = 256Hz. Das Tastverhältnis wird dabei in 16
Stufen variiert, so dass der kürzeste zu erzeugende Impuls eine Länge
von 1s/(256·16) hat, was 4096 Taktzyklen von f0 entspricht und somit
kein Rechenzeitproblem darstellen sollte.
In beiden Fällen ist die Restwelligkeit r = û·p·(1-p)/(f·τ), wobei p das
Tastverhältnis und τ die Zeitkonstante des Tiefpassfilters ist. Setzt
man für beide Alternativen die Werte û und f ein, stellt man fest, dass
r in Alternative 2 (der Kombination aus DAC und Software-PWM) um den
Faktor 16 geringer ist.
Wenn der Controller sonst nicht viel zu rechnen hat, kann man die
Software-PWM-Frequenz noch um den Faktor 16 erhöhen und damit die
Restwelligkeit nochmals um den Faktor 16 verbessern. Oder man lässt die
PWM-Frequenz bei 256Hz und variiert das Tastverhältnis in 256 stat nur
16 Stufen. Das Ergebnis ist ein 16-Bit-DAC, dessen Restwelligkeit immer
noch um den Faktor 16 besser als die der reinen 12-Bit-PWM-Lösung ist.
Die Erweiterung der Auflösung eines Hardware-DACs mittels Software-PWM
ist also durchaus eine überlegenswerte Alternative zu einem reinen
PWM-DAC.
Einige µCs haben einen 12 Bit ADC. Man könnte die beiden 8 Bit DACs zu
so zusammenaddieren, das man etwa 14 Bit Auflösung, aber mit saumäßigen
Fehlern bekommt. Den passenden Wert könnt man durch nach messen mit dem
ADC suchen durch annähern. Voraussetzung wäre aber das die 8 Bit DACs
auch eine genügend geringes Rauschen haben. Das ist allerdings bei den
µC internen eher nicht der Fall. Entsprechend wären die DACs dann auch
nicht zur Erweiterung per PWM geeignet.
Es gib auch einigermaßen erschwingliche 12 BIT DACs, wenn auch mit nicht
so guter Genauigkeit. Etwa MCP4921. ggf. müsste man auch da den ADC zum
nachmessen bemühen.
Zum zusätzlichen Filtern des PWM Signals läßt sich auch eine S&H Stufe
(CMOS Schalter + Kondensator + Pufferverstärker reicht aus) nutzen, die
Synchron mit dem PWM Signal abtastet. Das wird zwar etwas nichtlinear,
aber dafür ist die Rippelunterdrückung sehr gut. Wenn man beim PWM
Signal eine etwas längere Periode vorsieht und erst im festen Teil
abtastet, hält sich auch der Fehler in Grenzen.
Mein Gott, die Idee, aus zwei billigen 8 Bit DACs ein tollen 10 oder 12
Bit DAC zu machen ist so alt wie unbrauchbar. Es gibt ECHTE 10-16 Bit
DACs für verdammt wenig Geld, die WIRKLICH das leisten, was der Name
verspricht. Problem gelöst. Wir leben nicht mehr in den 70ern, wo jeder
Transistor ein Heidengeld gekostet hat und möglichst dreifach genutzt
werden musste. 95 der hier genannten Selbstbaulösungen sind größer,
stromhungiger, TEURER und schlechter als ein gescheiter IC vom Profi.
Klingt komisch, ist aber so.
Es kommt auf die Anwendung an, was man vom DAC verlangt. Die Auflösung
ist da nur ein Parameter. Je nach Typ unterscheiden sich die DACs noch
recht deutlich in den Eigenschaften:
Die dynamischen Typen im µC oder einig Audio Wandler haben z.B. realtiv
viel Rauschen, so bis in die Größenordnung 1 LSB. Dazu kommt ggf. noch
eine merklich Drift beim Skalenfaktor bei Audio Wandlern. Für so etwas
wie die Einstellung der Spannung am Netzgerät ist so etwas eher
unbrauchbar, zumindest ohne extra Filter.