BEMF - Back ElectroMotive Force

This page is under construction.


I'm going to try to explain BEMF, what it is, how it affects our trains, and how to set DCC decoders for optimum results. Much here is from many sources besides my own electrical engineering and physics educational background. I wish to say thank you to Mark Gurries and Don Crano, I have paraphrased some of their explanations from 1999 posts on the DCCSIG.

notes on page development planned

  • what BEMF is, since so many companies are claiming this or that is BEMF.
  • Then I’ll go into the techniques measure BEMF (which is not really what ESU is doing directly)
  • Then how BEMF can be used to actually detect the rate of rotation in a motor, by measuring/detecting BEMF spikes as the various windings are energized/de-energized.
  • Then lastly how various manufacturers implement load detection, speed, etc. as much as I can find out.

What is BEMF

This is actually quite simple, once you follow the symmetry of how magnetism and electrical current interact.

the "Right Hand Rule"

Well, I was taught the fundamental concept in high school.


First remember B-EMF is rated in volts and is used as volts per RPM. And
different motors have different volts per RPM rating, so the first
adjustment is to match the motors volts per RPM rating to the decoder that
will control it.


Here's a great explanation from Mark Gurries:


And here is a page on BEMF and consisting:








What are the typical BEMF parameters that can be adjusted?





CV55 Static Compensation.
This is also known as the intensity control. This is based on a given motor
and it's volts per RPM rating, and how the decoder should respond to this in
intensity. In other words how much the decoder considers the difference
between the current motor and locomotive speed and the target speed set on
the throttle when determining the next speed command to send to the motor.
Thus the relationship to a spring. The stiffer the spring the more intense
the reaction to a given change.  Default here is 0x80, range is 0x00 to
0xFF, Higher values  equals more intense reactions. Excessive values in this
CV will tend to allow a locomotive to "hunt" around a new desired speed when
a change of speed is commanded. Use the minimum amount of this compensation
needed to give the desired performance.

The next common adjustment for B-EMF is duration, that is load changes can
be short duration and long duration. This can be as example short durations
are binding in drive gear, or may be a bump or buck when MU'ed etc. Long
durations can be called a grade or actual load behind the loco. So what is
needed next is a way to control the speed of the reaction from a B-EMF

CV56 Dynamic Compensation.
Thus the relationship to a damper or shock absorber.  In other words, we set
the intensity via CV55, but we use CV56 to control the speed of the change.
This is all related to the speed of change to the target speed, the next
speed command sent to the motor. If the intensity is high, and the speed
fast, it may tend to overshoot it's target, and then have to hunt up and
down to find the target speed. Default values is 0x30, range is 0x00 to
0xFF. Excessive values in this CV will tend to allow a locomotive to "hunt"
around a new desired speed when a change of speed is commanded. Use the
minimum amount of this compensation needed to give the desired performance.

Next B-EMF adjustment is actually the amplitude or amount of B-EMF we want
to apply to the motor for speed control. We can set the intensity CV55 for
the motor used, set the speed of reaction CV56 based on the intensity and
how fast we want to get to the next target speed. So now we need to control
how much of this we really want to use to control the motor.

CV57 Droop Control.
This is where we set the decoder to do what we want it to, and how it will
actually react to the above adjustments once they are properly setup. A
value of '00' equals no B-EMF period, in other words B-EMF is turned off.
Here the droop is less with a higher value, and more with a lower value. Or
again in other words, the amount of reaction from the B-EMF adjustments from
CV55 and CV56 is less with a lower value, and more with a higher value. This
simply means that if you want true cruise control, set to the higher value,
if you want partial speed control, select a lower value, and if you want to
turn it off, set to '00'. If the droop CV value is too high, you may see
locos jump from one speed to the next if they encounter an obstacle or
problem with track work.
The value range is 0x0 to 0xF. This is not the same as 0x00 to 0xFF, because
Digitrax used direct entry here of the MSB and LSB. Or left and right digit.
This allows separating normal compensation of the 2/4 digit address and
consist addressing with advanced consisting. A typical value for many
locomotives is a value of CV57=05, but the actual value that is best for a
locomotive and train size needs to be determined by the user by observation
and experimentation. A value of '05' means that the droop is set to 5 for
normal addressing 2/4 with no compensation for advanced consisting. If one
wanted the same compensation for both normal addressing and advanced
consisting, then the value would be '55'. Or if one wanted more droop in an
advanced consist, then some thing like a value of '35' would allow less
compensation in an advanced consist, then when used with normal 2/4
addressing, etc.

Also note when using B-EMF, CV02, Vstart should really not be used and set
to CV02=00. In other words a motor without RPM has no B-EMF voltage, and the
decoder will know this, so let the B-EMF decoder handle the Vstart. This
means that low speed % steps such as e.g. 3% or 4% will give best slow
operations when CV2=00.



As I stated a while back, does not matter what form of feedback is used,
B-EMF/Armature, Tach/Encoder, Current sensing, etc. To allow different
motors to be used with a feedback device, in this case a decoder and B-EMF,
there needs to be at least 3 basic adjustments, Amplitude, Duration, and
Intensity. Because motors differ, and the need for one to tailor the
response to the way we want it. These are just the basic adjustments
required, may be some day we will see constant torque/currenlimited,
Tach/Encoder, and slope controls, inside our little decoders.<vbg>

BTW, the actual relationship to spring stiffness, shock absorber, and droop
is really a pretty good one, have never really seen it before, but it is a
good comparison. Stiffer spring equals more intensity [energy] and the shock
absorber controls the speed of the energy. Droop equals the actual amplitude
of it all.


 here is an in-depth study of the interaction of pwm and bemf in a brushed dc motor

setting procedure:


Program CV57 (Droop control) to a starting value of 05. This will turn on speed stabilization. Put the loco on level track and run it at about 20% of full speed. Using Ops mode programming, increase the value in CV55 (Static) from the default value of 80 upward until you observe the loco jumping as speed steps increase. Finish this step by now programming CV55 to the value just before the jumping started.

Follow the same procedure with CV56, beginning with the default value of 30 and increasing it until you notice the loco oscillating, faster-slower, faster-slower, as speed is increased. Finish this step by programming CV56 to the value just before the oscillation started.

Follow the same procedure with CV57, beginning with the value 05 as programmed in step 1. Increase the value in this CV until the speed when going up hill is roughly equivalent to the speed on level track. This will yield a best droop consistent with the locomotive characteristics.



Weather Underground PWS KCACARLS78