Forum: Analoge Elektronik und Schaltungstechnik Messung von Widerstandswerten bei 4 Widerständen in Ringanordnung


von A. D. (egsler)


Angehängte Dateien:

Lesenswert?

Ich habe hier eine Schaltung mit vier Widerständen in Ringanordnung. Ich 
würde gerne die Werte der Widerstände messen, ohne sie auszulöten. Ich 
dachte ich könnte einfach mal schnell über alle vier Widerstände den 
Wert messen und mit den vier Werten über den jeweiligen Ersatzwiderstand 
die einzelnen echten Rs berechnen. Aber jetzt wo ich die Gleichungen 
aufgestellt habe, scheint mir das Ganze doch nicht mehr so ganz trivial 
zu sein...

Von den vier Gleichungen ausgehend müsste ich jetzt nach und nach in 
einander einsetzen, aber das ergibt sehr schnell sehr unübersichtliche 
Terme höherer Ordnung...

Übersehe ich etwas, oder gibt es da leider keinen leichteren Weg, die 
einzelnen Widerstandswerte zu ermitteln? Auslöten würd ich aufgrund der 
Bauteilgröße sehr gerne vermeiden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

A. D. schrieb:
> Auslöten
Du musst ja nur 1 einzigen Pin auslöten, um den Stromkreis aufzutrennen.

: Bearbeitet durch Moderator
von Günter N. (gnatz)


Lesenswert?

Da ja auch jede Widerstandsmessung eine kleine Spannung an die 
Widerstände anlegt, könnte man einfach eine Spannung über einen der 
Widerstände legen und dann an die Spannungen über den aus den anderen 3 
Widerständen gebildeten "Teiler" messen. Dann hat man das Verhältnis 
dieser Widerstände zueinander. So kann man sich an die Bestimmung der 
Widerstände leicht herantasten.

von Günter N. (gnatz)


Lesenswert?

Alternativ kann man auch einzelne Widerstände überbrücken und aus der 
Veränderung des Restwiderstandes auf deren Wert schließen.

von Anselm 6. (anselm68)


Lesenswert?

Das funktioniert nur wenn keine weiteren Bauteile angeschlossen sind.
Diese würden deine Messwerte noch beeinflussen.

von Bruno V. (bruno_v)


Lesenswert?

Lege 1V an R1. Dann kannst Du an R2, R3 und R4 die Spannung messen und 
kennst deren Verhältnisse.

Miss genauso z.B. R1,R2 und R3. Dann hast Du alle Verhältnisse, also 
R2=a*R1, R3=b*R1 und R4=c*R1. Es gilt dann:

 * d = a+b+c
 * R2+R2+R4 = R1*d
 * R1 + R2+R2+R4 = R1(1+d)

Den gesamtwiderstand kannst Du dann mit einer Ohmmessung bestimmen. Z.B. 
über Re1 = R1*(R2+R3+R4)/(R1+R2+R3+R4) = R1²*d / R1(1 + d) = R1*d/(1+d)

--> Re1(1+d)/d = R1

: Bearbeitet durch User
von Michi S. (mista_s)


Lesenswert?

Lothar M. schrieb:
> A. D. schrieb:
>> Auslöten
> Du musst ja nur 1 einzigen Pin auslöten, um den Stromkreis
> aufzutrennen.

Oder an einer Stelle die Leiterbahn unterbrechen...

von A. D. (egsler)


Lesenswert?

Ich danke euch allen für den Input. Ich hab noch etwas versucht über die 
Verhältnisse zu gehen, aber im Endeffekt hab ich jetzt wirklich eine 
Leiterbahn durchtrennt und konnte damit alle Rs einzeln messen. Das war 
jetzt die schnellste Möglichkeit. Auch wenns mich etwas wurmt, das jetzt 
nicht geschickter gelöst zu haben...

von Yalu X. (yalu) (Moderator)


Lesenswert?

Es wurden ja bereits sehr gute Vorschläge gemacht, wie du durch eine
geschickte Vorgehensweise bei den Messungen die anschließende Berechnung
stark vereinfachen kannst.

Aber auch mit deinen Messungen von Re[1..4] kann man zu einem Ergebnis
kommen.

A. D. schrieb:
> Von den vier Gleichungen ausgehend müsste ich jetzt nach und nach in
> einander einsetzen, aber das ergibt sehr schnell sehr unübersichtliche
> Terme höherer Ordnung...

So ein nichtlineares Gleichungssystem löst man deswegen am besten
numerisch. In Python mit der Scipy-Bibliothek geht das ganz leicht:
1
from scipy.optimize import fsolve
2
3
m = ( 1971, 1716, 1056, 2379 )  # Messungen
4
5
print(fsolve(lambda r,m: (r-m)*sum(r)-r*r, m, (m,), xtol=1e-9))

Ausgabe:
1
[2700. 2200. 1200. 3900.]

Der Code funktioniert auch für Ringe aus 3, 5 oder mehr Widerständen.

: Bearbeitet durch Moderator
von A. D. (egsler)


Lesenswert?

In Python wollte ich mich eh schon ewig mal reinfuchsen, vielleicht 
nutze ich das mal als Motivation, mir das genauer anzuschauen ;)

