Forum: Mikrocontroller und Digitale Elektronik ADC-Referenzspannung dithern


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

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

von Dergute W. (derguteweka)


Lesenswert?

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

Beitrag #5357267 wurde von einem Moderator gelöscht.
von Christian (Gast)


Lesenswert?

ps nochmal zur klarstellung. die frage ist: funktioniert der ADC 
(korrekt) wenn AREF 5 mV über AVCC und VCC liegt?

von Harlekin (Gast)


Lesenswert?

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.

von Christian (Gast)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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?

von Pandur S. (jetztnicht)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

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?

von Christian (Gast)


Lesenswert?

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?

von Christian K. (1337_pl)


Lesenswert?

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

von Spannungsteiler (Gast)


Lesenswert?

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_analogReadXXbit

http://shelvin.de/die-aufloesung-des-adc-vom-arduino-uno-erhoehen-auf-16-bit/

Viel Erfolg!

von m.n. (Gast)


Lesenswert?

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 ;-)

von Johnny B. (johnnyb)


Lesenswert?

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.

von Harlekin (Gast)


Lesenswert?

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

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.