Driving an ESC/Brushless-Motor Using Raspberry Pi

10,220

21

12

Posted in TechnologyRaspberry-pi

Introduction: Driving an ESC/Brushless-Motor Using Raspberry Pi

About: Nothing much to talk about - Still in school.

Hey there!!! In this instructable I will show you how to program an ESC and drive a brushless-motor in a desired speed using Raspberry Pi 3.

I recommend you to READ THE WHOLE INSTRUCTABLE BEFORE MAKING IT even though I'm typing load of crap here. I am making this instructable because I didn't find any tutorial for this topic, maybe because the ones who already knew how to do it were too lazy and selfish to help others. Also, make sure you are going through precautions at every step, its kinda important if you don't wanna screw up your life.

An Electronic Speed Controller or simply called ESC is an electronic circuit which is basically used to control a brushless-motor. It takes a signal from a micro-controller and convert it into three-phase output of limited voltage. So, It runs a brushless-motor by sending a sequence of output signals to it.

We can say that it is like a servo which also takes input in pulsing signals so we will use Pi's Pulse Width Modulation (PWM) system.

To use PWM in Raspberry Pi, we need to initialize PIGPIO library in daemon(which means running the process in background) which sends DMA timed pulses from Python. Then we will calibrate and arm the ESC and start giving some speed to the motor.

Just to make it clear, Arming is like telling the ESC "dude, you're good to go, start the motor now." just like you have to pull the barrel of a pistol and put the safety down before shooting. An ESC has a lot of modes but for the sake of this instructable we will not go in details but focus only in driving the motor.

Step 1: Precautions

1. Make sure you have that PIGPIO library installed, if not... you know what to do.

2.Don't be stupid like me and attach the prop adapter or the propeller to the motor, something bad can happen like really bad.

3. Do not hold the motor while its in motion, it will fly you off if you're too light or it could burn you down to ashes if you're too heavy which you probably are because brushless-motors are nasty beasts.

4. You're smart right.. I don't think I have to tell you about the result if you have bad connections. As it is said..

"Even the smallest things can trigger an avalanche."

5. Wrong battery polarity and you're done with your ESC.

6. WATCH FOR THE RED WIRE OF THE ESC, DO NOT USE IT.... consider it as your arch-nemesis.

7. Make sure powering your pi good, isn't that obvious.

Step 2: Required Items

Raspberry Pi (to control your ESC)

Brushless-Motor (.....obviously)

Electronic Speed Controller [ESC] (.....obviously)

Computer (if you are using Pi in headless mode)

Power Bank (to use Pi portably)

Li-Po Battery (.....obviously)

M-F wires (.....obviously)

Step 3: Connections

Connect the parts like the above picture. Yes! That RED WIRE OF THE ESC HAS NO FUNCTION (at least in this project). IT CAN BURN YOUR PI'S PROCESSOR, so watch out for that or get yelled by your mom !

You can connect the Motor wires however you want with the ESC i.e you can connect red wire to the third blue wire and black wire with second blue wire and so on. IF YOU WANT TO REVERSE THE ROTATION OF THE MOTOR, JUST SWAP THE RED WIRE WITH THE YELLOW WIRE.

DO NOT CONNECT THE BATTERY YET, you will do it while running the program. There's a reason behind everything, there's a reason that you are here looking at this screen, there's a reason that you're still alive.. and all that stuff.

I made these fritzing parts just for....... myself but you know "sharing is caring", download it from here :-

Step 4: Programming With Python

Download that python program below and execute it in your pi AFTER you have finished with the connections.

Watch the video for first time run, if you're confused..

If this program looks confusing to you actually I'm a pro you know but if it looks as if a noob had written this program, I'm learning ok...

When you will execute it, the program will give you five options like this :

calibrate OR manual OR control OR arm OR stop

You have to enter the option by typing the exact word. You can also switch among functions anytime.

The function of these options goes like these :-

calibrate 

This function is for first time use or later if you see some throttle problems. Don't worry if you've done it again.

This option will automatically calibrate your motor's throttle, arm it and then switches to control function. The calibrate procedure goes as follows as in manual mode :-

MAX THROTTLE (2000)

Connect the battery

You will hear two beeps

Wait for a tune

MIN THROTTLE (700)

Wait for some time

STOP THROTTLE (0)

Wait for some time

MIN THROTTLE (700)

Wait for a sec

ARMED (>1000, to get motion)

manual              

You can use this function if you want to control or program your ESC manually.

control

This function lets you control the speed of motor using 'a','d','q' and 'e'. This function requires arming of the ESC first.

arm

This function will let you arm your ESC automatically and will switch to control function.

The arming procedure goes as follows:-

MAX THROTTLE (2000)

Wait for a sec..

MIN THROTTLE (700)

Wait for a sec..

ARMED (>1000, to get motion)

stop

This function is to stop the ESC and the program. Suppose, you screw up something you can execute this function and stop everything.

Step 5: Go Beyond

"Once we accept our limits, we go beyond them." - Albert Einstein

Once you're done with your ESC and mastered it (kind of), its your turn to make your project out of it.

There are things I gotta say that :-

I made this instructable just for fun and with heart.

I do not intend to violate someone with my words.

I will not be responsible for any damage done to your parts.

Try to make your own program and experiment, it will give you more knowledge.

Comment below for any issues or problems you found regarding this instructable, I'm here to help.

More Instructables coming soon.... I guess?

2 People Made This Project!

Recommendations

  • Spotless Contest

    Spotless Contest
  • Microcontroller Contest

    Microcontroller Contest
  • Space Challenge

    Space Challenge
user

We have a be nice policy.
Please be positive and constructive.

Tips

3 Questions

0

So I'm having trouble with this

Everytime I run the program, it always says NameError: name 'calibrate' is not defined. I keep trying to fix it but it still won't work. Can someone help me with this?

1523882026698-1219996134.jpg

Good afternoon, i have a problem, when i tried to calibrate the motor it does not make the falling tone after i conected to the battery, i have intalled the library an check if everithig its ok, if anyone know the solution of this problem please tell me the solution, thanks!!!

I tried the commands just as you wrote,
when I got to calibrate the engine, the engine did not stop making sound and strange sounds (like combo sounds-bip and bipbip),
you know why? and how to fix this?

12 Comments

sir is there any method to control multiple brush-less DC motors with single ESC
if not then how will we connect multiple ESC to raspberry pi

1 reply

If you connect multiple esc to seperate GPIO pins it should work fine i guess

I am wanting to run my ESC in reverse. Do you know how to do that?

I tried the commands just as you wrote,
when I got to calibrate the engine, the engine did not stop making sound and strange sounds (like combo sounds-bip and bipbip),
you know why? and how to fix this?

Thank you for the code, it work very well. But on some line it contain condentation of mixed spaces and tabs and that generate python errors und the code break. After i corrected it, the code worked perfectly. Thank you again..

1 reply

Did you run the quadcopter using raspi3 by connecting all the 4 esc to the gpio pins?

I want to make a drone using F450 frame, with raspi3. Can u show the connection of 4 motors to the raspi3 and the code to run the 4 motors? Please help me its very important, my mail salman.fairoze27@gmail.com. Any help from anyone, please contact me on the above mail ID. Thanks in advance :-)

This is first script i found which works on raspberry pi.. on first run the motor does not spin but at second run it run perfectly.. Thanks

Motor = 1000kv, ESC=30A, connected on GPIO pin 17.

thanks for great tutorial

Nice Raspberry Pi project. You should enter this into the Microcontrollers contest that is currently running.

1 reply
user

Thanks for the advice