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
I scanned all 9 pages, but they all describe their Throttle curve. That usually indicates that it’s made for planes which throttles not cars/robots with reverse.
It’s more like a servo electronics board, but for a beefier motor. It takes regular servo signals and converts them linearly to motor speed, 1.5ms signal being motor stopped (you also have a jumper to break the motor or just coast at 1.5ms signal). I have a couple of them and they work perfectly with 12V power window motors. I wanted to make a sun following solar pannel, that’s why I bought them. But they are good for robots too.
I have no idea why people don’t use HobbyKing for LiPos, servos, ESCs and uBECs, as they have great products at cheap prices!
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…
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 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:
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! }
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