Circuit Theory
Ohm's law, Kirchhoff's laws, and network theorems.
Circuit Theory
Circuit theory forms the foundation of electrical engineering, providing the mathematical framework for analyzing and designing electrical systems. Understanding circuit behavior is essential for everything from simple electronic devices to complex power grids.
Fundamental Laws
Ohm's Law
The relationship between voltage, current, and resistance:
Where:
- is voltage (volts)
- is current (amperes)
- is resistance (ohms)
Power and Energy
Electrical Power
Energy
Resistance and Resistivity
Where:
- is resistivity (Ω·m)
- is length
- is cross-sectional area
Kirchhoff's Laws
Kirchhoff's Current Law (KCL)
At any node (junction):
Or equivalently:
This is a consequence of conservation of charge.
Kirchhoff's Voltage Law (KVL)
Around any closed loop:
This is a consequence of conservation of energy and the conservative nature of electric fields in circuits.
Network Analysis Methods
Nodal Analysis
Steps:
- Select reference node (ground)
- Assign node voltages to remaining nodes
- Apply KCL at each non-reference node
- Solve resulting equations
For a circuit with nodes:
- unknown node voltages
- KCL equations
Mesh Analysis
Steps:
- Identify meshes (loops with no other loops within)
- Assign mesh currents
- Apply KVL around each mesh
- Solve resulting equations
For a circuit with meshes:
- unknown mesh currents
- KVL equations
Series and Parallel Combinations
Series Resistors
Parallel Resistors
For two parallel resistors:
Voltage Divider Rule
Current Divider Rule
Network Theorems
Thevenin's Theorem
Any linear circuit can be replaced by:
- A voltage source (open-circuit voltage)
- A series resistor (equivalent resistance with sources deactivated)
Norton's Theorem
Any linear circuit can be replaced by:
- A current source (short-circuit current)
- A parallel resistor
Superposition Theorem
In a linear circuit with multiple independent sources:
Where is the contribution due to the -th source alone (with other sources deactivated).
Maximum Power Transfer Theorem
Maximum power is transferred to a load when:
The maximum power transferred is:
AC Circuit Analysis
Complex Impedance
Resistance (R)
Inductance (L)
Capacitance (C)
Series and Parallel AC Combinations
Series Impedance
Parallel Admittance
Where is admittance.
AC Power
Instantaneous Power
Average Power (Real Power)
Reactive Power
Complex Power
Where is the phase angle between voltage and current.
Power Factor
Transient Analysis
RC Circuits
Charging
Discharging
RL Circuits
Current Buildup
Current Decay
RLC Circuits
The general solution for series RLC circuit with DC source:
The characteristic equation:
Where and .
Cases:
- Overdamped ():
- Critically damped ():
- Underdamped ():
Where .
Resonance
Series RLC Resonance
At resonance:
- occurs
- Circuit is purely resistive
Parallel RLC Resonance
At resonance:
- occurs
- Circuit is purely resistive
Bode Plots and Frequency Response
Transfer Function
Magnitude and Phase
Gain in Decibels
Real-World Application: Power Distribution Network
Power distribution networks must balance efficiency, reliability, and safety.
Power Transmission Analysis
# Power transmission line analysis
transmission_params = {
'voltage_level': 230e3, # 230 kV transmission
'current_rating': 1000, # Amperes
'line_resistance': 0.05, # Ohms per km
'line_length': 100, # km
'power_factor': 0.95, # Leading or lagging
'frequency': 60 # Hz
}
# Calculate transmission parameters
line_resistance_total = transmission_params['line_resistance'] * transmission_params['line_length']
power_transmitted = transmission_params['voltage_level'] * transmission_params['current_rating'] * transmission_params['power_factor']
power_loss = transmission_params['current_rating']**2 * line_resistance_total
efficiency = (power_transmitted - power_loss) / power_transmitted
# Calculate voltage drop
load_current = transmission_params['current_rating'] # At rated current
power_factor_angle = math.acos(transmission_params['power_factor'])
# For simplified calculation: V_drop ≈ I(Rcosφ + Xsinφ)
# Assuming X ≈ 0.1*R for typical transmission line
reactance = 0.1 * line_resistance_total
voltage_drop = transmission_params['current_rating'] * (line_resistance_total * math.cos(power_factor_angle) + reactance * math.sin(power_factor_angle))
# Calculate power factor correction if needed
if transmission_params['power_factor'] < 0.98:
required_reactive_power = power_transmitted * math.tan(power_factor_angle)
# Capacitor needed to improve power factor to unity
capacitance_required = required_reactive_power / (2 * math.pi * transmission_params['frequency'] * transmission_params['voltage_level']**2)
else:
required_reactive_power = 0
capacitance_required = 0
# Calculate optimal transmission voltage (Economical)
# The cost of transmission line includes both conductor cost and energy loss
# Generally, higher voltage reduces current and loss, but increases insulation costs
voltage_ratio = transmission_params['voltage_level'] / 11e3 # Relative to 11kV
loss_ratio = 1 / voltage_ratio**2 # Losses decrease with square of voltage increase
print(f"Power transmission analysis:")
print(f" Voltage level: {transmission_params['voltage_level']/1000:.0f} kV")
print(f" Current rating: {transmission_params['current_rating']} A")
print(f" Line resistance: {line_resistance_total:.3f} Ω")
print(f" Power transmitted: {power_transmitted/1e6:.2f} MW")
print(f" Power loss: {power_loss/1000:.2f} kW")
print(f" Efficiency: {efficiency*100:.2f}%")
print(f" Voltage drop: {voltage_drop/1000:.2f} kV")
print(f" Voltage drop percentage: {voltage_drop/transmission_params['voltage_level']*100:.2f}%")
print(f" Economical voltage advantage: {loss_ratio:.2f}x reduction in losses vs 11kV system")
# Reliability considerations
if efficiency > 0.98:
reliability_rating = "High - Minimal losses"
elif efficiency > 0.95:
reliability_rating = "Good - Acceptable losses"
else:
reliability_rating = "Low - Significant losses, reconsider design"
print(f" Reliability rating: {reliability_rating}")
# If capacitor is required
if capacitance_required > 0:
print(f" Required compensation: {capacitance_required*1e6:.2f} μF")
print(f" Reactive power required: {required_reactive_power/1e6:.2f} MVAR")
else:
print(f" Power factor adequate - no compensation required")
Grid Stability Considerations
Calculating stability parameters for power distribution systems.
Your Challenge: Circuit Analysis and Design
Analyze and design a circuit to meet specific performance requirements.
Goal: Apply circuit analysis techniques to design a voltage regulator circuit with specified parameters.
Circuit Requirements
import math
# Circuit specifications
circuit_specs = {
'input_voltage': 12.0, # Volts (available from source)
'output_voltage': 9.0, # Volts (required output)
'load_current': 0.5, # Amperes (required current to load)
'tolerance': 0.1, # Volts (allowed voltage variation)
'efficiency_target': 0.85, # 85% efficiency required
'temperature_range': [-10, 60], # Celsius operating range
'safety_factor': 1.2 # For component ratings
}
# Design a voltage divider circuit
# Using two resistors in series with output tapped between them
input_voltage = circuit_specs['input_voltage']
output_voltage = circuit_specs['output_voltage']
load_current = circuit_specs['load_current']
# Calculate required resistances for unloaded voltage divider
# V_out = V_in * R2 / (R1 + R2)
# Solving for R1/R2 ratio: R2 / (R1 + R2) = V_out / V_in
voltage_ratio = output_voltage / input_voltage
# If R2 / (R1 + R2) = voltage_ratio, then R2 = voltage_ratio * (R1 + R2)
# R2 = voltage_ratio * R1 + voltage_ratio * R2
# R2 - voltage_ratio * R2 = voltage_ratio * R1
# R2(1 - voltage_ratio) = voltage_ratio * R1
# R1 = R2 * (1 - voltage_ratio) / voltage_ratio
# For loaded conditions, we need to consider the load resistance
load_resistance = output_voltage / load_current # Ohm's law
# Using loaded voltage divider equation:
# V_out = V_in * (R2 || R_load) / (R1 + (R2 || R_load))
# Where R2 || R_load = (R2 * R_load) / (R2 + R_load)
# For a practical voltage divider with reasonable loading effect,
# Let's design with a loading effect of about 10% voltage drop
desired_output_under_load = output_voltage * 0.9 # Allow 10% drop under load
# Using voltage divider equations with load
# Let's solve for R1 and R2 considering the load
R2_parallel_load = desired_output_under_load * (circuit_specs['input_voltage'] - desired_output_under_load) / (circuit_specs['input_voltage'] - output_voltage)
R1 = (circuit_specs['input_voltage'] - desired_output_under_load) * R2_parallel_load / (output_voltage * 0.9)
# Calculate equivalent resistance of R2 in parallel with load
# R2_parallel_load = (R2 * R_load) / (R2 + R_load)
# Therefore: R2 = (R2_parallel_load * R_load) / (R_load - R2_parallel_load)
R_load = load_resistance
R2 = (R2_parallel_load * R_load) / (R_load - R2_parallel_load)
# Calculate actual loaded output voltage
R2_loaded = (R2 * R_load) / (R2 + R_load)
actual_output_voltage = circuit_specs['input_voltage'] * R2_loaded / (R1 + R2_loaded)
# Calculate power dissipation
total_current = circuit_specs['input_voltage'] / (R1 + R2_loaded) # Total current from source
R1_power = total_current**2 * R1 # Power in R1
R2_power = (total_current - load_current)**2 * R2 # Power in R2
load_power = load_current**2 * R_load # Power delivered to load
# Calculate efficiency
input_power = circuit_specs['input_voltage'] * total_current
output_power = actual_output_voltage * load_current
efficiency = output_power / input_current if input_power > 0 else 0
Design a voltage divider circuit that meets the specified requirements.
Hint:
- Use voltage divider equations to calculate resistor values
- Consider loading effects when output current is drawn
- Balance efficiency with voltage regulation
- Calculate power dissipation in components
# TODO: Calculate circuit design parameters
R1_value = 0 # Ohms (calculated value for resistor 1)
R2_value = 0 # Ohms (calculated value for resistor 2)
actual_output_voltage = 0 # Volts (output voltage with load)
efficiency = 0 # Fraction (circuit efficiency)
power_dissipated_R1 = 0 # Watts (power in resistor 1)
power_dissipated_R2 = 0 # Watts (power in resistor 2)
# Calculate resistor values based on voltage divider formula
voltage_ratio = circuit_specs['output_voltage'] / circuit_specs['input_voltage']
# For unloaded voltage divider: R2 / (R1 + R2) = V_out / V_in
# This means R2 = (V_out / V_in) * (R1 + R2)
# R2 = (V_out / V_in) * R1 + (V_out / V_in) * R2
# R2 * (1 - V_out/V_in) = (V_out / V_in) * R1
# R1 = R2 * (V_in / V_out - 1)
# First calculate load resistance
R_load = circuit_specs['output_voltage'] / circuit_specs['load_current']
# For loaded voltage divider with minimal loading effects, let's assume current through voltage divider
# should be 10x the load current for good regulation
divider_current = circuit_specs['load_current'] * 0.1 # 10% of load current through divider
R2_value = circuit_specs['output_voltage'] / divider_current
R1_value = (circuit_specs['input_voltage'] - circuit_specs['output_voltage']) / divider_current
# Calculate actual loaded voltage
# With load, the current splits between R2 and load resistance
R2_parallel_load = (R2_value * R_load) / (R2_value + R_load)
actual_output_voltage = circuit_specs['input_voltage'] * R2_parallel_load / (R1_value + R2_parallel_load)
# Calculate efficiency
input_power = circuit_specs['input_voltage'] * (circuit_specs['output_voltage'] / R2_parallel_load)
output_power = circuit_specs['output_voltage'] * circuit_specs['load_current']
efficiency = output_power / input_power if input_power > 0 else 0
# Calculate power dissipated in resistors
current_R1 = circuit_specs['input_voltage'] / (R1_value + R2_parallel_load)
current_R2 = (circuit_specs['input_voltage'] - actual_output_voltage) / R2_value
current_load = actual_output_voltage / R_load
power_dissipated_R1 = current_R1**2 * R1_value
power_dissipated_R2 = current_R2**2 * R2_value
# Print results
print(f"Circuit design results:")
print(f" R1 value: {R1_value:.2f} Ω")
print(f" R2 value: {R2_value:.2f} Ω")
print(f" Actual output voltage: {actual_output_voltage:.3f} V")
print(f" Circuit efficiency: {efficiency*100:.2f}%")
print(f" Power dissipated in R1: {power_dissipated_R1:.3f} W")
print(f" Power dissipated in R2: {power_dissipated_R2:.3f} W")
# Check if design meets specifications
voltage_tolerance_met = abs(actual_output_voltage - circuit_specs['output_voltage']) <= circuit_specs['tolerance']
efficiency_met = efficiency >= circuit_specs['efficiency_target']
print(f" Voltage tolerance met: {voltage_tolerance_met}")
print(f" Efficiency requirement met: {efficiency_met}")
print(f" Design feasibility: {'Acceptable' if voltage_tolerance_met and efficiency_met else 'Not acceptable'}")
# Design recommendations
if efficiency < circuit_specs['efficiency_target']:
recommendation = "Consider using a more efficient voltage regulation method (e.g., switching regulator)"
elif not voltage_tolerance_met:
recommendation = "Adjust resistor values to meet voltage requirements"
else:
recommendation = "Design meets all requirements"
print(f" Recommendation: {recommendation}")
# Component selection considerations
max_operating_voltage = circuit_specs['input_voltage'] * circuit_specs['safety_factor']
max_power_dissipation = max(power_dissipated_R1, power_dissipated_R2) * circuit_specs['safety_factor']
print(f" Required voltage rating: {max_operating_voltage:.2f} V")
print(f" Required power rating: {max_power_dissipation:.3f} W")
How would you modify your circuit design to improve efficiency while maintaining the required output voltage and current specifications?
ELI10 Explanation
Simple analogy for better understanding
Self-Examination
How do Kirchhoff's voltage and current laws relate to conservation of energy and charge?
What are the conditions for maximum power transfer in electrical networks?
How do network theorems like Thevenin's and Norton's simplify circuit analysis?