3-Phase Winding Current Balance Solver


Greg Menke


TPSolver accepts 3-phase currents and voltages feeding into a 3-phase motor and computes the consequent winding currents, assuming the motor is wired in a delta configuration.  Estimates of dissipation and horsepower are also computed.  Efficiency and Power Factor can be provided to (hopefully) improve the accuracy of the results.  By observing the relative magnitudes of the winding currents, the user can evaluate the balance of a 3-phase circuit, using the results to tune the system.


TPSolver uses an algorithm proposed by Bob Nelson (http://www.practicalmachinist.com).  A summary of my implementation follows. 

TSolver assumes a cartesian coordinate system where the x,y and z axes represent the AC, BC and AB winding currents.  Given the simultaneous equations relating the phase currents to winding currents and the 3-phase currents as the target, tpsolver begins traversing bounding boxes, finding the points that when substituted into the equations, produce results closest to the target.  By viewing the winding currents as cartesian points, "closeness" is convieniently defined as 3-dimensional distance.

Rather than exhaustively searching one large box to find the solution, tpsolver takes a stepwise approach.  The length of each axis of the box is divided into a small number of steps.  Each step of each axis provides one of the 3 coordinates for a test computation, allowing tpsolver to coarsely and quickly sample the bounding box.  The four points yielding results closest to the target are saved.  Once the steps of all 3 axes are traversed, the set of closest points is examined to compute a new, smaller bounding box.  The algorithm then repeats the sampling with the new box, producing four new closest points.  The cycle repeats until a point is found yielding results close enough to the target values.  By progressively decreasing the volume of the box, the algorithm converges on the target.

The user sets the starting length of the 3 axes and the number of steps per axis.  Since the algorithm converges very quickly, the following settings are suggested;

- solve axis length of 10^6 or more
- solve steps of 40
- solution threshold of .001 or smaller

Increasing the step count tends to decrease the number of bounding boxes but increases the time required to sample each one.


Current Version: 1.6, 1/23/2005

x86 Linux executable  .gz
Windows executable  zipped
Mac OS X (not yet)

(Unfortunately the executables tend to be rather large because the Lispworks compiler generates statically linked executables.  On the other hand, this avoids the potential of shared library version problems.)

source code
delivery script


Copy the executable to a convienient location, the desktop or your home directory is fine.  Invoke by whatever means you choose.  Although there are no preference settings as such, upon exit, tpsolver always stores the current values of the data entry fields into a text file located in the user's home directory.  The next time tpsolver is invoked, the previously saved values are retrieved and loaded into their respective fields.  The tpsolver version number is also stored to the file, so upgrades to the software will use previously saved values in a reasonable manner.

If efficiency and/or power factor are not known, supply .8 and 1 respectively.


Fill in values as desired, then press Solve.  If desired, press Stop to cancel the solver.  Once the computation is finished, various results are shown on the Parameters page and a graphic is generated on the Results page.  Sanity checks of the various parameters are not exhaustive, more will be added as the program stabilizes.


TPSolver is released via the GNU GPL Version 2.  Please refer to http://www.gnu.org/licenses/gpl.html

Development Environment;

I developed TPSolver in Lispworks 4.3.7 on x86 Linux.  x86 Linux executables are compiled by myself, versions for other operating systems are compiled by Lispworks users kind enough to compile the source for me.  Although the algorithm is written using portable Common Lisp, the GUI interface library is specific to Lispworks.  Should you wish to experiment with the source code, demo versions of Lispworks are available for a variety of platforms and should capable of running TPSolver without any trouble.

;;; eof