An interactive, visual tool aimed at the hobbyist or maker for understanding engineering tradeoffs in design of coils for generating maximum effective magneto-motive force. Real-world physical and electronic constraints can be represented.

Watch the introductory video.

Electric Parameters:

Voltage (v)
Internal Resistance (Ohms)

Physical Parameters:

Bobbin Inner Diameter (mm)
Bobbin Length (mm)

User Interface Controls:

Maximum Amperage
Maximum Wattage
Minimum AWG
Maximum AWG
Maximum Bobbin Outer Diameter (mm)
Bobbin Size Step (mm)

Electronic Circuit Model: Coil Circuit Diagram
Physical Bobbin Model: Bobbin Diagram
Magnetomotive Force
Coil Heat Limit Animation
Amperage Limit Animation

How To Use This Page


I needed to understand and design how to maximize the effective magnetomotive force of a coil to push a magnet as a part of the Gluss Pusher project, and was unable to find a completely satisfactory tool for the hobbyist.

In general, the engineer or hobbyist must select wire and the geometry of a coil subject to constraints and tradeoffs. Drawing more current provides more force, but generates more heat and drains a battery faster. Making the coil thicker provides more turns, thus increasing the MMF, but increases the resistance. This tool is meant to make these tradeoffs visible.

Magnet Wire

Usually coils are made out of commercial magnet wire which is sold by "American Wire Gauage", or AWG. Larger AWG number are thinner. Since this tool is meant for the hobbyist, I have made the two variables sought in the model the AWG number and the diamater of the width of the coil. Sometimes coils are wound by counting turns, but after many turns the outer diameter of the coil is perhaps easier to measure.

Effective MMF: An Approximation

In general as a coil becomes larger not all of the magnetic flux or MMF goes where you want it. In particular, if the coil outer diameter is much larger than the inner diameter, only a fraction of the MMF generated by the outermost wire will go into the hole in the bobbin. I do not know how to model this precisely. A approximate it with the concept "Effective MMF". I simply assume that the flux from any one turn of the coil is evenly distributed in the circular area of that turn. I therefore assume that the area of the circle that is the inside of the bobbin divided by the area of the turn is the "Effective MMF", a fraction of the total MMF.

I am not sure how much it matters if you are designing an iron-cored coil to make a transformer or an inductor. To move a permanent magnet in a tubular linear motor as in the Gluss Pusher project, it is clearly valuable to have the coil as tight around the actual magnet as mechanically possible. In general a space tolerance will be required between the magnet and the bobbin to allow motion. I have simplified this by simply using the interior area of the coil, which is not quite correct but simpler than attempting to model the geometry of the permanent magnet.

The large 3D chart on the top above title "Magnetomotive Force" renders the Effective MMF against the wire gauge and the outer diameter of the coil. By hovering over a particular element, the tooltip will show the total MMF as well as the Effective MMF.

Power Supplies

In practice, a power supply will be a battery or an amperage-limited power supply. Batteries cannot be modeled accurately without an estimate of internal resistance. The internal resistance in this simulation should include any other resistance, such as a wire, before the beginning of the coil.

Unless you use a sophisticated current-limiting power supply, a non-battery source of voltage will have an amperage limit and will fail if you draw too much current. This failure may be gentle, such as shutting off or tripping a circuit breaker, but it is never good for your application.

Amperage Limitation

The chart titled "Amperage Limit Animation" is valuable for seeing amperage limitations. It cycles through the maximum amperage set in the parameter area. At any point in the animation, it drops to zero (represented as dark blue at the plain) any design choices which draw more power than a certain amperage, controlled by the animation, or the slider at the bottom. By manipulating the slider and looking at the surface you can get an understanding of how design decisions approach an amperage limit.

Heat Limitations

Applying voltage to a non-superconducting coil generates heat. If the heat is generated faster than it can be carried away, the temperature will rise. Eventualy the insulation on the wire will melt (or something may go wrong sooner, if you are using a plastic bobbin, for example.) We may hope eventually to improve this tool by adding a heat dissipation model. Dr. Bryan Ruddy discusses such heat dissipation models in this dissertation, but I have not yet attempted to add those to the model.

Until that time, the best we can do is to know how many watts are being generated as heat inside the coil. The chart "Coil Heat Animation" is designed to allow this be visualized and understood. How will you relate a given wattage to the actual survivability of your coil? I can only suggest that you try it and see when you smell smoke. Wear your safety glasses while performing this experiment, please.


