Introduction: Converting a Brushed Dc Motor Into Bldc

Picture of Converting a Brushed Dc Motor Into Bldc

A BLDC in the market is too costly also we need an electronic speed controller to drive it which costs almost as same as the motor.
So i decieded to make one by using arduino as a controller but i found myself too lazy to make the perfect casing and finding and fitting and winding and so on. so I thought why not convert a brushed motor into bldc?

Step 1: Material Required

Picture of Material Required

1. A brushed motor
2. Arduino
3. L293D motor driver(or any channel motor driver will work)
4. A pc to program arduino

Step 2: Modifying the Motor

Picture of Modifying the Motor

open the motor, remove the brushes and keep them aside. take three wires and solder them to the three points on the windings as shown in the photo above.
remove the small disc from the back of the commutator and put it in the front of the drive shaft and it's done!
you can also watch video here

Step 3: The Arduino Code

Picture of The Arduino Code

int a = 0;
int b = 1;
int c = 2;
int t = 20;
void setup(){
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
void loop(){
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);

Step 4: Connections

Picture of Connections

Join jumper wires from arduino to the motor driver in any order. Connect motors to the motor driver in any order.
Power motor driver with logic level voltage by arduino(5 volts).
Power arduino. Power motor driver with the voltage you want to drive the motor but within the driver's range(mine is 9 volt adapter) and watch your motor rotating without brushes.
Since the voltage given to the motor is in high and low, it will not run smoothly. To make it run smoothly follow next step.

Step 5: Reprogramming Arduino and Using 2 Motor Drivers

Picture of Reprogramming Arduino and Using 2 Motor Drivers

Now program arduino with this code to run motor with sine wave.

#define a 3
#define b 5 #define c 6 #define t 10 //duration of a state void setup() {

pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); }

void loop() { for(double i=0.0;i<6.28;i+=0.01745){ analogWrite(a, 255*sin(i)); analogWrite(b, 255*sin(i+1.04719)); analogWrite(c, 255*sin(i-1.04719)); delay(t); }


new connections
now connect the three wires of the motor to the different sections of the motor driver as shown in the picture as there is only 2 enable(pwm supporting) pins.
connect the arduino to motor driver as shown and power it to run the bldc made by you smoothly. Happy Making!!!


clothier_bruce (author)2017-03-12

Something doesn't add up here: a brushed motor has 2 wires, not three.

yash yash (author)clothier_bruce2017-03-16

True but what you are talking about is brushes but in BLDC ,as the name suggest, there are no brushes but power is directly given to electromagnets, so three wires are needed to deliver the power.

ShefaliS5 (author)2017-02-12

Quite creative ,i liked the idea
My motor worked with ese at 10,000rpm using 3s lipo

the_3d6 (author)2017-02-09

That's a good idea, thanks! Although with most brushed motors it won't work well because they require motor shaft being supported by bearings on both sides, it still might be useful in some cases

yash yash (author)the_3d62017-02-10

In that case well we have to support the casing with both the bearings on one side and that would be more better as it would not come out when rotating.

jgh59 (author)2017-02-08

This isn't really a BLDC motor, you are running the motor like a stepper motor. A true BLDC motor requires shaft position sensing to energize the motor phases at the appropriate time to maximize their interaction with the motor magnets. This is normally accomplished with strategically placed Hall sensors or there is a routine in the micro controller to decode the back emf to get rotor position. There are chips out there that have this function. That said, this is pretty innovative and I particularly like how you use two motor drivers to smooth out the torque.

gcandeo (author)2017-02-07

hi! very nice! but how about the speed variation of motor? can i change the speed?

rafununu (author)gcandeo2017-02-07

t is the variable for time. A high t means a slow turn (with visible steps)

yash yash (author)rafununu2017-02-07

t*6 is the time period and 60/(t*6) is the rpm of the motor

yash yash (author)gcandeo2017-02-07

ya you can change the speed by changing the value of the macro t in the arduino code and control the motor precisely

rafununu (author)2017-02-07

So the rotor becomes static, what turns ? the enveloppe ?

yash yash (author)rafununu2017-02-07

yes this is a design of an out runner bldc. we can tie our attachment to the body with a hole in centre to avoid contact with the shaft. and the attachment for the shaft is to avoid envelope coming out with the small white disc to reduce friction between the attachment and the body of the motor

BeachsideHank (author)2017-02-06

I had to Google BLDC to be sure it was what I thought it was:

For those who are not sure, it is an abbreviation for Brushless D C Motor. ☺

SparkItUp (author)BeachsideHank2017-02-06

Me too! Thanks, I'd never considered doing this before.

About This Instructable




More by yash yash:Converting a Brushed Dc Motor Into BldcCheap Iot Using ArduinoFrequency Generator
Add instructable to: