3-phase brushless DC motors and voice coil from hard drive

Has anyone played with trying to spin the 3-phase brushless DC motors from the inside of a computer hard drive?

I have been trying for some time now, and as a hobbyist, haven't had much luck. This is about the only resource I've found, but have not had sucess translating it to pbasic.

formatting link

I've been able to make a full bridge driver circuit that energizes the coils in a pattern to get it to spin slowly and jerkily, but when I ramp up the firing frequency, the motor just jitters erratically.

On another note, I've had fun with the voice coil, but haven't been able to control it properly either. Any suggestions?

Thanks for any advice!

- D

Reply to
dhammy
Loading thread data ...

Yes, I've tried playing with a hard drive motor. The last one I tried had a separate motor control IC on the PCB, and looking up the datasheet for it shows quite a complex control system. It's not as easy as firing the coils in the right sequence like a stepper motor. IFRC, the IC samples the back-emf from the motor to get feedback on phase and speed. It also uses PWM for soft current limiting. That web page is a bit out of date. Hard drives have been going faster than

3000rpm for a long time - maybe that means they're more difficult to play with now! A
Reply to
Andrew M

The important thing here is that modern motors are brushless AND "hall-less".

If you have a motor that uses hall effect sensors to detect when the rotor magnet has moved to the "zero crossing", then it is relatively simple to design code that will commutate (change drive phase) the motor at the right time.

To cut cost, the motors are "Y" wound with an added 4th wire to the center. It is used, along with the unpowered winding, to sense the zero crossing. The need for Hall effect sensors is eliminated. To replicate this you need comparators and mux logic to select the right comparator.

Then there is the speed control problem, which is done with DSP processors...designed by guys with PHD's. There are motor IC's that do most of this, but you still have to design the control loop or it will behave in strange ways.

Hope it helps!

Rob

Reply to
RobM

Oh, on the voice coil part..

Two ideas:

1) put a small magnet on the rotating shaft of the voice coil, and use a Hall Effect Sensor to measure the field. This should provide enough positional feedback to allow you to servo control the voice coil

2) and optical proximity sensor or interupter could work, but mechanically it will be a bit more tricky to mount it and find a good target that gives a linear output.

With PBASIC the control loop may be too slow - the voice coil is designed to slew end to end in ~ 10e-3 sec, so your loop would need to be ?? 10 kHz??? Can you tolerate an interupt every 100e-6 sec? Adding an inertial load will slow this down, depends on what you want to accomplish.

I have always wanted to do this with a PIC and assembly language, but have not gotten around to it. I have a bridge drive IC that I can PWM at 30kHz. In assembly on a 10Mhz PIC this translate to about 25% of the processor bandwith to service the interrupt and update the PWM. I have now idea how often I could do an A/D conversion and calculate the new PWM value - I suspect it is close to 10KHz. It will be fun to try someday!

Another tip: the voice coil has low friction, so just a few milliamps should move it, so it could be driven by a CD4049, using 3 parallel sections on each side and two microcontroller pins. This would be worth experimenting with, and it will reduce the loop gain, but you won't get much torque.

Good Luck!

RobM

Reply to
RobM

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.