PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Widerstandsmessung - Frage



Hei.Mor
30.12.2005, 21:50
Hallo,
ich möchte über den AD-Port des Atmega8 Widerstände messen.
Ich wollte daher eine Reihenschaltung von einem festen Widerstand mit dem Mess-Widerstand (auswechselbar) machen.
Mit AD-Wandler würde ich dann die Spannung messen, die an dem Mess-Widerstand liegt abgreifen.
Ich möchte Widerstände von 0 bis 18KOhm messen.
1. Wie groß sollte der feste Widerstand (Vorwiderstand) sein
2. Warum wird immer die 10kOhm Grenze genannt, steht auch im Atmega8 Datenblatt, aber verstanden habe ich nicht wieso diese Begrenzung.

Für Antworten wäre ich dankbar...schon mal guten Rutsch

Heinz

Posti
30.12.2005, 22:54
Hi

Ich befasse mich momentan nur mit PIC-Controlern, denke aber, daß die AD-Eingänge ähnlich funktionieren.

Denke, daß diese 10K als Vorwiderstand für z.B. Transistoren genutzt werden.
Beim Eingang sollte der µC die Spannung ohne Bedenken abkönnen.
(Zumindest der PIC)

Beim PIC wird eine Spannung (0-5V) in einen Wert (0-1023) umgesetzt.
Dieser Wert dürfte linear zur anliegenden Spannung sein, müsste aber im Datenblatt erläutert sein.

Wenn wir ein Widerstandsnetzwerk aus 2 Widerstanden bauen, von denen einer dem Controler bekannt ist, können wir durch die gelesene Spannung eine Aussage zu dem zu Testenden Widerstand machen.

EDIT (Der Weg passte zwar, war aber zu kompliziert ... geht auch einfacher)

Wenn Du die Spannung misst, die am FEST-Widerstand abfällt, kannst Du den TEST-Widerstand wie folgt berechnen:
R(test)=R(fest)x(1023-ADC) : ADC
- bei ADC=0 -> ERROR, der Test-Widerstand ist sehr groß


Wenn Du die Spannung am TEST-Widerstand misst:
R(test)=R(fest)xADC : (1023-ADC)
- bei ADC=1023 -> ERROR, der Test-Widerstand ist sehr groß

... wobei ADC der Wert Deines AD-Wandler ist, und die 1023 den Maximal-Wert, den der Wandler ausgeben kann, darstellt.

Den Vorwiderstand R(fest) könnte man so berechnen:
R(fest)=5/1023*R(test-max) |5=Spannung am µC 1023=max des ADC
--> 87,9 Ohm (bei max 18K Test-Widerstand)
bei 0 Ohm Test -> ganze Spannung fällt an R(fest) ab, an R(test) nichts
Strom durch die Brücke ca 50mA !!
Variante 1: ADC=1023
Variante 2: ADC=0
bei 18KOhm Test -> 0,03V fällt an R(fest) ab, an R(test) 4,97V
Variante 1: ADC=1018
Variante 2: ADC=5


Wenn die Werte zu ungenau werden, könnte man den Vorwiderstand (automatisch) erweitern, indem man entweder Parallel-Widerstände dazuschaltet (Vorwiderstand wird kleiner) oder Reihenwiderstände dazuschaltet (Vorwiderstand wird größer).
Dazu bei den
Parallel-Widerständen einen Transistor mit Diesem in Reihe
Reihen-Widerständen einen Transistor mit Diesem parallel

Wenn der Widerstands-Aktivierungspin high ist, wird bei dem
.. Parallel-Widerstand der Widerstand dazugeschaltet (T leitet) und der gesamt-Widerstand sinkt.
.. Reihenwiderstand der Widerstand überbrückt (T leitet, der Widerstand wird umgangen) | bei sperrendem T muß der Strom durch den Widerstand -> der gesamt-Widerstand steigt

Da diese Aktivierungs-Pin's der µC bekannt sind, und auch deren dazugeschalteten Widerstände, kannst Du den Gesamt-FEST-Widerstand berechnen:
ges. Reihenwiderstand= Summe ALLER Einzelwiderstände
ges Parallel-Widerstand= Kehrwert der Summe ALLER Parallel-Leitwerte

