Forum: Mikrocontroller und Digitale Elektronik Genaue Widerstandsmessung mit uC und OPV


von Paul A. (ballistic_cross)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte mit einem Atmega128-16AU und einem OPV eine möglichst genaue 
widerstandsmessung durchführen, komme aber leider nicht auf einen grünen 
Zweig, Schaltung siehe pdf anbei.
Ich brauche mindestens 10 AD-Schritte pro Ohm Schritt an Auflösung.

Der zu messende Widerstand wird zwischen PAD1 und PAD2 angeschlossen, 
der 470R Widerstand in Serie dazu soll mir den maximalen Strom der über 
den zu messenden Widerstand geht auf max 10mA begrenzen. Da ich in einem 
Wertebereich von 0-20 Ohm messen möchte habe ich den Widerstand für den 
Spannungsteiler auf 490 Ohm festgelegt.
Egal was ich an der Verstärkung (500/1000 Ohm) bzw dem Offset-Widerstand 
einstelle, ich bekomme am AD-Port des Prozessors keine vernünftige 
Auflösung.
Sieht jemand den Fehler?

von Dietrich L. (dietrichl)


Lesenswert?

Paul A. schrieb:
> Egal was ich an der Verstärkung (500/1000 Ohm) bzw dem Offset-Widerstand
> einstelle, ich bekomme am AD-Port des Prozessors keine vernünftige
> Auflösung.

Um den OpAmp am Ausgang nicht zu stark zu belasten, würde ich R31 und 
R34 deutlich hochohmiger machen (z.B. 5kΩ/10kΩ).

Lass R37 zuerst mal weg und mess mit einem Multimeter die Spannung am 
Ausgang des OpAmp mit 0Ω und 20Ω. Was kommt dann raus?
Dann kannst du weiterrechnen:
- Änderung von 1Ω bewirkt eine Änderung der Ausgansspannung von xxV.
- Was ist die Referenzspannung des ADC? Wieviele Schritte würde xxV 
bewirken?

von MaWin (Gast)


Lesenswert?

Paul A. schrieb:
> Sieht jemand den Fehler?

Du verstärkst eine Spannung zwischen 0 und 0.1V um Faktor 3 auf 0-0.3V, 
findest du das ausreichend ?

Und dein 'Offset' Widerstand geht, falls er die 0+Linie anheben sill, 
genau in die falsche Richtung.

Zudem sind deine 490 in Reihe zu den 470, also nicht 10mA sondern nur 5.

Was nimmst du als Referenzspannung, 5V (was vernünftig wäre, 
ratiometrisch), und warum nutzt du nicht den internen PGA mit 
Verstärkung bis 200.

von Wolfgang (Gast)


Lesenswert?

Paul A. schrieb:
> ... eine möglichst genaue widerstandsmessung durchführen ...

Die Genauigkeitsskala ist nach oben relativ offen und alles eine Frage 
des Aufwandes. Wodurch ist in diesem Sinne bei dir "möglichst genaue" 
begrenzt?

Wenn du wirklich nahe an die 0Ω ran möchtest, wäre die erste Maßnahme 
eine 4-Leiter-Messung, ggf. mit Kelvin-Klemme zur Kontaktierung.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Wie schon ein Vorposter bemerkt:
Niemals die Speisspannung direckt in den Messkreis führen!

Nimm eine Referenzspannungsquelle!
Da gibt's für wenig Geld schon um 0,001 Volt genaue!

Und auch schon gepostet, das interne PGA verwenden.
Auch ist für sehr genaue Messungen ein Referenz-Mess-Widerstand von 0.1% 
auch sehr hilfreich. ;-)
Zuerst Referenz messen und dann den Prüfling.

von Paul A. (ballistic_cross)


Lesenswert?

ad allgemein:
Danke für eure Antworten, war einfach schon zu verzweifelt heute(da 
entstehen Knoten im Kopf).

ad Antwort dietrichl:
Danke, ja das ist ein vernünftiges Vorgehen.
Für die Verstärkung werde ich morgen früh wieder die hochohmigen Rs 
einsetzen.
Referenzspannung sind 5V.

