Magnetic hysteresis modelling using the Flatley differential equation model
Show older comments
Good day,
I am working on a Cube Satellite and am trying to correctly model magnetic hysteresis. Essentially, the hysteresis rods are ferromagnetic rods that can be easily magnetized and demagnetized by an external field (Earths Geomagnetic field in this case). The purpose of them is to dampen rotational oscillations while the satellites main magnet aligns the satellite with the local geomagnetic field vector in orbit.
I am trying to apply a magnetic field in the form of a sin wave (A) currently the amplitude is 8, but my goal is to apply various sin amplitudes in order to get multiple transient hysteresis loops. I have attached the flatley equations and what the output plots (with varyious sin amplitudes applied) should look like. I've been working on this forever with no luck, I thought it might be time to reach out. Thanks!
Bs = 0.73; %Saturation
Br = 0.35; %Remenance
Hc = 1.59; %Coercivity
q = 0;
p = 2;
%%Time specifications:
SamplesPs = 1000; % samples per second
dt = 1/SamplesPs; % seconds per sample
StopTime = 2; % sec
t = (0:dt:StopTime-dt)'; % sec
%%Sine wave:
Fc = 1; % Hz
H = 8*sin(2*pi*Fc*t); %% **********(A)**********
dH = diff(H);
dHdt = dH/dt;
H(2000) = [];
t(2000) = [];
K = (1/Hc)*tan((pi/2)*(Br/Bs)) ;
i = 0;
while i <= length(H)-1
i = i + 1;
if dHdt(i) >= 0
B = (2*Bs/pi)*atan(K*(H(i)-Hc));
HL = (tan((pi*B)/(2*Bs))/K)-Hc;
Bp = (2*K*Bs/pi).*cos((pi*B)/(2*Bs)).^2;
f = (H(i)-HL)./(2*Hc);
Q = q+(1-q)*f.^p;
dBdH = Q*Bp;
dBdt = dBdH*dHdt;
else
B = (2*Bs/pi)*atan(K*(H(i)+Hc));
HR = (tan((pi*B)/(2*Bs))/K)+Hc;
Bp = (2*K*Bs/pi).*cos((pi*B)/(2*Bs)).^2;
f = (H(i)-HR)./(2*Hc);
Q = q+(1-q)*f.^p;
dBdH = Q*Bp;
dBdt = dBdH*dHdt;
B1 = trapz();
end
B_ = int(dBdt,t(i),t(i+1));
b(i) = B;
bb(i) = B_;
end
%%H is integration limit
%%Plotting Flatley Model
hold on
grid on
xlabel('Magnetizing Field [A/m]')
ylabel('Magnetic Flux Density [Tesla]')
plot(0,Br,'o')
text(0,Br,'Br','VerticalAlignment','top','HorizontalAlignment','left')
plot(0,Bs,'*')
text(0,Bs,'Bs','VerticalAlignment','top','HorizontalAlignment','left')
plot(Hc,0,'d')
text(Hc,0,'Hc','VerticalAlignment','top','HorizontalAlignment','left')
plot(0,-Br,'o')
text(0,-Br,'-Br','VerticalAlignment','top','HorizontalAlignment','left')
plot(0,-Bs,'*')
text(0,-Bs,'-Bs','VerticalAlignment','top','HorizontalAlignment','left')
plot(-Hc,0,'d')
text(-Hc,0,'-Hc','VerticalAlignment','top','HorizontalAlignment','left')
plot(H,b)
hold off

where constants, q = 0 and p = 2

Accepted Answer
More Answers (0)
Categories
Find more on Axes Transformations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