Der Leitwert eines Widerstand ist sein Kehrwert.
Wenn Du 3 Stk 100 Ohm-Widerstände parallel schaltest, ergibt sich folgende Rechnung:
Rges=1 : (1:100+1:100+1:100)
* * * *= 1 : (3:100)
* * * *= 33,333.... Ohm

Wenn die µC keine Mathe-Befehle zur Verfügung stellt, damit Du mit diesen Zahlen brauchbar rechnen kannst, kann man die Berechnung 'von Hand' programmieren.
Also dem Programm beibringen, wie man schriftlich multipliziert / dividiert.
Hierbei muß aber zwingend auf das Komma geachtet werden, sonst kommt nur Müll raus.
Das hat den Vorteil, daß die Zahlen, mit denen gerechnet werden nahezu unbegrenzt sind, aber den Nachteil, daß viel Speicherplatz und Zeit benötigt wird, um diese Rechnung durchzuführen.

MfG
Posti

Das Problem gefällt mir, werde da glaube gleich mal was PIC'n *g*
Nachtrag: Da bei mir die Spannungsteiler fest verlötet sind, hat sich das PIC'n erstmal erledigt, aber das Prob hat was.

PS: Bitte nochmal meine Rechnungen durchdenken ... der Tag war doch recht lang (Edit um 7:24h) ... ich gehe jetzt ins Bett :)

ruediw
31.12.2005, 11:15
Eine andere Variante währe einen 4151 oder AD654 zu verwenden.
Dieser Chip wandelt eine Spannung in eine Frequenz um.

Vorteile:
- bessere Auflösung (Grösserer Messbereich)
- weniger störanfällig da integrierend.

Studier erst mal die Datenblätter ...

Guten Rutsch
Ruedi

PicNick
31.12.2005, 13:35
2. Warum wird immer die 10kOhm Grenze genannt, steht auch im Atmega8 Datenblatt, aber verstanden habe ich nicht wieso diese Begrenzung.

Am Eingang haben die ADC eine Sample & Hold Schaltung.
D.h. er macht den Eingang kurz auf, lädt einen Kondensator (sample) und macht wieder zu (Hold). Wirklich gemessen wird diese Spannung an diesem kondensator.
Wenn nun am eingang wegen zu großem Widerstand > ~10k in der kurzen Zeit der Kondensator nicht mehr die Aussen-Spannung erreicht, stimmt natürlich die Messung auch nicht.

Hei.Mor
31.12.2005, 19:08
Hallo,

vielen Dank für Eure Antworten.

@Posti :
die Sache mit dem Transistor kannte ich noch nicht, dachte erst an einen Schalter in CMos (4051 oder so) Form, einzelner Transistor gefällt mir.
Die ausführliche Berechnung musste ich mir erst mal öfters durchlesen....nicht schlecht was du da aus den Hut gezaubert hast.
Werde ich mal in der HW prüfen :-)

@PicNick :
wenn ich aber an einem 18KOhm Mess-Widerstand messe, sagen wir mal in Reihe liegt der bekannte Widerstand mit 470Ohm um den Strom bei einem 1 Ohm Mess-Widerstand zu begrenzen... warum spielen da die 10 KOhm Begrenzung eine Rolle?
Habe doch fast die volle 5V anliegen?
Und wenn der Mess-Widerstand klein wird, durch den kleinen Fest-Widerstand bleibt doch dort trotzdem genug übrig.
Oder denke ich da falsch?

Guten Jahresübergang...

Posti
31.12.2005, 22:41
Hi Mor *gg*

Aus dem Hut gezaubert ist gut.
Hatte den Post ja vor Mitternacht erstellt, musste dann weg und dort brannte mir die Formel förmlich unter den Nägeln ... hatte vorher noch U (Spannung) mit drin, ist aber unnötig.
... und seit wann braucht man zum Hut-zaubern dutzende von Schmierzettel? *gg*

Wie gesagt, wenn die genutzte Sprache mit den Zahlenwerten nicht rechnen kann (z.B. Komma-Zahlen in ASM) habe ich früher die Rechnereien in einer SUB-Routiene ausgeführt.
Eben die Zahlenwerte als Strings abgelegt, und 'schriftlich' die Stellen einzeln verrechnet.
Hat halt den Nachteil, daß recht viel Platz und Rechenzeit benötigt wird.
Aber beim Widerstand ausrechnen sollte es auf ne µs oder zwei nicht ankommen.