Ich kann aber die Eingabe deiner Funktion nicht ganz nachvollziehen. Zum 
Teil vermutlich, weil ich die Python-Syntax noch nicht kenne.
Was bedeuten lamda und r? Wo kommt ganz generell die verwendete Funktion 
her?

von Rainer W. (rawi)


Lesenswert?

A. D. schrieb:
> Auch wenns mich etwas wurmt, das jetzt nicht geschickter gelöst zu haben...
Zu recht, auch wenn es im Einzelfall die schnellste Lösung ist.

Yalu X. schrieb:
> So ein nichtlineares Gleichungssystem löst man deswegen am besten
> numerisch. In Python mit der Scipy-Bibliothek geht das ganz leicht:

Selbst Excel oder LibreOffice Calc können das mit dem Solver-Tool.

: Bearbeitet durch User
von Martin H. (horo)


Lesenswert?

A. D. schrieb:
> Was bedeuten lamda und r? Wo kommt ganz generell die verwendete Funktion her?
1
Parallelschaltung Ra // Rb -> R = Ra * Rb / (Ra + Rb)
2
Ra = R1, Rb = R2 + R3 + R4 = R1 + R2 + R3 + R4 - R1 = sum(R) - R1
3
Mx (x=1,2,3,4) ist der gemessene Widerstand, z.B.
4
M1 = (R1 * (R2 + R3 + R4)) / (R1 + R2 + R3 + R4)
oder allgemein:
1
Mx = Rx * (sum(R) - Rx) / sum(R)
bzw. nach Umformung - Schritt für Schritt:
1
Mx * sum(R) = Rx * (sum(R) - Rx)
2
Mx * sum(R) = Rx * sum(R) - Rx * Rx
3
0 = Rx * sum(R) - Rx * Rx - Mx * sum(R)
4
0 = (Rx - Mx) * sum(R) - Rx * Rx

Es wird die Nullstelle für die vier Messwerte x=1,2,3,4 gesucht:
1
print(fsolve(lambda r,m: (r-m)*sum(r)-r*r, m, (m,), xtol=1e-9))
Das Schlüsselwort "lambda" definiert eine anonyme Funktion mit den 
Parametern r und m (die in diesem Fall Vektoren (Liste bzw. Array) mit 4 
Werten sind), die Funktion folgt auf den Doppelpunkt, das m bezeichnet 
den Startpunkt der Iteration (da man nichts Besseres weiß) und (m,) ist 
das zweite Argument für die Funktion (so ist halt die Syntax), xtol 
bestimmt die Genauigkeit, wann die Nullstellensuche abgebrochen wird.
Der Solver eiert dann die Zahlen durch, probiert ob es passt (im ersten 
Versuch natürlich noch nicht) und modifiziert die Startwerte solange, 
bis ein passend genaues Ergebnis herauskommt, das dann ausgegeben wird.
Das ist das ganze Hexenwerk.

Statt der anonymen Funktion könnte man auch eine benannte Funktion 
definieren und im Solver aufrufen:
1
def funktion(r, m):
2
    return (r-m)*sum(r)-r*r
3
4
print(fsolve(lambda r,m: funktion(r, m), m, (m,), xtol=1e-9))

That's all, Folks!

von A. D. (egsler)


Lesenswert?

Oh je, die Syntax von Python ist aber... gewöhnungsbedürftig^^

Aber vielen Dank für die ausführliche Erklärung, die Herleitung der 
Funktion ist super nachvollziehbar!

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Martin H. schrieb:
> Statt der anonymen Funktion könnte man auch eine benannte Funktion
> definieren und im Solver aufrufen:
>
> def funktion(r, m):
>     return (r-m)*sum(r)-r*r
>
> print(fsolve(lambda r,m: funktion(r, m), m, (m,), xtol=1e-9))

Wenn die Funktion einen Namen hat, lässt man das lambda natürlich weg
und übergibt die Funktion direkt als erstes Argument an fsolve:
1
print(fsolve(funktion, m, (m,), xtol=1e-9))

Den Lambda-Ausdruck habe ich nur verwendet, um die Anzahl der Codezeilen
zu verringern. Wenn der Funktionsrumpf kurz ist und die Funktion nur an
einer einzigen Stelle im Code verwendet wird, bietet sich das an, man
kann aber je nach Geschmack auch darauf verzichten.

A. D. schrieb:
> Oh je, die Syntax von Python ist aber... gewöhnungsbedürftig^^

Der angehängte Code ist eine leichter nachvollziehbare und kommentierte
Version des Programms ohne Vektorarithmetik und Lambda für eine feste
Anzahl (4) von Widerständen.

von A. D. (egsler)


Lesenswert?

Vielen Dank, das bietet einen spannenden Einsteig zum Rumprobieren =)

von Martin H. (horo)


Lesenswert?

Yalu X. schrieb:
> Wenn die Funktion einen Namen hat, lässt man das lambda natürlich weg
> und übergibt die Funktion direkt als erstes Argument an fsolve:

Du hast natürlich recht, ich war zu fix mit copy/paste, schreibe noch, 
dass man lambda ersetzen kann und baue dann wieder ein lambda, peinlich.

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.