Skip to content

Commit 7e6e642

Browse files
power factor calculator
1 parent 40f65e8 commit 7e6e642

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

electronics/power_factor.py

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import math
2+
3+
4+
def calculate_apparent_power(voltage, current):
5+
"""Calculate the apparent power (S) in volt-amperes (VA)."""
6+
try:
7+
return voltage * current
8+
except TypeError:
9+
raise ValueError(
10+
"Invalid input types for voltage or current. Both must be numbers."
11+
)
12+
13+
14+
def calculate_power_factor(real_power, apparent_power):
15+
"""Calculate the power factor (PF)."""
16+
try:
17+
if apparent_power == 0:
18+
raise ValueError("Apparent power cannot be zero.")
19+
return real_power / apparent_power
20+
except TypeError:
21+
raise ValueError(
22+
"Invalid input types for real power or apparent power. Both must be numbers."
23+
)
24+
25+
26+
def calculate_reactive_power(real_power, apparent_power):
27+
"""Calculate the reactive power (Q) in volt-amperes reactive (VAR)."""
28+
try:
29+
if apparent_power < real_power:
30+
raise ValueError(
31+
"Apparent power must be greater than or equal to real power."
32+
)
33+
return math.sqrt(apparent_power**2 - real_power**2)
34+
except TypeError:
35+
raise ValueError(
36+
"Invalid input types for real power or apparent power. Both must be numbers."
37+
)
38+
except ValueError as ve:
39+
raise ValueError(f"Calculation error: {ve}")
40+
41+
42+
def calculate_correction_capacitance(reactive_power, voltage, frequency=60):
43+
"""Calculate the size of the correction capacitor in microfarads (µF)."""
44+
try:
45+
if voltage == 0:
46+
raise ValueError("Voltage cannot be zero.")
47+
capacitance = (reactive_power * 1_000_000) / (
48+
2 * math.pi * frequency * voltage**2
49+
)
50+
return capacitance
51+
except TypeError:
52+
raise ValueError(
53+
"Invalid input types for reactive power, voltage, or frequency. They must be numbers."
54+
)
55+
except ValueError as ve:
56+
raise ValueError(f"Calculation error: {ve}")
57+
58+
59+
def main():
60+
try:
61+
real_power = float(input("Enter real power in watts: "))
62+
current = float(input("Enter current in amps: "))
63+
voltage = float(input("Enter voltage in volts: "))
64+
65+
apparent_power = calculate_apparent_power(voltage, current)
66+
power_factor = calculate_power_factor(real_power, apparent_power)
67+
reactive_power = calculate_reactive_power(real_power, apparent_power)
68+
correction_capacitance = calculate_correction_capacitance(
69+
reactive_power, voltage
70+
)
71+
72+
print(f"\nResults:")
73+
print(f"Power Factor: {power_factor:.4f}")
74+
print(f"Apparent Power: {apparent_power:.0f} VA")
75+
print(f"Reactive Power: {reactive_power:.0f} VAR")
76+
print(f"Correction Capacitance: {correction_capacitance:.3f} µF")
77+
78+
except ValueError as e:
79+
print(f"Error: {e}")
80+
81+
82+
if __name__ == "__main__":
83+
main()

0 commit comments

Comments
 (0)