Forum: Mikrocontroller und Digitale Elektronik Adc Widerstandsmessung


von Benny (Gast)


Lesenswert?

Hallo

ich habe eine Schaltung, welche zwischen 2 Pins AD0 und AD1 einen 
Widerstand messen soll, der sich im Bereich von 4 bis 800 Ohm bewegen 
soll. Ich nutze einen Atmega8535.

Beide Adc-Eingänge sind mit 150 Ohm Pullups versehen. Im Programm setze 
ich dann den einen ADC-Eingang auf LOW und messe mit dem anderen 
Adc-Pin.

HAbe  ich also zwischen den beiden ADC-Pins ebenfalls 150 Ohm, so müsste 
ich einen ADC von ca. 512 haben. Bei einem Kurzschluss müsstE die 
gesamte Spannung über den 150 Ohm Pullup abfallen und ich müsste 0 
messen.

Leider habe ich bei einem Kurzschluss den ADC Wert 269.  Nur wieso?

von Thomas (Gast)


Lesenswert?

Macht man sowas nicht eigentlich mit einem Referenzwiderstand im 
Spannungsteiler? Wenn es genauer sein soll mit einer Wheatstone 
Messbrücke.

Thomas

von Benny (Gast)


Lesenswert?

Der 150 Ohm Pullup in der Schaltung ist doch nichts anderes. Er hat eine 
Genauigkeit von 1%. Dadurch dass der andere Pin des ADCs LOW ausgibt 
habe ich doch meinen Stromkreis

+5V - 150R - unbek. widerstand - GND

zusammen, oder?

von yalu (Gast)


Lesenswert?

150 Ohm sind viel zu wenig!

Der auf Low geschaltete Ausgang müsste bei VCC=5V 33mA saugen um die
Spannung auf 0V herunterzuziehen. Probier mal den 100fachen
Widerstandswert, also bspw. 15 kOhm.

Warum nimmst du überhaupt einen Portpin als GND-Signal? Schließ doch
einfach das eine Ende des unbekannten Widerstands direkt an GND an.

von Benny (Gast)


Lesenswert?

Weil dies leider nicht zu vermeiden geht, da an betreffender Leitung ein 
Lautsprecher angeschlossen wird, der teilweise auch symetrisch betrieben 
wird.

bei 15kOhm wäre das Messergebnis alles andere als genau... Welche 
Alternativen gäbe es noch?

von Karl H. (kbuchegg)


Lesenswert?

Benny wrote:
> Genauigkeit von 1%. Dadurch dass der andere Pin des ADCs LOW ausgibt
> habe ich doch meinen Stromkreis
>
> +5V - 150R - unbek. widerstand - GND
>
> zusammen, oder?

Ich würde mal eher sagen, dein Stromkreis sieht so aus:

+5V - 150R - unbek. widerstand - Widerstand am ADC-Pin des Proz. - GND

von yalu (Gast)


Lesenswert?

@Benny:
Mir ist zwar völlig unklar, was du damit genau bezwecken möchtest
(Vielleicht postest du mal einen Schaltplan mit ein paar Worten zur
Erläuterung), trotzdem noch ein Tipp:

Vielleicht hilft es weiter, wenn an beiden Analogeingängen die
Spannung misst, also auch an dem, der auf Low gesetzt wird. Die
Differenz ist dann die tatsächlich an dem unbekannten Widerstand
anliegende Pannung, unabhängig von der "Stärke" des Low-Ausgangs.

Ich bin mir zwar nicht ganz sicher, ob man an einem als Ausgang
geschalteten Portpin die Spannung per ADC messen kann, aber vermutlich
geht es. Trotzdem ist die Vorgehensweise schon etwas seltsam.

von Benny (Gast)


Lesenswert?

Hmm... Der maximale Portstrom beträgt doch 50mA. Da sollte ich 
eigentlivh mit 33mA noch im vertretbaren Raum sein.

von yalu (Gast)


Lesenswert?

Dann ist die Ausgangsspannung aber garantiert ein ganzes Stück über
0V. Die Controller-Ausgänge haben einen nicht zu vernachlässigenden
Innenwiderstand. Schau mal ins Datenblatt. Da gibt es irgendwo
Diagramme, in denen die Ausgangsspannung über dem Ausgangsstrom
aufgetragen ist.

von Benny (Gast)


Lesenswert?

Hallo!

Ihr habt recht... auf Seite 282 ist im Diagramm ablesbar, dass bei 33mA 
die 0V nicht erreicht wird. Da ist von ca. 0,7V die Rede. Welche andere 
Möglichkeiten gäbe es? Mein Problem ist: Alle Pins des Atmega 8535 sind 
belegt - damit fällt die Möglichkeit über einen Transistor auf GND zu 
schalten flach... ginge anstelle von Pull-Up Widerständen Pull-Down 
Widerstände zu nehmen (auch 150 Ohm)? Dann müsste man eben am anderen 
ADC-Pin kein GND sondern HIGH setzen... was meint Ihr?

