Sizing Steel Parts for Field Coil Loudspeaker Motors

May 5, 2016 Technical Notes No comments , , , , ,

0. Introduction

In designing loudspeaker motors we usually try to avoid saturation along the magnetic path. This means we need to properly size the steel pieces to keep the magnetic flux density below the saturation value. We will start with the input data for our design and usually this is desired flux density in the gap B_g, voice coil diameter d_{vc}, voice coil height h_{vc} and desired voice coil excursion in one way X_{max}.

We should also consider the motor type, either underhung or overhung as part of the input data for our design and such we can determine first the magnetic gap height:

  1. Underhung

    \[ h_g = h_{vc}+2X_{max}\qquad (1) \]

2. Overhung

    \[ h_g = h_{vc}-2X_{max}\qquad (2) \]

1. Magnetic Path

For the remaining of this article I will refer mostly to field coil powered motors but the ideas expressed can be applied to permanent magnet motors as well. In figure 1 we have the axisymmetric section through such a motor. We can see the magnetic path by following the red lines representing the magnetic flux in this example. The direction is given by direction of current in the field coil but we don’t have to be concerned with this aspect in this article.

Axisymmetric Cross Section

Figure 1. Axisymmetric section of Field Coil Motor

In figure 1 \Phi_c represents the magnetic flux through the steel parts or core and \Phi_g represents the  magnetic flux through the gap. However Gauss law dictates that:

    \[ \Phi_c =\Phi_g\qquad (3) \]

and since:

    \[ \Phi_c =B_cA_c, \Phi_g =B_gA_g\qquad (4) \]

results:

    \[ B_cA_c=B_gA_g\qquad (5) \]

where B_c is the flux density through steel piece, A_c is the cross section area of steel piece perpendicular to magnetic flux, B_g is the flux density through the air gap and A_g is the cross section area of the gap.

The last equation while simple, it is also quite meaningful. It states that unless the area of the gap and the area of the steel through which magnetic flux passes, are equal, then the flux densities through these different areas will be different. This is very important since we need to keep B_c below the saturation value for that particular steel. It also states that since the area of the steel around the gap through which magnetic flux passes is very close to the magnetic gap average area, the flux density in the gap can not be grater than the saturation value for that particular steel because B_c cannot be grater then B_{sat}.

Generally we can say:

    \[ B_c=\frac{B_gA_g}{A_c} < B_{sat}, A_g = \pi d_{vc}h_g\qquad (6) \]

    \[ B_c=\frac{B_g\pi d_{vc}h_g}{A_c} < B_{sat}     \qquad(7) \]

or better put using our input data:

    \[ A_c > \frac{B_g}{B_{sat}}\pi d_{vc}h_g     \qquad(8) \]

2. Sizing the Steel Parts

To avoid saturation, the area of steel through which magnetic flux passes must satisfy the Equation 8. Now let;s examine what this means for each of the steel parts of a field coil motor.

  1.  The center pole piece

Figure 2 shows a section of the center pole piece with red line representing the magnetic flux direction. We can see that the cross section area corresponding to magnetic flux varies, getting smaller towards the top but for now let’s determine the diameter for the thicker section.

Central Steel Piece

Figure 2. Section of central pole piece

    \[ A_c = \pi (\frac{d_m}{2})^2\qquad (9) \]

From Eq 3

    \[ \pi (\frac{d_m}{2})^2 > \frac{B_g}{B_{sat}}\pi d_{vc}h_g\qquad (10) \]

    \[ d_m > \frac{\sqrt[2]{\frac{B_g}{B_{sat}}d_{vc}h_g}}{2}\qquad (11) \]

d_t from figure 2 will be determined by voice coil diameter and gap width but it is not as big a factor as d_m because the field lines will not pass through the top section. Magnetic flux will steer towards the gap and thus the area will be very close to the gap area as shown in figure 3. In Eq 6 we have the expression for gap area but in reality that area is larger because of flux bulging out in the gap (flux lines marked a in figure 3) and not strictly following the geometrical path we would like it to. To what extend the difference is depends heavily on the geometry. But this also means it will take more flux to saturate that area so it is safe to assume the gap area as in Eq 6.

