From openinverter.org wiki
Jump to navigation Jump to search

The inverters task is to generate sine waves in a meaningful way, sample the users input (throttle etc.) and control some external components (main contactor, precharge etc.).


I have designed it based on an Olimex STM32-H103 processor board. The controller features:

  • 8 digital 12V inputs (cruise, start, brake, motor protection, forward, reverse, emergency stop, BMS HVC/LVC)
  • 3 analog 3.3V inputs (motor temp, throttle, throttle redundance/regen adjust)
  • Encoder input and diode output for motor speed measurement (single channel, quadrature or quadrature with index pulse)
  • 5 digital open collector outputs (main contactor, error, under/over voltage, precharge, brake light)
  • 1 PWM output for temperature display or motor speed
  • Integrated buck converter with an input voltage range of 7-26V
  • 3 complementary PWM signals 3.3V, 8mA for driving the inverter bridge
  • Isolated bus voltage measurement
  • inductive phase current measurement for 2 phases
  • Heat sink temperature measurement
  • Serial TTL level communication for configuration and monitoring tied to a Wifi module
  • CAN communication
  • Hardware shutdown on: motor protection switch, emergency stop, over current (programmable trip limit)


The software features:

  • Control of motor slip and flux according to throttle input
  • Regenerative Braking with multiple levels and modes
  • Cruise Control
  • Charge Mode (using motor as inductor)
  • Web interface for configuration, monitoring and firmware upgrade
  • Customizable CAN communication and CANOpen SDO support
  • Various test modes for installation phase
  • Control of precharge and main contactor