What? Don't give me that look.
I'm not a very good multitasker, but if one of the tasks is watching a battery heat up a cup of water, I can do it. So here are some project updates and pictures in the meantime:
The 3ph Duo controller, the latest in my line of increasingly functional motor controllers, is finished. As in done, built, tested, working as planned. Here are a few pictures from the assembly, which, though not perfect, went pretty well:
The IXYS GWM 100-01X1, a wonderful 100V, "90A" three-phase MOSFET bridge package, was the key to this new controller, enabling two-channel, 1kW per channel BLDC control in a small form factor. Unfortunately, they only seem to be available from one place (Arrow) and only in the straight lead "-SL" version. This required some interesting bending, cutting, forcing, and soldering to get the chip to fit on my new circuit board:
It's not quite through-hole. Consider it...semi-surface mount. Same goes for the current sensors, which are designed to be through-hole but have their leads cut to length so they can sit flush with the sensor opposite the IXYS package. Not the cleanest assembly procedure ever, but it works. The IXYS package heat tab gets thermal pasted to a heat sink, and 5mm plastic stand-offs set the height correctly.
The 3ph Duo controller, the latest in my line of increasingly functional motor controllers, is finished. As in done, built, tested, working as planned. Here are a few pictures from the assembly, which, though not perfect, went pretty well:
The IXYS GWM 100-01X1, a wonderful 100V, "90A" three-phase MOSFET bridge package, was the key to this new controller, enabling two-channel, 1kW per channel BLDC control in a small form factor. Unfortunately, they only seem to be available from one place (Arrow) and only in the straight lead "-SL" version. This required some interesting bending, cutting, forcing, and soldering to get the chip to fit on my new circuit board:
All of the other IC components (HCPL-3120 optocoupled gate drivers, DCP021212 isolated high-side power supplies, LM2575 switching regulator, MC7805 linear regulator, OPA2340 R2R op-amps, and 74HC04 hex inverter) are now surface mount. The capacitors are still through-hole because I hate surface mount caps. But at least they are in the right place now.
The bus bar / heat sinks are gone and instead the power wires get soldered directly to surface-mount-style pads the board. This is something I saw in another ultra-thin controller. The signal connectors are still the same (Molex 0.1" R/A keyed).
These are all mostly form factor changes, but there were a few significant functional improvements as well. First, both motors now run on a single MSP430 microcontroller. Turns out this 16-bit, 16MHz chip can output enough PWMs on enough pins to pull this off. It processes twice the number of hall-effect interrupts as before, but some testing shows that even with two motors, the main loop execution breaks down at 1.6 million electrical RPM (228,000 mechanical RPM, or Mach 4.5, for the scooter). Basically, it makes the Arduino look silly.
Second, the current sensors now sense phase current, through a convoluted single-sensor synchronous measurement method that I wish I had never thought of. (It is a real pain to code, and is relatively noisy compared to sensing DC-link current, but at least it is a direct measure of actual motor current.) The current data looks a little noisy (about +/-4A noise on top of a 20A signal), so I've been working on software filtering mostly to clean it up even more for analysis, but the actual torque control feels smooth enough. The other data acquisition functions (all wireless) work great. Here's a cool test of the different motor constants measured cleanly at no-load:
This definitely shows the difference between the front motor (blue) with 60 windings per phase and the rear motor (green) with 90 windings per phase. Other interesting things I've done with the data acquisition: measured motor resistance (0.275-Ohm front, 0.355-Ohm rear) measured battery internal resistance (~0.075-Ohm for a 10S2P A123 26650 pack), measured top speed (~18mph), tested PI control of current (not very much benefit).
Oh, and most importantly, it fits in the deck:
The bus bar / heat sinks are gone and instead the power wires get soldered directly to surface-mount-style pads the board. This is something I saw in another ultra-thin controller. The signal connectors are still the same (Molex 0.1" R/A keyed).
These are all mostly form factor changes, but there were a few significant functional improvements as well. First, both motors now run on a single MSP430 microcontroller. Turns out this 16-bit, 16MHz chip can output enough PWMs on enough pins to pull this off. It processes twice the number of hall-effect interrupts as before, but some testing shows that even with two motors, the main loop execution breaks down at 1.6 million electrical RPM (228,000 mechanical RPM, or Mach 4.5, for the scooter). Basically, it makes the Arduino look silly.
Second, the current sensors now sense phase current, through a convoluted single-sensor synchronous measurement method that I wish I had never thought of. (It is a real pain to code, and is relatively noisy compared to sensing DC-link current, but at least it is a direct measure of actual motor current.) The current data looks a little noisy (about +/-4A noise on top of a 20A signal), so I've been working on software filtering mostly to clean it up even more for analysis, but the actual torque control feels smooth enough. The other data acquisition functions (all wireless) work great. Here's a cool test of the different motor constants measured cleanly at no-load:
This definitely shows the difference between the front motor (blue) with 60 windings per phase and the rear motor (green) with 90 windings per phase. Other interesting things I've done with the data acquisition: measured motor resistance (0.275-Ohm front, 0.355-Ohm rear) measured battery internal resistance (~0.075-Ohm for a 10S2P A123 26650 pack), measured top speed (~18mph), tested PI control of current (not very much benefit).
Oh, and most importantly, it fits in the deck:
So there. Everyone who asked why the original version was so big can be quiet now. I will be testing and writing this controller up very thoroughly, since it's in a state now to which few of my projects ever get. I'm not sure how useful it will be, since there is still a lot of "custom" in it, especially on the microcontroller side, but hopefully people find the bits and pieces useful at least. Somebody can design an Arduino adaptor for the power stage... For now, here is a link to the schematic, board files, source code, and other random bits and pieces for anyone who is interested.
Next up, the Epic Axial Motor. This is the beast. Although just 4" wide and 9" diameter, it will produce multiple tens of kW. I'd estimate it at around one horsepower per pound, minimum. Well, the simulation says so anyway.
Next up, the Epic Axial Motor. This is the beast. Although just 4" wide and 9" diameter, it will produce multiple tens of kW. I'd estimate it at around one horsepower per pound, minimum. Well, the simulation says so anyway.
Flux.
But I don't know, I don't really trust simulations yet. Although it did very well for the scooter motors. The goal here is to build the motor in stages, testing along the way to double-check or refine the simulation. The axial-flux design with two rotors and separable tapered roller bearings lends itself to "easy" assembly and disassembly for prototyping. "Easy" if you can safely accommodate for the 500 lbs or so of finger-nomming axial force. So anyway it's time to build.
Yes, I actually went into the machine shop and fabricated a metal part. Aren't you proud of me? I've been doing EE-type projects for so long that I forgot what it's like to go home with aluminum shaving in my hair. What's that? There are waterjet-cut parts in the background? Nonsense. I made those by hand. Okay fine, I got those from Big Blue Saw, which now has a low-taper waterjet! As for the rotor, Mike "Master of the EZ-Trak" Nawrot is going to produce the spinning magnets of doom. (It would take me a month...)
After that, it's on to winding a test set of stator segments. And by winding, I really mean folding, or something, since we are using concentric layers of 15-mil copper shim stock for massive current-carrying capability. I'm actually fairly excited to see how this works. It could have significant advantages over large-gauge magnet wire...or it could be a total failure. We'll see.
Next week = SMMA Fall Technical Conference in Chicago where I get to meet the pros.
After that, it's on to winding a test set of stator segments. And by winding, I really mean folding, or something, since we are using concentric layers of 15-mil copper shim stock for massive current-carrying capability. I'm actually fairly excited to see how this works. It could have significant advantages over large-gauge magnet wire...or it could be a total failure. We'll see.
Next week = SMMA Fall Technical Conference in Chicago where I get to meet the pros.