HP Forums
41 voltage divider calculation - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (/forum-10.html)
+--- Forum: HP-41C Software Library (/forum-11.html)
+--- Thread: 41 voltage divider calculation (/thread-7749.html)



41 voltage divider calculation - damaltor - 02-09-2017 02:49 PM

I made a small program for calculating voltage dividers. It allows the calculation of both resistors and the input and output voltage.
Code:
U_in --+
       |
       R1
       |
       +--- U_out
       |
       R2
       |
GND ---+--- GND

The program works similar to the TVM program on the advantage module: It starts with displaying a menu
Code:
R1 R2  UI UO
which is mapped to the top row of keys (A/B/D/E). To enter a value for one of the four variables, simply type in the value and press the corresponding button. To calculate one of the four variables after entering values for the others, press the corresponding button without entering a value before. To show the menu again, press J. This will not work if any of the keys A,B,D,E or J has assigned functions, as the program uses the user mode for the "softkeys".
If any of the values should be changed, you do not need to re-enter all values - simply enter the new value followed by the appropriate softkey and then press the key for the desired variable again.

Please note that this program is made for ease of use and is certainly not the smallest possible.

Example 1: Calculate R1 if U_in is 10V, U_out should be 3V, and R2 is 5kOhm
Code:
Input       Output
XEQ RDIV    R1 R2  UI UO (Menu)
10 D        U.IN=10.000 (Set U_in to 10V)
3 E         U.OUT=3.000 (Set U_out to 3V)
5 EEX 3 B   R2=5,000.000 (Set R2 to 5kOhm)
J           R1 R2  UI UO (Menu, optional)
A           R1=11,666.667 (Calculated optimal value for R1)

Example 2: Calculate U_out if U_in is 5V, R1 is 5kOhm and R2 is 10 kOhm. Same if input voltage is 10V.
Code:
Input       Output
XEQ RDIV    R1 R2  UI UO (Menu)
5 D         U.IN=5.000 (Set U_in to 5V)
5 EEX 3 A   R1=5,000.000 (Set R1 to 5kOhm)
10 EEX 3 B  R2=10,000.000 (Set R2 to 10kOhm)
J           R1 R2  UI UO (Menu, optional)
E           U.OUT=3.333 (Calculated output voltage)
10 D        U.IN=10.000 (Set U_in to 10V)
E           U.OUT=6.667 (new output voltage)

Example 3: Find a good resistor pair to divide 5V to 3.3V
Code:
Input       Output
XEQ RDIV    R1 R2  UI UO (Menu)
5 D         U.IN=5.000 (Set U_in to 5V)
10 EEX 3 B  R2=10,000.000 (Set R2 to 10kOhm as a guess)
3.3 E       U.OUT=3.300 (Set U_out to 3.3V)
A           R1=5,151.151 (Calculated optimal value for R1)
5.1 EEX 3 A R1=5,100.000 (as 5.1kOhm is the next standard value, select this as R1)
E           U.OUT=3.311 (If the standard valued resistor is used, the voltage will be 3.311V which should be ok for most uses)

Here is the program. It has 77 steps in 22 registers and fits on one magnetic card, using both sides. It uses storage registers 01 to 04.
Code:
01 LBL "RDIV"
02 LBL J
03 SF 27
04 CF 22
05 "R1 R2  UI UO" (two spaces in the middle)
06 PROMPT
07 GTO J
08 LBL A
09 "R1"
10 STO 03
11 FC?C 22
12 XEQ 33
13 GTO 99
14 LBL B
15 "R2"
16 STO 04
17 FC?C 22
18 XEQ 44
19 GTO 99
20 LBL D
21 "U.IN"
22 STO 01
23 FC?C 22
24 XEQ 11
25 GTO 99
26 LBL E
27 "U.OUT"
28 STO 02
29 FC?C 22
30 XEQ 22
31 GTO 99
32 LBL 11
33 RCL 02
34 RCL 03
35 *
36 RCL 04
37 /
38 RCL 02
39 +
40 STO 01
41 RTN
42 LBL 22
43 RCL 01
44 RCL 03
45 RCL 04
46 +
47 /
48 RCL 04
49 *
50 STO 02
51 RTN
52 LBL 33
53 RCL 01
54 RCL 02
55 -
56 RCL 04
57 *
58 RCL 02
59 /
60 STO 03
61 RTN
62 LBL 44
63 RCL 03
64 RCL 02
65 *
66 RCL 01
67 RCL 02
68 -
69 /
70 STO 04
71 RTN
72 LBL 99
73 "꜔=" (append =)
74 ARCL X
75 PROMPT
76 GTO J
77 END



RE: 41 voltage divider calculation - Ángel Martin - 02-13-2017 07:17 AM

Neat example, thanks for sharing it. It actually should be added to the recently published Equation Library - using SOLVE, and therefore not directly comparable with your program. (see here)

Under that framework the routine to use is below - 17 steps in all but not as fast.

Code:
01  LBL "UDIV"
02  FS? 06
03  GTO 00
04  STO IND 00
05  RCL 01
06  RCL 01
07  RCL 02
08  +
09  /
10  RCL 03
11  *
12  RCL 04
13  -
14  RTN
15  LBL 00
16  "R1 R2 U1 U2"
17  END

Cheers,
'AM


RE: 41 voltage divider calculation - damaltor - 02-13-2017 08:22 AM

Interesting idea. Feel free to add it - it would surely fit in there. I also made a version including "SOLVE" a while ago, but that would not work without the advantage module. i unfortunately lost the code... I really like that equ library!


RE: 41 voltage divider calculation - cparman - 11-07-2022 05:24 PM

Hello damaltor: Very nice program. I was wondering why you used a "U" instead of a "V" in the LBL statements pertains to (for example "U.IN".


RE: 41 voltage divider calculation - Thomas Klemm - 11-08-2022 06:28 AM

(11-07-2022 05:24 PM)cparman Wrote:  I was wondering why you used a "U" instead of a "V" in the LBL statements pertains to (for example "U.IN").

From International Electrotechnical Commission: Symbol U:
Quote:Note 2 – The name "voltage", commonly used in the English language, is an exception from the principle that a quantity name should not refer to any name of unit.

User damaltor is from Germany.
That's probably the reason.


Somewhat related: EE calculations, some not obvious


RE: 41 voltage divider calculation - Thomas Klemm - 11-09-2022 04:34 AM

This is the same program for the HP-42S:
Code:
00 { 42-Byte Prgm }
01▸LBL "UDIV"
02 MVAR "R1"
03 MVAR "R2"
04 MVAR "UI"
05 MVAR "UO"
06 RCL "R2"
07 ENTER
08 RCL+ "R1"
09 ÷
10 RCL× "UI"
11 RCL- "UO"
12 END



RE: 41 voltage divider calculation - Thomas Klemm - 11-09-2022 05:57 AM

(02-13-2017 07:17 AM)Ángel Martin Wrote:  
Code:
05  RCL 01

This should rather be:
Code:
05  RCL 02

It is the lower resistor R2.

\(
\begin{align}
U_o = U_i \frac{R_2}{R_1 + R_2}
\end{align}
\)

Compare this to the original program where UO is calculated:
Code:
42 LBL 22
43 RCL 01
44 RCL 03
45 RCL 04
46 +
47 /
48 RCL 04
49 *
50 STO 02
51 RTN

Just keep in mind that the registers correspond to different variables:
R01: UI
R02: UO
R03: R1
R04: R2