This article demonstrates the use of the (modified) nanoVNA-H to capture data from which the complex relative permeability of an unknown ferrite core is calculated and plotted

Above, a single turn of wire through the sleeve allows measurement by the nanovna. The nanoVNA fundamentally captures s11 parameters which we need to convert to relative permeability.

The nanoVNA fundamentally captures s11 parameters which we need to convert to relative permeability.

Nevertheless, a plot of R,X is of interest to note the frequency at which R=X.

To calculate relative permeability, we need the core geometry. Calculate ferrite cored inductor – rectangular cross section can calculate the ΣA/l metric from the core dimensions.

ΣA/l (m) is known as variable aol in the following Python script.

A couple of Python code snippets were developed in Jupyter.

file1='Unknown.s1p' aol=0.003257 #aol=width/2/math.pi*math.log(od/id) turns=1 #use least turns possible to minimise self resonance effects import matplotlib import skrf as rf import time import numpy import math import os #rf.stylely({"savefig.dpi":180}) from datetime import datetime import math u0=4e-7*math.pi fts1=time.localtime(os.path.getmtime(file1)) print(time.strftime("%Y%m%d",fts1)) #print(fts1) nw1=rf.Network(file1) print(nw1) numpy.shape(nw1.z) mu=(nw1.z[:,0,0]/turns**2/(2*math.pi*nw1.f))/(u0*aol)*-1j

Above is the first which calculates the mu array from the .s1p file.

%matplotlib inline matplotlib.pyplot.figure(1) rf.stylely({"savefig.dpi":180}) matplotlib.pyplot.plot(nw1.f/1e6,mu.real,'r',label='mu1') matplotlib.pyplot.plot(nw1.f/1e6,-mu.imag,'b',label='mu2') matplotlib.pyplot.xscale('log') matplotlib.pyplot.legend(('$\mu\'$','$\mu\'\'$'),loc='upper right',shadow=True) matplotlib.pyplot.ylim(bottom=0) matplotlib.pyplot.ylabel('Relative permeability') matplotlib.pyplot.xlabel('Frequency (MHz)') matplotlib.pyplot.title('Complex relative permability - {}'.format(file1))

The above snippet plots the complex relative permeability.

… and it looks like that.