A motor controller is a delicate, unsteady system that always has to operate at maximum efficiency. Even a split second tripping up while handling what can be hundreds of amps can result in instant, total destruction. Making your own motor controllers is much like banging your head against a concrete wall, except every skull-fracturing impact delivers knowledge of electrical engineering principles, the quirks that separate a design from reality, and skills in selecting the right components and methodology for the task. All that’s the challenge, but the end product can be rewarding.
Below are some of my motor control endeavours, listed in Stochastic Order. The featured controllers are only ones that have seen some testing and use in a project, or have been extensively tested on their own. Projects which got their own dedicated controllers which didn’t work aren’t listed here, but in the associated build reports.
H-bridge & DC
Have I really never made a DC motor-driving H-bridge successfully besides Kartroller? Apparently not. At least, not one that is useful in a robot or a smaller vehicle. Finally being sick and tired of other peoples’ fancy but deficient controllers, I decided to start from a new Eagle file and design my own dual reversible DC motor driver. Ragebridge verson 1 was the result, and as it went through a few of the usual debugging procedures, I discovered two critical errors in component placement and selection which may have compromised my motor controller designs in the past. After resolving those, Ragebridge v1 has been almost distressingly reliable.
With a known good hardware platform, I embarked on a quest to give it smart (or at least vaguely intelligent) current limiting. Many robot ESCs have a “dumb” over-current shutdown protection which I don’t find very useful at all. The “smart” limit mode will only let the ESC output a certain amperage no matter if the motor is running freely, stalled, or just dead shorted. For very high current loads, the Ragebridge will therefore approximate a current-controlled source. It also can run at a higher voltage than many robot ESCs – with appropriate components, up to 48v is reasonable – and continuous non-heatsunk & without forced convection current levels of 40A.
With Ragebridge version 1 squared away, I immediately began rethinking some parts of the board. It needed better layout and addressing of some shortcomings, and those damned no-standard header connectors totally redone. The important part, however, was that the power circuitry was sound. RageBridgeTwo is a little different in form factor (4.5″ x 2″ instead of 4.2 x 2.2″, but retains the same hardware as RB1 with more spacious power traces printed on 2oz copper to boot (4oz was a little extreme for my liking at the time). With some more firmware adjusting, I believe this board is ready to disrupt the somewhat complacent mid-size DC motor controller market. The design can operate from approximately 18 to over 36 volts at continuous current levels of approximately 35-40A without any additional cooling, and potentially over 60A with a fan pointed at it. Best of all, the constant-current mode is a feature that no other ESC possesses.
It’s my full intention to take RB into production in the near future, so this might get its own dedicated page with user information soon. RageBridges 3 thru 5 have been built and documented in the build thread. While there are no substantial hardware changes, I’ve moved things around and continued developing the firmware to make it as user friendly as possible. RageBridge is now a production item on Equals Zero Designs, my “store” website.
LOLrioKart was what dragged me into this whole “motor control” mess in the first place. After detonating a commercial motor controller for seemingly no reason, I realized the only way my new EV habit was going to be remotely sustainable in terms of finances was if I just manned up and built my own controllers. Finally, almost five different versions later, the Kartroller is stable and reliable. As the pioneering application for the IRS21844 gate drivers, it features bidirectional operation with synchronous regenerative braking in either direction. An Arduino (of course) runs the whole show. The function is very basic – I only have a throttle input, direction input, and contactor enable input. But at least it survives more than one power cycle. Because the controller has no current sensors, I came up with a way of varying the regeneration strength just by commanding a ramped coastdown. Not the most legitimate, since it will still cause the kart to plow through anything in its way, but it’s great fun trying different brake strengths.
Kartroller will operate from 36 to 72 volts (limited by the DC/DC converter feeding the logic power supply) and currents of 200 to 300 amps. It uses the IR21844 gate drive IC and Ixys VMM650-01F FET modules.
It took about 2 hours to design, is all through-hole components because I had them or could scrounge them, and ended up needing a few wire jumps, but Segfault’s motor drivers have (oddly enough) been one of the most reliable motor controllers I’ve built. It is an IR21844 powered, IRFB3006 output H-bridge driven in locked antiphase mode with an onboard 10kHz PWM generator, requiring only an analog voltage input as the command. The same architecture is found in high-powered subwoofer amplifiers and is known as a Class D amplifier. I could conceivably use this thing to drive speakers, but it’s not really optimized for low distortion. The board was designed to run from 24 volts and can handle about 35 amps without additional heatsinking.
3-phase & Brushless
Melontroller is an attempt to design a compact brushless DC motor controller for the ever-loved and feared Turnigy C80-100 motor, nicknamed the melon. The motor is one of the largest model aircraft motors available easily to hobbyists and small-time EV hackers. The motor itself has been known to pull in over 9kW when rewound and cooled via forced air, and propel custom electric bicycles to speeds of 45 miles per hour. It’s truly a phenomenon – and its ultra-low phase resistance and inductance make it a difficult motor to control. Melontroller runs on an Arduino microcontroller platform and uses my previously discovered IRS21844 half-bridge gate drivers. It features synchronous rectification on all three phases, DC current sense, two phase current sense, and an unreasonable amount of bus capacitance.
Melontroller is being developed for the aptly-named Melon-scooter Yeah right, but all of its build and testing updates will be filed under Melonscooter’s category.
Melontroller 2 takes the design of Melontroller 1.0 and makes it more compact – otherwise, the circuitry is the same. Melontroller 2 had a target size of “the average business card”, a sample of which is shown. It is the controller which has been running RazEr rEVolution. While it also has current sensing, the only version built did not actually use the sensors. Melontroller 2 has an estimated current carrying capacity of 30 to 40 amps (never properly metered), which matched well to RazEr’s motor and never had overheating problems.
Tinytroller is an effort to make an even smaller controller than Melontroller by moving to a split power & signal board architecture. The upper board contains the microcontroller logic and the gate drivers. The lower level only has giant power semiconductors and associated passive components. Its form factor more closely mimics an R/C style controller. It is actually the first PCB-based controller I’ve built which has a switching regulator for the logic power supply. Previous versions of Melontroller actually had a chained resistor-linear regulator arrangement, but this works only for a narrow band of input voltages. Tinytroller also has a component-free (flat) bottom side such that the FETs can be heat sunk by conduction to a frame or heat sink.
Tinytroller is currently experimental, and its build report is in its own section.