My goal is to control 2 DC motors independently with my Raspberry Pi. I already have the motors along with 2 ESCs (from old RC cars). As far as I know you can control the motor speed with a PWM signal going into the signal port of the ESC where normally the RC-receiver would go in.

enter image description here

I marked the plug that would get a signal from the RC-Car receiver. It has a red, black and a white wire.

The idea is to use this Servo Driver (as I want to hook up a couple of servos later on) instead of a motor control board, to control motors and servos all together.

Is this possible? My concerns are (aside from actually being possible) that the motors are specified for 7.2V, the servos are 4.8V and I am not sure what voltage communicating with the ESCs would require.

  • Were the DC motors connected to the ESCs and salvaged from the same RC car?
    – joan
    Jan 27, 2015 at 16:42
  • Yes they are all from the same RC Car.
    – TomTom
    Jan 28, 2015 at 13:58

1 Answer 1


The motors you salvaged from the RC car (as they were connected to an ESC) will be brushless 3-phase DC motors. These motors need an ESC.

An ESC is controlled in pretty much the same way as a servo. It expects 1 to 2 ms pulses at a nominal 50 times a second. 1 ms will be off, 1.5 ms half-throttle, and 2 ms full-throttle. Some ESCs can be driven at higher update frequencies (up to a maximum of 500 Hz) for better responsiveness.

The ESC and servos may be driven by the Adafruit servo board. However you do not need that board, the Raspberry Pi can provide the needed pulses without additional hardware in a more flexible fashion (for instance different update frequencies for servos and ESCs, more steps between off and fully-on).

You can not drive normal DC brushed motors with an ESC.

  • I could have sworn that they were brushed. But the manual didn't provide any information on the motors. I have read several times that linux is not capable of providing a steady pwm signal? That what the board is for if I understand correctly.
    – TomTom
    Jan 30, 2015 at 14:49
  • With brushed DC motors you'll need a motor driver board as they can't be driven with an ESC. How many wires go into the motor? Software timed PWM is not reliable because of non-deterministic Linux scheduling. The B+ has two hardware PWM channels. In addition libraries like my pigpio use the DMA hardware to provide hardware timed PWM for all gpios on the expansion header.
    – joan
    Jan 30, 2015 at 14:55
  • 2 wires go into the motor. Interesting, but using the DMA Controller probably has it's limits?.. Also do I have to worry about something when connecting the Pi to the ESC directly?
    – TomTom
    Jan 30, 2015 at 16:13
  • Personally I'd connect those two wires to a power supply. If it turns it's a normal DC motor. I'd then begin to wonder what your "ESC" actually is. You should only connect the ESC/servo control line to a Pi gpio. It wouldn't do any harm to add a 300 ohm resistor in series (although I don't bother). I've seen no evidence that the Adafruit board is better or worse than using Pi PWM (based on DMA).
    – joan
    Jan 30, 2015 at 16:37
  • Well they do, but any DC motor will as far as I know. Thanks!
    – TomTom
    Feb 1, 2015 at 10:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.