Hallo liebe leute,
vielleicht hat jemand eine pfiffige idee für mein problem.
und zwar möchte ich mit dem ADC eines ATmega88pa eine spannung messen
und das möglichst genau und fehlerminimiert.
also offset- gain- korrektur und oversampling + decimation.
ich verweise hier auf die Aplication notes AVR121 und AVR120 für die
jenigen die es noch nicht wissen.
nun zu dem problem: und zwar möchte ich wie im schaltbild gezeigt
mittels des einen counters ein rechtecksignal auf den AREF so
einspeisen, dass ich das signal dreickförmig verrausche(dithering). so
weit so gut. das problem ist nun, dass ich dadurch am AREF pin
spannungen bis 5,005V habe. bei AVCC und VCC von genau 5V. wird das
verrasuchen über 5V einen effekt haben also funktionieren? achso und die
spannungsteiler welche das zu digitalisierende signal erzeugen müssen
mit der selben spannung gespeist werden wie im mittel AREF sieht, nur so
kürzen sich die spannungen in der rechnung raus.
also die idee wäre nun einen zweiten linearregler zu nehmen und 5,1V an
VCC und AVCC zu geben um AREF bei im mittel von 5V verrauschen zu
können. gibt es einen pfiffigeren weg um die zwei linearregler zu
umgehen?
ich hoffe man kann das verstehen :D
danke für jeden rat
Moin,
Ueberlager' doch deine zu messende Spannung mit dem Dr(ei)eck.
Variationen an der AREF werden wohl kaum irgendwo vom Datenblatt her
definiert sein.
Und erwarte dir keine Wunder von so'm Zeugs.
Gruss
WK
Christian schrieb:> spannungsteiler welche das zu digitalisierende signal erzeugen müssen> mit der selben spannung gespeist werden wie im mittel AREF sieht, nur so> kürzen sich die spannungen in der rechnung raus.
Genau deshalb ist ein zweiter Spannungsregler nicht zu empfehlen. Dann
wäre der Beitrag von PB0 nicht mehr proportional zur Referenzspannung.
Die Verfälschung von Vref müsste nach meiner Ansicht {0, 1/2} Bit
(oversampling 2) oder {0, 1/4, 2/4, 3/4} Bit (oversampling=4) und
synchron mit der AD-Wandlung sein.
Christian schrieb:> AREF pin> spannungen bis 5,005V habe. bei AVCC und VCC von genau 5V. wird das> verrauschen über 5V einen effekt haben also funktionieren?
Derart geringe Spannungsüberhöhungen werden die Funktion nicht stören.
Ab 0.3V wird es kritisch.
Vielleicht kann man mit Dithering die Auflösung erhöhen. Aber die
absolute Genauigkeit lässt sich nicht über +-2LSB steigern. Somit würde
ich den Einsatz eines genaueren AD-Wandlers in Betracht ziehen.
Harlekin schrieb:> Genau deshalb ist ein zweiter Spannungsregler nicht zu empfehlen. Dann> wäre der Beitrag von PB0 nicht mehr proportional zur Referenzspannung.
ich verstehe nicht was du mit proportional meinst?! wenn VCC ca. 10mV
größer wäre dann wäre auch die PWM an PB0 etwas größer. ich habe da aber
eh nichtgenau 5V da der Controller ja nicht ganz diesen wert erreicht.
das macht aber nichts. wegen dem Blockkondensator bekomme ich keinen
offset sondern nur die AC-anteile beim Umladen
ich hab mir jetzt überlegt einfach noch einen ganz kleinen vorwiderstand
von 30 ohm über R1 zu setzen um so AVCC und VCC mit 5 V zu speisen und
AREF mit ca 10mV weniger + ripple. dadurch bekomme ich zwar auch das
Ripple auf den zu digitalisierenden spannugnsteiler aber das wirkt sich
nur im 0,01mV bereich aus also sollte kein problem sein.
das mit der verfälschung ist in dem AN AVR121 beschrieben soll ideal
2LSB p-p betragen und aufkeinenfall soll die sampling frequenz mit der
ditherfrequenz korrelieren... ist auch dort erklärt
Harlekin schrieb:> Vielleicht kann man mit Dithering die Auflösung erhöhen. Aber die> absolute Genauigkeit lässt sich nicht über +-2LSB steigern. Somit würde> ich den Einsatz eines genaueren AD-Wandlers in Betracht ziehen
warum nicht?
offset lässt sich korrigieren, gain auch, nicht-linearität ist aufwendig
und macht laut atmel eh nur 0,5lsb aus, dann kommt noch rundungsfehler
während der rechnung den man aber auch auf 0,5LSB reduzieren kann und
der tritt dann aber auch nur bei den größeren zahlen auf,
"nachkommastellen" die irrelevant sind. und der quantisierungsfehler
wird ja durch das oversampling auf 0,xxx reduziert. also sollte das doch
im schlimsten fall nur diese 0,5LSB nichtlinearität ausmachen? oder sehe
ich das mit der genauigkeit falsch?
Was Spricht denn dagegen, die Aufloesung nur durch Oversampling zu
erhoehen ? Die Absolute Genauigkeit wird nicht besser wie der Controller
kann. zB ist die Referenz nicht der Hammer.
Ich hab zB mit 256 Samples ge-averaged 13bit erhalten. Stabile 13 bit.
Christian schrieb:> ps nochmal zur klarstellung. die frage ist: funktioniert der ADC> (korrekt) wenn AREF 5 mV über AVCC und VCC liegt?
Ja. Nur taugt das nicht für das Dithering.
Dithering setzt voraus, daß auf dem Meßsignal ein Rauschsignal liegt,
das wenigstens 1 LSB Amplitude hat. Das heißt daß die Meßwerte vor der
Dezimation um wenigstens +/- 1 um den wahren Wert schwanken. Wenn du mit
1 LSB an der Referenz wackelst, hat das nicht den gleichen Effekt.
Einfaches Beispiel: Vref=5V, LSB=5mV. Eingangsspannung 200mV.
Jetzt rechne einfach mal aus, welchen Wert der ADC liefert mit Vref=5V
und Vin=195mV/205mV. Und dann nochmal fur Vref=4.995V/5.005V und
Vin=200mV. Merkst du was?
Axel S. schrieb:> Christian schrieb:>> ps nochmal zur klarstellung. die frage ist: funktioniert der ADC>> (korrekt) wenn AREF 5 mV über AVCC und VCC liegt?>> Ja. Nur taugt das nicht für das Dithering.>> Dithering setzt voraus, daß auf dem Meßsignal ein Rauschsignal liegt,> das wenigstens 1 LSB Amplitude hat. Das heißt daß die Meßwerte vor der> Dezimation um wenigstens +/- 1 um den wahren Wert schwanken. Wenn du mit> 1 LSB an der Referenz wackelst, hat das nicht den gleichen Effekt.>> Einfaches Beispiel: Vref=5V, LSB=5mV. Eingangsspannung 200mV.>> Jetzt rechne einfach mal aus, welchen Wert der ADC liefert mit Vref=5V> und Vin=195mV/205mV. Und dann nochmal fur Vref=4.995V/5.005V und> Vin=200mV. Merkst du was?
danke für den hinweis. das hab ich garnicht bedacht. in der AN AVR121
wird das aber genau so empfohlen... wieso haben die so einen quatsch
geschrieben? ich hab mich aber auch schon gewundert, weil dort die
schaltung zum verrauschen nicht so funktioniert wie die es beschreiben
deswegen habe ich einen anderen aufbau gewählt.
außerdem - ich weis nicht ob dir das aufgefallen ist - wirkt sich das
rauschen auf AREF stärker aus je größer die zu messende spannung ist.
z.b. sind die digitalwerte bei eingangspannung:
4V und Vref=4.995V/5.005V => 818 und 820
1V und Vref=4.95V/5.05V => 207 und 203
4V und Vref=4.95V/5.05V => 827 und 811
wenn ich eh keine kleinen eingangsspannungen messen will und das
rauschen auf AREF auf 50mV erhöhe dann sollte es doch gehen oder?
habe gerade herausgefunden das bei extern gewählter VREF der widerstand
intern zwischen AREF und GND 50kOhm typ beträgt das ist im datenblatt
der Referenz input resistance. in meinem controller 37kohm und 22kohm
bei wechseln der polarität des multimeters. somit ist die ganze idee mit
AREF dithern fur mich absolut unbrauchbar, da man auf diese weise beim
verwenden von AREF fur die erzeugung des zu messenden signals zwar in
der rechnung die spannung wegkürzt jedoch dort auch das rauschen anliegt
und somit effektiv kein rauschen beim messen vorhanden ist. so ein
dreck. muss dann wohl doch das signal verrauschen
Hi Christian,
verliere deine Experimentierfreude an der Oversamplinglösung nicht!
Ich habe viel mit dieser Methode herumgespielt und sehr, sehr
gute praktische Resultate erzielt!(14 und 15 Bit Auflösung aus 10Bit
ADC)
Vor allem, Oversampling setze ich bei vielen Messungen ein, wo es nicht
auf eine schnelle Dynamische Anzeige ankommt.
Die Messwerte müssen über ein kleines Widerstandsnetzwerk herankommen
um das Rauschen aufrechtzuerhalten. Aus Zeitmangel, leider, kann
ich wenig berichten, hier sind aber noch Grundlagen-Praxiswissen
zu deinem Vorhaben;
https://github.com/ElectricRCAircraftGuy/eRCaGuy_analogReadXXbithttp://shelvin.de/die-aufloesung-des-adc-vom-arduino-uno-erhoehen-auf-16-bit/
Viel Erfolg!
Spannungsteiler schrieb:> Ich habe viel mit dieser Methode herumgespielt und sehr, sehr> gute praktische Resultate erzielt!(14 und 15 Bit Auflösung aus 10Bit> ADC)
Und was haben Dir diesen vielen Bits gebracht?
Sicherlich einen Genuß für die Augen, aber beim Vergleich mit einem
hochauflösendem ADC wäre Dir die nach wie vor fehlende Linearität
aufgefallen, bzw. hätte auffallen müssen.
Das steht auch in der AVR121, wird aber immer wieder gerne ignoriert.
Anders herum hätte man keine Probleme: man nimmt einen 16 Bit ADC und
verwendet z.B. 12 Bit. Das geht bestens, ist aber natürlich nicht so
cool ;-)
m.n. schrieb:> Spannungsteiler schrieb:>> Ich habe viel mit dieser Methode herumgespielt und sehr, sehr>> gute praktische Resultate erzielt!(14 und 15 Bit Auflösung aus 10Bit>> ADC)>> Und was haben Dir diesen vielen Bits gebracht?> Sicherlich einen Genuß für die Augen, aber beim Vergleich mit einem> hochauflösendem ADC wäre Dir die nach wie vor fehlende Linearität> aufgefallen, bzw. hätte auffallen müssen.> Das steht auch in der AVR121, wird aber immer wieder gerne ignoriert.>> Anders herum hätte man keine Probleme: man nimmt einen 16 Bit ADC und> verwendet z.B. 12 Bit. Das geht bestens, ist aber natürlich nicht so> cool ;-)
...schenkt aber kostenmässig für Produkte in grossen Stückzahlen
gewaltig ein.
Christian K. schrieb:> in meinem controller 37kohm und 22kohm> bei wechseln der polarität des multimeters
Für eine korrekte Messung muss der uC an Betriebsspannung liegen.
Vorgehen:
VCC -- R50k ---+---- (Vref) --- Rin --- GND
|
Voltmeter
|
GND
VCC -----------+---- (Vref) --- Rin --- GND
|
Voltmeter
|
GND