Central Steel Piece Zoom

Figure 3. Detail of magnetic gap region

2.   Bottom plate

In figure 4  we can see the path the magnetic flux takes through the bottom plate. We can also observe that the flux travels through a disc which means that the diameter increases the further it goes. If the thickness of the bottom plate is constant it will mean the area through which flux passes through increases from the center of the motor towards the outer diameter. While the increase will not hurt the magnetic flux, it is a waste of material and will add extra weight to the motor.

bottom plate2

Figure 4. Central pole piece and bottom plate

To size the bottom plate it is best to start from the center. The center pole piece with diameter d_m  meets the bottom plate and the flux lines turn about 90 degrees and start passing through the bottom plate. We can thus define the center area as:

    \[ A_{bp_c} = \pi d_mh_{max}\qquad (12) \]

where A_{bp_c} is the center area of the bottom place.

According to Eq 8:

    \[ \pi d_mh_{max} > \frac{B_g}{B_{sat}}\pi d_{vc}h_g\qquad (13) \]

    \[ h_{max} > \frac{B_g}{B_{sat}}\frac{d_{vc}}{d_m}h_g\qquad (14) \]

In figure 4 d_p is the bottom plate diameter.  If we want to keep a constant area trough  the bottom plate we can easily see that:

    \[ \pi d_mh_{max} = \pi d_bh_{min}\qquad (15) \]

thus:

    \[ \frac{h_{max}}{h_{min}} = \frac{d_b}{d_m}\qquad (16) \]

3.   Steel Ring

The steel ring piece can be identified  in figure 5.  This piece can be an actual ring or it can be made using multiple steel rods. Its purpose to the provide a path for magnetic flux between the bottom plate and the top plate. The steel rods will allow for better cooling of the field coil but will concentrate the flux around them in the bottom and top plate so in terms of avoiding saturation it is my opinion not to tapper the the bottom plate’s thickness as discussed in previous section. So basically keeping h_min same as h_max.

Steel Ring

Figure 5. Field Coil Motor structure section showing steel ring

The area perpendicular to the magnetic flux vector is represented in figure 6 for both cases using a ring or multiple rods. For the first case, in next calculations we shall keep the outer diameter of the ring equal to that of the bottom plate d_b. and we shall determine the thickness or width of the ring w_{r} as depicted in figure 6.a.

steel ring detail

Figure 6. Steel Ring (a) and Steel Rods (b) Top View

Lets call d_i the inner diameter of the ring:

    \[ d_i = d_b-2w_r\qquad (17) \]

Area for steel ring in Fig 6.a would be:

    \[ A_r = \pi \frac{d_b^2 - d_i^2}{4}\qquad (17) \]

Following Eq 8:

    \[ \frac{d_b^2 - d_i^2}{4} > \frac{B_g}{B_{sat}}d_{vc}h_g\qquad (18) \]

    \[  d_i > \sqrt[2]{d_b^2 -4\frac{B_g}{B_{sat}}d_{vc}h_g}\qquad (19) \]

    \[ w_r > \frac{d_b - \sqrt[2]{d_b^2 -4\frac{B_g}{B_{sat}}d_{vc}h_g}}{2}\qquad (20) \]

Then for steel rods in Fig 6.b Eq 8 would be:

    \[ N(\frac{d_r}{2})^2 > \frac{B_g}{B_{sat}}d_{vc}h_g\qquad (21) \]

    \[ d_r^2 > \frac{B_g}{B_{sat}}d_{vc}\frac{4}{N}h_g\qquad (22) \]

    \[ d_r > 2\sqrt[2]{\frac{B_g}{B_{sat}}\frac{d_{vc}h_g}{N}}\qquad (23) \]

where N is the number of steel rods, N = 8 in Fig 6.b

