I am working on creating a Hard Drive DJ similar to the other posting on this website, except that I want to drive the motor when the user isn't scratching on it. Multiple sources recommended using an ESC for this, but I have two main problems:

  • I would like to drive the motor forwards and backwards at various speeds. Is this possible with an ESC?
  • I have to have some sort of additional monitoring system for checking when a user starts playing with the spindle so that I can turn off the ESC and switch to monitoring EMF voltage levels with the ADC. Can you think of a good way to do this?

Also, do you know of a good datasheet or tutorial that describes the protocol for talking with an ESC from a microcontroller?

Thanks for the help!

EDIT: I found an instructable that used Hall EMF sensors and an L6234 driver chip. Would the L6234 better fit my needs over an ESC?


An ESC should be ideal basis for what you want. I know that for electric r/c airplanes, you definitely can vary the speed since that's what the throttle control does, although I don't know that you can throw them into reverse.

However, an ESC is essentially a device for making three phase AC out of DC, and the old trick for changing direction of a three phase motor would apply, which is that you simply swap any two of the three connections and the direction of rotation changes. A DPDT relay or an H-bridge switching circuit could accomplish that for you. Although there's a very good chance that a ground-vehicle ESC could do reverse without any tinkering. It's worth looking for one that can do reverse before getting tangled in adding circuitry.

Also, they don't have any feedback capability that I'm aware of, it's strictly power into the motor, although again, I'm not familiar with them all. Even if there are expensive models that do what in BLDC controller jargon is referred to as 'sensorless control' - which is almost exactly what you said, every so often you stop driving power and check the voltage being generated to sense speed, it would be doubtful that the ESC would feed this information back to you. Chances are it would only use it to vary the frequency/phase of the AC it produces in order to better sync the fields in the motor. However, nothing says you can't turn off the ESC and directly read the generated voltages directly with the microcontroller.

One thing you could do, though, to tell when someone takes control over the platter, is sense the current being pulled by the ESC. You would have to LPF it to mitigate the switching frequency of the AC the ESC produces. As long as the ESC isn't told to accelerate the platter too quickly, with basically no load on it, the current demand should be fairly low. At a constant speed of rotation, the current should also be nearly constant, and low. As soon as someone tries to change the speed/position of the platter, this should be visible as a sudden change in current. The difficulty with this approach is that if you're turning the platter at low speeds, the AC switching frequency required for that is also quite low, so it might be hard to get the signal out of the noise. I'd put the current on a scope and fiddle with it, to see how good (or not) the signal is, before committing to building hardware for it.

Another thing is to use those reflective optical sensors, like the lego robotics setups. Or hall sensors as you suggested. Either way, you'd get input that could be changed to speed information, that you could compare against what the controller expects the speed to be. Any change in expected speed, and you momentarily (1/4 second?) disable the ESC and if the platter keeps moving above a certain threshold speed, or doesn't stop for longer than a threshold time, leave it off, otherwise, back on.

|improve this answer|||||
  • \$\begingroup\$ Looks like some great ideas Jeff! I'll buy a few chips and hopefully start to see what method works best. \$\endgroup\$ – Nolan May 26 '10 at 16:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy