Download as pdf or txt
Download as pdf or txt
You are on page 1of 1

 Circuits

UpcycleWorkshop
BrushlessCraft Cooking
DC Motors FromLiving Outside
Printers Teachers
by ossum Follow Download Favorite w I Made It Following

Circuits Projects Contests Publish New Search

Upcycle Brushless DC Motors From Printers


By ossum in Circuits > Reuse 27,960 231 13 Featured

Published Dec 20th, 2015 Download Favorite

By ossum
Ossum More by
the author:
Follow

About: Electrical Engineer by trade, tinkerer by heart. More About ossum »

If you are at all interested in robotics and electronics you will probably have disassembled an old
printer or two (if you haven't, I highly recommend it, there are always interesting parts, and you
can learn a lot about how the experts put electro-mechanical machines together). If you have
taken a laser printer apart, you will likely have come across brushless DC motors, which range in
size.

These motors have some pros and cons, obviously it varies between printers, and the functions
of the motors within the printers, but I have found the following to be true most of the time.

Pros

● They normally have an integrated ESC (electronic speed control) circuit, which means that you
can control them with logic, rather than needing an external ESC or H-Bridge
● Some have a collection of gears that can be re-used fairly easily
● Some have an RPM output

Cons

● Usually designed around a 24V supply


● Relatively low power/torque

The motors normally have about 5 or 6 input pins, I will go through the process that I use to
determine which pin is which, and demonstrate some code to control the motors.

 Add Tip V Ask Question | Comment Download

Step 1: Salvage Some Motors

The rst step of course is to tear down a printer and see what kind of motors you can nd.

There are a few ways to tell that the motor you have is a BLDC, as opposed to a stepper or
brushed-DC motor.

● The motor windings have three connections (a brushed motor will have only two)
● When you turn the motor it turns smoothly, there isn't signi cant "cogging" as there is with
steppers (this is not universal, since powerful brushless motors for RC toys tend to have strong
magnets and exhibit a strong cogging e ect, but it does hold true so far for all the printer
motors I have played with)

Coincidentally all of the motors I have recovered so far have been from HP printers, but I expect
they would be very similar from other manufacturers. The motors in this particular Instructable
are from an HP Color LaserJet 3000 series.

 Add Tip V Ask Question | Comment Download

Step 2: Determining Pinout and Protocol

3 More Images

Finding Documentation

After some digging I discovered that googling "HP Printer service manual" invariably brings up
some pretty decent documentation.

The easiest way to nd pertinent information in the hundreds of pages is to search for
references to "motor" and then go from there.

In the images I have attached some diagrams that I pulled from the service manuals.

Deciphering the Documentation

The control signals are pretty simple (I am using 5V logic, which it seems happy with), this is
what I was able to nd by reading the documentation and scouring the internet.

● /ACC requires a PWM for speed control


● /DEC is a "brake" (I think of it as an enable pin)
● REV controls direction (high is one way, low is the other)
● FG is an output, it appears to output one (or two) pulses per revolution

Remember that there are all kinds of motors, some have no speed control or ability to reverse,
depending on their function.

Determine Which Pin is Which

Obviously the rst step is to metabolise any documentation that you can nd. I nd it helpful to
print the diagrams out so that I can scribble notes on them.

The next thing is to nd the +24V and GND pins. These should be pretty easy, there is normally
an electrolytic capacitor across the power lines, you can look for the side with the stripe to
determine which is is negative.

Now that you know which these pins are, you can use the diagram to determine the rest of
them. If you didn't have a diagram, then I would try to apply power on +24/GND pins and pull all
the others low via 10kOhm resistors. Then go through each one in turn, pulling it high (+5V) via
a 10kOhm resistor. Once you nd the pin that makes the motor turn, you will know that you
have found /DEC. The next step would be to remove the grounded pins one at a time until you
found the one that made the motor stop, that would more than likely be /ACC.

At this point we need to involve a microcontroller (unless you have a signal generator) to put a
PWM onto /ACC and REV to start controlling the speed and direction.

 Add Tip V Ask Question | Comment Download

Step 3: Speed Control Code

In the previous step we determined which were the following input pins on the motor

● /DEC (NOT decelerate, so pulling it high causes the motor to run)


● /ACC (NOT accelerate, so 100% duty cycle is 0 speed)
● REV controls direction (high is one way, low is the other)
● +24VDC
● GND

I have used the MediaTek LinkIt One or Arduino boards for this step, since all of the available
libraries make it quick and easy. Since this is not exactly a beginner's project I am going to
assume that you know how to upload code to them (if not, check out the getting started guide).

This code uses the analogWriteAdvanced function in order to work with high frequency PWM,
which my motor wanted.

On Arduino boards in the past I have used the TimerOne library to make the PWM setup easy.

This code simple provides an interface for testing, connect to the board via a serial connection
and you will be able to control the motor by sending the following characters

● 'w' to increase speed


● 's' to decrease speed
● 'd' to toggle the brake on or o
● 'r' to toggle direction

//define the pin numbers


int accPin = 9;
int decPin = 13;
int revPin = 10;
int fgPin = 12;

//here we store the current pin states


int accLevel = 0;
boolean decState = LOW;
boolean revState = LOW;

//some PWM variables to increase the frequency


//You may have to mess around to find a freq that your motor likes
int cycle = 1600; // Divide output into 9+1 = 10 portions
int sourceClock = PWM_SOURCE_CLOCK_13MHZ;
int divider = PWM_CLOCK_DIV8; // The PWM frequency will be 13MHz / 8 / 10 = 1

void setup() {
//start a serial port
Serial.begin(9600);

//setup the pins


pinMode(accPin, OUTPUT);
pinMode(decPin, OUTPUT);
pinMode(revPin OUTPUT);

 Add Tip V Ask Question | Comment Download

Step 4: Where to From Here

Now you know how to control the BLDC motors from printers you can start building things. The
motor's don't tend to have a lot of torque, but if you make use of the copious gears that are
available in a printer then they will de nitely be usable in small robots etc.

A colour laser printer tends to have four identical motors with four identical sets of gears, which
are just crying out to be turned into an all-wheel-drive robot.

If I build one you can rest assured you will see it here!

If you have any questions, please comment and I will try to clarify, I expect there is a lot more for
us to learn about using these salvaged motors to their full potential.

 Add Tip V Ask Question | Comment Download

Participated in the
View Contest
Leftovers Challenge

1 Person Made This Project!

rjkorn made it!

Did you make this project? Share it with us!

I Made It!

Recommendations

Ball Balancing Robot by aaedmusa in Ping Pong Ball Collector Robot by Make Your Own Flashing Lights Freeform Saving Plants - DIY Plant Watering Device
Robots MaximeMonsieur in Robots Sculpture With a 555 Timer by 4dcircuitry in by Jaychouu in Sensors
Electronics

 43 8 3.9K  34 8 4.9K  107 8 16K  124 8 12K

 V |
Add Tip Ask Question Post Comment

We have a be nice policy.


Add Images Post
Please be positive and constructive.

13 Comments

/1 almamater Question 3 years ago  Answer / Upvote


Hello and congratulations for your share. I have one similar motor and i managed to make it work
through your info. Now i have another motor but with different pinout.. it uses the Toshiba TB6572AFG
controller. I have the datasheet but i really can not figure out the pins function..
(https://www.datasheets360.com/pdf/1773812906609979289 only IC24V), do you have any idea?
Thank you!!

1 answer F

kokes 3 years ago  Reply / Upvote


Hi, how did you take the motor in the first picture apart? I unscrewed the four tiny screws that hold it to
the board but it wouldn't budge without me first prying the steel ring. I was afraid to do that since I have
only one specimen. I am not interested in circuitry or software, I have both in my own making. Also, did
you try to load it a bit? Or increase the voltage? I don't want to test the break down voltage with the
only motor at my disposal. But 180W seems too little for such a motor, either the current or the voltage
must go up! I will be running it in freezing temperatures and in roughly one minute runs.

1 reply F

GarryS29 5 years ago  Reply / Upvote


Hi. When I try to verify the sketch I get error code 'PWM_SOURCE_CLOCK_13MHZ was not declared
in this scope'
Can you assist

1 reply F

mcmurphy686 6 years ago  Reply / Upvote


Hi, i found your proyect and really open me eyes in somethings, i´m trying to control a motor like this :
http://www.ebay.es/itm/Konica-Minolta-Bizhub601-Mo...
i can control the direction, start/ stop, but i was unnable to control speed, since i found your code, but i
have a question
this code is only usable in arduino duemilanove ?
so i can read only it can change frecuencies
i´m triying in arduino uno, and don´t works, too many errors compiling
i´ll try another ways to change tihs frecuency
anyway thaks for your instructable, really useful for me.

2 replies F

wasteoinc 7 years ago  Reply / Upvote


really cool instructable and I have some brushless motors from big laser printers laying around (they
are low RPM though)
can we use those brushless motors as A/C generators???

TheCoffeeDude 7 years ago  Reply / Upvote


I have a shelf full of old hp laser printers and scanners, I knew they would be good for something
someday. Now I know! Thanks!

Akin Yildiz 7 years ago  Reply / Upvote


this is great, very useful info. i have 4 all in one printers stacked up waiting to be harvested. i'm
planning on turning them into tiny 3D printers, hopefully :) will come back to this post

1 reply F

Post Comment

Categories About Us Resources Find Us


 Circuits  Living Who We Are Sitemap
 Workshop  Outside Why Publish? Help

 Craft  Teachers Contact


 Cooking

© 2023 Autodesk, Inc. Terms of Service | Privacy Statement | Privacy settings | Legal Notices & Trademarks

Today Opera OPRDesktop 28.0 core 1750.0, May 25, 2022. Active patches: 21

You might also like