Beyond Unboxing: Jasontroller’s Commutation Frequency Limit

Hey, look at what I got in the mail!

It’s a new security system for MITERS?

Just kidding…

Nope, it’s actually a collection of Sensorless Jasontrollers! Shane and I went in for a quantity purchase of these 500W type Sensorless Jasontrollers (seller index if that auction disappears). I am now fairly convinced that this business is being run out of someone’s bedroom or kitchen, or at best a small office.

And the conclusion is that these things are huge. Dear god, they are enormous. It’s nearing the size of a real U.S. house brick. I guess the dimensions on the item page made it very clear that these were huge, but it was hard to appreciate until I was holding a pile of bricks in my arms. I had figured the 500W was just a limo version of the 350W – I guess it is, but it’s like a Hummer limo to a conventional Lincoln limo – it’s bigger in other dimensions too.

The purchase was for 2 each of the 24v, 36v, and 48v, 500W controllers. In the worst case, the idea was that we’d have a matched pair between us in case someone cooked up a crazy project that might involve 2wd.

Well, as far as I can tell, they are the same controller. That’s right, after examining the circuitry, I have come to the conclusion that the only thing which differentiates the 24, 36, and 48 volt controllers is the low voltage battery cutoff level. Yeah, they all have:

  • The same value power-resistor on the input to the BJT-regulated 15 volt gate drive rail! A BCW68HR type (or similar) transistor looks like it is being pressed into linear regulator service to provide the gate drive voltage, and the same HT7550 type 5 volt regulator that the 350W controller has. Normally, this “loading resistor” is different values for different voltage operation ranges.
  • The same value voltage dividers on the phase voltage sensing traces!
  • The same twinned 63v, 470uF bus capacitors (The 500 watt type has “supplementary buscap” on its long power traces using 63v, 220uF caps)
  • The same discrete gate driver circuit as the 350W using literally the same small BJT parts.
  • The same 60 or 75v power FETs, 12 of them. They are all STP75NF75 type equivalents…. except for the 36v, which uses 2SK4145 marked FETs. How much more ghetto do you get than using a part number that still starts with 2S? Not horrific, but definitely on the low end of the market spectrum for modern power semiconductors.

The real confirmation came when I ran the “24 volt” controller on 56 volts and it worked just fine – maybe not for very long, since that’s even above the nominal input voltage of a 48v system, but it ran Kitmotter just as easily as it would have on 24 volts. The LVC of the “24v” controller is set to be about 19 volts with hysteresis to 22 volts. The 36v controller is set for ~29 volts and ~32 volts. I didn’t test the 48v controller, but it’s probably around 40 volts. Either way, this might be the only thing that differentiates them from a power electronic perspective.

The switching time of the “24v” controller is above – not too spectacular, but given that the same dinky circuit is driving 2 FETs it’s also not surprising. What was surprising is that the gate drive voltage was only 10 volts. I felt that something wasn’t right – so I upped the voltage live to 36, and the gate drive shot up to 15 volts as I increased the bus voltage past 30. I am thinking that these controllers are 36v “native” designs, and work best at that voltage. At 24 volts the regulator is technically below its dropout voltage, and at 48v the parts may be under far more stress.

I touched a IRFB3207 FET to this for kicks, and the time-to-Miller increased to about 3.2 microseconds with a time-to-10 volts of nearly 7 microseconds. Ouch – without a faster gate drive circuit, I’m wondering how much I stand to gain from a FET-replacement Therapy session. This time, it is much harder to call just from looking. I’d actually have to break out the maths and calculate switching vs. conducting losses per cycle at various amperages to really make a decision.

I would say that while this purchase was enlightening, I’d much rather have bought a bucket of 350W controllers. They seem to have more “hack margin” and are a better value – the 500W variant, with its doubled FETs, is bigger, heavier, and not really that beneficial to upgrade without also modifying the gate drive circuitry.

commutation frequency limit

This is the more interesting part of the post, so naturally I leave it for last after a bunch of drooling. Last time, I noted that Melonscooter seemed a bit slower with this controller than with its Turnigy 100A HV, and I figured I might have been hitting the commutation frequency ceiling – in other words, the microcontroller can only drive the motor up to a certain speed when it can no longer catch up. My fears were confirmed when Shane attempt to run tinyKart using a hotrodded-with-IRFB3006-FETs-and-shunted-to-0.5mΩ Sensorless Jasontroller and almost roasted both motor and controller.