4. Top Plate

 Top plate  behavior is similar to the bottom plate but the thickness of the plate near the gap is given by the gap height h_g as shown in Figure 7.  There are cases when the thickness is tapered towards the outer diameter but usually it is constant to make mounting on the speaker frame easier.

Loudspeaker Magnetic Gap

Figure 7. Representation of Magnetic Gap (b) with Top Plate (a), Central Pole Piece (c) and Voice Coil (d)

With a constant thickness, at the outer edge of the top plate, the B_c value will be smaller than B_g as the area though which magnetic flux passes, \pi d_ph_g, is larger. Moving towards the gap the area becomes smaller as the diameter decreases towards d_{vc} and thus B_c approaches B_g.

If tapering is desired then Eq 16 should be applied in this case as well.

3. Conclusion

Through simple calculations we can determine rough dimensions of the loudspeaker motor in order to avoid magnetic saturation of the steel in the magnetic circuit. These values can be a starting point and then refined with the use of advanced numerical methods. We also identified the restrictions around the magnetic gap and the limit imposed by the saturation value of the material. For typical 1010 Steel B_{sat}=1.85T, for 1006 Steel B_{sat}=2.13T and for Hyperco50 Alloy B_{sat}=2.4T.

We can see the importance of using steel materials with high saturation values to lift the limits imposed on the gap. This is also the reason why in some designs only in the region around the gap high quality steel is used and for the rest of the motor’s structure a lower grade is chosen to keep the costs down.

Lua Scripts for FEMM to aid Electrodynamic Loudspeaker Motor Design

March 13, 2016 Technical Notes No comments

0. Abstract

Information about loudspeaker design is very hard to find and there very little tools out there to help the aspiring DIY-er. The purpose of these scripts is to provide a starting point for a loudspeaker magnetic circuit design by simulating various geometries and parameter sets and choosing the best result.

 These scripts are meant to be used with Finite Element Method Magnetics (FEMM) software. FEMM is a free application written by Dr. David Meeker that can do FEM analysis of magnetic circuits.

The scripts are written in Lua programming language and are available in the Project Ryu Loudspeaker Drivers repository on GitHub. Please visit the FEMM homepage for more information about the software and download link.

Depending on the time you will read this article there will probably be more than one script corresponding to different types of motors. In this article I will focus on the field coil motor script.

1. Introduction

Dynamic loudspeaker motors are basically actuators. A voice coil is immersed in a constant magnetic field and when current flows through the coil it will create a force (a consequence of  Lorentz force) whose direction depends on the direction of the current through the coil.

In dynamic loudspeakers the constant magnetic field is generated with  either a permanent magnet or a field coil. This magnetic field is then directed and concentrated in the area where the voice coil is. A magnetic circuit created from a material with much greater magnetic permeability than air (usually low carbon steel) is used to achieve this.

The force acting on the voice coil will be a product of magnetic flux density and length of the wire  multiplied by current intensity. Ideally, the magnetic flux  lines will always be perpendicular to the direction of the current flow in the wire and thus the force’s magnitude can be express in scalar form as follows:

    \[ F = BLi \]

where F is the force, i is the current through the voice coil, L is the total length of the wire in the voice coil and B is the magnetic flux density. If we consider i to be the input of your system and F the output we can see how the electrical signal is transformed into a mechanical signal and how the product BL can be thought as an electro-mechanical coupling factor. Since L depends on voice coil, our interest in designing the magnetic circuit is focused on magnetic flux densitiy B.

Using FEM analysis we can predict this parameter for certain magnetic structures and one great free tool for this is FEMM application. This said, as with most applications, it requires some time, practice and knowledge to utilize it. For this reason i have created the helper script that should get any DIY-er started faster. It will generate a motor structure and field coil circuit based on your desired B value and a few other parameters.

2. Motor Structure

The geometry of the motor structure is calculated from the input parameters but it will result in classic motor structures. For field coil motors the structure consists of top steel plate, steel ring, steel bottom plate, steel central pole piece and the copper field coil.

Figure 1 depicts the classic structure of a field coil underhung motor and identifies it’s components. It is called an underhung motor because the voice coil’s winding height is smaller than the magnetic gap height.

