An Experiment On Small Vehicle Transmission

Most folks want to make their RC cars run fast. My case is the opposite: I want to capture clear pictures without blur for training a neural network to drive the car, thus I want to run the car slow. The self-driving car that I built is based on a brushless setup and goes too fast, even at the lowest throttle setting. Despite all the reduction in the transmission – spur gear and differential, it really likes to punch in hard. I’ve pinned it down to the ESC which punches in even at a low throttle setting.

Pretty simple, you say, just get a better ESC and be done with it. Problem is, it’s hard to find out any information about how slow different ESC models can drive motors. Unless you actually go and buy the damn things and test them yourself, there is little you can do to find out if they have a smooth throttle reponse and are able to drive the car at low speeds. And since I don’t own a review channel on Youtube, buying a whole bunch of ESCs doesn’t make much sense.

So then another idea that I had for some time resurfaced. I remembered that my multicopter ESCs (Tiger Motor Air 20A) were able to drive an unloaded motor quite slowly. Multicopter motors generally have much lower KVs than inrunners used in cars, and also feature higher pole counts. This means that they can sustain a much lower speed while still maintaining a considerable amount of torque. In theory a brushless outrunner could be used to drive the central shaft of a car directly, without the need for reduction that the spur and pinion provide.

This is in essence similar to a direct-drive setup, barring the gears of the differential. So semi-direct-drive, kinda. Anyway, with these thoughts in mind I started looking into replacing the stock ESC and inrunner motor with a multicopter ESC and brushless outrunner.

Dude, why not just get a brushed motor and get over with it?

Yea, that’s an idea alright. But I like to experiment, and replacing the whole electrical and half of the mechanical guts of the car seemed like a more intriguing idea than just swapping a motor and an ESC.


Here’s how a typical RC car works: There’s a motor with a small pinion gear. The pinion gear moves a larger spur gear that in turn moves either an axle or a belt. These move the gears inside a differential which end up moving the wheels. Thats it. Barring the axle/belt difference, the rest of this transmission system is more or less standardized in almost all RC cars.

The transmission is there to reduce the high RPMs of the inrunner motor to something more manageable that can feed into the differentials, and pump up the torque along the way. Brushed or brushless inrunners are known for their high RPMs, but thats not the same for outrunners. High pole count outrunners can deliver torque in much lower RPM ranges than their inrunner cousins.

The idea is simple, and has probably popped up in your head already: Replace the motor+pinion+spur gear with an outrunner. The whole transmission gets simplified, you get no annoying friction between the spur and pinion gears 1 and maybe even grab a bit of extra torque along the way. Let’s see.

The Parts

Make the ESC Driveable

A multicopter ESC is not much use for controlling a car motor in it’s default settings. Multicopter ESCs are built to control motors that spin props at one direction, and usually have no means to spin down the prop once it gets started, and rely on natural spindown due to aerodynamic force. On the contrary, car ESCs control motors that need to go bidirectional, and need to actively brake them as well, by applying opposite direction torque. Good news is, some ESC firmware, such as SimonK and Blheli, allow these settings to be changed.

Read also:  Tinymovr alpha Available
Connections for programming RCTimer 40A Mini ESC using Arduino UNO. Signal goes to pin D2. Source:

The ESC I bought was pre-flashed with the BLHeli firmware, so the only thing I had to do was to change its settings. I found that a regular Arduino UNO (clone) was able to interface between USB and ESC and program it successfully (unlike my last attempt at ESC programming a couple months ago).

I used the BLHeli Suite software, and the key here was to first flash the Arduino with the “ATMEL SK Bootloader” (option 4 in the menu). That was the only one that worked for me. After flashing, I was able to connect to the ESC, but only by using the connection scheme I found in the site I was able to retrieve settings and program the ESC normally. I set the “Frequency” option to “Damped Light” and the “Direction” option to “Bidirectional”. With these settings the ESC has the middle of the PWM range as neutral. The low end is full reverse and high end full forward.

ESC Flashing setup with Arduino

Motor-Drive Coupling

Next comes setting up the motor to drive the axis to the differential. I coupled the motor with the dogbone driving clamp. I sawed off the threaded part of the clamp and was left with a 4mm axis long enough to fit into the coupler snugly. Then I inserted the motor axle on the other side 3, and tightened the screws. All done.

Outrunner with coupler and drive clamp installed

Clean up the car interior

I removed pretty much anything except the steering servo and the spur gear form the interior of the car. The spur gear is freewheeling, so I left it there. I decided to connect the new setup to the rear wheels only (easier and more efficient), and leave the front wheels without drive. Hence the central axis is gone, giving a bit of extra space to place stuff.

Replace motor and ESC in car

The motor assembly was ready and I had a clean interior to work with, and as a next step I experimented with motor placement. I made a DIY motor mount out of an aluminum angle and drilled some holes 14mm apart for the mounts, and a wider one in the middle for the end of the motor axis to pop out. Still, I had to raise the motor with a couple washers so in the end it doesn’t touch the plate. I placed the motor on the deck at an angle (to avoid the steering servo arm), and secured with double sided tape.

Finally, I connected everything the same way that one would do with the original car setup. I made a nice holding thingie with some zipties on the central top deck of the car for the 3-phase wires, but you could think of anything. Finally, I connected up the ESC signal and battery cables.

Complete car with new ESC, motor, transmission and UBEC. Steering servo is the same.

Testing it

Here’s a video below from the motor running on the test bed and the car running indoors and outdoors:


I successfully replaced the spur-pinion drive in my autonomous RC car with a direct-drive using an brushless outrunner. After a bunch of tests and drives I am quite content with this setup.

What do you think about the direct drive transmission presented in this post? Share your experience in the comments below!

For more exciting experiments and tutorials, subscribe to our email:

  1. Which not only wears them out, but is also the cause for the extremely irritating whining most RC cars produce
  2. You could also get a lower KV motor with more poles for around $30, but I wanted to constrain budget to the minimum for this project.
  3. was 3mm in my case, yours may differ depending on which motor you have, although almost all of them have a 3mm axle at this size

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.