Skip to main content
1-Visitor
March 30, 2020
Question

Parallel resistors or voltage divider

  • March 30, 2020
  • 6 replies
  • 6486 views
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!

6 replies

25-Diamond I
March 30, 2020

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
15-Moonstone
March 30, 2020

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.

21-Topaz II
March 31, 2020

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.

 

 

Artiom1-VisitorAuthor
1-Visitor
April 6, 2020

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

23-Emerald IV
April 6, 2020

Here goes the brute force method:

LucMeekes_0-1586159190310.png

 

Attached is Prime 4.

 

Success!
Luc

Artiom1-VisitorAuthor
1-Visitor
April 6, 2020

Hi Luc!

 

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

Thank you a lot!

Artiom1-VisitorAuthor
1-Visitor
April 6, 2020

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

 

21-Topaz II
April 6, 2020

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

25-Diamond I
April 6, 2020

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

 

Artiom1-VisitorAuthor
1-Visitor
April 6, 2020

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!