How to Build a Remote-Controlled Car with a Digital Proportional System

Building Remote-Controlled Cars / Visits:6

If you’ve ever tinkered with RC cars, you know the frustration of an on-off switch control: full throttle or nothing, sharp turns or straight lines. That’s where a digital proportional system changes everything. Instead of binary commands, proportional control lets you vary speed and steering smoothly, just like a real car. And at the heart of this precision lies a tiny but mighty component: the micro servo motor. In this guide, I’ll walk you through building your own remote-controlled car with a digital proportional system, focusing on how micro servo motors deliver the responsiveness and accuracy that make the project truly shine.

Why a Digital Proportional System Matters

Before diving into the build, let’s clarify what “digital proportional” actually means. In a basic RC car, you might have a simple two-channel remote: one button for forward, one for reverse, and a toggle for left and right. That’s a non-proportional system—your car either goes full speed or stops. A proportional system, on the other hand, uses pulse-width modulation (PWM) signals to map the position of a joystick or trigger to a continuous range of motion. Push the throttle stick forward 30%, and the car moves at 30% speed. Turn the steering wheel slightly, and the wheels angle just a few degrees.

The magic here is the micro servo motor. Unlike standard DC motors that just spin, a servo motor has a built-in feedback mechanism. It reads a PWM signal and rotates its output shaft to a precise angle—typically 0 to 180 degrees. For an RC car, this makes micro servos perfect for steering and throttle control. A digital micro servo, in particular, offers higher resolution, faster response times, and better holding torque compared to analog counterparts. That means your car handles tighter turns and accelerates more smoothly, even at low speeds.

Choosing Your Components

Building a proportional RC car isn’t rocket science, but you need the right parts. Here’s a breakdown of what I used for my build, with special attention to the micro servo motor selection.

The Micro Servo Motor: Your Precision Workhorse

For steering, I chose the SG90 micro servo—a classic, low-cost option that’s widely available. It’s small (23 x 12 x 29 mm), lightweight (9 grams), and operates on 4.8 to 6 volts. With a stall torque of 1.8 kg·cm at 6V, it’s enough to pivot the front wheels of a small 1:10 scale chassis. But if you want digital precision, consider the MG90S (metal gears for durability) or the HS-85BB from Hitec, which offers 2.6 kg·cm torque and a digital signal processor for jitter-free movement.

For throttle control, I used a second micro servo to actuate a mechanical linkage on the motor’s speed controller. Yes, you can use an electronic speed controller (ESC) with proportional input, but a servo-based throttle gives you tactile feedback and a more mechanical feel. The Tower Pro MG996R is a beefier option (55 g, 10 kg·cm torque) if your car uses a larger motor.

Other Key Parts

  • Microcontroller: An Arduino Nano or ESP32 works great. The ESP32 has built-in Bluetooth, which simplifies wireless control.
  • RC Transmitter and Receiver: A 2.4 GHz system like the FlySky FS-i6 with a 6-channel receiver. This gives you two analog sticks for proportional control.
  • Chassis: A 4WD RC car frame from a hobby store. I used a generic 1:10 scale buggy chassis with independent suspension.
  • Motor and ESC: A brushed DC motor (like a 540 size) paired with a brushed ESC that accepts PWM input. For brushless, use a compatible ESC.
  • Battery: A 2S (7.4V) LiPo pack for power.
  • Wheels and Tires: Rubber tires for grip.

Building the Steering System with a Micro Servo

The steering system is where the micro servo motor shines. Here’s how I set it up.

Mounting the Servo

First, I mounted the SG90 servo to the chassis using a custom 3D-printed bracket. If you don’t have a 3D printer, a metal L-bracket from a hardware store works. The servo’s output shaft should align with the steering linkage. On most RC car chassis, there’s a central tie rod connecting the two front wheels. I removed the stock steering mechanism and attached a servo arm directly to that tie rod.

Calibrating the Linkage

The key to proportional steering is a linear relationship between servo angle and wheel turn. If the servo moves 10 degrees, the wheels should turn 10 degrees. To achieve this, I used a ball-link connector on the servo arm. This prevents binding and ensures smooth motion. I then programmed the Arduino to map the receiver’s PWM signal (1000 to 2000 microseconds) to a servo angle (0 to 180 degrees). For a typical RC car, you only need about 45 degrees of wheel travel in each direction, so I limited the servo range to 45 to 135 degrees.

Testing the Response

