60A Brushed ESC Library for Proteus Simulation: an Arduino UNO V4.0, the 60A ESC and a 540 RC motor

60A Brushed ESC Library for Proteus Simulation

1 View
40
700
60
25
60
PCBWay

Hello friends, I hope you all are doing great. Today, I am going to share the new 60A Brushed ESC Library for Proteus Simulation, the 35th library of our motor series. If you have searched for a Proteus simulation of an RC car ESC, this is the part that sits between the receiver and the motor in almost every brushed RC car: a small waterproof box that turns the throttle pulse from the radio into forward, brake and reverse for a 540 motor. Students and makers meet it whenever they build an RC car, a robot on a car chassis or an Arduino-driven vehicle, and it behaves in ways that surprise people the first time: it beeps, it waits for the neutral, and it brakes instead of reversing.

Updates

60A Brushed ESC Library for Proteus Simulation

Latest version: V1.0 (November 2026, this tutorial)

Helping Tools

Our library brings this ESC into your Proteus simulation at its true size, 36.5 x 32 mm, with its battery and motor leads, the receiver lead, the two jumpers and the red LED. The simulation model follows the maker's manual of the common 60 A brushed car ESC: the start-up beeps, the 3-second neutral calibration, the three running modes, the double-click reverse, the low-voltage, over-heat and signal-loss protections and the 6 V BEC. The pop-up shows the throttle pulse on its scale, the H-bridge with the switches that are on and the path of the current, and the state machine with the state the ESC is in. In the demo, an Arduino plays the receiver and drives our 540 RC motor in a 1/10 RC car: forward, full speed, brake, reverse, the double-click guard and the failsafe.

NOTICE: Our team has put a lot of effort into these small parts: the bodies, the animation and the pop-ups are all our own design, and you get them free. Your feedback is the fuel that keeps us going, so please tell us what you think in the comments below or in the Motor Driver board of our forum. And if our free libraries help you, you can buy us a coffee. So, let's get started with the 60A Brushed ESC Library for Proteus Simulation:

60A Brushed ESC Library for Proteus Simulation: an Arduino UNO V4.0, the 60A ESC and a 540 RC motor
Figure: The 60A Brushed ESC Library for Proteus Simulation.

What is a Brushed ESC?

An ESC (electronic speed controller) is the motor driver of the RC world. A brushed ESC drives a brushed DC motor, like the 540 in most RC cars, from a LiPo or NiMH pack. Inside it is an H-bridge of four power MOSFETs: switching one diagonal pair drives the motor forward, the other pair drives it backwards, and turning on both low-side switches shorts the motor, which brakes it. A small microcontroller reads the throttle signal, switches the bridge with PWM and watches the battery and its own temperature. Most car ESCs also carry a BEC (battery eliminator circuit), a small regulator that powers the receiver and the steering servo from the main pack.

The throttle signal is the same pulse a servo gets: a pulse every 20 ms (50 Hz) whose width carries the command. 1.5 ms is neutral, 2.0 ms is full forward and 1.0 ms is full back. That is why an Arduino can drive an ESC with the standard Servo library: writeMicroseconds(1500) is neutral and writeMicroseconds(2000) is full throttle.