Field Coil Motor Structure

Figure 1. Field Coil Motor Structure. (a)Voice Coil Former, (b)Voice Coil Winding, (c)Magnetic Gap, (d)Steel Top Plate, (e)Field Coil, (f)Steel Ring, (g)Steel Central Pole Piece, (h)Magnetic Flux Lines, (i)Steel Bottom Plate

Magnetic field is strongest at the center of the field coil and this is why the central pole piece is the easiest to saturate. We must ensure we have enough steel there to avoid this. If this section is saturated it will limit the flux density in the magnetic gap not matter how much the current through the field coil is increased or how big the field coil itself is. We should ensure that the saturation point is in the gap region only.

The next areas with strong magnetic field is on the field coil’s axis, above and below the field coil itself. The bottom plate’s thickness in that region must be considered again to avoid saturation. Above the field coil we have the magnetic gap and this is the area it is best to saturate. As shown in Figure 1. the diameter of the central pole piece is reduced. This is because we need to fit the voice coil but also because it will concentrate the flux lines to the gap.

There will be a few flux lines crossing the air region between the field coil and the top plate because of this but with underhung motors it shouldn’t pose a problem. The reason saturation of pole pieces in the gap region is desired is because this way the flux density will be more stable and less prone to be influenced by the magnetic field generated by the voice coil itself. Another thing to note about the classic structure is that the magnetic gap height usually equals the thickness of the top plate.

3. Input Parameters

In loudspeaker motor design the most important area is the magnetic gap. One could argue the end result would be the same if the magnetic gap parameters and geometry are the same no matter what the rest of the motor looks like and under specific working conditions that would be true. For this reason, i chose the input parameters to those corresponding to the magnetic gap. Let’s enumerate them:

  • Voice coil diameter: this represents the mean diameter

    \[ d_{vcm} =  (d_{vco} + d_{vci})/2 \]

where d_{vcm} is the voice coil mean diameter, d_{vci}, the voice coil inner diameter and d_{vco}, the  voice coil outer diameter. This parameter will determine the radius at which we will acquire the magnetic flux density values in the gap.

  •  Voice coil height: this represents the winding height and it is used together with desired Xmax  to calculate top plate thickness, magnetic gap height

    \[ h_g = 2*x_{max}+h_{vc} \]

where h_g is the gap height and h_{vc} is voice coil height.

  • Voice coil width: this represents the thickness of the voice coil including winding and former. One could define this parameter as:

    \[ w_{vc} = (d_{vco} - d_{vci})/2 \]

This parameter is used in computing the magnetic gap width by adding a clearance factor to the inside and outside of the voice coil.

    \[ w_g = w_{vc} + 2*w_{clear} \]

where w_g is the magnetic gap width, w_{vc} the voice coil width and w_{clear} is the clearance between the voice coil and the steel pole pieces. The default clearance value is 0.3mm and in section 5  i will describe how to modify this value.

  • X_{max}: this represents the desired distance the voice coil can travel in each direction with negligible change in flux density.
  • Flux density: represents the desired B value in the magnetic gap. This value is used in the simulation process that will be described in the next section.

All these parameters are requested via a prompt when running the script. This prompt can be disabled if you can handle adjusting the parameters in the code.

Working directly on code will also enable you to adjust more advanced settings which will be discussed in section 5.

4. Simulations

Once the input parameters are set the script will begin the analysis. It will iterate through different motor sizes and for each motor size it will simulate different field coils by changing the wire diameter and thus the number of turns also. The physical size of the field coil will always be the same for a give motor size. For each field coil the script will use a range of current  values and calculate the magnetic flux density and field coil properties.

Each simulation result that passes the desired flux density value will be stored. Once all the simulations are finished an optimization process begins. The program will take each stored result and calculate a weighted sum between flux density, motor size and field coil power. The record with the highest score will be chosen as optimum and results displayed. The weights of the sum represent the importance the user puts on specific parameter. For example if the user is willing to sacrifice a little flux density in order to get a more compact motor than the weight of the flux density parameter will be lower than that of the motor size parameter.