tinyKart uses roughly 190 rpm/V Turnigy SK3 type motors, so at the 38 volt nominal volts of its battery, it should be no-loading at 7200 RPM or so. It has been clocked at this speed on Kelly controllers, but on the Jasontroller, it topped out at 4,700 RPM. While we were scratching our heads wondering why, the motor started spewing out smoke. Luckily, it turned out to just be some burning insulation, and did not yet reach the catastrophic level.

Oscilloscope measurement revealed that above roughly 550 Hz (1.75 to 1.8 divisions on a 1ms per division timebase), the controller no longer increased in frequency but increased its PWM duty cycle anyway to follow the throttle input. This would result in a huge current spike in the motor as it tried to spin faster, but the controller’s output frequency dictated otherwise. The higher above the limit the motor tried to go, the more current would be drawn that was only heating up the windings. Based on how quickly the windings started overheating on the SK3 motor and how the controller wires were almost melting, it could have been pulling over 100 phase amps. This was not metered for certainty, however.

Not even hauling ass up an empty parking garage did that to the motors. That was straight up burning 3000+ watts for a few seconds.

In other news, 3000 watt shady eBay controller.

is melonscooter okay?

I had been riding around with a Wattmeter trying to keep track of my current draw and battery life. On average, my Wh/mi performance has decreased slightly – I’m now getting close to 45-46 watt hours per mile, when melonscooter used to be closer to be 40. However, the different is small enough such that I might not blame it all on the controller change – other facts such as the motor bearings getting very, very worn out, the tire pressure, and my giant drag-inducing cargo basket, could also come into play. However, it was most definitely slower – it felt closer to 20mph than its usual 25.

Melonscooter’s Turnigy C80/100 motor, with its nominal 130 rpm/V, should be pushing 4900 RPMs at 38 volts. Coincidentally, 4900 RPM on a 12-slot, 14-pole motor such as the C80/100 is 570 Hz.

In other words, Melonscooter’s maximum theoretical speed is juuuuuuust over the controller’s limit. So, it might well be not pulling considerable current at top speed while cruising, but it’s definitely being limited by the Jasontroller. During normal operation, I’m rarely going full throttle for a long period of time anyway, so my battery life would not be adversely affected – but it could certain explain the few extra Wh.

How about the converse operation? 550eHz on a generic 12-slot, 14-pole motor would be 23 mph using my 4.8:1 gearing and 8 inch tires. Not conclusively out of the band of uncertainty for a 25mph design speed, but I know when something feels slower!

So overall, I got really lucky. But to sum up,

do not operate the Shady eBay Sensorless eBike Controller over 550 electrical Hz. doing so results in very high motor phase current and potential destruction of both motor and controller.

For a controller that was designed for hub motor drives, 550hz is actually really fast – even a hub motor with 40 or 50 poles, common in the largest bicycle motors, is still under 150Hz[1].  For R/C motors, the biggest multiplier of electrical Hz is just plain speed – RC motors are all designed to spin quickly with large low-inductance windings, while hub motors tend to have many slots and poles for smooth low speed operation.

For now, I’m going to keep  melonscooter on the Sensorless Jasontroller, but I may start playing with lowering its gearing from the current 4.8:1 to something like 4:1, using a larger motor pulley. The reason? If my top speed is really just a motor speed limit, I can squeeze a little more vehicle speed out of it by changing my reduction ratio. With the Jasontroller still hacked to be about 1800W, I’d trade off some acceleration unless I chose to push it even further.

However, there is definitely a certain vehicle of mine which has a hub motor and would appreciate a Sensorless Jasontroller – but more on that tomorrow.

[1] (numbers used: 350 rpm on a 28″ bike wheel, yielding almost exactly 30mph, which is pretty speedy for a stock electric bicycle, and assuming the motor has 48 poles).

The Plight of Melonscooter and Pushing the Limits of the Sensorless Jasontroller

Poor Melonscooter.

