=====Analysis of a Woofer Motor===== David Meeker dmeeker@ieee.org 15May2009 ==1 Introduction== FEMM has been widely used to design speaker motors. Since most speaker motors naturally have an axisymmetric construction, FEMM allows for the computation of the fields and forces in a speaker motor with high accuracy. This example demonstrates how the program might be used to analyze a typical speaker motor design. For this example, the speaker motor geometry shown in Figure 1 is assumed. The dimensions and materials are roughly the same as those from a 200W 6" woofer.

). Then, press the space bar to open the selected block label. The "Properties for selected block" dialog will appear. If the material is a permanent magnet material, the "Magnetization Direction" edit box will be active. Enter in a number here to specify the angle of the permanent magnet's orientation, //i.e.// an angle of 0 directs the magnetization radially outward; an angle of 90 directs the magnetization parallel to the axis of rotation, and so on. Hit "OK" when the proper direction has been entered. The arrow through the selected block label should then select the indicated direction of magnetization. The direction of the arrow always points towards the north pole of the magnet.
**2.2 Combine the Voice Coil into a Group**
To facilitate moving the voice coil to assess performance at different coil positions, it is useful to assign all the parts that make up the coil to be members of the same group. Then, the group can be selected with one click and moved with a single command.
To put all parts of the voice coil into a group, the preprocessor must first be put into Group mode by pushing the
button. Then push the
and select all elements in the voice coil (//i.e.// the segments defining the boundaries of the coil and the block label defining the coil material and turns count). The, press the space bar. The "Group Properties" dialog will then pop up, prompting for a group number to be assigned to the selected items. The default group number is zero, so it would be a good idea to define the group number of items in the voice coil to be 1. In Group Mode, all items in the coil can then be selected by a left mouse button click anywhere near the voice coil.
**2.3 Boundary Conditions **
The boundary conditions on the edges of the analysis region must be defined so that the boundary definition does not have a spurious effect on the analysis results. For the analysis of speaker motors, the "asymptotic boundary condition" described in the [[http://www.femm.info/Archives/doc/tutorial-magnetic.pdf|Magnetics Tutorial]] is sufficient. However, an alternative way of defining an "open" boundary condition is via the "Kelvin Transformation." The Kelvin Transformation uses a second region linked to the geometry of interest with periodic boundary conditions. If the shape of the second region is selected correctly [[http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=42546|it can be shown]] that this region is a mapping of the unbounded region outside the domain of interest into a bounded region that can be analyzed with the finite element method. The advantage of using this technique is that the outer boundary can be placed essentially arbitrarily close to the voice coil without losing accuracy of the solution. With other approaches, the boundary must be a bit farther away.


button on the preprocessor toolbar. When the analysis finishes, press the "load solution" tool bar button
to view the results. The resulting solution will look something like that pictured in Figure 4.

button. Move the mouse pointer inside the coil region and do a left-button click to select the coil region. The region should light up in green. Then, perform a block integral by clicking the
toolbar button. A dialog will pop up allowing you to select the type of integral to be performed. Select "Lorentz force (JxB)" from the list and hit "OK". Another dialog will then pop up with the integral analysis result. For this particular example, with the coil in the centered position, the program will report:
r-component: 0 N
z-component: 6.75502 N
For axisymmetric problems, the radial force is always zero (because the solution is, well, axisymmetric). Since a 1A current was applied, the z-component of the force can be directly interpreted as BL, i.e. BL = 6.75502 N/A for this geometry with the coil at its centered position.
3.2 Computation of DC Inductance
For the coil in the Magnetics Tutorial, one can infer the inductance simply by press the Circuit Properties button in the postprocessor
. For the solenoid in the Tutorial, the "flux/current" result can be directly interpreted as the coil's inductance. For a speaker motor, however, the situation is a bit more subtle. In this case, most of the flux linking the coil comes from the magnet, rather than being due to current in the coil. The magnet flux should be discounted in a computation of self-inductance. A second issue is saturation in the stator flux path. The iron in most speaker designs is usually close to saturation. The reaction field from current in the voice coil is small relative to the field of the permanent magnet. For the purposes of determining the dynamics of the reaction field, the incremental self-inductance about the zero current operating point set by the magnet is what is really of interest.
The incremental self-inductance of the coil can be determined by performing two simulations: a first simulation with 1A of current in the coil, and a second simulation with no current in the coil. In each case, the flux linkage of the coil can be read off of the "circuit property" results. The incremental inductance is simply the difference of the flux linkages in these two cases. For the example geometry, the coil's flux linkage at the centered position with a 1A coil current is -0.0461614 Webers and the flux linkage with a current of 0A is -0.0474315 Webers. The implied self-inductance is:
L = (-0.0461614 Webers - (-0.0474315 Webers))/(1A) = 1.2701 mH
3.3 Computation of DC Resistance
Resistance is reported directly as a "circuit properties" result for the simulation with a 1A coil current. The coil's resistance is the "Voltage/Current" result, reported as 5.40812Ω for the present model.
3.4 Plot of Flux through the Voice Coil
It is also usually of interest to have a quantitative plot of the flux density that links the voice coil. Such a plot can be made in Contour mode. Switch to Contour mode by pressing the
button. In this case, the center of the voice coil is located at r=16, z=17.15. Since the coil is 11mm long in the axial direction, it might be insightful to plot the radial flux density on a line from (r=16,z=7.15) to (r=16,27.15). It's possible to place contour points at the nearest node point with a left mouse button click or at the current mouse pointer location with a right mouse button click. However, it's difficult to position the mouse pointer at arbitrary locations with precision. In this case, manual entry of the contour end points can be used. If the
button to make a plot.
toolbar button. Results can be displayed on the Lua console, which can be made visible by pressing the
button.
* //Mathematica//. The MathFEMM package, included in the standard FEMM distribution, allows the control of an instance of FEMM from within a Mathematica session. All scripting functionality that can be implemented directly in Lua is available as "native" Mathematica commands.
* //Matlab/Octave//. The OctaveFEMM toolbox allows either Matlab or Octave (an open-source Matlab-compatible analysis program) to control an instance of FEMM. Just as with the Mathematica interface, all of the scripting functionality of Lua is available as "native" Matlab/Octave commands.
A script was written to determine the actuator's "BL" and the coils's self-inductance and resistance using each of the three scripting approaches. Because there are so many possible variations in speaker motor geometry, the scripts the speaker motor geometry is not created within the scripts. Rather, the scripts reads an existing geometry info FEMM and analyze it at a number of different coil locations. It is assumed that the speaker motor has been drawn with all elements in the coil belonging to group number 1, so that the voice coil can be easily selected and moved by the notebook. It is also assumed that the .fem file describing the motor is located in the same directory as the notebook.
Mathematica, Matlab, and Octave all have excellent plotting facilities. In these versions of the script, the BL, inductance, and flux density curves are plotted. Examples of the curves plotted by the Mathematica notebook version of the script are shown below as Figures 6-8:



| Woofer.fem | Speaker motor model file |
| Woofer-simple-boundary.fem | Speaker motor model file with simplified boundary condition |
| GetBLCurve.nb | Speaker analysis notebook for Mathematica |
| GetBLCurve.pdf | PDF printout of speaker analysis notebook for Mathematica |
| getblcurve.m | Speaker analysis script for Matlab/Octave |
| getcurve.lua | Speaker analysis script for Lua |