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.

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!
}

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 !

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

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

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 =)

Did you find ESC you've been looking for? And why would one use ESC over L293 motor drivers? I mean, what are the pros of the ESC over L293 ?

2A doesn't seem like much and more of soemthing you could do with a l293/298 or something.

If you get one of those esc's, check the voltage on the bec circuit as they are usually higher than 5v.

Check out Tower Hobbies as well. they had a big selection back in the day when  I used to run rc cars...

 

 

Did you try Dealextreme ? 
As far as I can tell they're all either brushless or plane-ESCs (without reverse), or both... Did I miss anyone in particular?