With the system powered up, I moved the steering joystick on the transmitter. The micro servo responded instantly. At 50% stick deflection, the wheels turned about 22 degrees. At 100%, they hit the full 45-degree lock. The digital servo’s feedback loop held the position steady, even when I bumped the wheels. That’s the advantage of a digital micro servo: it corrects errors 2-3 times faster than an analog servo, so the wheels don’t wobble.

Implementing Proportional Throttle

Throttle control follows a similar principle, but with a twist. Instead of directly driving the motor, the micro servo moves a potentiometer or a mechanical switch on the ESC. This is an old-school approach, but it’s educational and gives you a feel for how proportional systems work.

The Servo-to-ESC Linkage

I attached a second micro servo (the MG996R) to the chassis near the ESC. Using a servo horn, I connected it to a small lever arm that presses on the ESC’s throttle trigger. The ESC I used has a standard 3-pin servo connector, but its internal potentiometer expects a physical rotation. By linking the servo to that pot, I could control the motor speed proportionally.

Mapping the Signal

On the Arduino, I read channel 2 from the receiver (the throttle channel). The PWM value ranges from 1000 (full reverse) to 2000 (full forward), with 1500 as neutral. I mapped this to a servo angle of 0 to 180 degrees, but with a dead zone around 90 degrees (neutral). The servo then rotates the ESC’s pot, giving smooth acceleration. For safety, I added a failsafe: if the receiver signal drops out, the servo returns to neutral.

Fine-Tuning with Code

Here’s a snippet of the Arduino code I used:

cpp

include <Servo.h>

Servo steeringServo; Servo throttleServo;

int ch1 = 3; // Steering channel int ch2 = 4; // Throttle channel

void setup() { steeringServo.attach(9); throttleServo.attach(10); pinMode(ch1, INPUT); pinMode(ch2, INPUT); }

void loop() { int steerPWM = pulseIn(ch1, HIGH, 25000); int throttlePWM = pulseIn(ch2, HIGH, 25000);

int steerAngle = map(steerPWM, 1000, 2000, 45, 135); steerAngle = constrain(steerAngle, 45, 135); steeringServo.write(steerAngle);

int throttleAngle = map(throttlePWM, 1000, 2000, 0, 180); throttleAngle = constrain(throttleAngle, 0, 180); throttleServo.write(throttleAngle);

delay(20); }

The pulseIn function reads the PWM signal from the receiver. The map function scales it to servo angles. The constrain function ensures we don’t exceed mechanical limits. This code runs at 50 Hz, matching the servo’s update rate.

Powering the System

Power distribution is critical. The micro servos draw significant current during rapid movements. My SG90 draws about 200 mA at stall, while the MG996R can pull 1.5 A. If you power them from the Arduino’s 5V pin, you’ll brown out the microcontroller.

Separate Power Rails

I used a 5V BEC (Battery Eliminator Circuit) from the ESC to power the servos. The ESC’s built-in BEC delivers 5V at 3A, which is enough for two micro servos. The Arduino runs off its own USB power during testing, but in the final build, I connected it to the BEC as well. The main motor draws directly from the 7.4V LiPo.

Filtering Noise

Digital servos can introduce electrical noise into the system. I added a 100 µF capacitor across the servo power lines to smooth out voltage spikes. This prevented random resets on the Arduino.

Testing and Tuning the Proportional Response

Once everything was wired, it was time for a test drive. I set the car on a flat driveway and powered up.

Initial Results

The steering was crisp. A 10% joystick movement resulted in a barely perceptible wheel angle, perfect for gentle lane changes. At 50%, the car turned with authority. The throttle was equally smooth: from a crawl to full speed, the transition was linear. The digital micro servo for throttle held its position precisely, so the car maintained a constant speed without surging.

Common Issues and Fixes

  • Jittery Steering: This happened when the servo’s PWM signal was noisy. I added a low-pass filter in the code (averaging multiple readings) and used shielded cables for the receiver.
  • Overheating Servo: The MG996R got hot during extended full-throttle runs. I reduced the servo’s maximum angle to 160 degrees (instead of 180) to avoid mechanical binding.
  • Dead Zone in Throttle: The ESC’s neutral position didn’t match the servo’s 90-degree angle. I adjusted the map function to add a 10-microsecond dead band around 1500 PWM.

Advanced Modifications with Digital Micro Servos

If you want to push the project further, digital micro servos offer capabilities that analog ones can’t match.

Using I2C Servo Controllers

For multi-servo setups, consider a PCA9685 PWM driver. It controls up to 16 servos over I2C, freeing up Arduino pins. Digital servos respond well to the 1.6 kHz PWM frequency of the PCA9685, giving even smoother motion.

