Messung von Widerstandswerten bei 4 Widerständen in Ringanordnung

OP #7428172
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.

Angehängte Dateien:
#7428177
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.

#7428276
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=aR1, R3=bR1 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) = R1d/(1+d)

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

OP #7428436
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...

Moderator #7428438
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.

OP #7428855
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?

#7429165
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!

Moderator #7429515
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)-rr

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.

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren