This completely new speed controller is based on a PIC16F88
microcontroller. This micro provides all the fancy features such as battery
monitoring, soft-start and speed regulation. It also monitors the speed setting
potentiometer and drives a 4-digit display board which includes two
Good speed regulation under load
Automatic soft-start and fast switch-off
Eight memory settings
4-digit 7-segment display
Variable frequency for pulse width modulation (PWM)
Battery level meter
Persistent settings & defaults
Rated up to 40A continuous current
12-24V DC input
The 4-digit display board is optional but we strongly recommend
that you build it, even if you only use it for the initial set-up. It unlocks
the full features of the speed controller and allows all settings to be
adjusted. The microcontroller will detect whether the display board is connected
and if not, the speed controller will support only the basic functions. In this
simple mode, it will function as a simple speed regulated controller with
automatic soft-start and with the speed being directly controlled by a pot
(VR1). All the other settings will be the initial defaults or as last set (with
the display board connected).
When connected, the 4-digit display allows you to monitor the
speed and the input voltage (useful when running from a battery). It also
enables you to navigate through the various menus to adjust the settings.
The circuit can run from 12V or 24V batteries and can drive
motors (or resistive loads) up to 40A. Furthermore, this is our first DC speed
controller (except for out train controllers) incorporating speed regulation
under load. In other words, a given motor speed is maintained, regardless of
whether the motor is driving a heavy load or not.
Monitoring the back-EMF
In speed controllers which do not have good speed regulation
(ie, the vast majority of designs), the more a motor is loaded, the more it
slows down. In order to provide speed regulation, the circuit must monitor the
back-EMF of the motor, since this parameter is directly proportional to its
As a result, our new speed controller monitors the back-EMF of
the motor. "Back-EMF" is the voltage generated by any motor to oppose the
current through the windings. EMF stands for "electromotive force" and is an
obsolete term for voltage. Back-EMF is directly proportional to the motor speed
and so by monitoring this parameter, we have a means of controlling and
maintaining the motor speed.
In practice, the main control loop of the microcontroller tries
to match the speed of the motor (back-EMF) to the speed set by the pot or
recalled from a preset memory. If the measured speed is lower than the set
speed, the duty cycle of the pulse width modulation (PWM) signal used to drive
the power Mosfets that control the motor is gradually increased. In other words,
if the speed tends to drop, more power is fed to the motor and vice versa.
The frequency of the pulse width modulation can be set from
488Hz to 7812Hz. This is a useful feature since different motors will have
different frequency responses, as well as different resonant frequencies. This
is important to reduce the audible buzzing from the pulse width modulation, as
these frequencies are well within the range of hearing.
By now you’re probably wondering how the microcontroller
monitors the back-EMF of the motor, considering that the motor is continuously
driven with pulse-width modulated DC. The answer is that the micro periodically
turns off the PWM signal to the motor for just enough time for the back-EMF to
stabilise. This "window" needs to be wide enough to ensure that we are measuring
back-EMF and not the spike generated by the last PWM pulse. On the other hand,
we don’t want the window so wide that the maximum power to the motor is
significantly reduced or that the motor noticeably slows.
The compromise value is that the motor is monitored for 200ms
every 7.4ms (ie, about 135 times a second), as shown in the scope diagrams in
this article. As a result, the fact that we do monitor the back-EMF around 135
times a second means that the power applied to the motor is slightly less than
the theoretical maximum, although this effect is negligible.
A low-battery alarm is also incorporated to warn when the
battery level drops below a preset value. This is especially useful for
applications like electric wheelchairs.
There are also eight memory speed settings. All settings are
persistent, meaning they are retained in non-volatile memory.
Fig.1: the circuit uses PIC16F88 microcontroller IC1 to provide PWM drive to power-Mosfets Q5-Q8 which in turn control the motor. The microcontroller also monitors the back-EMF from the motor, to provide speed regulation. IC2 is a DC-DC switchmode converter and this provides a +5V rail to power IC1.