@PicNic
Das mit den 10K hatte ich leider auch nicht verstanden.
Am als Eingang konfiguriertem Pin sollten Widerstände doch eigendlich nicht notwendig sein, da der Pin keinen Pegel erhalten muß *denk*.

@All
Holt schon mal den Sekt aus dem Schrank, in 20 Min wünsch ich Euch was :)

MfG
Posti

PicNick
01.01.2006, 10:26
..in 20 Min wünsch ich Euch was
Die berühmten Letzten Worte :-)

Wenn ich das richtig verstanden habe, geht einfach darum, daß der vorhandene Strom in der Sample-Zeit ausreichen muß, den internen C zu laden.
Zum Beleg müßt man das einfach mit verschieden dimensionierten Teilern ausprobieren.

Hei.Mor
01.01.2006, 23:47
Hallo und allen ein gutes neues Jahr,

habe die Schaltung mal mit 1KOhm als bekannten Widerstand aufgebaut.
Natürlich stimmt deine Berechnung Posti. Widerstände / Spannungen...
aber sind es ADC 1023 oder 1024? 0-1023 = 1024 Schritte??

Ich habe mit Poti 32 KOhm gemessen... die 10kOhm Grenze scheint nur zu gelten wenn der Festwiderstand 10kOhm wäre.

Grüße
Heinz

Posti
02.01.2006, 17:10
... sind es ADC 1023 oder 1024? 0-1023 = 1024 Schritte??
Logo ... mein Fehler. von 0 bis 1023 sind's 1024 ... wie konnte das nur mir ... *schäm*

Mit den 10K ... kA, wenn'se drin bleiben sollen (weil se irgendwie gebraucht werden) müsste man die mit in die Formel mit einbeziehen *denk* ... allerdings dürfte der Messbereich darunter leiden.

Sobald ich mein Proto-Board V2 fertig hab, werde ich das mal antesten.

Das Problem gefällt mir :)

MfG
Posti

waste
02.01.2006, 18:55
Hallo Hei.Mor

1. Wie groß sollte der feste Widerstand (Vorwiderstand) sein

Die Genauigkeit bei dieser Messmethode ist am besten bei Widerstandswerten, die ungefähr dem Vorwiderstand entsprechen. Wenn du also in der Gegend von 10kOhm am genauesten messen willst, dann mach den Vorwiderstand auf 10kOhm. Willst du bei 1kOhm sehr genau messen, dann mach den Vorwiderstand auf 1kOhm.

@posti

Mit den 10K ... kA, wenn'se drin bleiben sollen (weil se irgendwie gebraucht werden) müsste man die mit in die Formel mit einbeziehen *denk* ... allerdings dürfte der Messbereich darunter leiden.
Ich denke, da hast du was falsch verstanden. Der Innenwiderstand der Quelle soll nicht größer sondern kleiner als 10kOhm sein. Siehe Auszug aus Datenblatt:
The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or less.
Ist der Quellwiderstand zu groß, dann dauert das Laden des S/H-Kondensators zu lang und verfälscht möglicherweise das Ergebnis.

Gruß Waste

Besserwessi
08.12.2007, 20:29
Wenn man die Spannung von einen 32 kOhm Poti abgreift (Poti an GND,5 V), dann ist der Ausgangswiderstand höschstens 8 kOhm (2 x 16 kOhm). Also noch kein Problem mit den 10 kOhm. Auch sind die 10 kOhm keine ganz scharfe Grenze, sondern ein Richtwert. Wenn der Widerstand größer wird reicht es oft einen kleinen Kondensator (ca. 1 nF) nach AGND anzuschließen.
Wenn man schon die Widerstände umschalten will, dann mit CMOS Ausgängen, also PORT Pins (von AVCC gespeißt) oder einem CMOS Multiplexer der ebenfalls von AVCC gespeißt wird.
Wenn man den umweg über eine Frequenzmessung wählt, kann man auch gleich enen RC-Oszillator (z.B. NE555) nehmen, dann wird das wenigstens gleich linear und geht über einen großen Bereich.

McJenso
08.12.2007, 22:45
Hallo,

das Thema ist glaube ich durch. Schau mal aufs Datum der Beiträge.

@Nicole: Bist du ein Bot?

Gruß

Jens