Ekvationslösning för att finna resistans
Ekvationslösning för att finna resistans
Jag har en tempgivare X ansluten med tre ledare som alla har samma (okända) resistans Y.
Min mikrokontroller har två ADC som mäter spänning Ua och Ub.
Empiriskt kan jag simulera och räkna fram ungefär hur jag ska multiplicera dessa spänningar för att få fram X, men skulle gärna vilja ha hjälp att lösa ut en formel för det: Är det någon som kan komma med lite tips?
Min mikrokontroller har två ADC som mäter spänning Ua och Ub.
Empiriskt kan jag simulera och räkna fram ungefär hur jag ska multiplicera dessa spänningar för att få fram X, men skulle gärna vilja ha hjälp att lösa ut en formel för det: Är det någon som kan komma med lite tips?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Ekvationslösning för att finna resistans
Det blir en del algebra. Enklast är nog s k nodanalys, d v s använd kirschoffs strömlag i alla noder (knutpunkter).
NODANALYS
Beräkningsjorda ledaren längst ner i figuren
Sätt potentialen i noden där resistanser Y, Y och X är sammankopplade till Uc.
Nodanalys ger följande 2 ekvationer:
1. (5-Ua)/3,9k = Ua/36k +(Ua-Uc)/Y
2. (Ua-Uc)/Y = Uc/(Y+36k) + Uc/(X+Y)
Spänningsdelning ger:
3. Ub =Uc *36k/(36k+Y)
Det är alltså 3 ekvationer och 3 obekanta X, Y och Uc. Kan alltså lösas.
Förslag till lösning:
Lös ur Uc ur ekvation 3 och sätt in i ekvation 1. Då kan du lösa ut Y ur den erhållna ekvationen.
Därefter kan X lösas ur ekvation 2.
NODANALYS
Beräkningsjorda ledaren längst ner i figuren
Sätt potentialen i noden där resistanser Y, Y och X är sammankopplade till Uc.
Nodanalys ger följande 2 ekvationer:
1. (5-Ua)/3,9k = Ua/36k +(Ua-Uc)/Y
2. (Ua-Uc)/Y = Uc/(Y+36k) + Uc/(X+Y)
Spänningsdelning ger:
3. Ub =Uc *36k/(36k+Y)
Det är alltså 3 ekvationer och 3 obekanta X, Y och Uc. Kan alltså lösas.
Förslag till lösning:
Lös ur Uc ur ekvation 3 och sätt in i ekvation 1. Då kan du lösa ut Y ur den erhållna ekvationen.
Därefter kan X lösas ur ekvation 2.
Re: Ekvationslösning för att finna resistans
Tack för inriktningen, jag försökte först få till det med bara två ekvationer men det går ju inte.
Oavsett detta så blir det mer komplicerat än jag hade hoppats på, antagligen har jag gjort fel någonstans...
Till att börja med så bytte jag namn på spänningarna till a, b, c för att förenkla, och 3,9k motståndet ändrades till 3,6k. Nodanalys ger följande 2 ekvationer:
1. (5-a)/3600 = a/36000 +(a-c)/Y
2. (a-c)/Y = c/(Y+36000) + c/(X+Y)
Spänningsdelning ger:
3. b = c * 36000/(36000+Y)
Lös ut c ur ekvation 3:
b = c * 36000/(36000+Y)
c=b(36000+Y)/36000
Sätt in c i ekvation 1:
(5-a)/3600 = a/36000 +(a-c)/Y
(5-a)/3600 = a/36000 +(a-b(36000+Y)/36000)/Y
Lös ut Y ur nya ekvation 1:
(5-a)/3600 = a/36000 +(a-b(36000+Y)/36000)/Y
Y=(36000a-36000b)/(-11a+b+50)
Sätt in c i ekvation 2:
(a-c)/Y = c/(Y+36000) + c/(X+Y)
(a-b(36000+Y)/36000)/Y = (b(36000+Y)/36000)/(Y+36000) + (b(36000+Y)/36000)/(X+Y)
Sätt in Y i nya ekvation 2:
(a-b(36000+(36000a-36000b)/(-11a+b+50))/36000)/((36000a-36000b)/(-11a+b+50)) = (b(36000+(36000a-36000b)/(-11a+b+50))/36000)/((36000a-36000b)/(-11a+b+50)+36000) + (b(36000+(36000a-36000b)/(-11a+b+50))/36000)/(X+(36000a-36000b)/(-11a+b+50))
Nu börjar det bli alldeles för många termer för att jag ska ha en chans att försöka lösa ut X, så jag fuskar och tar hjälp av symbolab.com
Det hittar visserligen en lösning men det är absurt många termer:
\(X=\frac{43560000a^5-126720000a^4b-613800000a^4+86400000a^3b^2+1803600000a^3b+2880000000a^3-2880000a^2b^3-1224000000a^2b^2-8550000000a^2b-4500000000a^2-360000ab^4+32400000ab^3+5760000000ab^2+13500000000ab+1800000b^4-90000000b^3-9000000000b^2}{10\left(-11a+b+50\right)\left(a^2b^2-8000a^2+1705a^3-121a^4+5b^3-ab^3+12500a-12500b-1705a^2b+121a^3b-5ab^2+8000ab\right)}\)
Det är så många termer så det är nästan omöjligt att räkna manuellt utan att göra fel för att se om det stämmer...
Har jag gjort fel, eller är detta "enklaste" lösningen? Kan man förenkla genom att inte kräva ett exakt svar utan nöja sig med två decimaler?
Oavsett detta så blir det mer komplicerat än jag hade hoppats på, antagligen har jag gjort fel någonstans...
Till att börja med så bytte jag namn på spänningarna till a, b, c för att förenkla, och 3,9k motståndet ändrades till 3,6k. Nodanalys ger följande 2 ekvationer:
1. (5-a)/3600 = a/36000 +(a-c)/Y
2. (a-c)/Y = c/(Y+36000) + c/(X+Y)
Spänningsdelning ger:
3. b = c * 36000/(36000+Y)
Lös ut c ur ekvation 3:
b = c * 36000/(36000+Y)
c=b(36000+Y)/36000
Sätt in c i ekvation 1:
(5-a)/3600 = a/36000 +(a-c)/Y
(5-a)/3600 = a/36000 +(a-b(36000+Y)/36000)/Y
Lös ut Y ur nya ekvation 1:
(5-a)/3600 = a/36000 +(a-b(36000+Y)/36000)/Y
Y=(36000a-36000b)/(-11a+b+50)
Sätt in c i ekvation 2:
(a-c)/Y = c/(Y+36000) + c/(X+Y)
(a-b(36000+Y)/36000)/Y = (b(36000+Y)/36000)/(Y+36000) + (b(36000+Y)/36000)/(X+Y)
Sätt in Y i nya ekvation 2:
(a-b(36000+(36000a-36000b)/(-11a+b+50))/36000)/((36000a-36000b)/(-11a+b+50)) = (b(36000+(36000a-36000b)/(-11a+b+50))/36000)/((36000a-36000b)/(-11a+b+50)+36000) + (b(36000+(36000a-36000b)/(-11a+b+50))/36000)/(X+(36000a-36000b)/(-11a+b+50))
Nu börjar det bli alldeles för många termer för att jag ska ha en chans att försöka lösa ut X, så jag fuskar och tar hjälp av symbolab.com
Det hittar visserligen en lösning men det är absurt många termer:
\(X=\frac{43560000a^5-126720000a^4b-613800000a^4+86400000a^3b^2+1803600000a^3b+2880000000a^3-2880000a^2b^3-1224000000a^2b^2-8550000000a^2b-4500000000a^2-360000ab^4+32400000ab^3+5760000000ab^2+13500000000ab+1800000b^4-90000000b^3-9000000000b^2}{10\left(-11a+b+50\right)\left(a^2b^2-8000a^2+1705a^3-121a^4+5b^3-ab^3+12500a-12500b-1705a^2b+121a^3b-5ab^2+8000ab\right)}\)
Det är så många termer så det är nästan omöjligt att räkna manuellt utan att göra fel för att se om det stämmer...
Har jag gjort fel, eller är detta "enklaste" lösningen? Kan man förenkla genom att inte kräva ett exakt svar utan nöja sig med två decimaler?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Ekvationslösning för att finna resistans
Jag varnade för att det blir en del algebra.
Det blir jättestora uttryck om du försöker skriva X som en funktion av Ua och Ub.
Det blir betydligt enklare om du först beräknar Y som en funktion av Ua och Ub
och sedan beräknar X som funktion av Ua, Ub och Y.
Det blir jättestora uttryck om du försöker skriva X som en funktion av Ua och Ub.
Det blir betydligt enklare om du först beräknar Y som en funktion av Ua och Ub
och sedan beräknar X som funktion av Ua, Ub och Y.
Re: Ekvationslösning för att finna resistans
Japp ser helt klart att det blir massor av algebra
Absolut kan man ha det som två formler och två steg men jag lyckas inte lösa ut X som en funktion av a, b, Y.
Menar du att jag ska göra det en gång med känt Y och skriva ner alla steg, sedan låta mikroprocessorn göra alla stegen varje gång mätningen har gjorts?
Edit: jag kan ju bortse från ekvationerna och skriva en ny formel baserat på schemat som utgår från att Y är känd, provar detta nu.
Edit2: Jag får inte till det. Om jag applicerar Kirchoffs lag och försöker räkna ut X så slutar det ju bara med att jag skriver ut samma ekvation du började med.
Absolut kan man ha det som två formler och två steg men jag lyckas inte lösa ut X som en funktion av a, b, Y.
Menar du att jag ska göra det en gång med känt Y och skriva ner alla steg, sedan låta mikroprocessorn göra alla stegen varje gång mätningen har gjorts?
Edit: jag kan ju bortse från ekvationerna och skriva en ny formel baserat på schemat som utgår från att Y är känd, provar detta nu.
Edit2: Jag får inte till det. Om jag applicerar Kirchoffs lag och försöker räkna ut X så slutar det ju bara med att jag skriver ut samma ekvation du började med.
Re: Ekvationslösning för att finna resistans
Man kan ju förenkla innan man börja räkna.
Hur stor är resistansen Y ungefär?
Om den är extremt mycket mindre än 36 kohm kan man ju försumma spänningdelningen och man behöver inte införa den obekanta potentialen Uc och det blir bara 2 ekvationer och 2 obekanta.
Ett annat sätt att bara få 2 ekvationer och 2 obekanta är att före mätning av Ub sätta in en Op kopplad som spänningsföljare mellan Y och 36 kohm.
Hur stor är resistansen Y ungefär?
Om den är extremt mycket mindre än 36 kohm kan man ju försumma spänningdelningen och man behöver inte införa den obekanta potentialen Uc och det blir bara 2 ekvationer och 2 obekanta.
Ett annat sätt att bara få 2 ekvationer och 2 obekanta är att före mätning av Ub sätta in en Op kopplad som spänningsföljare mellan Y och 36 kohm.
Senast redigerad av ghu 10 oktober 2021, 21:47:03, redigerad totalt 1 gång.
Re: Ekvationslösning för att finna resistans
Y är 0-10 Ohm, vi behöver inte veta vad Y är i verkligheten (fast det var ju uppenbarligen den enkla biten).
X är 90-200 Ohm, önskar bestämma X med två decimaler.
Har ingen möjlighet att sätta in någon operationsförstärkare, då hade det hela blivit mycket enklare och man hade sluppit avancerad algebra.
X är 90-200 Ohm, önskar bestämma X med två decimaler.
Har ingen möjlighet att sätta in någon operationsförstärkare, då hade det hela blivit mycket enklare och man hade sluppit avancerad algebra.
Re: Ekvationslösning för att finna resistans
Om Y är max 10 ohm så borde man kunna försumma spänningsdelningen mellan Y och 36 kohm och bara få 2 ekvationer med 2 obekanta. D v s byt ut Uc mot Ub i ekvationerna 1 och 2. Strunta i ekvation 3
Re: Ekvationslösning för att finna resistans
Även om man gör så och skippar c blir det en lång formel med väldigt stora tal i slutändan:
\(X=\frac{1188000ab^2-5400000b^2+7128000a^2b-72000000ab+180000000b-3960000a^3+37800000a^2-90000000a}{2\left(62500+8525a^2-605a^3-2500b-40000a-121a^2b+1100ab\right)}\)
Jag provar att göra lite curve fitting.
Följande enkla formel ger X ifrån b när Y=0:
X = 0.3016439 + 714.9197*b + 199.3765*b^2
Om Y=1 gäller följande:
X = -0.693086 + 715.1008*b + 199.6127*b^2
Om Y=5 gäller följande:
X = -4.664814 + 715.7605*b + 200.6567*b^2
Om Y=10 gäller följande:
X = -9.630866 + 716.6124*b + 201.8735*b^2
Första parametern kan vi kalla e, den passar följande kurva:
e = -0.9931827*Y + 0.3009503
Andra parametern kan vi kalla f, den passar följande kurva:
f = 714.9197 + 0.1862556*Y - 0.005539667*Y^2 + 0.0003841111*Y^3
Tredje parametern kan vi kalla g, den passar följande kurva:
g = 199.3765 + 0.22778*Y + 0.009112*Y^2 - 0.000692*Y^3
Då blir alltså:
X = e + f*b + g*b^2
Detta blir ju ganska många steg:
Först räkna ut Y från a och b
Sedan räkna ut e, f och g från Y
Slutligen beräkna X från b med konstanterna e, f, g
\(X=\frac{1188000ab^2-5400000b^2+7128000a^2b-72000000ab+180000000b-3960000a^3+37800000a^2-90000000a}{2\left(62500+8525a^2-605a^3-2500b-40000a-121a^2b+1100ab\right)}\)
Jag provar att göra lite curve fitting.
Följande enkla formel ger X ifrån b när Y=0:
X = 0.3016439 + 714.9197*b + 199.3765*b^2
Om Y=1 gäller följande:
X = -0.693086 + 715.1008*b + 199.6127*b^2
Om Y=5 gäller följande:
X = -4.664814 + 715.7605*b + 200.6567*b^2
Om Y=10 gäller följande:
X = -9.630866 + 716.6124*b + 201.8735*b^2
Första parametern kan vi kalla e, den passar följande kurva:
e = -0.9931827*Y + 0.3009503
Andra parametern kan vi kalla f, den passar följande kurva:
f = 714.9197 + 0.1862556*Y - 0.005539667*Y^2 + 0.0003841111*Y^3
Tredje parametern kan vi kalla g, den passar följande kurva:
g = 199.3765 + 0.22778*Y + 0.009112*Y^2 - 0.000692*Y^3
Då blir alltså:
X = e + f*b + g*b^2
Detta blir ju ganska många steg:
Först räkna ut Y från a och b
Sedan räkna ut e, f och g från Y
Slutligen beräkna X från b med konstanterna e, f, g
Re: Ekvationslösning för att finna resistans
Jag hittade ett intressant program som heter GraphPad Prism, det gick att ladda ner i testversion.
Enligt instruktionerna här kan man göra curve fitting med två oberoende ingångsvariabler: https://www.graphpad.com/guides/prism/l ... wo_or_.htm
Jag använde metoden med diagonala värden i tabellen och följande ekvation för att köra analysen:
Y=B0 + B1*X + B2*X^2 + B3*X^3 + B4*a + B5*a^2 + B6*a^3
I resultatet blir formeln såhär:
\(X=0,1608 + 1437*b + 185,7*b^2 -18,81*b^3 -719,6*a + 0,2863*a^2 + 41,98*a^3\)
Resultat: värdet på X (90-200) stämmer för alla värden på Y (0-10) med ett största fel på +0,006 Ohm.
Enligt instruktionerna här kan man göra curve fitting med två oberoende ingångsvariabler: https://www.graphpad.com/guides/prism/l ... wo_or_.htm
Jag använde metoden med diagonala värden i tabellen och följande ekvation för att köra analysen:
Y=B0 + B1*X + B2*X^2 + B3*X^3 + B4*a + B5*a^2 + B6*a^3
I resultatet blir formeln såhär:
\(X=0,1608 + 1437*b + 185,7*b^2 -18,81*b^3 -719,6*a + 0,2863*a^2 + 41,98*a^3\)
Resultat: värdet på X (90-200) stämmer för alla värden på Y (0-10) med ett största fel på +0,006 Ohm.
Re: Ekvationslösning för att finna resistans
Det känns ju onödigt bra med 0,006 ohms fel.
Har du provat med gradtal 2?
Har du provat med gradtal 2?
Re: Ekvationslösning för att finna resistans
När man ska börja teckna ekvationerna kan det vara olämpligt att ha samma beteckningen "Y" för flera olika motstånd som sitter på olika ställen.
De har ju olika funktion även om de i detta fallet råkar ha samma Ohm-värde.
Det är nog bättre att kalla dem RY1, RY2 och RY3 eller liknande.
Motstånden med kända värden, kan man kalla R1, R2 och R3. Då slipper man hantera siffervärden vid utbrytningar och omskrivning av ekvationer.
De har ju olika funktion även om de i detta fallet råkar ha samma Ohm-värde.
Det är nog bättre att kalla dem RY1, RY2 och RY3 eller liknande.
Motstånden med kända värden, kan man kalla R1, R2 och R3. Då slipper man hantera siffervärden vid utbrytningar och omskrivning av ekvationer.
Re: Ekvationslösning för att finna resistans
Tredje graden var mycket riktigt onödigt bra.
Andra graden ger ett fel på 0,08 Ohm vilket är en magnitud bättre än upplösningen på ADC.
(Nu också ändrat till 1k pullup för att få bättre upplösning)
\(X = 3,351+391,3*b+55,75*b^2-207,4*a+10,06*a^2\)
Haralt: tretrådsmätningen av PT100 bygger just på att alla "Y" är identiska, det är tre stycken lika långa ledare av samma material och med samma typ av skarvar.
Ser inte vad man skulle vinna på att dela upp dessa, då blir ekvationen bara svårare att förenkla.
Andra graden ger ett fel på 0,08 Ohm vilket är en magnitud bättre än upplösningen på ADC.
(Nu också ändrat till 1k pullup för att få bättre upplösning)
\(X = 3,351+391,3*b+55,75*b^2-207,4*a+10,06*a^2\)
Haralt: tretrådsmätningen av PT100 bygger just på att alla "Y" är identiska, det är tre stycken lika långa ledare av samma material och med samma typ av skarvar.
Ser inte vad man skulle vinna på att dela upp dessa, då blir ekvationen bara svårare att förenkla.