Axiom: 100+kW Motor Controller

High Power, High Performance 400V 300A 100+kW Motor Controller fully compatible with VESC

Public Chat
Similar projects worth following
For the first time in history, Axiom provides clear, wide open access to the precise control of large 3 phase motors. And it couldn't be more timely, billions are spent accelerating the incoming era of electric vehicles, with massive EV fleet growth, and so many small and big companies competing to have a dominating role in the future of transportation.

It is put together by Marcos -MIT TR35-, endless-sphere forum legend HighHopes, 1/4 mile EV WORLD RECORD HOLDER Arlo1, highest-engineering-grades Maxi, and using, improving and accelerating the cult-following work of Benjamin Vedder with a stream of new firmware code to make humanity better at spinning motors!

It’s not only a feature rich high performance controller, it also comes in a power dense package. The best part of course is the hardware and firmware are open source! Making the schematic, BOM, and code available for everyone to experiment and improve, its the ideal platform for vehicles, research and industries

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:

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 we want to be part of the boldest, most spectacular builds, 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.

The new wave of EV companies have been tied to proprietary motor drives, we provide our customers with a chance to deeply integrate the motor drive into their systems, offering a unique chance of verticalization within their product. This saves costs, and improves the quality and integration of their vehicles.

Opening up Axiom also showcases the quality of our work and makes our team a desirable contractor, there are not many people in the world with the set of skills and knowledge to produce a high performance drive unit.

Axiom is also made possible thanks to the VESC base platform growing steadily to the point we can 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 hence the switching losses.

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 and getting to know your machine. 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...
Read more »

Axiom schematic top level Rev0.png

Axiom Rev0 schematic top level

Portable Network Graphics (PNG) - 3.76 MB - 04/29/2019 at 11:41



Axiom Rev0 Control Board Pinout

Adobe Portable Document Format - 6.05 MB - 04/22/2019 at 23:40


  • 3 × FF600R07ME4B11BOSA1 650V 600A IGBT module
  • 1 × PD-Axiom-Rev0 Powerdesigns Motor Control Board, Compatible with VESC platform
  • 3 × 2SP0115T2A0-06 Gate driver for FF600R07ME4B11BOSA1
  • 3 × ISB-425-A Busbar Hall Current Sensor
  • 1 × PD-C600VDC-650UF10A Powerdesigns DC Link Capacitor, 600Vdc 650uF +-10%

  • Powerstage validation

    Marcos Chaparro5 days ago 4 comments

    Double pulse testing

    Here is some test results we had a while ago when doing double pulse tests to validate the powerstage and our custom DC Link. You can't skip this if you are making a motor controller.

    First of all, we coded some handy functions and commands to perform a double pulse test from the VESC Tool GUI.

    This way from the command line I can easily and accurately set the timing with the controller fully assembled. Otherwise you would need a signal generator, remove the control board, prepare the wiring to the gates, and change the wiring to test each of the 6 switches.

    A test setup is something like this:
    You want to observe the switching characteristics of the drive at peak current load. To do that you keep the top IGBT in OFF state (Our powerstage will keep the top gate at -9Vdc)
    * Turn ON the bottom switch and let the current through the inductor increase to the desired test current (dwell time).
    * Turn OFF the switch and observe the voltage overshoot
    * Wait a minimum amount of time and turn ON the switch (rated current is still flowing through the body diode of the TOP switch)

    We have some handy support math to calculate the construction of the inductor, the required inductance and time required to reach a set current.

    A test bench looks something like this:

    Note that voltages are measured with differential probes to avoid damaging the oscilloscope, and measurement happens directly at the IGBT terminals

    On the top left you can see the inductor for the test. We communicate to Axiom through the isolated CANbus interface so the laptop is isolated from the device under test.

    Double pulse test result at 375V 450A:

    And zoomed in:

    Yellow trace is Collector voltage (to measure overshoot), green trace is phase current, orange trace is TOP IGBT gate (to observe miller effect).

    The overshoot is caused by the inductance of the path between the silicon switch and the DC Link capacitor. This includes the internal IGBT module wiring, the connection to the DC Link and the internal DC Link ESL. We tested other DC Link and ours performed better during this testing. Overshoot can change wildly if your DC Link is not carefully designed; we have a 100V overshoot, imagine how bad can it become if the DC Link ESL is left unchecked.

    Overshoot must stay below the IGBT rated voltage, which is 650Vdc minus some buffer %. If we were operating at higher DC bus voltages we can either test snubbers, slow down the turn OFF time or just use a 1200V rated IGBT.

    Miller capacitance between gate and collector of the TOP switch will try to turn ON that switch when its supposed to be off. We check that the gate sits at -9Vdc and miller can only pull it up to -7Vdc, thats good. You get a shoot through + fire if Miller is able to turn ON the TOP switch.

    Something really good about double pulse test is that you can measure the switching losses, and we have access to a very good rogowski current probe but its only capable of measuring 300A and we are more interested into the 500A to 800A range. We did measure emitter current but the sensor can't properly track the slewrate. Maybe next time.

    Double pulse testing is something *every* controller design should have endured, you don't know how the powerstage works until you observe it.

  • Let's talk about the FPGA...

    Marcos Chaparro06/14/2019 at 11:29 0 comments

    In the early days...

    Axiom originally started with discrete logic that was in charge of 2 specific tasks:

    • Shoot-through elimination
    • Fault latching

    Avoiding shoot-through

    A shoot through happens when both TOP and BOTTOM switches in a leg turn ON at the same time, creating a dead short across the 400Vdc input.

    If that would happen and no protections were in place, your vehicle would become a ball of fire. We want to make sure a '1' is never commanded on both top and bottom switches at the same time, even in case of a firmware bug or microcontroller damage.

    This was our hard solution to a hard problem:

    Input pulldowns make sure the signals stay in '0' while the microcontroller is under reset and during GPIO initialization. If you follow the logic, it will set both top and bottom to '0' when both inputs are '1'.

    This takes 3 logic ICs (U5, U6 and U7) plus bypass capacitors, but it had the extra benefit of level shifting the signals from 3.3V to 5V for higher noise immunity.

    Latching faults

    When a fault happens, we don't want to rely on the firmware to keep things safe. In this context a fault can mean 2000+ Amps flowing close to the microcontroller with very high, and possibly damaging levels of EMI.

    With that in mind, our analog signal chain has comparators that will trip a fault when a voltage, current or temperature signal goes beyond design limits, like this example: (Temperature signal path is simpler than voltage and current)

    The problem here is that the comparator will only assert a fault while the fault is present and then return to the normal state. With the temperature it can be a few seconds, but in case of voltage and current, those are likely microseconds and we can't afford to miss that signal.

    Enter discrete fault latching:

    This bit of schematic was taken from an ancient forum post of our power electronics guru, it latches a fault until the CLR_OC_Fault is cleared, and we had a latch circuit for current and another for voltage because we need to know why it faulted in the first place. We leaved overtemperature unlatched because it was quite a lot of parts, this discrete solution already takes 7 ICs.

    Let's talk about the FPGA...

    Despite there are many FPGA manufacturers out there, there is one that is special.

    They all require you to install gigabytes worth of software just to create the simplest logic, but in case of the ice40 family, there is a interesting open source effort to reverse engineer their logic and create an open source toolchain, just like gcc, but for FPGA's. Its called Project Icestorm.

    And now that we have a backend, 2 other projects emerged to make it more user friendly:

    Icestudio allows you to easily draw your logic circuit, like their example from their frontpage:

    Yes, its that easy and the whole software package only takes a few megabytes! And it won't bother you with licenses, activation, sign ups, ads, newsletters.

    I chose the ice40up5k, its not automotive grade but its low cost, and at 5k logic cells it has potential to fit some promising logic. I ran the awesome risc-v core in our Axiom board and developed delta sigma demodulation on this fpga, its good stuff.

    Shoot through elimination, FPGA-style

    Remember the discrete implementation? Axiom board recreates that hardware inside the FPGA

    And we can easily simulate the behavior by just typing "apio sim", icestudio creates a testbench template for you.


    In a similar way, we can implement a latch circuit like this

    Note that now we do have a temperature fault latch, this time for free.

    With apio we can again simulate the behavior of the block:

    And because I have the ice40up5k evaluation board, I can actually measure the...

    Read more »

  • Highest power VESC bike?

    Marcos Chaparro06/13/2019 at 22:30 2 comments

    Laying rubber at 700Amps

    Meet Hackey's team using an early version of Axiom to have some fun! As much as we love emissions-free vehicles, this ain't one, but its certainly the hackiest build out there!

    Now lets do a quick recap:

    As you may notice in the video, they built an old version of Axiom, the one we released here. Main differences with the latest and greatest revision competing for the Hackaday Prize are these:

    • Discrete fault protection logic was upgraded to an FPGA (with an open source toolchain!)
    • Improved voltage sensing
    • Greatly improved packaging, wiring and ease of assembly
    • More safety features

    They use the same 650V 600A Infineon EconoDual modules we showcase in our project description. If you take a look at the datasheet they are rated for continuous 600Amps DC (no switching!) at 60°C, and 700Adc at 25°C.

    The user interface of most FOC controllers sets peak current. So when you set 700A, its actually 700Apk, (496Arms). Its crazy current, but still manageable for short periods.

    A fun thing to note is that they are using only a 70V battery and getting 52kW of power, but their IGBTs are perfectly capable of going all the way up to 400Vdc, so it could be way past 200kW!  Yes, thats 270hp!

    In a bike!

    Granted, a very special battery would be required, safety and turn-off overshoot needs to be carefully handled (a cool log about this critical part will be posted soon).


    ImageLiquid cooling!
    ImageI actually don't know how that coldplate was made, pretty sure it wasn't CNC machined.

    This isn't the highest power Axiom out there, but its a cool one that sorted out a ton of challenges on a very short budget. Its also one of the few not under an NDA!

    We are hoping to see them tidying up the wiring and securing down everything to make it safer, and its cool to see that the design still works even with long wiring and the old 2-board approach.

    Axiom is literally empowering people from all around the world to achieve a 100kW-class motor drives, because we need and we want electric vehicles around us.

    Stay tuned!

  • Waterproofing

    Marcos Chaparro06/05/2019 at 23:36 0 comments

    Going for IP67

    Something I learned through the path of enclosure design after our last mentor session with Eric Weinhoffer, is the nitty gritty of enclosure sealing.

    So our target customer needs a water resistant motor drive, and to be on the safe side we will spec it for IP67 or better (requires testing at 1 meter deep for 30 minutes). If your case is a single piece with no connectors, easy peasy. If you have signal connectors you need IP67 rated connectors. That's okay, we can get those easily from digikey.
    600Amp connectors? Well those are harder to find but industry usually seals the thick conductors with cable glandes, so we'll go that way.
    Hum, last step is sealing 2 perfectly flat surfaces. Sounds easier than it is, you need a rubbery compressible material between those surfaces, we all know that. What I didn't know, despite I've been a mechanically oriented EE is how clear the rules are and how deep the knowledge is about seals.

    I've seen plenty of custom made gaskets for electronics enclosures, but after a light reading it was evident that the easier and cheaper way to seal is using off the shelf o-rings.
    Enter Parker, the age old o-ring industry leader, with an old and extensive handbook that has perdured for decades instructing us engineers to design proper sealing into our products.

    Step 1: Read The Fantastic Manual

    The Parker O-Ring Handbook is a 50 year old piece of literature that surprisingly hasn't changed that much over the decades. Its on the boring side for an electrical engineer, until you get to the practical design charts:

    Step 2: Determine O-Ring diameter

    So if we are going for an enclosure that needs to prevent liquids on the outside from entering, your O-Ring inner diameter needs to be the same length as the inside diameter (if the groove were circular.

    In a sort of rectangular enclosure, we need to know the line selected in green here:

    In reality, you will roughly estimate the required O-Ring diameter based on that green line length and it will obviously won't match the off the shelf o-rings, but now you have a ballpark that lets you know which o-ring cross section you will use.

    In our case (oh the pun) I could narrow it down to part# 2-279 or 2-280. They only differ in the Inner Diameter (329mm and 355mm). Now the groove needs to modified so it either measures 329 or 355mm to match one of those o-rings. Our enclosure initially had 340mm, so either we make it smaller or larger to get a match.

    Step 3: Groove profile

    Given a 2-279 O-ring, we know its cross section, that's all we need to know to design the groove, if you work with the free and awesome FreeCAD and followed the first image, it will look like this:

    The fillets on the top are required to avoid pinching and damaging the O-ring, and the draft angle would be 0° if you are CNC'ing your enclosure or up to 5° if you are diecasting. Depth and width are given by the tables.

    Step 4: Check radiuses

    In the second image you can see there is some wiggling in the groove, that's an old trick to increase the available volume inside the enclosure. You can do it on the corners or to surround a bolt, which makes for thinner, lighter and less massive enclosures.

    But here's the catch: according to the handbook, you can't bend an O-ring with a radius sharper than 3 cross section widths. In our case that would be a 10mm radius, less than that would compromise the sealing. Ideally you want to use x6 widths.

    This means that if you want your O-ring to closely surround your enclosure bolts, you are probably going fail the radius check and inevitably fall into a custom made sealing gasket. That was a wow moment, when I realized the exact limit between using an easy off the shelf O-ring and a ton of hours spent into the design and supply chain of a custom gasket.

    Axiom enclosure is not done yet, but this...

    Read more »

  • Axiom Workshop!!

    Marcos Chaparro05/31/2019 at 11:19 0 comments

    First Axiom workshop!

    Last Thursday we had the chance to present our work in the 2nd Automotive Engineering Workshop hosted at the Department of Electrical Engineering (DIEC) of the UNS University in Bahia Blanca.

    Attendees took a glance at the current state of the art of Engine Control Units, the progress towards electric vehicles, and were presented with a crash course about Axiom. They learnt the building blocks, features and capabilities of our motor drive, followed by a demo of Axiom running a motor control simulation. They could watch all the math unfold into nice current, voltage and phase plots emerging from the motor model, an awesome tool for research.

    The DIEC research lab has plenty of high quality Rogowski probes, big dollar scopes, 600V power supplies and some cool SiC modules. We should visit them more often!

    Fun times! 

  • Check out Axiom Datasheet!

    Marcos Chaparro05/16/2019 at 02:32 0 comments

    We are ready to release the Axiom datasheet!

    Next Monday all our subscribers will have access to the datasheet through our newsletter.
    To subscribe to the newsletter, sign up here!

    It will be only available to the subscribers for quite a while until we let the file publicly available for download.
    Important announcements will happen there as well, so we hope to see you guys in the list!


  • Design For Manufacture - Board Level

    Marcos Chaparro05/11/2019 at 00:09 0 comments

    New boards arrived!

    Its a perfect chance to talk a bit about DFM using this small batch that showed up today as an example:

    When Axiom -in its current form factor- started being prototyped I tried to keep all components in the same side. It is much easier for me to reflow soldering when they are only on one side of the board. Otherwise in the second reflow I always fear that some components in the underside will fall, its not a reasonable fear as I've done dual sided assembly a few times and it was never a problem... but the fear is there.

    However the actual, tangible  reason I avoid going dual side is because its a ton of extra work. You spend hours opening digikey bags, placing tiny components, dealing with your shaky hands, the solder paste mess, the hunger because once you start you can't stop, the backache, aligning the components to tolerances the human body isn't meant to resolve, and then you can sit and watch that satisfying reflow. When you have a 2 sided board, that soul crushing experience starts over again, and you didn't even get to see an LED turn on.

    You need to go through that experience to really appreciate the *cost* of going 2 sided. You become aware of the steps that manufacturer needs to go through when you make that choice, exposing the board to 250°C twice, and it is really needed? It turns out that Axiom has enough real state available and a single sided assembly will do just fine, plus the underside of the board will be exposed to higher EMI and if the belly stays flat you can do some shielding and heatsinking. YMMV of course.

    So single side it is, and in the picture above, you'll find that we only asked for SMT assembly, leaving out the through hole parts. There's 2 reasons behind this:

    • Through Hole assembly is expensive. Or relatively expensive, we have an expensive BOM so it doesn't affect us that much, but is a place to save $.
    • The TH parts pay import taxes in the country its assembled, plus import taxes in our country.

    If we assemble TH locally we avoid both the assembler and a bit of foreign taxes, it makes sense for a small run.

    Since this is our second small batch made for beta testers, our assembler has all the tooling in place, they won't charge you again for the stencil and pcb tooling, plus now they know the BOM, component location, they have your pictures, that amazing interactive assembly and several mails with instructions to assemble that first batch, so now its easy to produce more boards! You just say how many and ask how much, it's that easy. You've done all the heavy lifting optimizing your BOM cost, making sure you don't rely on hard to find parts, selecting different suppliers according to the price, etc.

    And a quick tip: treat your manufacturer like a small child, be clear, go to town with as many drawings as you can and also listen to their suggestions. They are no childs, they are extremely competent and there are teams with technicians and engineers at your service, but you'll save time and money by just being graphical and verbose.

    Its a long way to get to receive a well done batch arriving to your door, but that's barely the beginning! When they arrive you'll have to unpack the boards, and test them one by one. Axiom comes pre-programmed with a DFU bootloader in ROM that makes it possible to flash the MCU by just plugging the board over USB. In seconds we can check that:

    • MCU is OK
    • FPGA is OK
    • Resolver chip is OK
    • MCU supply rail is within tolerances
    • Analog signals are reasonable (many of them should be at 1.65V for example)
    • USB is OK
    • Current sensor failure detection is OK
    • Program vesc bootlader and the application so its ready to use

    All that by just plugging it over USB!

    Sooner than later we will need a jig to test that the analog signal path is within tolerances, test pwm outputs and comm interfaces, but for now, and since its a high end product we test each board directly with a powerstage. If the board can regulate 3A with those 425A sensors, your signal path is...

    Read more »

  • Field Weakening Support

    Marcos Chaparro05/05/2019 at 04:42 0 comments

    That's right, Field Weakening!

    A major milestone for the VESC platform! In our public repo we pushed the code to add support to FW to set the motor speed beyond base speed, and Max Torque Per Amp support, intended to drive IPM motors. We'll talk about MTPA in a future episode...

    Without field weakening, a motor drive can only operate the machine up to base speed in the plot below. That's the constant torque region, you can achieve full torque in all that speed region, and then torque suddenly drops to zero.

    With Field Weakening (FW) now the controller can make use of the extremely valuable constant power region. See it in action:

    In the video you can see the Iq (torque generating current) in red, and Id (flux-generating current) in blue. When motor reaches base speed, a negative Id current weakens the field to decrease BEMF and allow more Iq current that produces torque.

    Interior Permanent Magnet (IPM) Motors have a mechanically robust rotor structure that is effective in flux-weakening operation because it has low effective air gap. So, IPMSM can be operated not only in the constant torque region under the base speed but also in the constant power region over the base speed, and its the architecture most commonly used by OEMs in Electric Vehicles.

    How it works?

    As a motor rotates, it creates a back-EMF voltage across its coils proportional to the speed of rotation. In order to force current into the coils, the applied voltage must exceed this voltage.

    The limitation comes when the speed of rotation is such that the required applied voltage is greater than the voltage available from the inverter electronics. At this point, the inverter can no longer supply current to the stator coils and the motor will not generate any torque. If the rotor is externally forced to rotate faster, the back-EMF voltage will exceed the power supply voltage, and current will attempt to flow from the coils into the power supply, producing a torque counter to the direction of rotation.
    In practical terms, this means that for a given power supply voltage, and a required coil current, there is a maximum speed of rotation obtainable before inverter saturation occurs preventing more coil current from flowing into the coil. This speed is referred to as the base speed.

    In order to exceed the base speed, the back-EMF voltage must be reduced. Since the back-EMF is also a function of the magnetic flux between rotor permanent magnets and stator coils, reducing this magnetic flux will reduce the back EMF voltage. The inverter then does not enter saturation, current can flow into the stator coils, and the motor can rotate faster, although at the expense of reduced maximum torque.

    The basic principle of field weakening, as its name suggests, is to weaken the magnetic field strength of the rotor magnets, by applying an opposing magnetic field on the stator coils in phase with the rotor field. This is the direct axis (d-axis) in field oriented control, and acts to reduce the back EMF generated by the motor as it rotates. 

    The control scheme chosen to drive flux-creating current Id is based upon the following diagram, taken from a TI app note:

    As always, to dig deeper into the new feature, you can check out our Pull Request on the VESC repository:

    Alongside with the firmware code, we provided the patch for the user interface that adds the control of the new feature:

    The hidden dangers of high speeds

    So imagine that your motor without FW can reach 10000rpm on a 50V battery. Now you can actively weaken the field and reach 14000rpm, nice!

    But what if for some reason your PWM is stopped and Id current suddenly collapses? Well, you better hold your hat because as Id collapses the magnets field will be restored and a very high BEMF will be...

    Read more »

  • Block Diagram Explained

    Marcos Chaparro04/29/2019 at 11:40 2 comments

    Let's take a closer look at what this piece of hardware is about:

    The intent of the system block diagram is to highlight key components or subsystems, power/signal flow of interconnected assemblies and draw the reader's attention to how the components fit into the wider system. In order to read a block diagram (or detailed schematic), you would generally expect it to flow from left to right, with as much attention to the important details as possible.

    Power Stage

    In the top of the diagram you can find the powerstage of the inverter, generally consisting of the components exposed to high amps. From left to right you see:

    • Terminals for the battery inputs. (BATT+, BATT-)
    • A pair of isolation contactors (safety feature) and pre-charge resistors to limit the current during initial charge of the DC Link capacitor. (K1A, K2A, R32, R152)
    • Voltage sensing of DC bus which is required for field oriented control (HVDC+, HVDC-)
    • Automatic discharge of DC Link capacitor when system turned OFF or loss of MCU power.
    • 600V 650uF DC Link capacitor, in this picture it is shown as three separate capacitors
    • 650V 600A IGBT modules, mounted on a heatsink with thermal interface material
    • 3 In-line phase current sensors, high bandwidth hall effect
    • Active cooling system
    • PMAC 3-phase motor

    The powerstage shown is very specific for a particular configuration with 650V 600A IGBTs, but the customer can use a different powerstage, the control board is agnostic in this regard, with minor hardware changes the Axiom control board can be made to support other voltage or current ranges.

    DC Link capacitance, ripple current and technology are chosen based on the application requirements (motor inductance, switching frequency, temperature, etc). For high voltage, power dense application  metalized polypropylene (MPP) film capacitors are used. This type of capacitor not only has self healing capabilities, it is also capable of delivering a tremendous amount of instantaneous power due to extremely low internal impedance.  The close proximity between DC Link capacitor and IGBT switches also minimizes the parasitic inductance which is critical for overall system performance.

    For high performance drives 3 phase current sensors are necessary, they allow the control algorithm to manage signal noise and also to detect faults to ground. Furthermore, the use of three independent phase current sensors allow for controlling naturally occurring imbalance which otherwise not be available in a system with two sensors.

    Control Inputs

    On the left of the diagram there are user inputs

    • CANbus interfaces. Redundant, isolated CAN bus. Supports UAVcan protocol and native VESC protocol at 500kbps.
    • RJ45 1: 12V power input + digital I/O. The board can be supplied from 9Vdc to 28Vdc, 3A external supply is required, it is recommended to use a 12V battery to supply these subsystems. The board will generate all necessary control power such as 15Vdc for the gate drivers, 5V and 3.3V for the logic.
    • RJ45 2: Analog inputs. Can be configured to be used as accel/regen inputs or sin/cos encoder.
    • RJ45 3: BiSS absolute encoder port.
    • RJ45 4: Resolver port.
    • Hall sensor interface. This is not an appropriate position feedback for a high power, high performance drive, its there for testing purposes.
    • USB port only for programming, not suitable for controlling a motor.
    • SPI interface: internal SPI bus is available for very high speed expansion. In the existing design this interface is used for  high speed communication between FPGA and MCU.

    The fast switching of high voltage and/or high current can generate a considerable amount of electromagnetic interference (EMI). It is imperative that the input signals be protected  against transients which is why the RJ45 type connector with CAT5 cable was chosen. CAT5 cable provides twisted pair with optional shielding which is ideal for signal integrity. CAN bus connector is the same as defined by UAVCAN specifications...

    Read more »

  • Current Sensor Failure Detection​

    Marcos Chaparro04/23/2019 at 21:26 0 comments

    Fresh merge from VESC repository:

    Last week we provided the code to handle 2 dangerous failure modes:

    • Sensor/wiring damage
    • Fault to ground

    If a current sensor is damaged, the FOC will run out of control, with dangerous consequences. Axiom boards are the only VESC's that come with a simple pullup in the sensors input to make sure that a loose wire will set the analog signal to a known value that is detectable by the firmware.

    So if the sensor offset is higher than a certain threshold, we trip the fault, it gets logged and visible from the GUI, and the controller won't be allowed to move the motor until the problem has been fixed. It will even let you know which sensor has an offset problem.

    The second method used to detect a problem is checking that the sum of all phase currents is zero:

    As you can see, the current can only flow through L1, L2 and L3, it has no other way to go, so the sum of the 3 currents should be zero.

    In practice, under hard acceleration you can get to see some current flowing to the chassis, that's why we allow for a bit of current unbalance, and coded a low pass filter to avoid false trips due to noise.

    Our boards are configured to trip at 130Amps of unbalance, and take around 0.3 seconds to trip, which is configurable in /hwconf/hw_axiom.h

    #define HW_MAX_CURRENT_OFFSET            620    // More than this offset (0.5 Vdc) trips the offset fault (likely a sensor disconnected)
    #define MCCONF_MAX_CURRENT_UNBALANCE        130.0    // [Amp] More than this unbalance trips the fault (likely a sensor disconnected)
    #define MCCONF_MAX_CURRENT_UNBALANCE_RATE    0.3    // Fault if more than 30% of the time the motor is unbalanced

    Here's a quick video showing a fault:

    VESC Tool GUI showing the FAULT:

    Our commits came with this protection disabled to the rest of VESC hw versions, but it was soon added to all the hardware variants!

View all 13 project logs

Enjoy this project?



grTavares wrote 05/23/2019 at 19:58 point

Wow... Amazing project! I will try to learn a bit from you.

  Are you sure? yes | no

Piotr Błądek wrote 05/23/2019 at 14:17 point

Good job guys! Only thing Im wondering, is automotive grade of components used, and project as a whole (as far as I remember STM32F4 didn't come with any ISO26262 support, ASILx, or even AECQ100), for DIY EV its not a problem, but for any professional stuff it is. Do you have any plan to support automotive applications with your solution?

  Are you sure? yes | no

Sonny Lloyd wrote 05/23/2019 at 16:00 point

That's an excellent question Piotr, and your observation is correct.  We already have a design, currently in draft, which supports automotive application using  qualified parts and processor (not STM32F4).  It has other features too that Axiom doesn't have, more suitable for that style of customer but it lacks the amazing GUI that VESC has, and also its not open source.  

  Are you sure? yes | no

ve2hrj wrote 05/16/2019 at 11:36 point

This is great project, I’m interested to create something like that, but your project is way more advance!

I did notice that you use regular IGBT N-Channel of about ~700A, how about using GaN?

Would it be possible to adapt your board for that?

That would be a very big improvement on efficiency, I think.

  Are you sure? yes | no

Marcos Chaparro wrote 05/16/2019 at 14:57 point

Gallium Nitride is better suited for lower power applications. GaN technology comes with very low voltage gates (<5V IIRC) and most importantly a lack of high current off the shelf modules. Also they are normally-closed devices, you really don't want that in a high power half bridge. You wont find a 500A GaN because parasitics would turn itself on.

GaN is not the only wide bandgap technology out there, we have Silicon Carbide that has large gate voltage threshold for better tolerance against Miller self turn-on (which gets much worse at high dV/dt), its normally open, and industry has been making SiC modules for quite a long time now.

Having said so, we carefully chose our parts and design rules so Axiom can manage next-gen devices like Silicon Carbide that make for more compact and more efficent drive units. Basically by minimizing capacitive coupling between high voltage and control logic domains.

  Are you sure? yes | no

arbydarby wrote 04/20/2019 at 01:18 point

this needs to win, fabulous 

  Are you sure? yes | no

c.Invent wrote 04/19/2019 at 17:09 point

Let me just say this: this project is nothing short of amazing and I honestly think it deserves to win.

  Are you sure? yes | no

Maxi wrote 04/19/2019 at 21:49 point

Thanks for your support

  Are you sure? yes | no

Sonny Lloyd wrote 04/16/2019 at 02:09 point

Yes you're right Zachary.  There's a lot a platform like this can do and its not that far from a perfect match to the other application you're brainstorming.  Of course, being open source, YOU have all the power to make the changes you want to see  :)

  Are you sure? yes | no

Zachary Drew wrote 04/16/2019 at 04:24 point

I do, I will, and this is what's so exciting to me about stuff like this! I keep seeing this pattern in technology repeating itself over and over again. Things are a little too purpose built, usually for good reason, but as technology improves those reasons disappear. Look at the disconnect between e-bike and e-board motor controllers. It's my impression VESC hasn't taken off with e-bikes because of the 60V limit imposed by the TI DRV8301. Now TI just came out with the 100V DRV8350 so the source of that disconnect seems to be going away.

Another place I see this is in HVAC. Need a big system? Build a big system. Need a small system? Build a small system. Need AC? Install an air conditioner. Need heat? Install a heater. Except they are all (or should be) doing the same thing: transferring heat from one place to another and the most efficient way to do that with electricity is the heat pump which are reversible with a single reversing valve. Now we go fractal: The heat pump guys will then ask you if you doing air-to-water, air-to-air, air-to-ground, etc... and I just want to scream "is it too much to ask to design a plate-to-plate, modular sized heat pump, mass produce them in obscene numbers so they are cheap, if I have a big system I will use a lot of them, if I have a small system I will only use one?" And now we'll go ouroboros: The compressor will be designed for your specific grid (110V/220V, 50hz/60hz) even though modulating DC inverting compressors are the clear path forward (ha, we're back to motor controllers again!) Next will come the question of the alphanumeric soup of refrigerants to which again there is a very clear answer: CO2 except the R&D for that has been weirdly slow across all these fiefdoms of HVAC. Sure, it's harder to run refrigerant at several thousand PSI but guess what? It eliminates many of the sources of all these little disconnects, and the components are dramatically smaller and ultimately cheaper. Now instead CO2 refrigerant has made great inroads into retail commercial refrigeration. DC inverting compressors are the norm in mini-splits. But want a window unit with a DC inverting CO2 compressor? Guy at the bigbox store: how about this 80 pound window unit that hasn't had a design update since 1998 except for when the face-plate injection mold tooling wore out nine years ago so they gave the model a facelift,  and five years ago, when blue LEDs got cheap so they changed the LCD backlight color to "good luck sleeping with this blinding blue LED shining in your face, while this ancient compressor cycles on and off to hit the temperature set point, while your back hurts from installing it in the window, and, oh, sorry about the larger-than-necessary electrical bill coming next month, and sorry to your kids when the refrigerant leaks out because it has a global warming potential 1000x worse than CO2, but hey, exotic patented synthetic refrigerants are big business."

My apologies for that rant, it's been building up for a while.

  Are you sure? yes | no

Sonny Lloyd wrote 04/16/2019 at 14:20 point

no worries, we feel the same.  its why our product exists, to allow for some flexibility as needed!  by the way, we have a motor controller based on the 100V DRV8350 chipset though it hasn't been published (yet).  It was meant for 1 to 10kW systems in high G-Force application.

  Are you sure? yes | no

Zachary Drew wrote 04/15/2019 at 21:54 point

This is incredible work! This feels exactly like what's needed for VESC to take over the DIY EV world and beyond. For example, if a DIYer wanted to heat a cold battery pack using the motor/inverter ala the Tesla Model 3 method this should allow that! Going even further, with some added components I believe this could allow the motor inverter and IGBTs to pull double duty as a pure sine wave inverter. Park the vehicle, switch the inverter from traction mode to inverter mode and you've got a huge power wall on wheels.

The u.FL connectors for simulation-quality in-circuit measurements and the FPGA shoot-through protection is brilliant!

  Are you sure? yes | no

Marcos Chaparro wrote 04/16/2019 at 02:28 point

Thanks! You can artificially heat up the drive unit by setting an Id current (it doesn't produce any torque), its a simple command,

You need some contactors and an inductor/transformer + filtering to smooth the 3 phase voltage in order to supply a house. But as far as the board is concerned its 1 command away as well, it was added recently! 

  Are you sure? yes | no

Zachary Drew wrote 04/16/2019 at 03:19 point

Usually a big inductor too! Though I have been wondering if there are specific DC/AC voltage ratios to minimize the cost, weight, and conversion inefficiencies. And maybe it could go the other way, is there a specific voltage ratio to maximize charging efficiency? Imagine if a single piece of hardware could be the motor driver, DC charger, and vehicle to grid energy controller. I'm only slowly beginning to understand how all these things works and I keep seeing similarities... everything is just some kind of inverter which has left me wondering if it's just lack of imagination that is holding back the convergence of these technologies or if there is a specific first-principles reason that prevents it. 

  Are you sure? yes | no

Nicholas DiVitto wrote 04/15/2019 at 20:33 point

Wow! Simply beautiful, and definitely what the DIY EV community needs. Is there induction motor support, or just BLDC? 

  Are you sure? yes | no

Marcos Chaparro wrote 04/16/2019 at 02:08 point

It can make an ACIM spin, there are commands to generate a fixed frequency 3 phase.

Full Field Oriented Control of ACIM is in the TODO list, should happen soon! It would need a small tweak of the control loop and a new phase observer.

  Are you sure? yes | no

Sonny Lloyd wrote 04/16/2019 at 02:15 point

I should add that we are REALLY motivated and excited to explore the parameter detection methods that make ACIM possible because if you're willing/capable of rewinding the motor yourself to better match your EV battery you can save a LOT of money and end up with a pretty decent performing motor.  that's a real plus for extreme DIY'ers like you and me.  I know.. industrial motor's don't lend themselves well to EV application.. but .. if the old motor is selected properly, rewound yourself with intention .. i think you'd be surprised what you can get out of it for a fraction of the cost :)

  Are you sure? yes | no

Nicholas DiVitto wrote 04/16/2019 at 12:47 point

Awesome! I've been following this project for a little while and its really cool to see how it has matured. Keep up the great work!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates