Understanding Electrical Choke Design: A Beginner’s Guide

Introduction:

Karishma Agrawal
5 min readFeb 5, 2024

In the world of power electronics, electrical chokes are essential for smoothing voltage and current. This article takes you through the process of designing an electrical choke using Python in Google Colab. We’ll break down the math behind transformer and choke design and implement the code step by step. Visualizing the choke in 3D adds a practical touch to the journey.

Understanding Chokes: Before diving into design, let’s grasp the basics. A choke is essentially a coil of wire wound around a core, often made of iron or ferrite. Its primary job is to resist changes in electric current, helping maintain a stable flow.

Mathematics Behind Transformer and Choke Design:

1. Transformer Design:

  • Primary and Secondary Turns: Picture the primary winding as the input side and the secondary winding as the output side. The number of turns in each winding affects voltage transformation. The equation Ns = Np * (Vin / Vout) sets the stage.
  • Peak Currents: The currents in these windings, both primary (Ip_peak) and secondary (Is_peak), are pivotal for optimal performance.

2. Choke Design:

  • Inductance Calculation: Choke inductance (L_choke) decides how well our choke smoothens the output. The formula L_choke = (Vin * (1 - D)) / (f_switch * Iripple) gives us this magic number.
  • Wire Length and Weight: Estimating the length and weight of the copper wire involves considering factors like wire gauge and core material.

3. Efficiency and Losses:

  • Efficiency Calculation: How effective is our choke? We gauge this by comparing input and output powers.
  • Losses in Transformer and Choke: Copper losses in the transformer (R_loss_transformer) and core losses in the choke (R_loss_choke) tell us where energy is slipping away.

Code Implementation:

Now, let’s turn these concepts into code using Python.

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
import pandas as pd

# Parameters
Vin = 120
Vout = 12
f_switch = 50e3
L_choke = 10e-3

# Transformer design
Np = 100
Ns = Np * (Vin / Vout)
Ip_peak = Vin / (2 * np.pi * f_switch * L_choke)
Is_peak = Vout / (2 * np.pi * f_switch * L_choke)

# Choke design
R_load = 10
Vripple_percent = 10
Vripple = Vout * Vripple_percent / 100
Iripple = Vripple / R_load
D = 1 - Vout / Vin # duty cycle of a pulse-width modulation (PWM) signal.
L_choke = (Vin * (1 - D)) / (f_switch * Iripple)

# Efficiency calculation
Pin = Vin * Ip_peak * D
Pout = Vout * Is_peak
Efficiency = Pout / Pin * 100

# Losses in transformer and choke
R_loss_transformer = Ip_peak**2 * (Np / Ns)**2 * R_load
R_loss_choke = Iripple**2 * L_choke * f_switch / 2
Total_losses = R_loss_transformer + R_loss_choke

# Create a table to display the values
data = {'Parameter': ['Vin', 'Vout', 'f_switch', 'L_choke', 'Np', 'Ns', 'Ip_peak', 'Is_peak', 'R_load', 'Vripple', 'Iripple', 'D', 'Pin', 'Pout', 'Efficiency', 'R_loss_transformer', 'R_loss_choke', 'Total_losses'],
'Value': [Vin, Vout, f_switch, L_choke, Np, Ns, Ip_peak, Is_peak, R_load, Vripple, Iripple, D, Pin, Pout, Efficiency, R_loss_transformer, R_loss_choke, Total_losses]}

df = pd.DataFrame(data)

# Display the table
print(df)
             Parameter         Value
0 Vin 120.000000
1 Vout 12.000000
2 f_switch 50000.000000
3 L_choke 0.002000
4 Np 100.000000
5 Ns 1000.000000
6 Ip_peak 0.038197
7 Is_peak 0.003820
8 R_load 10.000000
9 Vripple 1.200000
10 Iripple 0.120000
11 D 0.900000
12 Pin 4.125296
13 Pout 0.045837
14 Efficiency 1.111111
15 R_loss_transformer 0.000146
16 R_loss_choke 0.720000
17 Total_losses 0.720146

3D Visualization:

Let’s give our choke a face with a 3D representation.

# Function to draw a cylinder
def draw_cylinder(ax, radius, height, num_sides=100):
theta = np.linspace(0, 2*np.pi, num_sides)
x = radius * np.cos(theta)
y = radius * np.sin(theta)

ax.plot(x, y, zs=0, zdir='z', linewidth=1, color='black', label='Core Bottom') # Bottom circle
ax.plot(x, y, zs=height, zdir='z', linewidth=1, color='black', label='Core Top') # Top circle
ax.plot_surface(np.array([x]*2), np.array([y]*2), np.array([[0]*len(x), [height]*len(x)]), color='gray', alpha=0.6)

# Function to draw helical winding
def draw_helical_winding(ax, radius, height, num_turns, num_points_per_turn=100):
theta = np.linspace(0, num_turns * 2 * np.pi, num_turns * num_points_per_turn)
x = radius * np.cos(theta)
y = radius * np.sin(theta)
z = np.linspace(0, height, len(theta))

ax.plot(x, y, z, color='blue', linewidth=2, label='Helical Winding')

# Create a figure and 3D axis
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')

# Draw the core
draw_cylinder(ax, core_radius, core_height)

# Draw the helical winding
draw_helical_winding(ax, core_radius, core_height, num_turns=5)

# Set labels and limits
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Core and Helical Winding of Choke')
ax.legend()

# Show the plot
plt.show()

A helical winding refers to a coil or winding structure that follows a helix or spiral shape. In simpler terms, it’s a wire or conductor wound around a cylindrical or conical core in a spiral fashion, resembling the shape of a spring. This winding configuration is commonly used in various electrical components, such as inductors and transformers, to efficiently store and transfer electrical energy. The helical arrangement allows for compact and space-efficient designs in electronic circuits.

Conclusion:

Designing an electrical choke may seem complex, but breaking it down into manageable steps makes it accessible for beginners. By understanding the basics of chokes and the underlying mathematics, we can leverage Python to implement the design process effectively. The 3D visualization adds a tangible element to the abstract concepts, enhancing comprehension. This guide serves as a solid foundation for those venturing into the realm of power electronics.

Future Scope:

As technology advances, there are several avenues for further exploration and improvement in electrical choke design:
1. Optimization Algorithms: Implementing optimization algorithms can enhance the efficiency and performance of electrical chokes by fine-tuning parameters such as wire gauge, core material, and winding configurations.
2. Advanced Materials: Exploring advanced materials for cores and wires can lead to chokes with higher power density, improved efficiency, and reduced size and weight.
3. Simulation and Validation: Conducting thorough simulations and experimental validations can validate the designed chokes’ performance under various operating conditions, ensuring reliability and robustness.
4. Integration with Power Electronics Systems: Integrating electrical chokes into larger power electronics systems, such as inverters and converters, can enhance overall system performance and stability.

Continued research and innovation in electrical choke design hold the potential to drive advancements in power electronics technology, paving the way for more efficient and sustainable electrical systems.

--

--

Karishma Agrawal

“Thoughts lead on to purposes; purposes go forth in action; actions form habits; habits decide character; and character fixes our destiny.” ― Tryon Edwards