The 60 A brushed ESC at a glance
The 60 A brushed car ESC (maker's manual)
Current60 A forward (360 A peak), 30 A reverse (180 A peak)
Bridge resistance0.001 ohm forward, 0.002 ohm reverse
Battery2 - 3S LiPo or 5 - 9 cell NiMH
BEC3 A at 6 V, switch mode
Running modesFwd / Br / Rev (double-click reverse), Fwd / Br, Fwd / Rev
Protectionslow voltage, over-heat (100 C), throttle signal loss (0.1 s)
Size36.5 x 32 x 18 mm, 39 g

The motor limit in the manual is a 540 or 550 motor of 12 turns or more (or under 30,000 RPM at 7.2 V) on 2S. Our 540 RC motor library fits that limit.

Features of the 60A Brushed ESC Library for Proteus Simulation

  • The real ESC at true scale: the black case with its label, the red and black battery leads, the receiver lead, the blue and yellow motor leads, the MODE and BATT jumpers and the red LED, which lights at run time.
  • The real start-up: the battery found from its voltage with 1, 2 or 3 short beeps (NiMH, 2S, 3S), the neutral calibrated after 3 s at neutral, one long beep, ready. The beeps play on your PC's speaker.
  • The throttle pulse read edge by edge: 1.0 to 2.0 ms around the calibrated neutral, with a 3 % deadband.
  • Three running modes: Fwd / Br / Rev with the double-click reverse, Fwd / Br for racing and Fwd / Rev for crawlers.
  • An H-bridge with the manual's numbers: 1 mΩ forward and 2 mΩ reverse, the battery current from the duty, the brake through both low sides.
  • The protections: low-voltage cut-off (the power halved, then cut), over-heat (a thermal model, the output reduced till cut at 100 °C, back under 80 °C) and the failsafe after 0.1 s without a pulse.
  • A pop-up: the pulse on its scale, the bridge with its switches and the current's path, the state machine, eight live values, graphs, an event log and a check page.
  • A complete package: about 1.2 MB with the library, our Arduino UNO V4.0 and the demo, without the source code of the model.

The 60A Brushed ESC in Proteus

The device is ESCBRUSHED60TEP in TEPESC60.LIB, under Electromechanical > Motor Drivers, with the prefix U and the mixed model TEPESC60.DLL. Search ESCBRUSHED in Pick Devices. On the left are B+ and B- for the battery, S for the throttle pulse and BEC for the 6 V output. On the right are M+ and M- for the motor, 400 thou apart, the same spacing as the + and - leads of our 540 RC motor. The ESC's black receiver wire is B- inside, so the Arduino's ground and B- must be joined, as they are in the demo.

60A brushed ESC at true scale in the 60A Brushed ESC Library for Proteus Simulation
Figure: The 60A brushed ESC, drawn at its true size.

Three properties set it up. MODE is the running-mode jumper: FBR (forward, brake and reverse with the double-click), FB (forward and brake, no reverse) or FR (forward and reverse, single click). BATTERY is the battery-type jumper: LIPO, where the ESC counts the cells from the voltage at power-on, or NIMH. AMBIENT is the air temperature in °C for the thermal model (25). The jumpers on the sheet follow the properties: a cap across the first two MODE pins is FBR, across the last two is FB, and no cap is FR.

Download 60A Brushed ESC Library for Proteus Simulation

Click the button below to download 60A-Brushed-ESC-Library-for-Proteus-v1.0.zip (about 1.2 MB, without the source code of the models):

60A Brushed ESC Library for Proteus V1.0
  • README.txt: installation, the demo, the wiring, troubleshooting and the limits of the simulation.
  • Proteus Library Files: TEPESC60.LIB and ArduinoV4TEP.LIB.
  • Proteus Model Files: TEPESC60.DLL and TEPARDUINO.DLL.
  • Arduino Code: the demo sketch.
  • Proteus Simulation: the demo project, its HEX file and copies of the DLLs.

No Proteus yet? Read How to Download and Install Proteus 7 and 8. New to libraries? Follow How to Install a New Library in Proteus.

How to Install 60A Brushed ESC Library for Proteus Simulation

  1. Close Proteus and extract the whole zip file, for example to your Desktop.
  2. Copy the files from Proteus Library Files into the LIBRARY folder of Proteus.
  3. Copy the files from Proteus Model Files into the MODELS folder.
  4. Delete TEPESC60.IDX from the LIBRARY folder if it is there.
  5. The demo's motor is our separate 540 RC Motor Library for Proteus Simulation: install its LIB and DLL too.
  6. Start Proteus, press P and search for ESCBRUSHED.

Proteus Simulation of a Brushed ESC with Arduino

The demo has our Arduino UNO Library for Proteus V4.0 with its built-in monitor, the same window as our TEP Serial Monitor Advance for Proteus. The UNO plays the RC receiver: its D9 sends the throttle pulse to the ESC's S lead through the Servo library. B+ is on a 7.4 V rail, a 2S LiPo, and B- is on the ground. M+ and M- go straight to our 540 RC motor M1, which drives a 1.6 kg 1/10 car on a flat road. The motor comes from our separate 540 RC Motor library (TEPRC540.LIB and TEPRC540.DLL), so install it first. The sheet is A3. Open ESC60-RC540-Car-ArduinoUnoV4.pdsprj.

60A brushed ESC simulation in Proteus: Arduino UNO V4.0, the ESC and the 540 motor on an A3 sheet
Figure: The whole simulation on an A3 sheet.

The Sketch

The sketch attaches the ESC like a servo, with the pulse range of 1000 to 2000 µs, and starts at neutral, because the ESC calibrates on the pulse it sees at power-on:

  esc.attach(ESC_PIN, 1000, 2000);
  esc.writeMicroseconds(1500);                                          // neutral from the start: the ESC calibrates on it

One function sets the throttle. A width of 0 detaches the Servo, so no pulses leave D9 at all, which is how the demo tests the failsafe:

void throttle(uint16_t us) {
  if (us == 0) { esc.detach(); digitalWrite(ESC_PIN, LOW); return; }
  if (!esc.attached()) esc.attach(ESC_PIN, 1000, 2000);
  esc.writeMicroseconds(us);
}

The program is a table of steps, each with its time in tenths of a second and the pulse width in microseconds:

  {85, 1000, "1000 us: full back - the first push back brakes"},
  {105, 1500, "1500 us: neutral (the motor stopped: reverse armed)"},
  {110, 1200, "1200 us: back again - the second push reverses"},

After the program you can drive it yourself from the monitor: type a pulse width such as 1750 for forward, 1500 for neutral or 1000 for full back, or d to detach. A typed command ends the program.

60A Brushed ESC Simulation Results

Open the project and press Run. The program runs about 19 simulated seconds, which Proteus ran in about five minutes on our PC with both pop-ups open and the pictures being taken. Click the ESC to open its pop-up. Every number below comes from one simulation run, the demo exactly as it ships.

The Start: Beeps and Calibration

At power-on the ESC reads 7.40 V on B+ and B-, decides it has a 2S LiPo and gives 2 short beeps: the Event log writes POWER ON: 7.40 V - a 2S LiPo found. Then it waits for the throttle to sit at neutral. The UNO sends 1500 µs from the start, so the banner reads CALIBRATING, and the state machine has CALIBRATE 3 S lit. The bridge is off; nothing reaches the motor yet, whatever the pulse says.

60A brushed ESC Proteus simulation pop-up: calibrating, the throttle at 1500 us
Figure: Calibrating: the throttle must sit at neutral for 3 s.

After 3 s of steady neutral the log says CALIBRATED: neutral 1500 us (full forward 2000, full back 1000) - one long beep, and half a second later READY at 3.62 s. If the stick is not at neutral at power-on, the ESC waits and says so, which is a common reason a real ESC "does nothing" on the bench.

Forward: Half and Full Throttle

At 4.5 s the sketch sends 1750 µs, half of the stick. After the 3 % deadband that is a 48 % duty, so the motor sees 3.58 V on average from the 7.40 V pack. It draws 3.4 A and the car settles at 13.8 km/h. The bridge drawing shows Q1 switching (amber) and Q4 on (green), with the current's path in blue from B+ through the motor to B-.

60A brushed ESC Proteus simulation pop-up: forward at 1750 us, 48 % duty, 3.58 V to the motor
Figure: Forward at half stick.

At 6.5 s the pulse goes to 2000 µs, full forward. Q1 now stays on, the motor gets 7.39 V and the car reaches 29.0 km/h with the motor at 23,088 RPM. At top speed the motor draws only 5.9 A, and the battery gives 6.0 A, a little more because the ESC itself and the BEC draw from it too.

60A brushed ESC Proteus simulation pop-up: full forward, 7.39 V and 5.9 A to the motor
Figure: Full forward.

On the sheet, the ESC's red LED is solid at full throttle, as the manual describes: off at neutral, blinking at part throttle, solid at full.

60A brushed ESC Proteus simulation: the red LED solid at full throttle, the 540 motor running
Figure: The LED solid at full throttle.
Arduino UNO V4.0 serial monitor in the 60A brushed ESC Proteus simulation: the program steps
Figure: The program in the monitor.

The motor's own pop-up shows the same moment from the motor's side: the car on the road and the motor's working point on its curves.

The 540 motor pop-up in the 60A brushed ESC Proteus simulation at full throttle
Figure: The 540 motor at full throttle.

The First Push Back Brakes

At 8.5 s the sketch sends 1000 µs, full back. A beginner expects reverse; the ESC brakes. This is the double-click method of the Fwd / Br / Rev mode: the first push back only brakes. Both low-side switches, Q2 and Q4, short the motor, and the spinning motor becomes a generator whose own current slows it. The braking current peaks at 74 A, and in the picture the motor gives 13.3 A while the car still runs at 15.6 km/h, its tyres sliding, slower than the road. The log says the motor stopped 1.28 s after the brake began; the car stopped in 3.50 m.

60A brushed ESC Proteus simulation pop-up: the first push back brakes, Q2 and Q4 short the motor
Figure: The first push back: brake.

At 10.5 s the stick returns to neutral. The motor has stopped, so the log says neutral: the motor stopped - the next push back reverses, and the state machine shows reverse armed: YES.

60A brushed ESC Proteus simulation pop-up: neutral with reverse armed, the motor at rest
Figure: Neutral, reverse armed.

The Second Push Reverses

At 11 s the sketch sends 1200 µs, and this time the ESC reverses: REVERSE 59 % (1200 us) - the motor had stopped: the second push back reverses. Q3 switches and Q2 is on, the motor gets -4.34 V and 4.0 A, and the car backs up at 16.8 km/h. The manual rates reverse lower than forward: 30 A against 60 A, through 2 mΩ instead of 1 mΩ.

60A brushed ESC Proteus simulation pop-up: the second push reverses at 59 %
Figure: The second push: reverse.

The Double-Click Guard

At 13 s the stick returns to neutral. The bridge opens and the car rolls on backwards: the motor is now a free generator, and the pop-up reads its back-EMF, 3.88 V, from the open terminals. Reverse is still armed, but the motor is turning.

60A brushed ESC Proteus simulation pop-up: neutral, the car rolling on backwards
Figure: Neutral: the car rolls on.

At 13.4 s the sketch pushes back again at once. A careless ESC would slam into reverse against the rolling car; this one checks the motor first. It still turns, so the ESC brakes instead: BRAKE 100 % (1000 us) - the motor still turns (3.71 V): no reverse until it stops. The motor stops 0.88 s later. This is the guard the manual describes, against a mistaken reverse when the brake is used a lot while steering.

60A brushed ESC Proteus simulation pop-up: the double-click guard brakes the rolling car
Figure: The guard: a brake, not a reverse.

Forward Again and the Failsafe

At 15 s the sketch sends 1900 µs: FORWARD 79 % with 5.87 V to the motor. Starting from rest, the motor draws about 60 A for a moment, the ESC's continuous rating, though well below its 360 A peak.

60A brushed ESC Proteus simulation pop-up: forward at 1900 us, 79 %
Figure: Forward at 1900 µs.

At 17 s the sketch detaches the Servo, so D9 sends no more pulses: a broken wire or a radio out of range. After 0.1 s without a pulse the ESC cuts the output, and the log writes SIGNAL LOST: no pulse on S for 0.1 s - the output cut (the failsafe). The car coasts, and the bridge shows all four switches off. At 18.5 s the sketch attaches again at 1500 µs and the log says signal back.

60A brushed ESC Proteus simulation pop-up: signal lost, the output cut by the failsafe
Figure: Signal lost: the failsafe.
The 60A brushed ESC simulation running in the Proteus workspace with the Arduino UNO V4.0 and the 540 motor
Figure: The simulation running in the workspace.

The Graphs, the Event Log and the Check Page

The Graphs page plots the throttle (forward up, back down), the motor current, the motor voltage and the battery current over the last 2, 6 or 15 simulated seconds. The Event log keeps every step of the state machine: the power-on and the beeps, the calibration, every change of direction and throttle, the brakes with the time to stop and the failsafe. The Check page sums it up with a verdict for the pulse, the calibration, the battery, the mode, the currents against the ratings, the temperature and the BEC.

60A brushed ESC Proteus simulation graphs: throttle, motor current, motor voltage and battery current
Figure: The Graphs page.
60A brushed ESC Proteus simulation Event log: start-up, brakes, reverse and the failsafe
Figure: The Event log.
60A brushed ESC Proteus simulation Check page after the demo
Figure: The Check page.

Try It Yourself

  • Set MODE to FB and run the demo: the pushes back only brake, and the car never reverses.
  • Set MODE to FR: the first push back reverses at once, as on a rock crawler.
  • Type 1000 while the car runs at full speed, then 1500, then 1000 again before it stops: watch the guard brake.
  • Start the UNO at 1800 µs instead of 1500 µs: the ESC waits, without the long beep, until the stick returns to neutral.
  • Put B+ on a 6.3 V rail: after 2 s under 6.5 V the power is halved and the LOW VOLTAGE box lights.
  • Set BATTERY to NIMH: one short beep at power-on, and the low-voltage thresholds become 4.5 and 4.0 V.

Ideas to Extend the Demo

  • Read a potentiometer on an analog pin and map it to 1000 - 2000 µs, like a throttle trigger.
  • Read a real receiver's channel with pulseIn and pass it on to the ESC through the Arduino, with your own limits.
  • Add a steering servo on another pin and power it from the ESC's BEC, as in a real car.
  • Build a cruise control: read the car speed and adjust the pulse width to hold it.

Your Own Sketches

The demo sketch is in the zip file, and you can change it in the Arduino IDE. New to Arduino? Start with our Arduino Tutorial for Beginners. Export the compiled binary, and set the UNO's PROGRAM property to the new file. Our guide on How to get the HEX file from Arduino shows you where the file ends up.

Things to Know Before Using a Real ESC

  • Never reverse the battery: a real ESC is damaged at once if the battery goes in the wrong way round.
  • Mind the BEC: its red wire powers the receiver at 6 V. With an Arduino on USB, leave it off the Arduino or use it only for the servos.
  • Hold the throttle at neutral at power-on: the ESC calibrates there; a stick off neutral and it waits.
  • Use a failsafe: set the radio's failsafe to neutral; the ESC also cuts the output after 0.1 s without pulses.
  • Swap the motor wires if the motor turns the wrong way; the ESC's forward is whatever M+ and M- make it.

Troubleshooting

  • No long beep, WAITING in the log: the throttle must sit at neutral (1.3 to 1.7 ms) for 3 s after the power comes on.
  • It brakes but will not reverse: the double-click; return to neutral, let the motor stop, and push back again, or set MODE to FR.
  • SIGNAL LOST: no pulse on S for 0.1 s, from a detached Servo or a loose wire; the output stays cut until pulses return.
  • LOW VOLTAGE: the battery under the threshold for 2 s; the power is halved, then cut until the power is cycled.
  • The part is not simulated: TEPESC60.DLL is missing from MODELS and from the project folder.

Limitations of the Simulation

  • The bridge is averaged: the PWM ripple itself, the switching frequency and the motor's inductance are not modelled.
  • The programmable punch and drag-brake settings of some ESCs are not modelled; the drag brake is 0 %, so the motor coasts at neutral.
  • The thermal model is one lumped mass; the cooling fan, the airflow and the reverse-polarity damage are not modelled.
  • Arduino is a name of Arduino; this library is not made or endorsed by Arduino, Labcenter or any ESC maker.
  • Tested in Proteus 8.5 in November 2026 (the demo as shipped). Proteus 7 is not supported.

So, that was all about the 60A Brushed ESC Library for Proteus Simulation. I hope it helps you understand what an RC car ESC does before you wire a real one: the throttle pulse, the beeps and the neutral calibration, the brake that comes before the reverse, the guard against a mistaken reverse and the failsafe, all in a simulation with a pop-up that shows the switches and the state. If you have any questions, ask in the comments and I will help you out. Till the next tutorial, take care and have fun!


Comments

0

Join the conversation