Adding Feedback

Some digital micro servos, like the Dynamixel XL330, have built-in position feedback. You can read the actual angle over a serial bus. This allows closed-loop control: if the wheels don’t reach the commanded angle (due to friction or a bump), the system can adjust. I experimented with this by adding a potentiometer to the steering linkage and feeding it back to the Arduino. The result was a self-correcting steering system that never drifted.

Wireless Proportional Control via Bluetooth

Instead of a traditional RC transmitter, use an ESP32 with Bluetooth. Pair it with a smartphone app that sends proportional values. The ESP32 then generates PWM signals for the micro servos. This approach lets you customize the control curve—for example, making steering more sensitive at low speeds.

Troubleshooting the Micro Servo in Your RC Car

Even with careful planning, issues arise. Here’s a quick troubleshooting guide focused on the micro servo motor.

Servo Not Moving

  • Check Power: Measure voltage at the servo’s red wire. It should be 4.8-6V. If it’s below 4.5V, the servo won’t operate.
  • Signal Wire: Ensure the signal wire (white or yellow) is connected to a PWM-capable pin. On Arduino, pins 9 and 10 are standard.
  • Receiver Binding: If using an RC transmitter, verify that the receiver is bound and the channel is active.

Servo Twitching or Oscillating

  • Ground Loop: The servo, receiver, and Arduino must share a common ground. Use a single ground point.
  • PWM Noise: Add a 10 kΩ pull-down resistor on the signal line to ground.
  • Servo Overload: If the servo is straining against a mechanical stop, it will twitch. Adjust the linkage or reduce the angle range.

Servo Running Hot

  • Gear Binding: Lubricate the servo gears with silicone grease. Metal gears (like in the MG90S) reduce friction.
  • Voltage Too High: Some micro servos are rated for 4.8V only. Use a 5V BEC or a voltage regulator.
  • Duty Cycle: Digital servos run at a higher PWM frequency (300 Hz vs. 50 Hz for analog). If your code uses a 50 Hz update, the servo may overwork. Use a library like Servo.h which defaults to 50 Hz, but for digital servos, consider a library that supports 300 Hz.

Why the Micro Servo Motor is the Star

Throughout this build, the micro servo motor proved itself as the unsung hero of proportional control. Its ability to hold a precise angle under load, respond instantly to PWM changes, and operate with minimal power makes it ideal for RC cars. Compared to a stepper motor, it’s simpler to drive. Compared to a DC motor with an encoder, it’s cheaper and more compact.

The digital aspect adds another layer. Analog servos have a dead band of about 5 microseconds—meaning they ignore small PWM changes. Digital servos, with their faster processor, have a dead band of 1 microsecond or less. For an RC car, that translates to finer control. You can make micro-adjustments to the steering without the car jerking. The throttle becomes buttery smooth, even at low speeds.

Scaling Up: From 1:10 to 1:5 Scale

If you want to build a larger car, the principles remain the same, but the micro servo motor might need an upgrade. For a 1:5 scale buggy weighing 15 kg, a standard micro servo won’t cut it. Look for high-torque digital servos like the Hitec HS-7954SH (30 kg·cm torque). These are still considered “micro” in the hobby world (40 x 20 x 38 mm), but they use metal gears and high-voltage operation (up to 8.4V). They’ll handle the heavier steering loads.

The proportional system scales too. Use a more powerful ESC with a programmable BEC that delivers 6V at 5A. The Arduino or ESP32 can still process the PWM signals. Just ensure your code accounts for the servo’s wider pulse range (some high-torque servos use 500 to 2500 microseconds instead of 1000 to 2000).

Final Thoughts on the Build

Building a remote-controlled car with a digital proportional system is a rewarding project that teaches you about PWM, feedback control, and mechanical design. The micro servo motor is the linchpin—it transforms a simple on-off car into a precision machine. Whether you’re racing on a track or crawling over rocks, the ability to modulate speed and steering with finesse makes all the difference.

As you experiment, don’t be afraid to tweak the code or the linkage. Try different micro servo models. Add a gyroscope for stability control. Integrate a camera and drive via FPV. The proportional system is your foundation, and the micro servo motor is your tool for precision. Happy building.

Copyright Statement:

Author: Micro Servo Motor

Link: https://microservomotor.com/building-remote-controlled-cars/rc-car-digital-proportional.htm

Source: Micro Servo Motor

The copyright of this article belongs to the author. Reproduction is not allowed without permission.

About Us

Lucas Bennett avatar
Lucas Bennett
Welcome to my blog!

Tags