Our resident expert on all things
robotic is merely an email away.
roboto@servomagazine.com
Tap into the sum of allhumanknowledge and get your questions answered here!
From software algorithms to material selection, Mr. Roboto strives to meet you
where you are — and what more would you expect from a complex service droid?
by
Dennis Clark
Robots seem to be everywhere you turn in the media
these days and we hobbyists are out there leading the
charge! Check the SERVO Magazine calendar for the
competition or demonstration near you! This month was
leaner on questions which is okay with me since there are
robot competitions coming up in the next few months that
I’ve got to get ready for too. For those that had questions,
onward to the answers!
Q. I’m wondering if you could help me design a simple, cost-effective circuit to accomplish the following:
1) Monitor a DC motor winding to detect if the motor is
being manually turned; .1V-.2V DC detection range.
2) Respond by connecting the motor to a battery 3V-9V DC.
3) Disconnect the motor from the battery after three
seconds.
4) Reset and re-allow step 1) after three additional seconds
after the battery is disconnected.
This would be a very small DC motor, <1 amp, 3V-9V
DC operating range; approx 3,600 RPM.
Any help or guidance you can give would be greatly
appreciated. Love your column.
— Terry L. Stevens
A. I can indeed think of a way to do this. If you have back issues of SERVO Magazine, you’ll find part of the answer in the December ‘08 issue where you’ll
see a description of a CEMF (Counter Electro-Motive Force)
“sensorless” sensor circuit for determining the speed of a
brushed DC motor. In case you do not have that issue,
Figure 1 shows the basic circuit for detecting current in a
brushed DC motor. This will work even if you just spin the
armature by hand. But unless you give it a good twirl,
you might not detect voltage. So, here is an idea. Use an
op-amp to boost the voltage to a level that you can detect.
By powering the op-amp at the same voltage as your
microcontroller, you are assured that you won’t overload
your analog-to-digital (A2D) circuit that is reading the
voltage.
The circuit shown in Figure 1 has op-amps in the
output stage of the detector. These are configured as
non-inverting amplifiers with a gain of five. You calculate
the gain of a non-inverting op-amp as
1+R6 R8
in the case of the upper op-amp. If this should not be
sensitive enough for your motor, then use 18K resistors for
R6 and R5 which will give you a gain of 10, which should
do the job nicely.
Because you didn’t say whether you wanted the motor
to turn in only one direction, I created a circuit that you can
use that will detect which way the motor is being turned.
The 754410 is a one amp dual motor driver; I have only
shown connections to drive one motor here. Simply
connect the Detect Forward output to one of your A2D
pins and the Detect Reverse to another. Whichever one is
detecting voltage at that moment is the direction that
the motor will turn. I have chosen forward and reverse
arbitrarily here; you will need to experiment to see which
direction is which for your application.
You also didn’t specify which microcontroller you want
to use, but no matter which one you choose, it will have
timers in it. Simply set one timer up to count at the
resolution required so you can time three second intervals
(your required accuracy) and you can now detect a motor
turning. Turn that motor on for three seconds, turn it off,
wait three seconds, and start looking again. This is a very
simple program once you get past the detection part of
the hardware.
It intrigues me what you might be using this circuit for.
Some ideas come to mind, but I’d sure like to find out what
you’ll be doing with it!
SERVO 09.2009 13