Hi, Ist es möglich, den Messbereich einer Spannungsmessung nach der Messung via Software zu erweitern? Ziel wäre es, die untersten Bits des ADC-Wandlers auch zu nutzen? Ich meine folgendes: ADC: 10bit - 2^10 = 1014 Zu messende Höchstspannung: 5V 5V / 1024 bit = 0,0048828125 V / bit = 4,8828125 mV / bit Gewünscht wäre es aber 488,28125mV statt 4,8828125 mV. Ist es möglich, via Software die Auflösung zu verbessern, indem man Bitverschiebung und dann welche Filterung (LP / PT1) verwendet? Hat jemand vlt. bessere Idee?
:
Verschoben durch User
Irgendwie passt da was nicht zusammen... Der Messbereich wird nicht erweitert, da maximal 5V gemessen werden sollen und ~488 mV statt ~4.88 mV erweitert den Bereich auch nicht und verschlechtert die Auflösung... Sind da vielleicht ~488 uV statt 4.88 mV gemeint? Falls ja: Geht theoretisch und praktisch, wenn das Eingangssignal genügend rauscht (oder Rauschen hinzugefügt wird (Dithering)). http://www.atmel.com/images/doc8003.pdf
Arc N. schrieb: > Irgendwie passt da was nicht zusammen... Sehe ich auch so, Vili. Beschreibe an einem Beispiel, wo Dein Problem ist. Sagen wir, Dein AD-Wandler spuckt adWert=205 aus, was etwa 1.0V = 1000mV entspricht. Geht es Dir um Die Umrechnung im µC in Ganzzahl? Die ist für U in mV: Umv=(adWert*5000)/1024 (bei uint32) Wenn Du in 16-Bit bleiben willst, dann kannst Du 5000/1024 entsprechend kürzen, z.B. mit Umv=adWert*200/41 (wenn adWert < 300) Umv=(adWErt*50/41)*4 (wenn >= 300) Das kannst Du natürlich noch beliebig "optimieren", doch macht man das eigentlich nicht - man lässt den Compiler die 32-Bit-Rechnungen erledigen - oder verwendet gleich float/double - UND macht zum Zwecke der Kalibrierreserven 0..5V = 0...1000LSB was die Rechnung auf "*5" reduziert.
Arc N. schrieb: > Irgendwie passt da was nicht zusammen... Ja.. die Frage habe ich doof gestellt. Danke für den Link, der hat mir mal weiter geholfen. Achim S. schrieb: > Beschreibe an einem Beispiel, wo Dein Problem ist zu messende Spannung: 5V Input Signal: 2500 mV ADC in Differential-Modus Auflösung, mit der die gemessene Spannung bereitgestellt werden muss: 1LSB= 0,000244140625mV -> 0,244140625uV Faktor: 244140625 Offset: 1000000000 (1 000 000 000) 2^16 = 65.536 -> 5000mV / 65536 bit = 0,0762939453125 mV/bit -> 76,2939453125 uV -> 76uV 2^17 = 131.072 -> 5000mV / 131072 bit = 0,03814697265625mV/bit -> 38,146,97265625 uV -> 38uV 2^18 = 262.144 -> 5000mV / 262144 bit = 0,019073486328125mV/bit -> 19,073486328125 uV -> 19uV Theorie: f_oversampling = 4^n * f_nuyquiest sf = 2^n Rohrwert: gemessen mit 16 Bit Auflösung 2500 / 5000 * 65536 = 32768 (Rohrwert / Registerwert) Verbesserung der Auflösung um 1 Bit: ------------------------------------ Extra samples : 4 n = 1 Extra samples : 32.764 + 32.769 + 32.768 + 32.766 = 131.067 Verschiebung um 1 : 131.067 >>= 1 -->> 65533 Rückrechnung: 17 Bit : 2500 / 5000 * 65.533 = 32.767 Verbesserung der Auflösung um 2 Bit: ------------------------------------ Extra samples : 6 n = 2 Extra samples : 4 * (32.764 + 32.769 + 32.768 + 32.766) = 131.066 Verschiebung um 1 : 8008 >>= 4 -->> 16383 Rückrechnung: 18 Bit : 2500 / 5000 * 262144 = 131.072 RegVal = x * Faktor / Offset x - Spannung in mV Ergebnis bei 16 Bit: -------------------- RegVal = 32768 * 244140625 / 1000000000 = 8.000 Ergebnis bei 17 Bit: -------------------- RegVal = 65533 * 244140625 / 1000000000 = 16.000 Ergebnis bei 18 Bit: -------------------- RegVal = 16383 * 244140625 / 1000000000 = 32.000 Achim S. schrieb: > Geht es Dir um Die Umrechnung im µC in Ganzzahl? Ich habe was gerechnet, sollte soweit passen. Aber irgendwie habe noch nicht ein vollständiges Bild bekommen, ob das so wirklich stimmt. Was ändert sich, wenn ich Float statt Ganzzahl nehme? Werden bei der Berechnung die Kommastellen auch mitberücksichtigt. Dadurch wird meine Berechnung noch pünktlicher, gell?
Moin, Das sieht alles recht wirr aus und hat einen Haufen Tipp- und Rechenfehler. Was willst du tatsaechlich machen? Welche konkrete Messaufgabe mit welchem konkreten Equipment? Wenn man die "untersten bits" des ADC-Wandlers nicht "nutzen" kann, ist die Frage erstmal: Haeh - Warum nicht? Gruss WK
Dergute W. schrieb: > Was willst du tatsaechlich machen? Ich möchte die Spannung messen und die dann mit einer Auflösung von 0,000244140625mV bereitstellen. Die Höchstspannung liegt bei +/- 5V. Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus.
Vili schrieb: > Ich möchte die Spannung messen und die dann mit einer Auflösung von > 0,000244140625mV bereitstellen. Die Das sind 0.24 µV. Ist das Dein Ernst?
Vili schrieb: > Ich möchte die Spannung messen und die dann mit einer Auflösung von > 0,000244140625mV bereitstellen. Die Höchstspannung liegt bei +/- 5V. > Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus. Und wo ist jetzt das Problem? Die Auflösung des 16Bit ADC ist größer als deine Anforderung. Dann ist doch alles in Ordnung, auch ohne Oversampling.
MaWin schrieb: > Und wo ist jetzt das Problem? Oh moment streiche das. Meinst du tatsächlich Millivolt? Das ist Unsinn auf allen Ebenen.
Vili schrieb: > ADC: 10bit - 2^10 = 1014 Vili schrieb: > Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus. Entscheide Dich mal.
Vili schrieb: > Ich möchte die Spannung messen und die dann mit einer Auflösung von > 0,000244140625mV bereitstellen. Die Höchstspannung liegt bei +/- 5V. > Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus. Für die Auflösung brauchst Du aber einen 24-Bit ADC. Schau Dir z.B. mal ADS1299 von TI an.
Vili schrieb: > Theorie: > f_oversampling = 4^n * f_nuyquiest Alle Theorie ist grau. In der Praxis habe ich noch keinen einzigen ADC erlebt, der genauer als seine Bitauflösung war. Anders gesagt, die hinzu geschummelten Subbits eignen sich bestenfalls als Lottozahlen und sind in der Regel nichtmal monoton.
Moin, Vili schrieb: > und die dann mit einer Auflösung von > 0,000244140625mV bereitstellen. Hmmm. Okeeeeeeeeey. Wem willst du die bereitstellen, was will der mit diesen vielen Nachkommastellen? Gruss WK
Vili schrieb: > Ich möchte die Spannung messen und die dann mit einer Auflösung von > 0,000244140625mV bereitstellen. Die Höchstspannung liegt bei +/- 5V. > Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus. Also, +-5V = 10V Spannungsbereich bei einer ADC Auflösung von 16 Bit ergeben 152,58uV. Und selbst das finde ich jetzt sehr sportlich. INL und DNL sowie Offset-Fehler des ADC mahl nicht berücksichtigt. Dazu kommt noch ein super gutes Layout mit spitzen Filtern und einem Linearregler mit einem PSRR >100dB. Ich denke, du hast bei deiner Aufgabe etwas falsch verstanden. Was du machen könntest, ist eine "manuelle" Bereichsumschaltung über einen Vorverstärker (Achtung Linearität, PSRR...): Bei kleinen Input-Signalen (z.B. +-100mV, oder +-1mV) jeweils auf den vollen Eingangsbereich des ADC verstärken (*100 resp. *1000). Btw. schau dir mal gute Multimeter an. Diese sind meistens auch mit Bereichsumschaltung und im uV-Bereich noch genau, aber die kosten über 600Euro. Und ausserdem wird dir die Anzeige sowieso nichts bringen, weil vermutlich ein schaltendes Gate des uC oder ADC schon einen spürbaren Einfluss hat, mal von EMV und thermischen Einflüssen abgesehen... Vili schrieb: > Was ändert sich, wenn ich Float statt Ganzzahl nehme? Werden bei der > Berechnung die Kommastellen auch mitberücksichtigt. Das sind aber Grundlagen! Du hast es ja schon selber gesagt: Ganzzahl kennt keine Kommastellen. Bei einer Division wird alles nach dem Komma ignoriert. Wird dann wieder multipliziert, sind die Kommastellen verloren und dein Resultat verfälscht. Also musst du entweder die Rechnung entsprechend umstellen+skallieren, oder du rechnest mit einem grossen Zeitaufwand in float (manche uC haben FPUs, die dir das abnehmen könnten). > Dadurch wird meine Berechnung noch pünktlicher, gell? Ich weiss jetzt ehrlich gesagt nicht, was du da mit einer Uhrzeit meinst... ;)
:
Bearbeitet durch User
Ich wollte erst fragen, ob Du die Frage vielleicht besser in Englisch stellst, da es anscheinend ernste Schwierigkeiten mit der Bedeutung von Begriffen gibt. Ich sehe aber, dass Du mit Zahlen ähnlich frei umgehst. Vielleicht kann man es abkürzen: Wenn das folgende Deine Messwerte sind Vili schrieb: > Extra samples : 4 * (32.764 + 32.769 + 32.768 + 32.766) = 131.066 dann musst Du von Deinen 16 Bit eher 2 Streichen als noch mehr herauskitzeln zu wollen.
Peter D. schrieb: > Vili schrieb: >> Theorie: >> f_oversampling = 4^n * f_nuyquiest > > Alle Theorie ist grau. > In der Praxis habe ich noch keinen einzigen ADC erlebt, der genauer als > seine Bitauflösung war. Es gibt schlechte ADCs und brauchbare. Viele LTC24xx haben nominal 24-Bit, aber noch 4 Sub-LSBs, die für's Oversampling nutzbar sind. Diese Form von Oversampling ist völlig normal. Bestes Beispiel: Delta-Sigma-ADCs, die, in der einfachsten Form, exakt mit einem einzigen Bit auflösen... > Anders gesagt, die hinzu geschummelten Subbits eignen sich bestenfalls > als Lottozahlen und sind in der Regel nichtmal monoton. Das ist ja gerade der Witz bei Delta-Sigma-Modulatoren erster Ordnung (im Gegensatz zu denen höherer Ordnung), dass die Ausgangsfunktion monoton und inhärent linear ist... Patrick B. schrieb: > Vili schrieb: >> Ich möchte die Spannung messen und die dann mit einer Auflösung von >> 0,000244140625mV bereitstellen. Die Höchstspannung liegt bei +/- 5V. >> Als ADC verwende ich ein 16Bit DS-ADC im Differential-Modus. > > Also, +-5V = 10V Spannungsbereich bei einer ADC Auflösung von 16 Bit > ergeben 152,58uV. Und selbst das finde ich jetzt sehr sportlich. INL und > DNL sowie Offset-Fehler des ADC mahl nicht berücksichtigt. Dazu kommt > noch ein super gutes Layout mit spitzen Filtern und einem Linearregler > mit einem PSRR >100dB. Wir sind nicht mehr in den 1980ern... ADCs die das auch über den gesamten industriellen Temperaturbereich schaffen gibt's genug. Als Filter reichen (bei vielen Delta-Sigma-Wandlern) häufig passive erster oder zweiter Ordnung (X2Y-Kondensatoren sind da ganz nützlich). Linearregler sind bei 16-Bit nicht unbedingt nötig (ADCs haben auch ein PSRR...). Stand der Dinge sind z.Z. SAR-ADCs wie der LTC2508-32 mit 32-Bit Auflösung, INL/DNL oder Delta-Sigmal-Wandler wie der ADS1263 oder AD7177-2 mit 32-Bit Auflösung. Die entwickeln und bauen die Hersteller nicht zum Spaß, weil sie niemand kauft und einsetzen kann... Beim ADS reicht definitiv ein passiver Filter zweiter Ordnung und eine saubere Versorgung um auf die Datenblattangaben zu kommen. Nicht nur in klinisch sauberer Umgebung... Allerdings gibt es heute immer noch ein Problem, dass es auch in den 1980ern gab: Die Spannungsreferenz. Da hat sich seit der LTZ1000 nicht wirklich was getan. (die Links zu den Papern wie man u.a. die INL, mit Hausmitteln, messen und korrigieren kann, fliegen hier in anderen Threads rum)
Arc N. schrieb: > Viele LTC24xx haben nominal > 24-Bit, aber noch 4 Sub-LSBs, die für's Oversampling nutzbar sind. Den LTC2400 habe ich früher auch eingesetzt. Der ist im Eingang sehr giftig, unter 2,5V treibt er Strom, darüber zieht er Strom. Man braucht einen niederohmigen OPV am Eingang und auf keinen Fall Kondensatoren. Eine schlechte Eingangsbeschaltung sieht man an nicht monotonen Sprüngen. Die 4 Sub-Bits sind wirklich Lottozahlen. Auch wenn man über 10 Minuten aufsummiert, bleiben sie Lottozahlen. Da ist absolut nichts rauszukitzeln. Ich setze lieber etwas teuere und dafür bessere Wandler ein, z.B. AD7194BCPZ.
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.