This simple formula uses the Law of Biot Savart, integrated over a circular current loop to obtain the magnetic field at any point along the axis of the loop.
B=μoir22(r2+x2)32
B is the magnetic field, in teslas, at any point on the axis of the current loop. The direction of the field is perpendicular to the plane of the loop.
μo is the permeability constant (1.26x10-6 Hm-1)
i is the current in the wire, in amperes.
r is the radius of the current loop, in meters.
x is the distance, on axis, from the center of the current loop to the location where the magnetic field is calculated, in meters.
B=μoi2r
B=μoir22x3
Note that this is equivalent to the expression for on-axis magnetic field due to a magnetic dipole:
B=μoiA2πx3
where A is the area of the current loop, or πr2.
The following IPython code illustrates how to compute the on-axis field due to a simple current loop.
%matplotlib inline
from scipy.special import ellipk, ellipe, ellipkm1
from numpy import pi, sqrt, linspace
from pylab import plot, xlabel, ylabel, suptitle, legend, show
uo = 4E-7*pi # Permeability constant - units of H/m
# On-Axis field = f(current and radius of loop, x of measurement point)
def Baxial(i, a, x, u=uo):
if a == 0:
if x == 0:
return NaN
else:
return 0.0
else:
return (u*i*a**2)/2.0/(a**2 + x**2)**(1.5)
Use the Baxial
function to compute the central field of a unit loop (1 meter radius, 1 ampere of current), in teslas:
print("{:.3} T".format(Baxial(1, 1, 0)))
You can try selecting your own current (a), radius (m) and axial position (m) combination to see what the resulting field is:
from ipywidgets import interactive
from IPython.display import display
def B(i, a, x):
return "{:.3} T".format(Baxial(i,a,x))
v = interactive(B, i=(0.0, 20.0), a=(0.0, 10.0), x=(0.0, 10.0))
display(v)
Now plot the field intensity, as a fraction of the central field, at various positions along the axis (measured as multiples of the coil radius):
axiallimit = 5.0 # meters from center
radius = 1.0 # loop radius in meters
X = linspace(0,axiallimit)
Bcenter = Baxial(1,1,0)
plot(X, [Baxial(1,1,x)/Bcenter for x in X])
xlabel("Axial Position (multiples of radius)")
ylabel("Axial B field / Bo (unitless)")
suptitle("Axial B field of simple loop")
show()
Magnet Formulas, © 2018 by Eric Dennison. Source code and License on Github