Like any modeling tool, CoilChoice starts to make more sense as you manipulate it and observe changes, checking those changes against your intuition and actual calculation and experimentation. Here are some valuable experiments for developing an understanding of tradeoffs using the tool.

Increase the internal resistance and observe that the eventually the maximum force is generated with thinner wire. This is related to the fact that the maximum power pulled from a circuit with internal resitances occurs when the load matches the internal resistances. An internal resistance of 0.1 Ohms might correctly model an Alkaline battery. 0.025 Ohms might correctly model a Lithim-Ion Polymer battery. For fun, set the internal resistance to 2 Ohms, even though hopefully your battery will not have an internal resistance that high.

This table of approximate battery internal resistances is useful.

Change the bobbin dimensions and observe that optimum wire gauge may change.
Choose an amperage limit. Change the minimum and maximum wire guage and the Maximum amperage to make the charts match the design decisions that are relevant to your amperage limit.

A Basic Physical and Electrical Model

Assumptions and Simplifcations

The coil is circular.

I assume that the wire packs onto the coil as if it were little squares. The number of turns in a winding is thus the bobbin length divided by the outer diameter of the wire. The number of windings is the coil width, which is the difference of the inner and out radius, divided by the wire outer diameter. In theory circular wire could be packed a little tighter than this. However, this may depend on the care with which the coil is wound, and would be difficult to model.

Here is the Javascript from CoilModel.js:

  // Windings are computed from radius, not diameter...
  // We assume the number of windings (vertical layers from the bobbin's rotational axis)
  //  as if the Wire packed like squares..
  var Windings = (model.BobbinOuterDiameter/2.0 - model.BobbinInnerDiameter/2.0) / model.WireDiameter();

  // The number of turns in a winding is just length divided by WireDiameter...
  var TurnsPerWinding = model.BobbinLength / model.WireDiameter();

  // Total Turns is what drives MMF...
  var Turns = Windings * TurnsPerWinding;

  // I am not entirely sure of this...
  var AverageTurnDiameter = (model.BobbinOuterDiameter + model.BobbinInnerDiameter) / 2.0;

  // We need to know AverageTurnLength to compute resistance...
  var AverageTurnLength = AverageTurnDiameter * Math.PI;

  // Resistance is a function of total wire length...
  var WireLengthIn_mm = Turns * AverageTurnLength;
  var CoilResistance = WireLengthIn_mm * model.OhmsPerMM();

  // Total Resistance includes InternalResistance outside of the coil...
  var TotalResistance = model.InternalResistance + CoilResistance;

  // Ohm's law V = I * R...
  var Amperage = model.Voltage / TotalResistance ;

  // To compute heat we need to know the voltage drop in the coil specifically
  var VoltageDropInCoil = model.Voltage * (CoilResistance / TotalResistance);
  var VoltageDropInBattery = model.Voltage - VoltageDropInCoil;

  // Currently not reporint InternalHeat but it could be important
  var InternalHeat = VoltageDropInBattery * Amperage;
  var CoilHeat = VoltageDropInCoil * Amperage;

  // MMF is straightforward...
  var MMF_amp_turns = Turns * Amperage;

  // This is debatable...
  var EffectiveMMF = MMF_amp_turns*(Math.pow(model.BobbinInnerDiameter/AverageTurnDiameter,2));


This tool perhaps makes interactive and visual the excellent work (apparently by R. Clarke):, althouth that work focuses rather strongly on coils containing a core, and perhaps focused more on inductance than the production of MMF.

Thanks to Almende, B. V., for their open-source graphing software, Vis.js.

Here is an informative reference with a table of typical internal restistances:

The circuit diagram started out as a Fritzing diagram, which I then modified in Inkscape.

The bobbin diagram was made with Inkscape.

This page looks better because of Bootstrap than it would without it.

Licensing, Contributing and Reusing

CoilChoice is Free-libre Open Source Software, licensed under the Affero GPL. The github repo is a convenient way to reuse it. To report a bug or make a suggestion, open an issue at the github repo. Even better, create a pull request!

You may prefer to use the spreadsheet, also present in Microsoft Excel format.

This sofware was in fact written by Robert L. Read <>, although I hope others will join me in making a PIFAH a team effort. Email me for questions or comments.

GPL 3.0 Logo