About 2 weeks ago, a major storm system rolled through Boston as they tend to do during fall. With my new anti-wet-pants device, I was fearless in flying through the rain with melonscooter. However, what I didn’t keep in mind was that the anti-wet-pants device only deflected water from going upwards. With that path blocked, there was no place for it to go… except over the top of the motor and straight into the rain gutter that is the back of the frame. You know, where one of the battery packs was. I didn’t think  much of it – after all, water evaporates, right?. What I didn’t realize was just how much water got into the frame this way.

Shortly afterwards, I noticed Melonscooter regularly flaking out and and losing power. The final straw came when, on a full charge, it couldn’t even make it down the long stretch of Vassar Street that is my daily “commute”. The power would start out fine, but get progressively weaker until the power system went into undervoltage shutdown. This only happened at voltages under 30 volts. So, I immediately figured that the batteries were very, very unhappy. It must have been declining progressively before, but I only really noticed it when the effective range got under a mile or so.

The first sign that something was wrong was when I pressed on the clear plastic wrapping of the \m/etalpaxXx and saw air bubbles moving around. Water had totally infiltrated the rubber foam padding. So, I tore all of that off, and…


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

It’s like operating on a cancer patient only to discover more cancer. The packs have been through alot, but it looks like a week or two in contact with water finally did them in. Significant copper corrosion was visible and most of the cells had vented. The cells were so waterlogged that the blue ink stripe had run and bled through the paper. This pack was pretty much utterly trashed, with even the mighty Cell Log refusing to read it.

Melonscooter has 2 of these packs, left over from Fankart. The front battery was dirty, but otherwise had regular voltage levels on all cells.

Oops.

Shortly after the rain let up, I had actually added a “mud flap” in front of the rear wheel, under the stern deck, such that water was deflected back downwards and not onto the motor. Unfortunately by that time it was too late.

It was time to break out the box of nice things and start over. Melonscooter was built from found parts, and the batteries came from Fankart, with associated bullet connector incompatibility and a mix of Deans and everything. Starting from scratch was therefore a chance to clean up the electrical system significantly. I decided to build the new pack to the same capacity and voltage specs (12S4P), but make them mechanically one “brick” to save space in the frame.

Because the cells had leaked electrolyte and water had been sitting stagnant in the frame, the bottom was also covered in rust. I thoroughly cleaned it out with steel wool and various potentially carcinogenic cleaners, and gave the frame interior several layers of spray-on clear primer. This was when I discovered that the original black paint was just sprayed straight onto the metal – there was no sticking whatsoever, and I could blow huge chunks of paint off with a compressed air nozzle.

There was, however, one very important reason to consolidate the two batteries into one. When I did that, a Jasontroller fit perfectly into the leftover volume. I mean perfectly as in so close I had to make sure my wires exited the pack correctly. It’s like this was the application that Robot Jesus commanded me to use a Jasontroller for.

So I’m going to do exactly that. I had already modified this Jasontroller with IRFB3207 power FETs and shunted its current sense shunt to half its previous value, so part of my goal was to see how far I could push this thing in terms of wattage.

Okay, I know everyone has seen me make battery packs like this before. Sadly, even the biggest of my big heat shrink did not fit over 4 parallel cells. Not wanting to empty out two 3-liter bottles of disgusting cheap soda again, I elected to just Giant Kapton the pack with rubber foam padding.  The balance leads exit from the side of the battery, a lesson learned from LandSharkBearGrylls’ epic battery flameout. Here is the finished pack getting a first charge-balance.

Before I installed the Sensorless Jasontroller, I decided to give it a haircut. All the functions I really didn’t care about were desoldered or cut off, leaving only throttle, motor, and power.  This made for a much smaller bundle of wire to hide.

the jasontroller experiment

I had already dropped the shunt resistance of the controller from 4 milliohms to approximate 2 milliohms. The idea is to keep dropping it incrementally until I am satisfied or something detonates. First, though, I tested the controller as-is with the 2 milliohm shunt. If all goes right, I should see about 700 watts through the system, making a current draw at 40v of about 18 amps or so on the battery side, at full speed.

Full speed measurement is essential since these controllers limit average phase output current due to the arrangement of the shunt. Because of the properties of a buck converter, which all motor controllers are to some degree, phase current is multiplied at partial throttle – a 10A battery current at 25% throttle could mean 40 motor phase amps. Only at 100% PWM do the amps match. Incidentally, maximum “power” will occur at this point to if the load is sufficient – Melonscooter certainly does not pull 1000 watts just freely running on flat ground, so the max power point will still come at some point in the launch cycle.

