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
Beitrag #5357267 wurde von einem Moderator gelöscht.
ps nochmal zur klarstellung. die frage ist: funktioniert der ADC (korrekt) wenn AREF 5 mV über AVCC und VCC liegt?
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_analogReadXXbit http://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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.