cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Want the oppurtunity to discuss enhancements to PTC products? Join a working group! X

Parallel resistors or voltage divider

Artiom
5-Regular Member

Parallel resistors or voltage divider

Hello folks,

What would be the best approach finding the closest match of combination of given array of resistors which are connected in parallel?

For example having a number of resistors in the database I would need to find two values which will give me the closest match for known equivalent parallel resistor?

I am using full version of MathCad

Thanks!
13 REPLIES 13
Werner_E
24-Ruby V
(To:Artiom)

A brute force attack should work.

If your list of available resistors consists of n elements, then calculate the n^2 possible outcomes and use the closest.

Derbigdog
14-Alexandrite
(To:Artiom)

Here are some rules of thumb. If you put equal resistors in parallel you will get a simple fraction i.e. 1/n. For example two (2) , 10k ohm equal resistors in parallel give you 1/2 (1/n in general) of 10k or 5k ohms etc.

So if I needed 2.5k ohms of resistance then two 5k ohms resistors would work or four (4) 10k ohm resistors. 

Now if you put two (2) in parallel where one is very large (x10 or more) compared to the other then you just get a value very close to the smaller resistor.  For example a 1k ohm and a 10k ohm in parallel basically will be approximately 1k ohm (actually 910 ohm).

So if you put two resistors in parallel the equivalent will never be more than the smallest value and never less than 1/2 of the smallest one.

Also when you are working with two resistors in parallel if the first is R1 and the second is a multiple (n) of it that is  R2 = n x R1 then R1|| R2 = (n/n+1)* R1. So if you put a 100 ohm resistor in parallel with a 400 ohm resistor you get (4/5) x R1 or 750 ohms. This should make it easy to find two resistors that will work with math you can do in your head.

-MFra-
21-Topaz II
(To:Artiom)

Hi,

Let me point out that parallel resistors are current dividers, while series resistors are voltage dividers. To solve your problem you must first of all take into account the tolerance of each resistor, that is, if the resistances all have the same tolerance then the resultant has the same tolerance. It is not so obvious if the tolerances are different. For example for two resistors in parallel, the equivalent resistance has a tolerance equal to:

                                tollerances.jpg

For equal tolerances:

tollerances 1.jpg

for different tolerances:

tollerances 2.jpg

So you could create a C ++ program that, given the values and tolerances of the resistances, calculates the equivalent resistance of the parallel and goes to search into the database for the resistor with a value that is closer to that calculated taking into account also the resulting tolerance.

The inverse process is valid if, given a resistor, you look for two whose parallel, gives the given resistor.

 

 

Artiom
5-Regular Member
(To:-MFra-)

Hi MFra Topaz and Derbigdog,

Thanks for your response. I think there is misunderstanding to my question. 

I know how to find equivalent  resistance, but what I don't know, how to automate the process if I need to find 2 values which gives me the expected equivalent resistance. These two resistors should be picked form the known database.

 

similar like this, but in PTC:

 

R3=1;

int main() R[n]; //database of knows values R[0] = 1; R[1]=2; R[2]=3 etc

{ for (int i = 0; i < 10; i++)

{ for (int j = 0; j < 10; j++)

{ if ((R[i]*R[j])/(R[i]+R[j])) == R3

then { R1:=R[j]; R2:=R[i]; } } }

return 0; }

 

 

thanks

LucMeekes
23-Emerald III
(To:Artiom)

Here goes the brute force method:

LucMeekes_0-1586159190310.png

 

Attached is Prime 4.

 

Success!
Luc

Artiom
5-Regular Member
(To:LucMeekes)

Hi Luc!

 

That's great! I will try this method. It should work.

Thank you a lot!

Artiom
5-Regular Member
(To:Artiom)

Hi Luc,

 

How can I integrate more than one column of resistors in the database? Matrix does not work...R in not defined as it was a vector I suppose.

 

parallel divider.png

 

LucMeekes
23-Emerald III
(To:Artiom)

Your database should be a single column. If you specifically want a matrix there, you can write a program to work with that, but it makes things unnecessary complicated. My advice: Don't.

Also your database is corrupt: it contains the value 5 Ohm twice and three times the 7 Ohm.

 

Success!
Luc

Artiom
5-Regular Member
(To:LucMeekes)

great! thanks anyway!

LucMeekes
23-Emerald III
(To:Artiom)

You can get rid of the two iteration variables i and j,  and also from the explicit matrix Rp, by assembling all that in a single function by programming.

Have a try at it, and if you run into problems come back here with your mathcad sheet attached. Due to Express I cannot start a program, but I may be able to edit an existing program. Else other forum members may be able to help.

 

Success!
Luc

-MFra-
21-Topaz II
(To:Artiom)

Hi,

The database should respect the EIA standard values of the resistors, the most common are shown here:

resistors tolerances.jpg

so that yours database could be (for example resistors in  kΩ):

E6k.jpg

Werner_E
24-Ruby V
(To:Artiom)

Here is my version of the brute force attack I had in mind in my first answer.

Its an all-in-one routine and it calculates the table of possible achievable values every time it is called. I guess that, as long as your data table of resistance values is not really huge, this should be no performance problem. Otherwise you may change the function so its second argument is an already precalculated table.

The function also returns the value actually achieved and the relative difference - change as you need.

The function will also work with matrix of possible resistance values but I see no reason why you shouldn't use a simple vector.

Werner_E_0-1586181536834.png

Prime 4 worksheet attached

 

Artiom
5-Regular Member
(To:Werner_E)

Thank you Werner!

 

Yes, there are many ways to solve this problem. Thank you all for contributing to the solution!

It's great to have such a support!

 

Top Tags