This project was released in endless-sphere forum, and it has quite some history, and previous hackaday coverage.
Here is the forum thread where the discussion takes place: https://endless-sphere.com/forums/viewtopic.php?f=30&t=89056&start=250#p1458465
What is it?
It is a 3 phase motor controller. It takes a DC voltage and using PWM generates 3 sinewaves for driving a motor, conceptually similar to those small ESC for drones and bikes. The difference is that this particular setup can safely work with a 400V battery, flowing 300A all year long.
Our work has been focused in the control board, which is capable of driving way more than 400V and way more than 300A, those are defined by the powerstage (IGBTs, DC Link Capacitor, etc)
We chose EconoDual IGBT modules because its a popular package, they come in many voltage and current levels (from 600V to 1700V, and from 100A to 800A), from many brands, in both IGBT and SiC technology and with available off the shelf gate drivers matched for them.
Because there is no other open platform capable of driving a 100kW-class motor. All you can get are proprietary controllers with high markups and no way to tweak them to your needs, and more importantly, you don't get to see the inner workings to evaluate if the quality is up to your standards, both in software and hardware.
Also, it is made possible thanks to the VESC base platform growing steadily to the point we can help to take it for the first time to the next level, from a hobby tool to a full EV-capable piece of technology.
How it works?
As we said, long story short, it takes your battery voltage (HighVoltageDC) and using PWM creates 3 sinewaves spread 120° for driving a motor. Actually, it uses Space Vector Modulation (SVM), which reduces the amount of switching required and makes it possible that the sinewaves peak to peak voltage is 15% higher than the battery voltage, thats 15% more power right there.
Despite VESC supports driving motors in both trapezoidal and Field Oriented Control control modes, our boards only work in FOC. Its just better suited for the application.
FOC is about aligning your sinewaves with the actual field inside the motor, and controlling the machine with a vector signal composed on a torque-generating current in quadrature with the flux (Iq), and a flux-generating current (Id). There are lots of good resources about this topic, and you can see the actual lines of code performing the transformations here.
Along with a control loop, you need a user interface to configure the motor parameters, and it will be your tool for debugging problems. Hats off to Benjamin's VESC Tool:
Now that you have some software in place, a high power application will need some very particular hardware:
Here is our take at this
- Mechanically matched to EconoDual/17mm IGBT modules. More compact, fewer assembly steps, less wiring and crimping, no adapter parts.
- Isolated HVDC and phase voltage monitoring integrated on board, direct connection to the IGBTs for cleaner signal and faster assembly.
- DC Link Capacitor discharge resistor on board. Safety requirement, discharges it when board is not powered.
- RF connectors to measure analog signals. This provides simulation-like signal quality, extremely good for development.
- Individual IGBT fault monitoring. You can tell which IGBT faulted.
- Individual fault leds for overvoltage, overcurrent and overtemperature.
- Individual IGBT temperature monitoring.
- A Lattice iCE40 FPGA, using an open source toolchain for sinthesis and HDL development.
- The FPGA is continuously monitoring all fault inputs. If any fault is asserted, all PWM activity is shut down.
- FPGA supervises the PWM generated by the MCU. Shuts down PWM if a shoot-through...