Ich möchte mit einem ATMEGA328 ARUDINO eine Spannung mittels Spannungsteiler messen Arduino ADC = 0-1023, das bedeuted bei Vref von 4.096V/1023 = 4 mV Schritte sind messbar. Anbei das Schema wie die Messung aussehen soll. Die Spannungsreferenz hat eine Toleranz von plus und minus 1.5mV. Die Widerstände sind plus und minus 0.1% Toleranz. Wie kann ich im vorherein herausfinden was der kleinste und grösst mögliche Fehler der Messung sein wird? Also bis zu 4mV ist ja schonmal klar weil die Auflösung ja nur diese Grösse hat.
Johnny S. schrieb: > das bedeuted bei Vref von 4.096V/1023 = 4 mV > Schritte sind messbar. Nope, es sind 4096/1024 und ja, das sind 4 mV, die maximale Spannung, die du damit messen kannst sind 4092 bzw. 4092 wird das selbe Ergebnis liefern wie 4096 nämlich beides 1023. Johnny S. schrieb: > Wie kann ich im vorherein herausfinden was der kleinste und grösst > mögliche Fehler der Messung sein wird? Kleinster Fehler ist 0V, größter Fehler die Summe aller anderen Fehler zusammen ;)
:
Bearbeitet durch User
Johnny S. schrieb: > Arduino ADC = 0-1023, das bedeuted bei Vref von 4.096V/1023 = 4 mV > Schritte sind messbar. Die Schritte sind 4,096/1024 groß, wobei der letzte Schritt vom ADC nicht erreicht wird. Johnny S. schrieb: > Wie kann ich im vorherein herausfinden was der kleinste und grösst > mögliche Fehler der Messung sein wird? Indem Du die max. Abweichungen von Referenz und Spannungsteiler durchrechnest. Typisch: Referenz und Teiler jweils bei Max- und Minwerten durchrechnen. ABER: sieh ins Datenblatt vom ATmega328. Dessen ADC hat größere Fehler, als die ext. Bauteile. Daher ist es immer sinnvoll, die aufgebaute Schaltung abzugleichen. Insofern ist eine Referenzspannung von 4,096 V ja ganz schön, aber letztlich nur auf dem Papier ein geeigneter Wert.
So geht das. Umin = U1*(R2*0.999)/(R2*0.999+R1*1.001) Unmom = U1*R2/(R2+R1) Umax = U1*(R2*1.001)/(R2*1.001+R1*0.999) Rel_Fehler_minus = (Umin-Unenn)/Unenn Rel_Fehler_plus = (Umax-Unenn)/Unenn
Und dann musst Du Helmut S. Ansatz noch weiter bringen - Fehler der Quelle um +-1,5mV - Offsetfehler des ADC - Linearitätsfehler des ADC - eventuell noch Temperaturdrift der Widerstände (und Holla die Waldfee - die sollte man nicht unterschätzen. Selbst bei 12 bit Auflösung macht das bei normalen, nicht temperaturstabilen Widerständen enorm viel aus!). Unter Strich also hast Du die minimale Spannung U_MIN = U_Quelle, nenn - 1,5mV - U_R1,fehler - U_R2,fehler - U_ADC,linearitätsfehler - U_ADC,offsetfehler Und das ganze für U_MAX natürlich durch addition. Und wenn Du das alles ausgerechnet hast, dann musst Du den errechneten Wert noch auf die 12-bit Auflösung des ADC beziehen, weil es hier nur ganze Zustände gibt. Wenn irgendwas um die +-10-20 digits herauskommt, dürfte das überaus realistisch sein.
Stefan U. schrieb: > Der ADC hat 10 bits. Ach da habe ich mich jetzt von den 4.096 = 12bit irritieren lassen :) Dann ändert sich an der Rechnung trotzdem nichts, außer dass es dann vllt. nur 5-15 digits sein werden.
Martin S. schrieb: > Dann ändert sich an der Rechnung trotzdem nichts, außer dass es dann > vllt. nur 5-15 digits sein werden. Nein, so schlecht wird es auch nicht werden. Dennoch: 0-Punkt und Vmax-Punkt ausmessen, ins EEPROM schreiben und den eff. Messwert passend korrigieren. Dabei darf man auch gerne float-Berechnungen verwenden ;-) Damit und mit einem sauberen Aufbau (Masseleitung) hat man die größten Fehler umgangen. Die Linearität des ADC ist ja passabel.
Also ich habe mit dem Tiny8 ADC gerne gearbeitet. Die Messwerte waren eigentlich auch unkalibriert immer schon sehr gut. Das Grauen bekommt man dann allerdings, wenn man sieht, wieviel Messungenauigkeit Atmel da mit eingeplant hat. Real sind die ADC um den Faktor 10 besser.
> Das Grauen bekommt man dann allerdings, wenn man sieht, wieviel
Messungenauigkeit Atmel da mit eingeplant hat. Real sind die ADC um den Faktor 10
besser.
Nee. Atmel will sich nicht auf bessere Werte als spezifiziert behafter
lassen. Spezifiziert im Sinne von in Temperaturbereich, Clockbereich,
Spannungsbereich. Dass du fuer deine Anwendung einen Faktor 10 besser
bist ist schoen fuer dich. Aber eben nicht einforderbar.
Johnny S. schrieb: > Ich möchte mit einem ATMEGA328 ARUDINO eine Spannung mittels > Spannungsteiler messen > > Arduino ADC = 0-1023, das bedeuted bei Vref von 4.096V/1023 = 4 mV > Schritte sind messbar. > > Anbei das Schema wie die Messung aussehen soll. Die Spannungsreferenz > hat eine Toleranz von plus und minus 1.5mV. Die Widerstände sind plus > und minus 0.1% Toleranz. > > Wie kann ich im vorherein herausfinden was der kleinste und grösst > mögliche Fehler der Messung sein wird? > > Also bis zu 4mV ist ja schonmal klar weil die Auflösung ja nur diese > Grösse hat. Fehlerrechnung ist so ziemlich das übelste, was im E-Grundstudium auf einen wartet. Ich weiß nicht, ob ich es damals richtig verstanden habe? Z. B. Ein ganz normaler Widerstand aus dem Handel: Eine Überschreitung des angegebenen Toleranzwertes an solchem Widerstand besagt nicht, daß die Toleranz nicht eingehalten wurde! Soweit ich verstanden habe reicht es, wenn 66 Prozent der Widerstandswerte einer Stickprobe innerhalb des Sigma 1-Bereich liegen...oder wie war das? Zum anderen muß bei solchen Vorhaben die Fehlerfortpflanzung auch berücksichtigt werden, sowie eine überschlagsmäßige Betrachtung aller Fehler der einzelnen Komponenten.
m.n. schrieb: > Dabei darf man auch gerne float-Berechnungen verwenden ;-) Erwartest du bei der Rechnung größer Dynamik, oder warum willst du etliche Bits für einen so gut wie konstanten Exponenten verschwenden?
Ich steh auf Luxus und leiste es mir, die Formeln so einzugeben, wie sie sind. Ob beim ATmega328 nun 8kB oder 9kB belegt sind, das ist doch völlig schnuppe.
lizenzierter Funkloch Bohrspezialist schrieb: >> Das Grauen bekommt man dann allerdings, wenn man sieht, wieviel > Messungenauigkeit Atmel da mit eingeplant hat. Real sind die ADC um den > Faktor 10 > besser. > > Nee. Atmel will sich nicht auf bessere Werte als spezifiziert behafter > lassen. Spezifiziert im Sinne von in Temperaturbereich, Clockbereich, > Spannungsbereich. Dass du fuer deine Anwendung einen Faktor 10 besser > bist ist schoen fuer dich. Aber eben nicht einforderbar. Was Du nicht sagst...
Jürgen schrieb: > Soweit ich verstanden habe reicht es, wenn 66 Prozent der > Widerstandswerte > einer Stickprobe innerhalb des Sigma 1-Bereich liegen...oder wie war > das? Ganz so schlimm ist es nicht. Aber: die Toleranz ist die Abgleich/Liefertoleranz ab Werk des Herstellers. Und gilt nur für die spezifizierte Temperatur (z.B. 25 Grad). Hinzu kommen noch Temperaturgang (bei 0.1% Widerständen typisch 15-50 ppm/K) was von -40 .. +125 Grad auch noch mal 0.8% ausmachen kann. Dann Drift beim Einlöten (bis 1%) und Drift über Alterung (auch nochmal bis 1%). Wenn man den Worst Case betrachtet kommt man mit üblichen SMD-Widerständen auf ca 5% Toleranz über Temperatur und Lebensdauer für einen Spannungsteiler aus 0.1% Widerständen. Bei der Spannungsreferenz gibt es Temperaturgang, Alterung und Hystereseeffekte. Beim ADC schaut man in der Regel auf die TUE Angabe im Datenblatt. Gruß Anja
Martin S. schrieb: > - eventuell noch Temperaturdrift der Widerstände (und Holla die Waldfee > - die sollte man nicht unterschätzen. Selbst bei 12 bit Auflösung macht > das bei normalen, nicht temperaturstabilen Widerständen enorm viel > aus!). Einer der interessanteren Fehler, bei Spannungsteilern mit stark unterschiedlichen Widerstandswerten, ist die unterschiedliche Eigenerwärmung durch den Messstrom. Auch sehr nett: Eine ungleichmäßige Temperaturverteilung auf dem Board. Beide Konstellationen führen ggf. zu einer Drift des Spannungsteilers, die größer als die angegebenen Toleranzen der Bauteile ist. Es gibt noch weitere Fehler, die noch nicht explizit genannt worden sind, bzw. die ich ggf. überlesen habe (z.B. Drift der Referenz?). Aber selbst ohne ins Grundstudium E-Technik und Gauß zurückzugehen, ist es gibt es die Möglichkeit, dass man für eine Maximalbetrachtung alle möglichen Fehler jedes einzelnen Bauteils identifizieren und "schlimmstmöglich", sprich mit passend gesetztem Vorzeichen aufaddieren kann.
Anja schrieb: > Wenn man den Worst Case betrachtet kommt man mit üblichen > SMD-Widerständen auf ca 5% Toleranz über Temperatur und Lebensdauer für > einen Spannungsteiler aus 0.1% Widerständen. Du hast aber schlechte Widerstände ;-). Ich kenne das eher so, dass die 1%-Ausführungen in dem Bereich zu betrachten sind. Mit den 0.1%-Widerständen bist du über alles (Auslieferung, Verarbeitung, Temperatur, Alterung) auf rund 1% oder wenn du Glück hast, auch noch leicht darunter. Zumindest geben das die Datenblätter der von uns eingesetzten Serien so wieder. In Folge würde das dann heißen, dass mit käuflichen Widerständen (0.1%) praktisch keine z.B. einstellbare Spannungsversorgung dimensioniert werden könnte, die die typischen Anforderungen nach max. 5% Toleranz einhalten. Denn dabei kommt ja nochmals eine Betrag dazu von der Referenzspannung des Reglers. Und welcher Kaufmann akzeptiert noch enger tolerierte Serien, sowohl bei den Widerständen als auch bei den Reglern? Wenn dann noch eine HW-Überwachung notwendig ist, wird es auch mit 'meinen' Widerstandstoleranzen nicht mehr möglich, das Toleranzfeld worst case in den grünen Bereich zu bringen. Und neuerdings ist bei manchen ICs die VCC-Ablage nur noch mit max. 3% zulässig. Bei unter 1V Core-Spannung und einigen Watt Leistungsaufnahme ist das nur noch ein Hauch von Millivolts, die man noch als Toleranzfeld zur Verfügung hat. Gut, dass ich bald in Rente bin ...
Johnny S. schrieb: > Wie kann ich im vorherein herausfinden was der kleinste und grösst > mögliche Fehler der Messung sein wird? Der kleinste ist 0 und der grösste ergibt sich mit den Werten am schlechtestens Rand. Also z.B. Richtung zu viel messen: 4.096-0.0015 und 2k3+0.1% und 10k-0.1% und die Abweichung des DAC, sagen wir 1.5 bit also 6mV. 10V / (2302.3+9990) = 1.8729611 vs. 4.0885 = 469 statt 467.5, also echt nicht der Rede wert, Zufallsstreuungen durch Störungeneinkopplung sind grösser.
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.