Barely a week after I first put out the call for RageBridge testers, I’m stoked to say that I’ve gotten the first usage reports back! Two of my boards were in use at the Combots Cup this past weekend, one in a 60lb bot and one in a 120lb class bot. Here’s what went down:
AWESOME! The board worked flawlessly until it caught on fire.
That’s actually what I want to see, because this establishes a good upper bound on what the board should be used for, as well as how it should be mounted.
The two robots used similarly powered motors in their drivetrains, but one was very weapon-centric and the other (which suffered the explosion) very pushing and drivetrain-centric. I’m told by attendees that after 2 minutes of a hard pushing match, the RageBridge board gave out. The other board seemed to have survived fine, given that in its application it was most likely not hitting the current limit as often due to the robot’s primary goal of chasing after an opponent with its whacky bar thing.
The thermal situation in the pushybot was also a little suboptimal:
Above is the robot, Ziege, a 120lb middleweight powered by 4 EV Warrior motors (admittedly a little power-starved on 60A). The black blob of tape between the two rear motors? Ragebridge. Talk about good ventilation! Basically what I’ve concluded right now, after only 1 data point, is that perhaps without additional cooling/heat sinking, it’s not a good idea to use RB in a 120lb battlebot. This is more informative than the statement’s facetiousness may indicate.
First, all ESC ratings lie to you.
Second, it’s been known to me that RB’s “40A” rating was a little optimistic. It was calculated assuming a constant current causing a certain amount of Joule loss (I²R) in the FET, and using the datasheet’s quoted temperature rise per watt of dissipation (Kelvins/Watt) to estimate a temperature rise from 25C ambient. Basically, for the FETS I used (the IRFS3004), this worked out to be around 76C for a final temperature of 100C. I picked that as the target temperature because most big electrolytic capacitors are rated to 105C. However, that does not include any additional sources of heat. In fact, the capacitor itself is a nice source of watts that is located very close to the FETs, hence contributing to their heating. The board traces, being relatively thin copper, will also contribute some resistive heating.
Interested in just how many “true continuous” amps Ragebridge could push with no help (e.g. fans, heat sinks), I set up a test rig over the weekend which was basically the board puking into a huge RL load while suspended in midair:
The “Big RL Load” in question is Cap Kart’s motor, a separately excited giant-ass DC motor. To get the duty cycle of the controller’s outputs to a reasonable range, a very small amount of field current was injected such that the rotor could barely overcome friction and spin up to a tame speed, hence generating enough back-EMF to force the controller to work at around 50% duty cycle for the current I wanted to test. To maintain that current, I just set the Semi-Intelligent Current Limiter to the value desired.
The reason this was done was because different duty cycles load different controller parts preferentially. If I had just dumped into the big rotor windings at stall (which I tried), the controller would be running at like 5% duty cycle the whole time. That would have been all the voltage needed to hold 30 amps into the ~30 milliohm rotor winding (at the 20 volt test voltage). Very high and very low duty cycles preferentially stress one FET because it is either supplying all the current or having to freewheel all the current and is kind of unrealistic unless you know for a fact that people are gonna be running such low or high duty cycles all the time.
50% duty cycle is a nice worst-case scenario. While heating would be distributed evenly across both FETs of the conducting H-bridge half, 50% duty cycle really kills the capacitor (Here’s a good application note kind of thing with good buck converter design equations).
Every once in a while, temperature readings were taken of the region between the high-side FETs and the capacitor. This would be the single hottest part of the board, and hot it did get.
I became concerned about how fast the cap was approaching 100+ celsius after the first test. To mitigate this, I temporarily doubled the capacitance. Kind of cheating, I know, but I was also interested in seeing what the FETs were capable of. The first test was on just 20 amps, and the FETs had barely crested 50 Celsius when I called it off. They have quite a long way to go, but the capacitor was probably about to detonate.
Finally, after the extra 680uF of capacitor was added, the test was repeated at 30 amps:
SCIENCE. SO MUCH SCIENCE.
The “data” was recorded with a video camera and the data points gathered by watching the video and picking the temperatures that looked like of good. So, not exactly rigorous science, but it gets the point across. With no additional heat sinking, fans, airflow, or other cooling assist, the RB board sort of levels off at around 100-105 celsius after about 5 minutes.
Thermal equilibrium is really what determines what a controller’s “continuous” rating is. RageBridge is a “30 amp” controller at heart.
The only way to raise this current ceiling is by active cooling of the board. There is very little amount of practical heatsinking that can be done to raise the steady-state current. A well-designed and many-finned heat sink is more effective on its own because the increased surface area encourages more natural convection anyway, but a plain heat plate wouldn’t increase the surface area much. Hence, it would only prolong the time until the temperature limit is reached.
The world of ESC ratings is a perilous one. If I really sold Ragebridge right now as a “30 amp” controller, nobody would buy it. The reason is that the majority of robotics and traction duties aren’t truly continuous. A typical robot will accelerate in under a second, drawing full current, then cruise at a much lower current. Vehicles may hold that acceleration current for longer periods of time by virtue of being heavier and not being geared to safely spin the whels at a low motor current. Unless you’re trying to drive motors that are way larger and more power-hungry than needed for the application, the average current will be far lower than the peaks.
This is why “one number” ratings, like “40A continuous”, are useless without considering the circumstances of the test. Some ways to get around this rating are citing a number as “continuous” for some number of minutes. A typical “robot duty” might be 3 or 5 minutes. In this case, I think RB2 is a good 40A “3 minute” controller. A truly 40A continuous ESC needs to have enough thermal dissipation ability to safely dump several watts of heat in the best case. It’s probably going to have a rather large heat sink or at least a fan, or be very ridiculously low resistance , which some R/C type ESCs acheieve by being very low voltage and using many small FETs in parallel to reduce resistance even further. For R/C controllers in particular, some amount of airflow is implied, usually prop wash from a plane.
Peak ratings can be even more bogus. It’s generally not disclosed how the test was performed – for the typical R/C ESC, it’s usually “Rated battery voltage” / “Rds-on of the FETs divided by number of FETs”, resulting in hilarious ratings of 1000+ amps from a ESC with 14 gauge wires. Without a method of test – like “100 amps for 10 seconds before reaching 150 degrees Celsius” it’s impossible to really tell what the “peak rating” is. However, for RB2, it’s dead simple – it’s whatever I set the hysteresis limit to!
With this test rig pretty well practiced and easy to set up, I might go ahead and try some other well-known robot ESCs to determine what their real ratings are.
For RB, though, I intend to generate several of these graphs and make them public & part of the eventual user manual. Maybe 2 different currents under 4 different cooling conditions (no cooling, with a heat sink plate, with a fan but no heat sink, with both). It would look much like the average IC or semiconductor datasheet, and it would be kind of easy to extrapolate what a safe amperage is for the custom application based on those graphs. I’d still have to cite a “one number” specification for the eventual brochure or specs box, though, but at least with Real Dataz behind it, I don’t feel as bad fibbing a little.
With 30 amps under the belt, I decided to try adding a little bit of forced convection. Here’ a quick fan mount I whipped up for the board that uses the existing standoff/mounting holes and a very small 12v, 0.12A 40mm fan.
The CFMs from this thing are rather low – about 10CFM rated, but it’s split fairly evenly in 3 directions (the 4th is blocked by a flap of the mount I made), so each side really gets about 3CFM.
This was also a chance to test out my new load. This is a 0.6 ohm, 550 watt power resistor. Conveniently, it’s not wound to cancel its own inductance, so it’s a nice…..little?…. RL load.
With the resistance being fractional ohms, it’s easy to push tons of current through this thing. I also have a known fixed relationship between current and voltage, so if I wanted to achieve the ideal 50% duty cycle for stress-testing the board, then I can set the power supply accordingly. For instance, if I wanted 50% duty cycle at 30 amps, I would have set the power supply to 36 volts (30 amps * 0.6 ohms = 18v output at the controller, and 50% duty cycle represeting 18 volts average means 36v input).
Unfortunately, the board has seemingly started exhibiting regulator resetting issues again. It usually occurs a few minutes into testing the current limit, and the failure is “soft” i.e. the gate drives just shut off due to low voltage. The regulator once again enters a weird latched up state that I supposedly solved on RageBridge1 a few months ago. This time, I’ll need to hunt down the error a little more carefully. It could have been that, for example, a solder joint was stressed during the last test’s heating and cooling cycles, or some other equally hard-to-find bug.
Before the board reset, though, I was able to get the temperature to hold approximately steady at 58 to 60 celsius after about 4 minutes. This is a good sign that I can (after I figure out that damned regulator issue) start upping the amps to find the limit of what airflow can do!
In the time I’ve been waiting to hear back from users, I’ve made a few changes to the board to resolve some of my (and others’) complaints and some of the issues exposed in this thermal testing:
RB2′s first version had a few issues which were typical of me rushing a board out the door.
- There was a single digital pin input to enable the Mix mode, but it had no corresponding ground or 5v jumper to attach to! Not sure what I was thinking there – to active mixing I had to solder a jumper wire (and tell other people to do so).
- The one capacitor is clearly not enough, and some rearranging of things is needed in order to fit one more per side.
- The gate drive regulator only takes approximately 15 volts input. I think it should have the ability to run off a 12 volt battery, because 12v systems are still extremely common in small robots as well as in FIRST Robotics. I’m not discounting the possibility of eventually going after FIRST with this thing, but having a controller which has a very wide voltage input is just nice.
The latter problem took a while to think about and fix. There are very few commercial regulators which can stand the whole range of voltages I wanted – down to 7 or 8 volts (for the really, really flat 12v battery) and up to 55-60v for a 36v nominal system which can see some spikes and surges. The standard solution for me is to buck-regulate (down-convert) to the gate drive voltage (12-15v) and then linear regulate to logic levels (5V). However, this means pretty much the lowest voltage that RB can operate at – period – is about 12-13 volts. The buck regulator, a LM2594, just switches full-on during this condition, but it has a 1.1v drop from input to output. Add in another drop of the output diode of approximately 0.75v and I am wandering dangerously close to the 10v shutdown point of the IR21844 gate drivers. That means RB technically can’t run off anything lower than 4S lithium polymers (14.8v) safely, hence cutting off the “12v lead acid” market.
A more robust method is to buck down to 5 volts first, and then boost from 5v to the gate drive voltage. Many super LV-input controllers either do this or the janky thing of just running the gate drive on 5-7 volts. The downside is that it requires 2 converter chips – a high voltage input buck regulator and then a little boost. Neither are that cheap, especially HV input regulators. But, this method allows operation almost right down to 5 or 6 volts!
Wouldn’t it be nice if they made something which could either buck or boost and take the entire target voltage input range? It turns out (after hours of rummaging on Digi-key) that such devices do exist.
One example is the LT3971, a buck-or-boost converter designed for LED power supplies. It takes 4 to 60v input and gives you whatever voltage out that you select. I was really favoring this until I realized it doesn’t have internal switches – i.e. integrated FETs. I was going to have to build a motor controller on top of my motor controller (sup dawg) with tiny FETs in order to use it! This is basically a project entirely on its own.
Then I found the LT3433, which is a much simpler device with internal switches and needing just an inductor and a handful of passives. It could theoretically accommodate 4-60v also, but presumably due to the compromises of its design compared to the more freelance 3971, it really can only work down to about 8 volts in my application. Whatever, close enough. It was also kinda okay priced in large quantity – only $3.40 in 100 or more on Digikey. I’m certainly getting gouged for buying one or two for testing (what do you mean it costs 6 dollars)…
Doing the layout for this thing was an adventure. First, it needs so many passives. It has all kinds of fancy compensators and buttons and switches. Second, I use 1206 parts.
Stop laughing. I know it isn’t 1982.
I’m invested pretty heavily in 1206 parts, though, and find them convenient to work with because they are still quite large. Really I should be working in 0603s – about the biggest thing you find in modern electronics.
Here’s the first picture of RB2V2:
Doubled caps, check. Actually useful MIX enable header, check. The main power inputs had to move, so I’ll have to rebuild my test jig, but that’s a small potato.
I also added an external LED header. One of the ways people apparently mount these things is heat-shrinking the entire thing and gluing it to the robot. I’m mildly peeved, but even they deserve blinking lights, okay? The header is pretty much a tap from the LED circuit, so there’s no resistor required.
The LT3433 and its passives have not been routed yet. It took a few rounds of arranging before I settled on something which wasn’t utterly terrible.
Here’s the final routed layout of the new power regulator. I’m sure I could have placed some things more scrupulously. What I learned here is that I hate TSSOP packages. You can’t even thread a trace through their pins because they’re so damn close together. This also isn’t a 4 layer board, so it’s not like I can just escape onto another layer. That thermal pad in the middle is really, really in the way of everything.
There’s some parts of this board which I have doubts can actually handle the output of this chip (400mA-ish maximum), but I’m hopefully never going to run that level of current on the gate drive rail unless someone’s powering lights off the fan header or something.
I’ll let this design “bake” for a while, stare at it again, and send it off for fabrication. There will not be another alpha testing round, however. I’m going to get maybe 4 of these maximum and beat them up in various ways. The power lay out and most components are totally unchanged from the current testing round. If these boards prove to be legit, then I plan on launching a production run ASAP.