Monday, March 18, 2024

Brushless Design P1: Simulating and Designing an SRM

Spinning the rotor while applying 100 amp-turns of MMF to the A winding on a motor design


 Now that I know that I want to build an SRM motor the next question is how do I design one of these things?

There are a few different software tools that can be used to design and simulate motors but they seem to be either very expensive or limited to simple driving algorithms. SRM motors have a ton of unique control strategies that I would like to experiment with. I think it would be really cool to integrate the motor simulation software with my motor controller software unit tests so that I can run full simulations of the motor controller, control algorithms, and motor geometry to make a well tuned and high performance system.

I did a good amount of research on open source 2D magnetostatic solvers and settled on using FEMM with a python plugin. I really wanted to find something with 3D capability and the ability to simulate over time windows (FTDT solver) and I believe that something like that exists but I want to stick with something that is free and open source and have not yet found a match.

Since FEMM is meant to run on a windows machine I created a docker image that has wine and some other dependencies installed. The simulation software I built interacts with a running instance of FEMM and loads the motor geometry, sets the circuit currents, rotates the rotor, analyzes the problem, then exports flux linkages and torques. I can then combine all of these simulation points over a range of angles and currents to estimate the performance of the motor. I have all of the code that I am using to simulate motors through FEMM here.

With this approach I can estimate back EMF, resistive losses, torque, and winding inductance based on the speed, angle of the rotor, previous currents in the windings, and geometry of the motor. The only parameter that I care about that I can't measure directly through this simulation is eddy current losses but I am counting on them being low enough to not significantly impact my system due to the use of silicon steel for the rotor and stator.

I parameterized the motor geometry as well so it can be configured through a .json file. This lets me optimize the motor geometry through simulating a variety of motors with different parameters and comparing them in a semi-automated fashion (limited by my server speed). You may notice that the rotor shown above has much shorter teeth than the initial drawing from the previous post. I found that shortening the rotor allowed me to fit more turns around the stator and generate a stronger magnetic field which increased torque output.

In general SRM motors have a lower torque at the same size as a IPM or PMSM motor due to the lack of permanent magnets to generate strong magnetic fields. To do useful work without the need for a massive reduction, the battle for most SRM designs is all about maximizing torque density. I have been reading some papers on different strategies to maximize the torque and power of SRM motors and in the next post I will be going into specifics of what I did to optimize my motor design.


No comments:

Post a Comment

Note: Only a member of this blog may post a comment.