Hallo, ich bin dabei ein Spannungsteiler mit einer sehr kleinen Toleranz
aufzubauen, jedoch habe ich ein Genauigkeitsproblem.
Ich habe eine Spannungbereich von 0..120V die ich messen möchte. Mit
einem Spannungsteiler möchte ich sie auf max 5V teilen, um sie dann an
einem uC einzuspeißen.
Ich habe ein ADC Eingang mit 12bit auflösung, d.h. 4096 steps. Die 120V
werden also theoretisch in 29mV Schritten erfasst. An R2 der wäre das in
5V / 4096 = 1,2mV Schritten
Wenn ich aber nun die Toleranzen der Widerstände am Spannungsteiler
betrachte habe ich im Worst case fall (durch MultiSim Simuliert) an R2
eine Genauigkeit von 9,64 mV. Das entspricht etwa 5V / 9,64mV=518,6
steps, also ungefähr etwa mehr als 9 bit Auflösung.
Durch der Toleranzen des Spannungsteiler verliere ich 3 bit Auflösung
gegenüber des 12bit ADC.
Die Genauigkeit der Spannungsmessung sollte schon bei 12 bit liegen. 9
bit wären zu wenig. Gibt es ein Weg den Spannungsteiler genauer zu
dimensionieren ?
Hallo Frank,
Du kannst natürlich genauere Widerstände nehmen.
Du kannst den Spannungsteiler per Software abgleichen.
Du musst aber auch noch andere Effekte berücksichtigen (Alterung,
Temperaturkoeffizient falls beide nicht gleich warm sind)
Außerdem hat der ADC abhängig von der Samplefrequenz einen
Eingangsstrom, der auch zu berücksichtigen ist.
Frank schrieb:> Gibt es ein Weg den Spannungsteiler genauer zu dimensionieren ?
Nimm Widerstände mit 0.01% Toleranz.
Hauptsache, deine Referenzspannungsquelle vom ADC liefert mindestens die
selbe Genauigkeit und - vorsichtig beim Löten.
Du wirfst ständig Genauigkeit bzw. Anzeigefehler und Auflösung
durcheinander. Die Toleranzen der Widerstände im Spannungsteiler
beeinträchtigen in keinster Weise die Auflösung, die bleibt unverändert.
Abhängig von der Abweichung des Istwertes der Widerstände zum Sollwert
hast Du einen systematischen Fehler. Den bekommst Du recht einfach durch
eine Kalibrierung weg.
Was bleibt ist das Rauschen der Widerstände und des ADCs, und evtl. noch
ein systematischer Temperaturfehler (den man per Messung und Kennfeld
auch wegrechnen könnte).
Für 12 bit brauchst du 0.02%. Gibt es durchaus, kostet aber. Etwas
billiger ist es, wenn nur die relative Abweichung so gut sein muss, es
gibt fertige Spannungsteiler.
Braucht man es genauer, kann man auch einen PWM Spannungsteiler bauen:
Strom in C fliessr 5 von 120 Zeiteinheiten, den Rest der Zeit ist der
Widerstand mit Masse verbunden. Mit guten Analogschaltern mit geringer
charge injection bekommt man sehr genaue Ergebnisse, natürlich nur wenn
die Eingangsspannung die 120 sehr konstant bleibt und der Ausgang den
Mitteleet bildet (am besten dual slope mit synchroner PWM)
Hi, wenn das nicht in Serie geht sondern nur 1x gebaut werden soll
spielt die Genauigkeit der Widerstände meiner Meinung nach keine Rolle,
du kannst sie nach dem Einbau ausmessen und dann die
Übertragungsfunktion mit der du dann wieder die Spannung berechnest den
tatsächlichen Widerstandswerten anpassen, sollte glaube ich klar sein.
Viel wichtiger ist meiner Meinung nach der Temperaturdrift da sich 280k
zu 6k doch recht unterschiedlich erwärmen würden bzw. die Alterung.
Die beiden Widerstände R1 und R3 würde ich durch eine Reihenschaltung
ersetzen, weil die 120V, die da anliegen, schon aus
Sicherheitsbetrachtungen nicht mehr ganz unkritisch sind (Abstände,
Schutz im Fehlerfall). Die Einzelwerte sind dann nur noch im Bereich von
70kΩ, wodurch die Fehler durch Verschmutzung und Feuchte weniger wirken.
Bedenke auch, dass die angegebenen Widerstandstoleranzen nur die
Auslieferungstoleranzen sind und dazu noch Temperaturgang, Alterung,
Änderung durch den Lötvorgang und weitere Einflüsse kommen. Die
Gesamttoleranz über Alles kann dann leicht das fünf- bis zehnfache
betragen.
Hat dich erst MultiSim darauf gebracht?
Das Genauigkeitsproblem ist doch offensichtlich:
Wenn man 0,1% Widerstände nimmt, ist man auf 1/1000 genau
- was ziemlich genau einem LSB bei 10 Bit Auflösung entspricht.
Bei einem Spannungsteiler können beide Anteile gegensätzliche
Fehlervorzeichen haben, dann ist das Teilerverhältnis im übelsten
Fall (Ra = Rb) nur noch auf 1/500 genau, was ziemlich genau einem
LSB bei 9 Bit Auflösung entspricht.
Mit vergleichbarem Aufwand wirst du prinzipiell nicht viel
verbessern können. Und 12 Bit GENAUIGKEIT wirst du damit
nie erreichen! (Geht beim Digitfehler los, ...)
Nimm günstigere 1% Metallwiderstände und einen geschickt
platzierten 20-gängigen Cermet-Trimmer für den Ableich.
Wenn alles (!) stabil ist kannst du vielleicht kurzfristig
11 Bit "Genauigkeit" erreichen.
Erwin schrieb:> Wenn alles (!) stabil ist kannst du vielleicht kurzfristig> 11 Bit "Genauigkeit" erreichen.
Warten wir erstmal auf die Referenz, die die 12bit Genauigkeit hält ...
Hallo,
die Genauigkeit der Widerstände ist relativ egal - die dürfen zur Not
auch 1% haben. Das korrigiert man beim Abgleich - alle Fehler 1.Ordnung
lassen sich leicht herausrechnen, z.B. eben ein falscher Teilerfaktor.
Viel wichtiger als der exakte Wert ist die Drift, d.h. wie sich die
Widerstände über die Zeit / Temperatur ändern. Achte also auf den
Temperaturbeiwert der Widerstände und eventuelle Angaben zur Alterung.
Das gleiche gilt auch für die Referenzspannungsquelle - genauer Wert
nicht so extrem wichtig, aber die Drift.
Eine Genauigkeit von +-1LSB ist sowieso unrealistisch, der ADC hat ja
intern auch noch Fehler. Da müsstest du schon einen 14bit-ADC nehmen.
Mich stört hier schon wieder "auf max 5V teilen". Das riecht schon
wieder danach, daß der TO die Versorgungsspannung des µC als Referenz
nimmt.
Frank, was nimmst du als A/D Wandler Referenzspannung?
Wie genau ist diese Referenz?
Udo Schmitt schrieb:> Mich stört hier schon wieder "auf max 5V teilen". Das riecht schon> wieder danach, daß der TO die Versorgungsspannung des µC als Referenz> nimmt.
Sieht ganz danach aus.
Ausserdem:
Weiss nicht, welchen ADC du verwendest aber bei solchen
Widerstandswerten kann eine Impedanzwandlung zwischen Teiler und Wandler
nicht verkehrt sein.
>Bei einem Spannungsteiler können beide Anteile gegensätzliche>Fehlervorzeichen haben, dann ist das Teilerverhältnis im übelsten>Fall (Ra = Rb) nur noch auf 1/500 genau, was ziemlich genau einem>LSB bei 9 Bit Auflösung entspricht.
Nanu? :
1. 999 / (1001+999) = .4995
2. 1001 / (999+1001) = .5005
Ich komme beide Male auf 0.1 % Fehler, rechne ich falsch?
der alte Hanns schrieb:> rechne ich falsch?
du rechnest richtig, aber dein Ansatz ist falsch.
der Fehler wird größer, wenn das Teilerverhältnis größer wird. Deine
Rechnung gilt nur für zwei gleiche Widerstände.
rechne das mal für ein Teilerverhältnis von 100, dann bist du schon bei
0,199%.