ad Antwort MaWin:
Die Reihenschaltung ist ein guter Hinweis, werde die Widerstände 
anpassen damit in Summe 470 Ohm rauskommen.
Referenzspannung sind 5V.
Den internen PGA nutze ich nicht aufgrund der übrigen 
Schaltungen/Routinen die auf der Platine/im uC realisiert werden.

von c-hater (Gast)


Lesenswert?

Paul A. schrieb:

> Sieht jemand den Fehler?

Ich sehe sogar gleich drei:

1) falsches Meßprinzip
2) ungeeigneter OPV
3) lausiger ADC

So wirst du niemals eine "möglichst genaue" Widerstandsmessung 
hinbekommen, schon garnicht über mehrere Dekaden hinweg.

von Paul A. (ballistic_cross)


Lesenswert?

c-hater schrieb:
> Ich sehe sogar gleich drei:
>
> falsches Meßprinzip
> ungeeigneter OPV
> lausiger ADC
>
> So wirst du niemals eine "möglichst genaue" Widerstandsmessung
> hinbekommen, schon garnicht über mehrere Dekaden hinweg.


Was den Opv betrifft, manchmal muss man mit dem arbeiten was man zur 
Verfügung hat, das betrifft auch den Adc/uC.

Vielleicht ist auch "möglichst genau" die falsche Formulierung hier. Ich 
möchte von 0 bis 20 Ohm in 0,1 Ohm Schritten auf einem Display ausgeben. 
Schwankungen der Bauteile werden Firmwareseitig kompensiert (Abgleich 
mit 0 Ohm) und es wird fürs erste von einer immer konstanten Temperatur 
ausgegangen.

von W.S. (Gast)


Lesenswert?

Paul A. schrieb:
> ich möchte mit einem Atmega128-16AU und einem OPV eine möglichst genaue
> widerstandsmessung durchführen...

Tja, wir haben alle so unsere Wünsche...

Mal ne Frage: Wozu hast du dir so eine Schaltung ausgedacht? Ich hätte 
da an deiner Stelle einen üblichen so einigermaßen hoch auflösenden 
Sigma-Delta-ADC genommen und damit die Widerstände gemessen. Sowas 
gibt's z.B. von Microchip (MCP3550 und Konsorten die so etwa 20..22 Bit 
an Auflösung haben) oder ein Stück teurer von Analog Devices, von 
anderen Herstellern wahrscheinlich auch. Damit kann man Widerstände auf 
alle Fälle zuverlässiger und genauer messen als mit deiner geposteten 
Schaltung.

W.S.

von c-hater (Gast)


Lesenswert?

Paul A. schrieb:

> Vielleicht ist auch "möglichst genau" die falsche Formulierung hier.

Ganz sicher sogar.

> Ich
> möchte von 0 bis 20 Ohm in 0,1 Ohm Schritten auf einem Display ausgeben.

Das hört sich doch schonmal wenigstens nach einem durchdachten 
Anforderungsprofil an. Hätte in's OT gehört...

Damit ist dann klar, dass es zumindest prinzipiell mit dem realisierbar 
wäre, womit du arbeiten musst. Warum auch immer das ein MUSS sein soll.

> Schwankungen der Bauteile werden Firmwareseitig kompensiert (Abgleich
> mit 0 Ohm)

Das wird sehr wahrscheinlich nicht reichen. Wenigstens ein 
Zweipunktabgleich sollte vorgesehen werden.

von A. S. (Gast)


Lesenswert?

Du nutzt eine Wheatstonsche Brücke, wie z.B. bei DMS, was an sich ok 
ist. Macht aber nur Sinn, wenn ein Widerstand sich geringfügig ändert.

Bei Dir kannst Du besser den Messwiderstand isoliert von GND verstärken. 
Dann ist auch die Versorgungsspannung egal (ratiometrisch).