von Karl H. (kbuchegg)


Lesenswert?

Benny wrote:
> Hallo!
>
> Ihr habt recht... auf Seite 282 ist im Diagramm ablesbar, dass bei 33mA
> die 0V nicht erreicht wird. Da ist von ca. 0,7V die Rede. Welche andere
> Möglichkeiten gäbe es?

Du könntest aus deiner Messung den realen Innenwiderstand des
Pins ausrechnen und den in deinen Formeln berücksichtigen.

von Benny (Gast)


Lesenswert?

Wenn dieser bei allen ADC-Pins gleich ist dann ja - ich messe nicht nur 
1 gegen 2 sondern bspw. auch 7 gegen 1 etc. Da die Schaltung irgendwann 
in größeren Stückzahlen gebaut wird müsste man wahrscheinlich bei allen 
AVRs seperate Programme bereitstellen...

von Benny (Gast)


Angehängte Dateien:

Lesenswert?

so ich war euch noch ein Schaltbild schuldig...

Zum Verständnis: Mit dem ADC sollen Lautsprecher ohmisch durchgemessen 
werden. Alle nutzen die gleichen Steckverbindungen. Es gibt LS von 4 Ohm 
bis (mit Vorwiderstand) 800 Ohm. Dieser Bereich sollte der ADC messen 
können. Dabei soll der µC selbstständig anzeigen, ob der Lautsprecher 
symetrisch, unsym1 oder unsym2 betrieben wird.

Leider stehe ich vor dem Problem, dass bei kleinen ohmschen Werten der 
2te Pullup das Ganze mit bis zu 75 Ohm belastet (im Falle eines 
Kurzschlusses).

Damit sinken die 5V auf 3,7V ab. Bei 150 Ohm Last (ohne LS) erreiche ich 
4,3V.

Welchen anderen Weg könnte helfen das Problem zu lösen? Die Spannung ist 
ja nicht stabil aufgrund der Last...

von gast (Gast)


Lesenswert?

<<Welchen anderen Weg könnte helfen das Problem zu lösen? Die Spannung 
ist
<<ja nicht stabil aufgrund der Last...

mach sie doch lastunabhängig
schau mal im tutorial unter opv grundschaltungen (Impedanzwandler)
da erfolgt im prinzip eine "trennung" zur last da beim impedanzwandler 
der eingang sehr hochohmig ist und somit den spannungsteiler den du 
nehmen solltest nicht so stark belastet

von Benny (Gast)


Lesenswert?

Was passiert mit den Lautsprechern, wenn sie mit einem OPV durchgemessen 
werden... ist immerhin Gleichspannung und könnte bei höheren Strömen die 
Membrane beschädigen...

von Benny (Gast)


Lesenswert?

Und wie bekomme ich meine 5V wieder an den ADC wenn ein OPV 
dahinterhängt? Ich muss ja um herauszufinden wie der LS angeschlossen 
ist

LS1 gegen LS2
LS1 gegen GND
LS2 gegen GND

messen können. Wenn ich beide LS-Leitungen mit einem OP als 
Impedanzwandler versehe habe ich keine Möglichkeit LS1 gegen LS2 zu 
messen, da der OP keine Rückkopplung auf den Eingang macht.

Evtl. reichen meine Elektronikkentnisse dazu auch nicht aus ;)

von Benny (Gast)


Lesenswert?

noch jemand Ideen, wie man das mit OPs und Rückopplung machen könnte? 
Evtl mit Analog Switches?

von Gast (Gast)


Lesenswert?

> Was passiert mit den Lautsprechern, wenn sie mit einem OPV durchgemessen
> werden... ist immerhin Gleichspannung und könnte bei höheren Strömen die
> Membrane beschädigen...

Du meinst bei deiner Lösung währe es besser?
Lass einen sehr kleinen Konstanten Strom durch den Lautsprecher fließen 
und miß die Spannung an LS1 und LS2 gleichzeitig.

von 3351 (Gast)


Lesenswert?

Lautsprecher... 4 Ohm ? Haben sie aber nur bei 1000Hz, und nicht bei DC.

von Benny (Gast)


Lesenswert?

genau da ist mein schaltungstechnisches Problem... ich muss manchmal 
zwischen Pin 1 und 2 messen, manchmal zwischen Pin 1 und 3 und manchmal 
zwischen Pin 2 und 3 messen... je nachdem welche Sorte Lautsprecher 
angeschlossen wird. Bedeutet: kein Pin ist wirklich fest wo man den 
konstanten Strom durchjagen könnte.

von Thilo M. (Gast)


Lesenswert?

Du könntest einen Analogschalter wie den 4052 benutzen.
Damit schaltest du immer ein Schalterpaar zu, alle deine angegeben 
Varianten.
Der eine Schalter schaltet den Konstantstrom, der andere die 
Messpannung.

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.