It’s time for SCIENCE!
As promised in my last post about the Jasontroller’s seemingly language-barrier-impeded sentience (it is screaming to be heard, but we (mostly) cannot hear its 16kHz switching frequency?), I have a pile of different Chinese electric bike controllers purchased from several eBay sellers. They were pretty much all purchased about a month or more ago with the goal of eventually exploring this functionality. This perhaps betrays the planning of this post for a long time.
Update: Check out the “Mini Jasontroller” from eLifeBike!
I’m generally more willing to accept the sketchiness of generic Chinese products than most people. There really is no one company, dealer, seller, or support website for dealing with these controllers. They’re made to fit one or several models of electric bikes and mopeds, one-for-one, no questions asked or answered. All of the information on them on the Internet, in the Western electric vehicle hacker world, is pretty much in the form of blog posts, forums, and wikis. This isn’t something I expect to change any time soon, because there are about as many variants of the controllers as models of derpy electric mopeds. Plenty of companies exist that stand by their products and offer support and usage advice, and they are pretty much the go-to if you need something that will undoubtedly work (though this assumption can be a bit challenging at times…). But half the fun of projects is the hackery, in my opinion, and it never hurts to expand your resource horizon.
So, this post is not intended as a definitive reference on Chinese e-bike controllers. I think I could test a different one every day for more than a year, guaranteed, and still not be through with all the variants. Some of this info might become totally irrelevant if the company turns over or the seller on eBay disappears. The goal is both more immediate: these are specifications that are known to be good RIGHT NOW, but may not be this time of next year, so buy it now; and more general: to elucidate some of the Chinese controller marketing words such that everyone can look out for future variants and understand what goes inside of one, and why they are not bad, per se (You can’t sell millions of abad thing that people have to use day to day…. or can you?!), but that we, weird brushless scooter and go-kart and e-bike guys, use these devices generally far out of their original design specification.
Which, given how much the same commercial, street-legal electric bikes and things are, is likelyvery very narrow. A recurring trend of the lineup is that they pretty much use the same components in various permutations – things which have stood the test of time and probably stochastic layout design selection. I now present…
Here’s the list of criteria that I kept in mind as I binged controllers on eBay some time in October:
- The cost had to be less than, or around $30 USD with free shipping or $40USD with non-free shipping
- Something had to indicate to me that the controller was sensorless or was dual-mode sensored and sensorless. (More on Chinese motor controller vocabulary later)
…that’s it. Pretty simple, huh? As of around early October, there were 8 different candidates.
(I included the Jasontroller as #8 because I already have a few and they do fall into the requirements). Otherwise, the exact controllers purchased were:
- 36V 350W brushless motor controller for Electric bike bicycle & scooter (voguelink)
- 48V 350W Brushless Electric Bike Motor Speed Controller (marcmart.usa)
- 48V 350W brushless motor controller for Electric bicycle & scooter (travelinwind)
- 48V 350W Brushless Speed Controller for Electric Scooter/ E-Bike (clickgolds-new, who wins the Most Sketch-Ass Username award)
- 48V 350W brushless motor controller for Electric bicycle & scooter (digital2brother)
- 48V 350W Brushless Speed Controller for Electric Bikes (virtualvillage_us)
- 24V 250W Brushless Control Controller e-bike Scooter (super.store.usa)
I’m amused at how many of these places are just variety stores which sell tons of otherwise fairly ordinary export market products.
Again, these are by no means all the controllers out there that exist. I might have missed one, or just gotten variant of another (e.g. a controller marketed as 36v and 48v separately). This info is completely subject to change, but those link titles ought to give you an idea of what to search for.
I set up the Rig of Science again with my sensor-endowed 63xx class motor, this time with more instrumentation. The goal was to record several upper and lower bounds of the controller’s capability, so all of these pretty much were running at once.
Here’s the basic procedure I used.
- The controller under test was taken apart for a interior shot. I recorded the CPU, logic power supply, and model of FETs used. I also did a bit of searching on the sketchy Chinese controller Internets to see if the manufacturer had a webpage.
- The controller was hooked up according to its wiring diagram. I tried to only hook up throttle, power, and motor and leave no other features activated (e.g. cruise control, low/high speed ranges)
- The controller, if it allowed, was run sensorlessly. The lowest working voltage before low-voltage cutoff engaged was recorded.
- Next, I gunned it as full throttle as possible. The oscilloscope trace monitored the line-to-line drive voltage waveform. I used this info to capture the highest electrical speed the motor could be run in sensorless mode. The cutoff condition was either when the controller lost sync completely and stopped, or the drive waveform continued to increase in voltage without increasing in frequency, indicating the controller is on the verge of no longer keeping up. Sensorless requires more processing power than just reading a Hall state table, so I expected these to all be pretty slow.
- Next, I tried wiring the Hall sensors up according to the manual/sticker/wire label, but did not explicitly use any “train” or “learn” function. The motor was run sensorlessly several times using different Hall sensor orders to test if the controller was automatically adaptive (i.e. no discrete learn procedure).
- If this was not the case, then I tried run testing the self-learn function, if applicable, on several different Hall orders to make sure they are repeatable. This took the most time, as several of these controllers have subtly different procedures.
- I noted under what conditions the controller switched in and out of sensor/sensorless mode, if applicable. There was alot of “spinning motor grabbing” involved, so plenty of shop towel clutch material was used for this case.
- In the same grabby test, I eased up the throttle and grabbed the motor as hard as I can before stalling it out. This was to test how many amps the current limit circuit inherent to these controllers was set to. Because the multimeter is not a true-RMS meter, the actual current (square-wave like in profile) is going to be a bit higher than the value it thinks (assuming a sinewave-like profile). However, given that most people are going to measure this current with a generic current meter anyway, I used this value for the summary.
- I checked for anyreverse switches or something to indicate to me that the controller was meant for driving something with a reverse gear. Very little such luck…
- Finally, with the sensors adjusted to good positions for non-automatic-switchover controllers, I tested how fast the controller could run the motor on sensored mode. I first tried to get the controller to get to 100% duty cycle, then raised the voltage volt-by-volt until the controller began shuddering and being unstable, shut down, or lost track of the motor. On one of these, I actually managed to peg out the power supply before hitting its limit!
That’s alot of science. It took about 5 or 6 hours to get all of this down.
Here’s an example of what a line-to-line drive waveform looks like. To capture the highest eRPM speeds, I gunned the throttle right up to where the controller cut out or stopped working, then hit STOP on the scope roll and then used the data cursors. It usually took a few tries to time it correctly..
Some of the controllers were clearly designed for the prior mentioned very-limited design space of e-bikes. They just could not handle the low inductance and resistance windings of the typical R/C motor. I had to break out my slow SK3 63-74 (145 rpm/v and much higher L than the C6364 type I used initially) to get a reliable start and low-speed run out of some, and one of them (above) just would not run anything besides Kitmotter. KM has many more turns and much higher ohms than any of the outrunners, so it’s not surprising in the least.
I would assume that controllers optimized for e-bikes are likely to have some kind of zero or low-speed stall protection (so you’re not just sitting there turning batteries into heat), and this was clearly the case with the more… reluctant… ones.
By the end of the SCIENCEing, the shop was starting to become a mess of probes, wires, and alligator clips.
I arranged the results in a really wide Excel spreadsheet. This will be linked in my “References” section and might get periodically updated when something on eBay catches my eye.
I’ve officially decided to give this Clowder of Chinese Controllers a name: Wangtrollers! Through much discussion and heated debate in our focus committee, we arrived upon this descriptive and symbolic moniker for all that is sketchy Chinese and motor-controlling. By this, of course, I mean I sort of spontaneously thought it sounded good. I was surely not about to give all of them short white dude names… Jason and Kelly are enough in that department.
Anyways, a few comments and clarifications on those results.
- Yes!! I knew that weird adaptive-like behavior I saw on the Jasontrollers (bobzhangxu) was real. I tested this further and confirmed that it can correct itself for Hall sensor reversals i.e. swaps, but changing the sensor timing from a good location will cause it to continue getting stuck in sensored mode. This works right up to where the timing is so off that the motor does not move any more, upon which it will switch to sensorless and “forget” the last combination.
- The top speeds are definitely approximate. I think I’m within +/- 100 eRPM on all of them, but it could depend on the voltage, the motor characteristics, and how the controller interacts with the power supply at that time.
- “Sensorless XOR Sensored mode” means that if there are sensors, the controller will default to using them (or vice versa) and will not jump between modes. This is in contrast to the Jasontroller behavior which seems to just bail for sensorless mode (as discussed in my previous post) after the motor gets moving at a slow speed. At least one other controller demonstrated automatic switching that was current-dependent.
- All of these seem to run the same basic hardware, but the permutations of voltages, speeds, currents, board layouts, specific components, etc. are so different! I’m fairly convinced that Stochastic Product Design is a legitimate approach used in many Chinese electromechanical wares… Design 100 things with small changes to everything in between, and there will definitely be ones that work and ones that don’t (for various definitions of work… if my projects are any indication). Monte Carlo’ing the design process, if you may phrase it such.
Now, onto individual design critiques.
bobzhangxu (the “Jasontroller”)
Alright, I’ll admit that this is my favorite just out of previous experience in use and modding. But, the tests revealed that it’s probably the most capable and useful of the bunch. The automatic sensor adaptation was a surprise when I found it was real (it has now been confirmed real in vehicle usage by members of the Electric Vehicle Team at MIT). I also like the fact that it runs primarily in sensorless mode – the sensors are only frosting on the near-zero-speed cake. It can also maintain sensorless commutation down to a lower speed (unrecorded, sadly) than the other controllers managed.
The architecture is otherwise not very impressive. It uses the generic e-bike controller combo of really shitty 8-10mohm FETs, a bootstrap-based discrete gate drive circuit, and a single low-side resistive shunt for current limiting. The logic power is provided by a “Kellyrigged” linear regulator arrangement: Take a big power resistor and drop a linear regulator after it, and calculate the value of the resistor to drop enough voltage to keep the linear reg in its safe voltage range at your desired input voltage! I named this technique after Kelly controllers, but in reality none of their controllers do this…
Verdict: Much approval. The seller is easy to talk down in order to save on shipping for quantity orders, otherwise at $44 net cost it’s a bit pricy for this market segment.
This thing was quite a surprise to me, because it looked so different from anything else. A long time was spent staring at the 6 random little capacitors where the LM317 regulator normally lives in such a device. It was determined to be a charge pump circuit for the 3 half-bridge gate drivers.
Next, all the power traces and components are up front. I’ll take a sec to praise this arrangement: it truly IS better. High-current loops are shorter, the buscaps are closer to the place they’re needed. Only downside? Hell if I could ever get into that shunt to hack it for more current. It’s buried under layers of wires and capacitors.
However, it does do the thing I was seeking – Hall sensor combo learning (though manual only). It does not select the commutation method on the fly. If there are sensors, it will run always sensored. Additionally, the harder to hack layout means I’m not as into this design, but it did have the highest current limit of the bunch anyway, so perhaps it is directly useful.
Verdict: Meh, but worth it just to buy from a guy with such a sketchball username.
A very generic layout and also had a promising automatic sensored-mode switchover when the motor was loaded down, but it has a zero speed lockout! This thing does not start up any motor… not even Kitmotter reliably (as shown a few pics above). However, even the slightest bump will cause it to apply torque, and keep applying it down to a very low speed running in sensored mode. This is a controller designed in anticipation of people trying to do standing burnouts on cheesy electric mopeds. But damn it’s cheap. $23 with free shipping. How does this even exist?
Furthermore, I could not trip it up in sensored mode. I hit the limit of the power supply – 60 volts – and the SK3 motor sounded like it was about to grenade, but the commutation did not display signs of instability. The top speed is therefore in excess of 60,000 eRPM. Not sure by how much, but I now know this thing can somehow take 60 volts.
It would be up there with my favorites, if only it didn’t have that annoying zero-speed lockout.
Verdict: Lockout makes it fail.
This was one of the controllers that I thought was potentially sensorless, but unfortunately it turned out to be a let-down there. It does have a manually activated “self-learn” mode, but I could not get it to work reliably with an outrunner (and didn’t have a sensored hub to test with). It would twitch, try to run the motor, and then freak out; I suspect this may be due to some kind of fast overcurrent cutoff protection thinking it’s a motor short or something. Overall, kind of boring and middle of the road.
Verdict: Not really worthwhile.
Probably the derpiest controller I’ve ever seen, but I guess for its intended use it works just damn fine. I swear this thing runs off a Chinese knockoff of a BASIC Stamp. It could only do sensored, did not have a learn/train option (manual combo finding heuristic was needed), and even in sensored mode it topped out at around 18,000 eRPM before cutting out. It’s not that cheap even (relatively, to its study group anyway).
Another one of those eBay usernames designed to confuse you into thinking they’re actually U.S. based. Generic architecture and parts for this one, but it was the only other one on the list which could run as low as 24v nominal. Doesn’t seem to have any special anti-burnout protections, so it’s totally vanilla. Otherwise, calibration procedure for Halls resemble the others, and it’s reasonably cheap at $30 shipped.
Verdict: Middle of the road. Better options exist.
voguelink & travelinwind
I was surprised one day when I received 2 packages from the same address in China. As it turns out, these two sellers are the same guy, so I accidentally bought a matched pair of controllers – despite being advertised as one being 36v and the other 48v, they’re the same thing.
Fortunately, it’s a nice thing! These are the only other ones to have auto Hall sensor learning: run the motor sensorlessly in the direction you choose, then plug in the Halls and run the motor again. By forcing it to run sensorless, it apparently clears any combos that might have been stored. It’s the only one that explicitly advertises this feature on the back sticker. No automatic mode-switching, though. Once I got it hooked on the SK3’s sensors, I could move them around at will and confuse it. Only by running the motor sensorlessly could I “retrain” the controller.
It’s on the cheap side, too – at $26 with free shipping, a better deal than the Jasontroller if only auto Hall sensor adjustment is desired as a feature. Otherwise, nothing too extraordinary..
Verdict: Viable alternative to the stock Jasontroller if you don’t mind setting a good sensor timing spot.
Now that’s done with, let’s move onto the knowledge base and lessons learned.
motor controller words
All of these controllers have something in common: There’s no English anywhere on them that is remotely useful. The eBay pages are also very marginally translated, and you’d be damn lucky if the seller even understand your question to send a reply back in Simplified Chinese.
Here’s some of the most common words on these controllers that might help you assess the usability of future eBay listings and sketchy Paypal cart websites, as well as read the “manual” for the controllers.
- 无刷: “Brushless”, as in 无刷电机 “brushless motor” or 无刷马达, also “brushless motor” but a phonetic translation of motor. Compare 有刷, which is a back formed term for “brushed”, as in 有刷电机 “brushed motor” or the more specific “有刷直流电机”, brushed DC motor.
- 控制器: “Controller”, also called 调速器, lit. “change speed device”.
- 霍尔: “Hall”. The phrase to look for is “无霍尔”, meaning sensorless. Combined with 线 “line/cable/wire”, 霍尔线 is the Hall sensor cable.
- 相: In this context, “phase”. Common labels for the phase wire diagrams include “机相” meaning (motor) phase and “相线” meaning phase wire/lead.
- 自学习: One of the ways that the Hall sensor order learning is advertised; it literally does mean “self study”, and is a phrase just as home in an academic context.
- 自识别: Also 自动识别, “automatically distinguish”. Another indication that the controller has Hall self-learning abilities.
- 转把: Probably most commonly found in the instructions, this is referring to the throttle (lit. “turn handle”).
- 自动巡航: Cruise control (lit. “automatic cruising”), in case you don’t know what the blue wire does.
This post is up there with the longest posts on my site ever, and I hope it contains enough useful information to let people judge whether or not to run their device from a Wangtroller. These are not optimal devices for most applications by far. Their components are cheap and often run at the edge of ratings. However, they are a major leap up from running R/C type controllers which do not have any kind of protection or useful vehicle-specific features, like the constant-current mode (Guess where I got the inspiration from for RageBridge‘s implementation of that?) and more robust startup. Oh, they also take straight analog signals – so there’s no “servo tester” stage in between required.
I believe that the discovery and addition of the Hall sensor auto-calibration to the features list makes these controllers a totally reasonable alternative to the small Kelly KBS line. You sort of lose on some configurability and do not have true current control (torque control), but the price tag is much lower along with it. These controllers are also more readily hackable (unlikely the Kellys which are generally filled with thermoset goo) for the inquisitive.
I’m left thinking that there really should be an attempt to catalog the information on these controllers. This site is probably not the place to do it – maybe an established EV community like the Sphere with an already-established Wiki. This might also be a total Sisyphean effort given how many variants there are.
In the mean time, I have an entire nest of Wangtrollers. I think they might be cross-breeding… In fact, that must be why there are so many variants in the wild. Anyone want to catch me some juvenile examples?