Let's Make Robots!

finding cheap RC ESC (speed controller)

I love RC ESCs. They are electronic speed controllers that you connect to a servo output on a RC receiver or a micro controller, and they give you full step free control over a big motor in both direction. Most of the ones made for RC cars work in the voltage range 6-8.4Volts, but there are several alternatives for people who plan to run up to 24 volt motors in almost constant stall at a gazzilion amps (read robot war contenders).

But I'm the eternal cheapskate, and wants the cheapest there is.. So far I've found this 

http://www.spikenzielabs.com/Catalog/index.php?main_page=product_info&cPath=22&products_id=130

It costs $19 and comes as a kit, so I guess I have to solder it myself. Do any of you know of any cheaper ones?

My wanted specs are:

  • run in both direction (not plane type)
  • for brushed motor (not brushless)
  • cool if it has BEC (can supply regulated power for RC receiver or Microprocessor)
  • without break function (racing ESCs will stop the wheels if you go from full forward to full reverse)
  • really really cheap (since I need 4)
  • around 7Volts (I'm not fuzzy)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Aha, so it is like the L293 motor driver. I assume you can control only 1 DC motor in both directions with PWN siganls, right? Should be easy enough to let the arduino take control of that. What should be the PWN / servo signal voltage? 5V ?

The thing is that my two motors require 5A each, so that I have to buy 5 L293 motor drivers. As I can see it, I can just use 2 ESPs.

Well I almoust bought a LiPo 3x times the price that of  hobbyking at our german online store "Conrad". Pretty sick huh.

Its a shame they only have two brushed ESC and both are out of stock. Damn brushless motors...

Not quite. The control signals are different.

L293 takes a PWM signal of about 2kHs and 2 Direction signals to drive a 600mA motor. For a 0% signal width the motor is stopped and for 100% signal width, the motor is rotationg at full speed. Needs 3 control pins from the microcontroller and a simple 8 bit PWM signal (can work in the background).

An ESC (just like a servo) takes a PWM signal (actually it's called PPM) of 50Hz and the width of the signal determines the direction AND speed of the driven motor. The width of the signal is very low, 10% for full speed reverse and 20% for full speed forward, with 15% for motor stopped. Needs only one microcontroller pin and a 16bit timer for a PWM signal (can also work in the background).

The ESC was designed to work like a servo, to be easily plugged in a RC receiver for a boat, car or airplane.

Oh, and the signal level is 5V, you can use the Arduino Servo library to drive one motor with one ESC, for 2 motors you need 2 ESCs.

Don't worry, they will have them back in stock soon.

Thanks for you time writing it, its very informative.

1. So do I need an extra IC timer for controlling the ESP with an arduino ? Be cause of course I want the PPM signal to be working in the background.

2. So the servo and the ESP both take PPM signals in, right? The output of the ESP is PWN which controls the motor, just like the L293. So the PWN is a similar thing but with a different frequency. Thats makes sence, as you connect both the servo and the ESP in to the RC receiver. Then all the signals you send via the remote are PPMs ?

ps. Missed out RC fun in my childhood (damn consoles), now its time though :D Hobbyking has also nice 40€ gliders wich I might buy. Never flew a RC plane in my life.

To use the ESC (Electronic Speed Controller) with Arduino is simple.  You set it as a servo and send regular servo pulses, but instead of writing angles you write microseconds. Like this:

#include <servo.h>
Servo ESC_left;
Servo ESC_right;

int speed = 0;

void setup(){
   ESC_left.attach(7);                             // any pin you want
   ESC_right.attach(8);                           // any pin you want
   ESC_left.writeMicroseconds(1500) ;    // left motor stopped
   ESC_right.writeMicroseconds(1500);   // right motor stopped
}

void loop(){ 
   // go forward
   for(speed = 1500; speed <= 2000; speed += 10){
      ESC_left.writeMicroseconds(speed) ;
      ESC_right.writeMicroseconds(speed);
      delay(20);
   }
   // stop
   ESC_left.writeMicroseconds(1500) ;
   ESC_right.writeMicroseconds(1500);
   delay(2000); // give it time to stop!
   // go backward
   for(speed = 1500; speed >= 1000; speed -= 10){
      ESC_left.writeMicroseconds(speed) ;
      ESC_right.writeMicroseconds(speed);
      delay(20);
   }
   // stop
   ESC_left.writeMicroseconds(1500) ;
   ESC_right.writeMicroseconds(1500);
   delay(2000); // give it time to stop!
}

Wow. Thats just fantastic. So easy and yet able to control hungry motors where L293 just fails with only 1A per motor. Thank you.

Why do you increase speed in 10 increments?  Just as an example or for other purposes? 

ps. why noone told me about ESC before =)

They say that you cant use brushless ESC on brushed motors and vise versa. Is this really so ?

In the comments of that ESC they say it cant do reverse. Because its for airplanes. Now how would I know that?

Hey! Its been a year, but only now I am back to my robot! I was lost in RC universe playing with quadcopters, aeroplanes and helicopters. So much fun.

So now I am back to programming the brushed ESC of my robot. Turnes out you dont have to delay(20) in the code! I dont know why, but you just write:

      ESC_left.writeMicroseconds(1600);

     delay(3000);

      ESC_left.writeMicroseconds(1700);

      delay(3000);

      ESC_left.writeMicroseconds(1500);

      delay(3000);

 

And you have your controls! Its that easy, its unbelievable !

Brushed motors have two connections while brushless have three and you cannot use ESC for one type on the other.

If you want reverse you need to look for car or boat esc, not aircraft.

Yea, you cant mix both. Regarding reverse I was talking about a brushed ESC where in the comments they say you cant do reverse on that. Its a shame, because hobbyking has only two brushed ESC and both cant reverse :(