Impedance of an RLC Circuit (Series and Parallel)
02-22-2015, 09:42 PM (This post was last modified: 02-22-2015 11:43 PM by Eddie W. Shore.)
Post: #1 Eddie W. Shore Senior Member Posts: 1,134 Joined: Dec 2013
Impedance of an RLC Circuit (Series and Parallel)
The program RLCSERIES and RLCPAREL calculate:

• The total impedance of the circuit, and its magnitude in ohms
• Phase angle in a circuit in degrees.
• Current of the series in amps.

RLCSERIES works with series circuits while RLCPAREL works with parallel circuits.

Input:
Battery/Source: enter voltage and frequency
Add as many resistors (R) (in Ohms Ω), capacitors (C) (in farad), and inductors (L) (in henrys) as needed. On the input screen, enter the real (a) and imaginary (if needed) (bi) parts separately.

Example - Series Circuit:
Series circuit powered by a 14 V, 5000 Hz battery. The circuit has: a resistor of 100 Ω, a capacitor of 3.2*10^-6 farads, and an inductor of 0.082 henrys.

Results:
Total Resistance:
100 + 2566.158792*i
Magnitude:
2568.10649035
Phase Angle:
87.7683842611°
Current:
5.45148733225 * 10^-3

RLCSERIES: HP Prime

Code:
// Impedance of a Series // EWS 2015-02-22 // Turn allow complex from real input on // Declare subroutines chsubr(); casubr(); // Main Routine EXPORT RLCSERIES() BEGIN // initial steps Z0:=0; // radian mode HAngle:=0; // counter I:=0; // battery information INPUT({V,F},"Battery Information", {"V = ","F = "}, {"Volts","Frequency (Hz)"}); chsubr(); END; // Choose Subroutine chsubr() BEGIN LOCAL ch; CHOOSE(ch,"# of Components: "+STRING(I), {"Add Resistor (R)", "Add Capacitor (C)", "Add Inductor (L)", "Calculate"}); // Execute calculation subroutine casubr(ch); END; // Calculation Subroutine casubr(x) BEGIN IF x==1 THEN INPUT(R,"Add Resistor","R =", // Impedance of a Series // EWS 2015-02-22 // Turn allow complex from real input on // Declare subroutines chsubr(); casubr(); // Main Routine EXPORT RLCSERIES() BEGIN // initial steps Z0:=0; // radian mode HAngle:=0; // counter I:=0; // battery information INPUT({V,F},"Battery Information", {"V = ","F = "}, {"Volts","Frequency (Hz)"}); chsubr(); END; // Choose Subroutine chsubr() BEGIN LOCAL ch; CHOOSE(ch,"# of Components: "+STRING(I), {"Add Resistor (R)", "Add Capacitor (C)", "Add Inductor (L)", "Calculate"}); // Execute calculation subroutine casubr(ch); END; // Calculation Subroutine casubr(x) BEGIN LOCAL a,b; IF x==1 THEN INPUT({a,b},"Resistor (Ω)", {"a =","bi="}); Z0:=Z0+(a+b*i); I:=I+1; chsubr(); END; IF x==2 THEN INPUT({a,b},"Capacitor (farad)", {"a =","bi="}); Z0:=Z0-i/(2*π*F*(a+b*i)); I:=I+1; chsubr(); END; IF x==3 THEN INPUT({a,b},"Inductor (henry)", {"a =","bi="}); Z0:=Z0+i*2*π*F*(a+b*i); I:=I+1; chsubr(); END; // Calculation IF x==4 THEN  PRINT(); PRINT("Impedance = "+Z0); PRINT("Magnitude (Ω) = "+ABS(Z0)); PRINT("Phase Angle (°) ="+ STRING(ARG(Z0)*180/π)); PRINT("Current (amps) = "+ STRING(V/ABS(Z0))); RETURN Z0; END; END; 

Example - Parallel Circuit:
Parallel circuit powered by a 14 V, 5000 Hz battery. The circuit has:
a resistor of 100 Ω, a capacitor of 3.2*10^-6 farads, and an inductor of 0.082 henrys.

RLCPAREL: HP Prime

Code:
// Impedance of a Parallel // EWS 2015-02-22 // Turn allow complex from real input on // Declare subroutines chsubr(); casubr(); // Main Routine EXPORT RLCPAREL() BEGIN // initial steps Z0:=0; // radian mode HAngle:=0; // counter I:=0; // battery information INPUT({V,F},"Battery Information", {"V = ","F = "}, {"Volts","Frequency (Hz)"}); chsubr(); END; // Choose Subroutine chsubr() BEGIN LOCAL ch; CHOOSE(ch,"# of Components: "+STRING(I), {"Add Resistor (R)", "Add Capacitor (C)", "Add Inductor (L)", "Calculate"}); // Execute calculation subroutine casubr(ch); END; // Calculation Subroutine casubr(x) BEGIN LOCAL a,b; IF x==1 THEN INPUT({a,b},"Add Resistor (Ω)", {"a =","bi ="}); Z0:=Z0+1/(a+b*i); I:=I+1; chsubr(); END; IF x==2 THEN INPUT({a,b},"Capacitor (farad)", {"a =","bi="}); Z0:=Z0-1/(i/(2*π*F*(a+b*i))); I:=I+1; chsubr(); END; IF x==3 THEN INPUT({a,b},"Inductor (henry)", {"a =","bi="}); Z0:=Z0+1/(i*2*π*F*(a+b*i)); I:=I+1; chsubr(); END; // Termination IF x==4 THEN Z0:=1/Z0; PRINT(); PRINT("Total Resistance = "+Z0); PRINT("Magnitude (Ω) = "+ABS(Z0)); PRINT("Phase Angle (°) ="+ STRING(−ARG(Z0)*180/π)); PRINT("Current (amps) = "+ STRING(V/ABS(Z0))); RETURN Z0; END; END;

Sources:
ElectronicsTutorials. Series RLC Circuit Analysis URL: http://www.electronics-tutorials.ws/acci...rcuit.html
Retrieved February 22, 2015

ElectronicsTutorials. Parallel RLC Circuit Analysis URL:
http://www.electronics-tutorials.ws/acci...rcuit.html
Retrieved February 22, 2015

Van Valkenburg, Mac E. (Editor) and Wendy M. Middelton (Editor) "Reference Data for Engineers: Radio, Electronics, Computer, and Communications" 9th Edition. Newnes, Butterworth-Heinemann: Wolburn, MA 2002. Print.

Attached File(s) Thumbnail(s)  02-23-2015, 11:28 AM (This post was last modified: 02-23-2015 11:33 AM by Thomas_Sch.)
Post: #2
 Thomas_Sch Senior Member Posts: 312 Joined: Dec 2013
RE: Impedance of an RLC Circuit (Series and Parallel)
Hello Eddy,

many thanks for this programs!

Maybe your routines for RLCSERIES are partly two times in the first code block.
casubr(x) ends after "INPUT(R,"Add Resistor","R =", " then the code starts new.

Thomas
04-03-2015, 01:05 PM
Post: #3 salvomic Senior Member Posts: 1,379 Joined: Jan 2015
RE: Impedance of an RLC Circuit (Series and Parallel)
(02-23-2015 11:28 AM)Thomas_Sch Wrote:  Maybe your routines for RLCSERIES are partly two times in the first code block.
casubr(x) ends after "INPUT(R,"Add Resistor","R =", " then the code starts new.
Thomas

yes, Thomas,
I think it should be so:
Code:
 // Impedance of a Series // EWS 2015-02-22 // Turn allow complex from real input on // Declare subroutines chsubr(); casubr(); // Main Routine EXPORT RLCSERIES() BEGIN // initial steps Z0:=0; // radian mode HAngle:=0; // counter I:=0; // battery information INPUT({V,F},"Battery Information", {"V = ","F = "}, {"Volts","Frequency (Hz)"}); chsubr(); END; // Choose Subroutine chsubr() BEGIN LOCAL ch; CHOOSE(ch,"# of Components: "+STRING(I), {"Add Resistor (R)", "Add Capacitor (C)", "Add Inductor (L)", "Calculate"}); // Execute calculation subroutine casubr(ch); END; // Calculation Subroutine casubr(x) BEGIN LOCAL a,b; IF x==1 THEN INPUT({a,b},"Resistor (Ω)", {"a =","bi="}); Z0:=Z0+(a+b*i); I:=I+1; chsubr(); END; IF x==2 THEN INPUT({a,b},"Capacitor (farad)", {"a =","bi="}); Z0:=Z0-i/(2*π*F*(a+b*i)); I:=I+1; chsubr(); END; IF x==3 THEN INPUT({a,b},"Inductor (henry)", {"a =","bi="}); Z0:=Z0+i*2*π*F*(a+b*i); I:=I+1; chsubr(); END; // Calculation IF x==4 THEN  PRINT(); PRINT("Impedance = "+Z0); PRINT("Magnitude (Ω) = "+ABS(Z0)); PRINT("Phase Angle (°) ="+ STRING(ARG(Z0)*180/π)); PRINT("Current (amps) = "+ STRING(V/ABS(Z0))); RETURN Z0; END; END;

Isn't it, Eddie?

∫aL√0mic (IT9CLU) :: HP Prime 50g 41CX 71b 42s 39s 35s 12C 15C - DM42, DM41X - WP34s Prime Soft. Lib
04-05-2015, 04:02 AM
Post: #4 Eddie W. Shore Senior Member Posts: 1,134 Joined: Dec 2013
RE: Impedance of an RLC Circuit (Series and Parallel)
I see my mistake... first of all, apologizes, second of all, here is the code with nothing repeated:

Code:
// Impedance of a Series // EWS 2015-02-22 // Turn allow complex from real input on // Declare subroutines chsubr(); casubr(); // Main Routine EXPORT RLCSERIES() BEGIN // initial steps Z0:=0; // radian mode HAngle:=0; // counter I:=0; // battery information INPUT({V,F},"Battery Information", {"V = ","F = "}, {"Volts","Frequency (Hz)"}); chsubr(); END; // Choose Subroutine chsubr() BEGIN LOCAL ch; CHOOSE(ch,"# of Components: "+STRING(I), {"Add Resistor (R)", "Add Capacitor (C)", "Add Inductor (L)", "Calculate"}); // Execute calculation subroutine casubr(ch); END; // Calculation Subroutine casubr(x) BEGIN LOCAL a,b; IF x==1 THEN INPUT({a,b},"Resistor (Ω)", {"a =","bi="}); Z0:=Z0+(a+b*i); I:=I+1; chsubr(); END; IF x==2 THEN INPUT({a,b},"Capacitor (farad)", {"a =","bi="}); Z0:=Z0-i/(2*π*F*(a+b*i)); I:=I+1; chsubr(); END; IF x==3 THEN INPUT({a,b},"Inductor (henry)", {"a =","bi="}); Z0:=Z0+i*2*π*F*(a+b*i); I:=I+1; chsubr(); END; // Calculation IF x==4 THEN  PRINT(); PRINT("Impedance = "+Z0); PRINT("Magnitude (Ω) = "+ABS(Z0)); PRINT("Phase Angle (°) ="+ STRING(ARG(Z0)*180/π)); PRINT("Current (amps) = "+ STRING(V/ABS(Z0))); RETURN Z0; END; END;
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)