Under User Constants we can find the weight vector w with w[‘dia’] being the wight for motor size, w[‘pow’] – weight for field coil power and w[‘flx’] – weight for flux density. The weights take values between 0 and 1 with 0 meaning ignore and 1 meaning the most important.
e.g.
Objective: dont care about motor size, sacrifice a bit from flux density value for the best field coil power value
Weight vector:

    \[ w = \{ ['dia'] = 0, ['pow'] = 1, ['flx'] = 0.7 \} \]

Score:

    \[ s = w['dia']*d_m+w['pow']*P_{fc}+w['flx']*B \]

where s is the score value, d_m is the motor diameter, P_{fc} is the field coil power and B is the magnetic flux density in the gap

5. Advanced parameters

There are a number of parameters which can only be adjusted by modifying the script’s code. These parameters will influence the geometry, the total number of simulations and the end result.

  • Bottom plate thickness [ default: 20 mm ]: This parameter influences the geometry and thus the magnetic circuit. If the bottom plate saturates you should increase the value. To adjust it modify the botplate parameter under Program Constants.
  • Steel ring thickness [ default: 10 mm ]:   This parameter influences the geometry and thus the magnetic circuit. If this region saturates you should increase the value. To adjust it modify the canplate parameter under Program Constants.
  • Motor height [ default: 120 mm ]: This represents the total motor height. To adjust it modify the mheight parameter under User Variables.
  • Minimum motor diameter [ default: 120 mm ]: This is the start value that defines the motor size range to be simulated. This motor diameter will be the first to be simulated and then the diameter is incremented until it reaches the maximum value. To adjust it modify the min_mdia variable under User Constants.
  • Maximum motor diameter [ default: 180 mm ]: This is the end value that defines the motor size range to be simulated. To adjust it modify the max_mdia variable under User Constants.
  • Minimum field coil wire diameter [ default: 0.3 mm ]: For each motor geometry the scripts simulates a range of field coil wire diameters that will result in different number of turns and impedance. This parameter sets the start value of this range. Modify the min_ecwdia to adjust it.
  • Maximum field coil wire diameter [ default: 1.5 mm ]: Maximum wire diameter to be used in field coil. Modify the max_ecwdia to adjust it.
  • Field coil start current [ default: 0.1 A ]: As mentioned in previous section for each motor the script will test a range of current values through the field coil. This parameter holds the start value for the current and thus will influence the total number of simulations and the script’s running time. If you know the range of the current you will feed the field coil you can modify the variable start_i under Program Constants to reduce the simulation time.
  • Magnetic gap clearance [ default: 0.3 mm ]: This parameter represents the distance between the voice coil and the pole pieces. In order to move freely there has to be a clearance between the voice coil and the steel. It influences the magnetic gap width value. To adjust it modify gapclear variable under Program Constants.

6. Using the script with FEMM

Usage is very simple, once FEMM application is started, press the “Open Lua script” button in the left tool bar indicated in figure 2 with a red rectangle. The script will then execute. By default the prompter variable is set to 1 and this enables a dialog with the user asking for the input parameters presented in section 3 after the user inputs a project name. The FEMM project will be saved under this name by default in C:\temp folder. You can change this location by modifying the code and adjust the save_path variable.

FEMM import script

Figure 2. Importing the script in FEMM

Once the script finished running, the final simulation will be loaded and the user can further improve it or export dxf with the geometry.

7. Conclusions

At the time this article was written, the script can be greatly improved but still provides a good start in designing a loudspeaker motor. Improvements that will follow will be increased mesh size for FEM analysis around the gap for better resolution, increased number of steel options, generate bottom plate and steel ring thickness dynamically, optimization of magnetic gap geometry just to name a few.

Since the project is open source, contributions are most welcomed, please follow the GitHub link at the top to get to the project’s repository. Also reporting bugs is very appreciated so feel free to drop an email at contact[at]projectryu.com or report an issue on GitHub.