The test took place on the small back street bordering MITERS, State Street, which is long enough to get up to full speed and still well-paved since this is only its second winter. It was also short enough that it forced me to slow down turn around at each end, which let me test how each level of hackery handles launching transients.

The instrumentation of choice is the Turnigy Power Meter, which keeps track of peak power, peak amps, minimum volts, running volts and amps, watt hours consumed, and all that nice stuff.

Result of test #1, 2.0 milliohms:

Hey, that’s like… double of 350!

I neglected to actually measure the temperature of the controller case, unfortunately, but nothing made unhappy noises or smelled bad. By the time I was able to open the controller up again, the FETs were cold.

Clearly it was time to turn it up (or…. down?). I added more solder globs to get the shunt resistance down to 1.5 milliohms, for an expected wattage of 930 or so.

While I neglected to take a picture of this run, the wattage attained was 895W, which is slightly lower than anticipated but likely within reason since my measurement resolution at such low ohms (with a crappy multimeter and power supply of dubious accuracy) is lacking.

I next tried the magic 1.0 milliohms (which is really more like 0.8 to 1.2 milliohms, I’m guessing). This should be a cool 4 times the power throughput of the stock controller. Beyond this, the theoretical power is going to rise asymptotically, so this was probably my last good data point:

A cool 1300 watts – close enough to 1400. I was definitely feeling some unhappiness during this run – the controller would some times cut out for a fraction of a second during the launch.

There was something else which concerned me enough after this run to address before continuing. After the first two, what was hot wasn’t the FETs, but the input capacitors. These things could see many amps of ripple current, especially if the battery input wires are long and skinny or cheap and Chinese. Or fucking both.

The stock buscaps on the Sensorless Jasontroller is two 470uF, 63 volt electrolytics, and they were hot. While they are rated to “105 degrees C”, hot capacitors is a sign that the ripple current is too high or beyond their rating. One way of reducing ripple current is to add more buscap.

I elected to use the cleared wire forest space to install 1000uF more capacitance in the form of a cap ripped from an old switching power supply. It could only fit laying down, so short and fat wire leads were used to connect it to the battery input terminal. I figure the resistance of this length of wire isn’t any worse than thin copper foil traces.

Here’s the fix. The cap itself is retained with a dab of Goop.

After this hack, I was fairly confident in moving forward with dropping the shunt to 0.5 milliohms – or thereabouts. I was really working on the edge of measurement accuracy here, so judging by the result I either didn’t come close to 0.5 milliohms or something else has become the limiting factor:

Still, holy crap. 1800 watts through this thing is about as much as I’m comfortable with for now. After all, I *did* want Melonscooter to work. The good news is that the additional input capacitance has eliminated the stuttering on launch I experienced before the addition, and acceleration is now smooth and constant from startup.

It was decided to lock in this shunt value (which looks be about 0.75 millohms, since given constant battery voltage, 1800w is about 5.25 times 350 watts, so the shunt should be about 4/5.25 milliohms.) An unknown amount of power is probably being lost to wiring resistance and trace resistance at this point, too, since the controller’s long power traces are probably contributing several mohms to the thing.

So there you have it. How long will the Jasontroller last at these power levels? My guess is probably until everything melts again in the spring. The ambient air temperature right now is around 40 degrees F (5 C), which is great if you’re a motor controller being overdriven 5 times, and will only get colder for several months. Once the ambient temps get up to, say, Singapore levels during summer, I expect to encounter thermal death. Melonscooter is very open-air (partially a curse, given the weather around here), so the controller gets plenty of air-over cooling, especially at top speed. I might have to add forced air cooling if I am to try and sustain these power levels.

Because the shunt is now like 50% solder, it probably has a nontrivial thermal resistivity coefficient. Ideally, I’d open it up and replace it with a known 0.75 milliohm shunt resistor. As the whole board heats up, the blob of solder’s resistivity will increase. To a degree, this probably a good thing.

Meanwhile, Melonscooter has successfully made the run back to west campus, full throttle all the way down Vassar Street. Can it do it again!?