meine DAC Routine bekommt nun einen Wert zwischen 0 ... 4095 [mV]
hier die Berechnung:
1
/*
2
CODE = Soll_Spannung * 0x1000 /(2 * REF)
3
*/
4
u32_dac_code=(u32)(u32_Reference*u16_output_b);
5
u16_dac_code=(u16)(u32_dac_code>>19);
Wenn ich nun aber SOLL mit IST mit einem Multimeter prüfe kommt
folgendes heraus:
SOLL --> IST
Uref=2.048 2.057
1.000 1.083
2.000 2.054
3.000 3.030
4.000 4.012
4.095 (max) 4.106
Wie man sieht ist die Abweichung nicht konstant, sie sinkt mit
steigender Soll-Spannung.
Was bedeutet das nun?
Ist meine DAC Routine falsch oder liegt der Fehler im DAC selbst?
Danke für die Tipps!
Viele Gruesse
Oder an der Analogik. Ein Offsetspannung wuerde das auch bewirken. Oder
ein nicht anz passender GND. Wenn man Strom ueber einen
unterdimensionierten GND fliessen laesst, so resultiert eine
Offsetspannung
Ohh wrote:
> Oder an der Analogik. Ein Offsetspannung wuerde das auch bewirken. Oder> ein nicht anz passender GND. Wenn man Strom ueber einen> unterdimensionierten GND fliessen laesst, so resultiert eine> Offsetspannung
Der Offset müsste aber dann über den gesamten Soll-Ist Bereich konstant
sein, oder? In meinem Fall ist der Fehler ja eher linear.. obwohl im
Datenblatt die Rede von "nicht linearem" Fehler ist.
Es fehlt eine Kalibrierung. Pack mal dein Messwerte in Excel und mach
ein Diagramm draus. Dort wirst du einen Offset- und Verstärkungsfehler
sehen.
MFG
Falk
Falk Brunner wrote:
> Es fehlt eine Kalibrierung. Pack mal dein Messwerte in Excel und mach> ein Diagramm draus. Dort wirst du einen Offset- und Verstärkungsfehler> sehen.>> MFG> Falk
Hallo Falk,
ich hab jetzt einfach mal die Soll-Ist Abweichung in Excel grafisch
dargestellt. Hier zu zu erkennen, dass es sich doch um einen sehr
linearen Verlauf handelt.
gruesse
VREF (2.048 V nom) kann laut Datenblatt zw. 2.027 V und 2.069 V liegen
(bei VDD = 4.75 V)
Code = 1000 -> 0.99 V < Vout < 1.01 V
Code = 2000 -> 1.98 V < Vout < 2.02 V
Code = 4000 -> 3.96 V < Vout < 4.04 V
Code = 4095 -> 4.053 V < Vout < 4.137 V
wären also alleine aufgrund der internen "Referenz" möglich.
Hinzu kommen noch bis zu +-24 mV Offsetfehler und +-0.6 % Gainfehler
(ohne Drift).
D.h. zu den 4.053 V - 4.137 V können noch mal bis zu etwa +-25 mV
hinzukommen. Dann die Linearitätsfehler von maximal 6 mV (6 LSB bei
4.096 V VREF). Sowie die lastabhängigen Fehler (DB S. 7 und 8).
Dazu noch die oben schon genannten Fehler...
Falk Brunner wrote:
> Es fehlt eine Kalibrierung. Pack mal dein Messwerte in Excel und mach> ein Diagramm draus. Dort wirst du einen Offset- und Verstärkungsfehler> sehen.
Du meinst, wenn ich die Werte berechne könnte ich die Ausgabefehler
kompensieren?
Der Verstärkungsfaktor des Fehlers ist etwa -0,029.
Und der Offset bei maximaler Aussteuerung etwa 0,011 V.
Was mich aber etwas wundert ist folgendes:
Ich habe zur Steuerung des Analogausgangs eine digital Anzeige mit 3
Nachkommastellen. Wenn ich das letzte digit nun um 1 nach oben oder
unten setze geht die Spannung, die ich mit dem Multimeter messe "analog"
mit. Also eine veränderung an der 3 nachkommastelle erzeugt auch eine
veränderung der 3 nachkommastelle des Messwertes am Multimeter.
(zumindest im oberen Aussteuerbereich)
Ah... ok... ich verwechsle hier wohl gerade Genauigkeit (12 Bit) mit
kontinuierlichem Fehler. D.h. also, dass der DAC wohl funktioniert und
tatsächlich die 12 Bit analog richtig umsetzt, aber der analogausgang
als solcher nicht exakt die gewünschte spannung darstellen / wiedergeben
kann.
Durch welche Schaltungstechnischen Massnahmen könnte ich diesen
Ausgabefehler kompensieren?
- Als ein Punkt wurde ja schon die "saubere Masse" genannt.
- Aber wie ich auch schon erwähnt wurde, kann der DAC die Genauigkeit
nicht voll gewährleisten.. angegebene Messfehler.
Gruss
@ Sebastian B. (mircobolle)
>Du meinst, wenn ich die Werte berechne könnte ich die Ausgabefehler>kompensieren?
Ja.
>Durch welche Schaltungstechnischen Massnahmen könnte ich diesen>Ausgabefehler kompensieren?>- Als ein Punkt wurde ja schon die "saubere Masse" genannt.
Naja, nicht allein. Man muss am OPV den Offset kompensieren, per Poti.
>- Aber wie ich auch schon erwähnt wurde, kann der DAC die Genauigkeit>nicht voll gewährleisten.. angegebene Messfehler.
Kein DAC ist perfekt. Siehe Auflösung und Genauigkeit.
MFg
Falk
Guten morgen,
Falk Brunner wrote:
>>Du meinst, wenn ich die Werte berechne könnte ich die Ausgabefehler>>kompensieren?> Ja.
Da ich meine Umrechnungsfunktion schon so "optimiert" habe, dass ich
vollständig bei der Wandlung auf eine Division verzichten, würde eine
rechnerische Fehlerkompensierung diesen Vorteil wieder zu nicht
machen...
>>Durch welche Schaltungstechnischen Massnahmen könnte ich diesen>>Ausgabefehler kompensieren?>>- Als ein Punkt wurde ja schon die "saubere Masse" genannt.> Naja, nicht allein. Man muss am OPV den Offset kompensieren, per Poti.
Eine anloge lineare Kompensation mit Poti ist vermutlich die einfachste
und beste Lösung.
Eine andere Idee zur Kalibrierung wäre gewesen, dass man die
Referenzspannung per Multimeter misst und dann per Display die neue
Referenzspannung eingibt.
> Kein DAC ist perfekt. Siehe Auflösung und Genauigkeit.
Netter Beitrag. Danke für den Hinweis.
viele gruesse
gerade ist mir noch folgende Idee gekommen.
Mein DAC Wandler besitzt einen Pin an dem die interne Referenzspannung
ausgegeben wird. Diesen Pin könnte ich doch mit einem freien
Analogeingang verbinden und dann zu Beginn des System eine
"Nachkalibrierung" durchführen?
Sebastian B. wrote:
> gerade ist mir noch folgende Idee gekommen.>> Mein DAC Wandler besitzt einen Pin an dem die interne Referenzspannung> ausgegeben wird. Diesen Pin könnte ich doch mit einem freien> Analogeingang verbinden und dann zu Beginn des System eine> "Nachkalibrierung" durchführen?
Njet.
Ist ungefähr so als ob Du einen ungenauen 2m Meterstab aka Zollstock
hast (von dem Du bereits weist das er ungenau ist).
Und den neben eine mit eben jemen Zollstock abgemessene Strecke von 1m
legst. Und dann meinst das Du da irgendwas an Nachkalibrierung hast.
Klaro?
Kalibrierung heißt letztlich immer das man etwas von dem weiß das es
deutlich genauer ist als das zu kalibrierende System mit eben jenem
System vergleicht.
hth,
Andrew
Andrew Taylor wrote:
> Ist ungefähr so als ob Du einen ungenauen 2m Meterstab aka Zollstock> hast (von dem Du bereits weist das er ungenau ist).>> Und den neben eine mit eben jemen Zollstock abgemessene Strecke von 1m> legst. Und dann meinst das Du da irgendwas an Nachkalibrierung hast.>> Klaro?
Mhm. Ja, da hast du natürlich recht, wenn ich meine "ungenaue"
Referenzspannung mit meinem auch nicht 100 % genauen ADC messe dann habe
ich ja so etwas wie Fehlerfortpflanzung und keine Kompensierung.
Mein Hintergedanke war einfach, dass ich dachte, dass die intern
erzeugte Referenzspannung von 2.048 V relativ "großen" Schwankungen
durch Temperatur etc. unterworfen ist. Deshalb dachte ich, dass evtl.
Vorteile bringt diese ungenaue aber stabile Referenzspannung in meiner
internen Routine abzugleichen (siehe ersten Beitrag).
Evtl. nehm ich einfach eine stabile möglichst genaue exteren
Referenzspannung ... aber auch da kann man sich nicht 100pro sicher
sein.
100pro vielleicht nicht, aber auf 0.01% genau ist schon billig kaufbar.
Diese Referenz nimmst du dann, läßt sie "gelegentlich2 per
Kalibrierroutine drüberlaufen und bist schon deutlich besser dran.
Und wie ich Falk seit Jahren kenne, wird er Dir noch eine paar weitere
Tips geben können, wie man so einen Zyklus sauber durchzieht.
hth,
Andrew
Andrew Taylor wrote:
> 100pro vielleicht nicht, aber auf 0.01% genau ist schon billig kaufbar.> Diese Referenz nimmst du dann, läßt sie "gelegentlich2 per> Kalibrierroutine drüberlaufen und bist schon deutlich besser dran.>> Und wie ich Falk seit Jahren kenne, wird er Dir noch eine paar weitere> Tips geben können, wie man so einen Zyklus sauber durchzieht.>>> hth,> Andrew
Hallo Andrew,
Danke für den Tipp!
Also möglichst genaue externe Referenzspannung an den DAC (12 Bit). Dann
diese Referenzspannung "gelegentlich" messen per ADC (12 Bit) und DAC
intern abgleichen. Richtig zusammen gefasst?
Aber der ADC (also mein Messmittel zur Kalibrierung) ist ja genauso
diesem "Referenz-Jitter" unterworfen?
Ah, oder meinst du?
ADC misst die Referenzspannung (z.b. 5 V).. weiss, dass diese
Referenzspannung "exakt" 5.000 V beträgt und gleicht dann intern den
Offset ab, falls 5.002 V z.B. gemessen werden?
Ansonsten müsste ich ja "blind" abgleichen ?
thx
Sebastian B. wrote:
> Hallo Andrew,>> Danke für den Tipp!> Also möglichst genaue externe Referenzspannung an den DAC (12 Bit). Dann> diese Referenzspannung "gelegentlich" messen per ADC (12 Bit) und DAC> intern abgleichen. Richtig zusammen gefasst?>> Aber der ADC (also mein Messmittel zur Kalibrierung) ist ja genauso> diesem "Referenz-Jitter" unterworfen?
Dein ADC ist der Alterung ,etc unterworfen, soweit korrekt.
>> Ah, oder meinst du?> ADC misst die Referenzspannung (z.b. 5 V).. weiss, dass diese> Referenzspannung "exakt" 5.000 V beträgt und gleicht dann intern den> Offset ab, falls 5.002 V z.B. gemessen werden?
Dein ADC weiß dank Deiner schlauen Programmierung das die Referenz z.b.
4.976 Volt ist.
Du sagst ihm das weil Du mit einem sehr genauen Voltmeter Deine Referenz
einmal vermessen hast (Voltmeter ggfs. leihen) und dank des
Herstellerdatenblattes weißt Du das diese gekaufte Referenz wenige
Millionstel per Jahr und Grad Celsius sich ändert. Also aus Deiner Sicht
wesentlich stabiler ist als Dein ADC.
Diese Wissen teilst Du dem ADC mit weil Du in Deinem Programm die
(ggfs.) 4,976 als Konstante namens z.B. REF_KONST hinterlegst.
>> Ansonsten müsste ich ja "blind" abgleichen ?
Nun, das wäre ja nun gar nix Gutes.
Statt blind mußt Du zumindest "einäugig" werden, indem Du WEISST wie
hoch Deine Referenzspannung ist. Das erledist Du wie obne beschrieben
z.B. durch Messung mit dem Leihgerät. Alternativ kaufst Du gegen etwas
mehr Geld eine genügend genaue Referenzspannungsquelle z.B. Ref-02, ,
und glaubst dem Herstellrdatenblatt.
Wichtig ist halt das Du eine bekannte verläßliche Spannungsgröße hast -
entweder durch Messung per genauem DVM oder durch Kauf - die genauer ist
als Dein ADC.
>> thx
bye,
Andrew
Naja, der Begriff Kalibrierung wurde ja schon erklärt, aber evtl. nicht
richtig. Du kannst sehr wohl die Ref des DACs mit dem ADC der MCU
ausmessen und so eine "Kalibrierng" machen. Eben einen Maßstab benutzen
um was auszumessen. Somit hast du dein System nach dem Maßstab ADC+ARef
der MCU kalibriert, und welchen Maßstab man anlegt ist für das System
eine Definitionsfrage. Das ist immer eine Relativ-Kalibrierung. Über die
wahre Genauigkeit, absolut betrachtet, entscheidet dann die Qualität der
internen ARef der MCU. Die muß aber uU. garnicht so genau sein, nämlich
dann wenn man relativ gesehen nur innerhalb des Systemes ADC+ARef der
MCU im Vergleich zu DAC+Ref arbeitet. Dann zählt nur die Frage welche
der beiden Refs genauer und stabiler ist. Sollte es die vom DAC sein,
dann ist diese "Kalibrierung" aber ebenfalls fast sinnlos, es sei denn
man möchte nur die realtiven Meßunterschiede innerhalb dieses Systemes
beseitigen. Letzendlich heist dies aber das man mit einer Pi*Daumen ARef
der MCU eine präzisere Ref des DAC kompensiert. Kalibrierung kann man
auch durchführen mit einem Maßstab der ungenauer ist, aber um eine
höhere absolute Genuigkeit zu erreichen ist das natürlich sinnlos. Wenn
man eine Kalibrierung betrachtet dann muß man immer fragen welchen
Maßstab man bei dieser Kalibrierung benutzte.
Eine Eichung dagegen gibt exakt Auskunft mit welchen Maßstäben man
arbeitet, nämlich den gesetzlich anerkannten des Eichamtes.
Gruß Hagen