In this post I'll explain why, and how I designed the Bristol Bot Builders N20 Red ESC electronic speed controller for small robots.
The Antweight / 150g robot ESCs
- Various "dual channel" speed controllers with or without mixing - these come as a board with lots of flying leads and it's important to connect them correctly. BBB does a special one for Ants which has braking (most don't)
- My previous project - the Malenki Nano - which has a built-in receiver
- The DFRobot N20
The advantage of the DFRobot controller, is that it's build on the back of the N20 motor and can be plugged directly into a receiver. This makes it easy for newbies and flexible for different designs. It also simplifies the wiring - these robots are very small and it can often be difficult to cram all the wires into the chassis.
The good and bad of the DFRobot:
- Very easy to use for newbies
- Flexible for designs
- Simple wiring
Unfortunately there are some problems:
- No braking
- Many reports that these controllers fail on 2S lipo packs (8.4v maximum) after prolonged or regular use
- The supplied lead is much too long for these small robots
- Comes already soldered to a N20 motor - if it isn't the type you want - then you need to desolder it and put on a different motor.
So in this project, I tried to fix all the bad things but keep all the good things :)
Microcontroller and firmware
- The internal oscillator on these microcontrollers is not perfectly accurate, so we can't measure 1500 microseconds reliably. So based on an idea from Scott (thanks Scott!) - I simply auto-calibrate when receiving the first pulse after power on.
- The input signal pin - I have used the "reset" pin for the input signal - which has an advantage that it's tolerant of up to 12 volts, as the 12v is used for "high voltage programming mode"
The Attiny4 can be programmed using a Arduino with the ArduinoISP firmware. After the RSTDISABLE fuse is blow, then it can only be reprorgrammed by putting 12v into the reset pin. I haven't yet found a way to reset the fuse (but I think it's possible).
The firmware is about 250 lines and compiles to 362 bytes (the Attiny4 has 512 bytes of flash)
Doing a fit test on the PCB minus components
A panel made by JLCPCB for the prototypes. I had them assemble some of the trickier components and put the microcontroller and connector on by myself.
|A home made prototype - similar to the production version, but not quite so red|
Dogfood-robot with red on one side and dfrobot on the other
|Some assembled panels|