Monday, November 29, 2010

16F84A Spindle Motor Control

In this post , we 'll see how to control a spindle motor using the Microcontroller PIC 16F84A.
The spindle motor is a special type of Brushless DC ( BLDC )Motor that runs on high speed.

Unlike other types of motors, spindle motors have more than 2 terminals ( They can have 3 , 4 or five terminals ) .
Thus , the spindle motor is driven by switching its coils ON and OFF according to certain sequence. The function of the microcontroller is generating the driving signals.


Of course, the output current of the Microcontroller is not sufficient to drive the motor coils. There is an interfacing IC that can supply the motor coils with the suitable driving current. 

This IC is ULN2003. It acts as an electronic switch opened and closed according to the output signals of the Microcontroller.


I connected the ULN2003 IC to the Microcontroller on the prototyping bradboard.



This is the real circuit connection






As you can see , I used an old hard disk drive motor. This is a three coil spindle motor. Actually it has 4 terminals ( 3 Coils and 1 Common ).






You can see the four terminals on the back of the motor


 
This video shows the spindle motor connected to the driving circuit and rotating

You can find the source code and simulation files on this link.
 

The simulation model shows LEDs connected to the Microcontroller 16F84A. That is because this version of Proteus ISIS does not contain a three coil spindle motor model.









This is the schematic diagram of the circuit.




 





You can get this offer of 5 stepper motors with 5 ULN2003 boards from Amazon or Banggood








If you like this blog you can support us by many ways:
   
   1. Leave comments stating your point of view about this article.

   2. Buy our book on Amazon Learn By Making.

   3. Click on links of our sponsors without adding any extra cost on you if you make purchase from them. Actually, many of these offers are totally free.
This means that you can enjoy something for free and still support our blog to keep posting useful stuff.



This is the well-know Amazon Kindle platform. If you sign up for the free reader from Amazon to read any book, we get commission. 
There are many useful book for free on Amazon Kindle. Even you can find best sellers offered for free on Kindle format.
The best part is you can have the application on any platform. You can even read any book without installing any application by using Amazon Cloud-Reader on your browser.

You can join Amazon Kindle for 30 days free to have access to many paid book for free. You can cancel you subscription anytime.

The Amazon Prime is a special paid service from Amazon that offers good promotions and one-day free shipment for Amazon Shoppers. You can try this service for 30 days. You can cancel you subscription anytime.

Audible is the audio books website from Amazon. Many Kindle books are sold on Audible. You can try this service for free and get 2 free book. You can cancel you subscription anytime.

If you have a new baby borne or expecting one, you can create your free baby registry to easily save products and get offers and promotions on baby requirements.

  4. Visit our new website outatime.tech.

Thank you for visiting our blog.

5 comments:

Anonymous said...

How can i increase the speed using this circuit

Rajeshwar Rudra said...

the same question, i got the motor to spin. But what do i do to spin it faster using same circuit??

MicroMonitor said...

To increase the motor speed you need to increase the signal frequency.
It means , you decrease the delay between steps.

mohamed eid said...

when decreasing the delay , the coils seem to be not responding , it just vibrate

MicroMonitor said...

You must compromise between long and short delay.

If you make long delay, you get low speed.

And if you make very short delay, you only get the motor coils vibrating and no rotation.

Here is an instructable that makes a test for the CD rom motor using Arduino to get the best time delay

http://www.instructables.com/id/Run-A-CDROM-Brushless-Motor-With-Arduino/

You can use the same concept with 16F84A

Good Luck