Also z.B. 1k als Strombegrenzung und dann 1R als Offset. So dass Du grob 
5mV ... 100mV hast. Die dann mit Faktor 40 oder so verstärken und 
messen. Da das ganze ratiometrisch geht, spielt die Güte der 
Versorgungsspannung keine Rolle. Das ganze ist leicht nichtlinear. Das 
könnte mit einem Parallelwiderstand geglättet werden, wenn Du nicht 
rechnen willst.

von usuru (Gast)


Lesenswert?

Patrick L. schrieb:
> Wie schon ein Vorposter bemerkt:
> Niemals die Speisspannung direckt in den Messkreis führen!
>
> Nimm eine Referenzspannungsquelle!
> Da gibt's für wenig Geld schon um 0,001 Volt genaue!

andere Alternative: obige Schaltung beibehalten und die 
Versorgungsspannung als Referenzspannung nehmen, dann hängt die 
Genauigkeit der Messung nur von der Genauigkeit der verwendeten 
Widerstände ab.

Geeeigneter ADC: ADS1100 https://www.ti.com/product/ADS1100

von usuru (Gast)


Lesenswert?


von my2ct (Gast)


Lesenswert?

A. S. schrieb:
> Da das ganze ratiometrisch geht, spielt die Güte der
> Versorgungsspannung keine Rolle.

Na ja - gewöhnlich erfolgen die Messungen nacheinander per Multiplexer. 
Die Versorgungsspannung sollte also schon glatt und nicht mit 
Digitaldreck zugemüllt sein. Nur statische Abweichungen der Spannung vom 
Nennwert spielen bei einer ratiometrischen Messung keine Rolle.

von A. S. (Gast)


Lesenswert?

my2ct schrieb:
> Na ja - gewöhnlich erfolgen die Messungen nacheinander per Multiplexer.
> Die Versorgungsspannung sollte also schon glatt und nicht mit
> Digitaldreck zugemüllt sein.

Ich meinte wenn VCC als Referenz dient. Das böte sich bei Widerständen 
an, wenn er keine Spannungen misst.

von usuru (Gast)


Lesenswert?

my2ct schrieb:
> Die Versorgungsspannung sollte also schon glatt und nicht mit
> Digitaldreck zugemüllt sein. Nur statische Abweichungen der Spannung vom
> Nennwert spielen bei einer ratiometrischen Messung keine Rolle.

Die VDD sollte eh einen Abblock-C haben. Man kann auch den Input mit 
einem kleinen C abblocken.

von Wolfgang (Gast)


Lesenswert?

usuru schrieb:
> Die VDD sollte eh einen Abblock-C haben. Man kann auch den Input mit
> einem kleinen C abblocken.

Bei vielen ATmegas wird der ADC sowie separat über AVDD versorgt und 
AVDD über ein Filter mit VDD verbunden. Diese Trennung des Analogteils 
von VDD wird nicht ohne Grund empfohlen.

von Wühlhase (Gast)


Lesenswert?

Mal ein anderes Konzept als Vorschlag:

Nimm eine Konstantstromquelle (kannst du dir aus zwei Transistoren 
bauen, besser wäre ein 1,2V-Spannungsregler), speise mit diesem 
Konstantstrom deinen Prüfling.

Das hätte schonmal den Vorteil, daß du eine saubere lineare Kurve 
bekommst und dir dein Spannungsteiler keine Nichtlinearitäten reinrotzt 
(auch wenn die bei dir gering sind). Vor allem aber ist dein Meßsignal 
von Anfang an deutlich größer, je nach dem wieviel Leistung du in den 
Widerständen verheizen willst kannst du auf eine Verstärkung zumindest 
theoretisch verzichten.

Verstärken solltest du trotzdem, und zwar mindestens aus zwei Gründen:
a) Die Eingangsimpedanz deines ADCs wird dir die Messung zwar nicht 
komplett versauen, bringt aber unnötigen Genauigkeitsverlust mit sich.

b) Wenn du keine höhere Versorgungsspannung als die 5V hast, kannst du 
den Meßbereich deines ADCs nicht voll ausnutzen, da über der 
Konstantstromquelle immer etwas Spannung abfällt. Andererseits: Würdest 
du eine Spannung >5V zur Speisung nutzen würdest du dir den ADC 
zerballern, wenn jemand einen Widerstand einhängt der höher ist als du 
vorgesehen hast.

Daher: Leg den Strom so aus, daß die Spannung über dem Prüfling z.B. 
zwischen 0...1V liegt, der Rest fällt ja über der Konstantstromquelle 
ab. Die mit einem OPV auf 0...5V ist ja kein Problem.
Dann kannst du den vollen Meßbereich des ADC nutzen und wenn doch jemand 
eine höhere Spannung anlegt, geht halt der OPV mit seiner Ausgangsstufe 
an den Anschlag. Und wenn es sein muß, kannst du dann immer noch mit 
einer Z-Diode parallel zum Prüfling begrenzen.

von MaWin (Gast)


Lesenswert?

Paul A. schrieb:
> Ich möchte von 0 bis 20 Ohm in 0,1 Ohm Schritten auf einem Display
> ausgeben

Na denn, da reicht deine Spannungsteilermessmethode.

Wenn 5V = 1023 sind, sind 200 immerhin 1V eine Verstärkung der 0.1V um 3 
hilft also nicht, dein OpAmp müsste schon um 10 verstärken und da 
Verstärkungsfaktor nichts kostet lass ihn um 50 verstärken, für fast 5V 
bei 20 Ohm.

Warum nun nicht der interne PGA verwendet werden kann, verstehe ich zwar 
nicht, aber auch der MCP6001 kann das. Ein Offset, damit 0 nicht 0 
sondern vielleicht 50mV werden, ist nicht nötig. Zwar kommt ein R2R 
OpAmp nicht ganz an 0V, aber wenn ein Widerstand den Ausgang nach 0 
zieht, bei dir der Spannungsteiler der Gegenkopplung, geht er bis 0V 
runter, nur nicht ganz an +5V ran.

von Thomas G. (Firma: Frickelhauptquartier) (taximan)


Lesenswert?

Patrick L. schrieb:

> Nimm eine Referenzspannungsquelle!
> Da gibt's für wenig Geld schon um 0,001 Volt genaue!
>
suche ich auch noch, kannst du da was konkretes empfehlen? Ich traue den 
üblichen Chinaübersetzungen nicht so recht...

von MaWin (Gast)


Lesenswert?

Thomas G. schrieb:
> kannst du da was konkretes empfehlen

Eine 0V Quelle. Da ist selbst eine mit 10% Abweichung noch genauer als 
1mV.

von Patrick L. (Firma: S-C-I DATA GbR) (pali64)


Lesenswert?

Thomas G. schrieb:
> suche ich auch noch,

Eines teils gibt es da den LM4040 die sind schon sehr präzise und gerne 
genommen oder wenn es etwas teurer und genauer sein soll:
AD 586 sind sehr stabil und genau.

Ist unser Erfahrungswert

Für PH Sensoren oft auch der
LP2985LV

von Paul A. (ballistic_cross)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die Hilfestellungen, hatte wohl gestern echt einen 
Knoten im Kopf^^ Die Messung funktioniert jetzt (Schaltung siehe anbei), 
theoretisch habe ich damit sogar kleinere Schritte, in der Praxis 
brauche ich diese natürlich um Ungenauigkeiten in der Kurve zu 
kompensieren. Die "Genauigkeit" die ich damit erreiche reicht für meine 
Anwendung :)
Danke an alle und schönen Tag euch!

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

Wolfgang schrieb:
> Diese Trennung des Analogteils
> von VDD wird nicht ohne Grund empfohlen.

Braucht man, um ggf. eine externe Referenz anzuschliessen oder 
alternativ mit VCC/VDD ratiometrisch zu messen. Beim ADS1100 ist nur 
eine ratiometrische Messung vorgesehen, dafür hat der auch 16 bit, der 
ADC vom Atmega nur 10 bit.

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.