My home made 90hp AC motor controller

The inverters job is to convert the DC voltage from the batteries into variable frequency and variable voltage (3 phase power) to run the AC motor. The inverter also has a regnerative braking feature.

The yellow cables are connected to the battery though a precharge & safety circuit.

The orange cables are connected to the motor. There are two black boxes on the orange cables, these measure current to enable the inverter to run in a vector feedback mode.

The bundle of wires connects to my throttle pedal, ignition switch, precharge contactors, and warning lights. I use one of the warning lights as a shift light, it illuminates when the motor speed is matched to the gear I am trying to shift into, this is helpful when shifting clutchless.

This is my second working prototype three phase inverter. The hardware used in my first prototype was 15 years old. Several improvements have been made over the years, especially in encoderless vector control (controlling torque at low speeds). I am now using the latest hardware and firmware available, and controlling my Siemens motor in a "Sensorless Vector" mode, meaning I am controlling Torque and Speed.

Torque at the motor is generated when the inverter commands a motor speed which is greater than the actual motor speed, this is called "Slip Speed". For example if the motor is spinning 100 rpm (3hz) and the controller is commanding 200 rpm (6hz), the slip speed is 3hz. To achieve twice the torque, the controller would command a slip speed of 6hz. The same applies during regnerative braking, the slip speed becomes negative (negative torque).

To control torque, the controller must know how fast the motor is spinning to calculate the actual "Slip Speed". This is done with current transducers which monitor motor current on each phase of the motor windings.

Connection schematics

I setup a regen braking profile as shown above. If I tap the brake pedal, "drag regen is selected". I can return to coasting mode (no regen) by pressing the gas pedal.

If I press and hold the brake pedal, I get full regen braking. When I release the brake, drag regen is selected. When I press the gas pedal, coasting mode (no regen) is selected.

This allows me to maintain speeds down hill without having to cycle between coasting and regen braking. Braking torque is set to 25% and Drag torque is set to 10%.


Here is a plot of:
Magnetizing current (Id) in red is multiplied by 5 to fit on the chart.
Torque producing current (Ip) in blue is multiplied by 5 to fit on the chart
RPM in light blue is divided by 10 to fit on the chart.
X axis is time (100 seconds)

At 8 seconds I accelerate from 6 mph to 42 mph, using roughly 75% throttle.
At 20 seconds I'm coasting, you can see motor rpm (lt. blue) drop as I coast
At 32 seconds I give it just enough throttle to maintain speed (35mph).

At the 15 second mark:
Id (red line) on the graph reads 175. Since the scale is 5x, this is 35% of rated motor current.
Id = 66.64 Amps

Ip (blue line) on the graph reads 500. Since the scale is 5x, this is 100% rated motor current.
Ip = 190 Amps. (I allow up to 150% current, 285A)

Motor RPM = 3000 which is 26.55 mph.

At 55 seconds I floor it just after making a turn.
From the graph, Id = 175, Ip = 700.
Magnetizing current (Id) = 66.6 Amps
Torque producing current (Ip) = 266.6 Amps

We can add Id and Ip together to get 274.7 Amps.

And now for the history...
Follow my progress over one year as I learn and develop my inverter.

Got my 90hp motor to turn using my 2hp controller. It turns about 3 times before tripping on overcurrent. I'm waiting for parts to arrive so I can upgrade the drive, but figured this was a good first step. first_rotation.wmv

Got another VFD in today, to my surpise it was 3hp instead of 2. I can run the 90 hp motor at 1% speed all day long now. Also got my motor coupling in, it fits perfect!

I wired up a bridge circuit to generate 300vdc, and wired up a precharge circuit. This will let me run my inverter from DC instead of AC voltage.

I'm learning how IGBT's work. I can make the light bulbs turn on using the IGBT now. A 10 volt pulse makes the IGBT latch on, and a 0 volt pulse will make it turn off.

This waveform replicates the top half of a sine wave. That's what the signal looks like going to the input of the original IGBT. The scope is connected between Vvpc and VP. The signal is about 14 Volts peak to peak. Here is another view showing multiple cycles.

Here is the same waveform as above, but zoomed in. I also have the original IGBT disconnected. The signal is now 18.4 Volts peak to peak because there is no load. The frequency is about 3kHz.

I bought a PWM circuit for $10 and I'm using it to fire my IGBT. It's basically a 965 horsepower dimmer circuit, if only I had a 900 horsepower DC motor, then I'd be done! Here is a pic of my minimalist DC drive. I also bought the Fluke Scopemeter shown in the picture. Also bought a smart power module which will be a better replacement for the IGBT pack I removed from the VFD. I bought another VFD and a 1 hp motor as spares, can't pass up a great deal. I also bought a 650 watt, 12v switching power supply which I hope will convert 300vdc to 14 vdc, this will replace the alternator if all goes to plan.

Inverter brains

I got my motor to turn! Then two seconds later, KABOOM! I talked with the IGBT tech support team, the problem appears too much inductance between my dc bus and the IGBT. They recommend using flat plates of copper bus bar instead of wire. So on to round two, but here is my funny video of the week.

Video (4mb)

I got my prototype drive improved, rebuilt and ready for another round of testing. Improvements include copper bus bar with 6 large caps, and 4 film caps. This should reduce voltage spikes as the IGBT is firing. I got my big motor to turn at 175 rpm. The limiting factor now is heatsink cooling on the IGBT, I get a heat sink over temp error after a few minutes.

2009-02-15 First drive around the block.

Video will automatically start once completely downloaded (6mb)

I got some major bugs worked out of my AC motor controller. The motor is now super smooth and quiet, and my IGBTs aren't overheating anymore! I was even able to take the car around the block. I still have much more work to do (power brakes, power steering, cooling system) but I couldn't resist. I was driving around with a 5 gallon home depot bucket on the roof, this was my cooling system for my IGBT.

Regenerative brakes are working.
Play Driving the car in Volts/Hz mode.(3mb)

I have my second prototype inverter running. It is only running in V/Hz mode right now, but already it feels much more refined. V/Hz mode means I can only control speed. Once I get my current transducers, I should be able to run the drive in closed loop vector mode, this will allow me to control torque and speed.

A quick video showing off the car.

I got my inverter to run in Sensorless Vector mode! I can now control motor torque using the throttle pedal (commanding the car to accelerate). When my foot is off the throttle, the car can either coast, or decelerate using regenerative braking. The regen brake force can be set anywhere from 0-150% motor torque. Setting the regen torque to zero will cause the motor to freewheel, this is how I am able to shift gears. Once I've shifted into a new gear, I step on the throttle and the drive will apply the commanded torque seamlessly.

Play low res video (10mb)

Below is a picture of the programming environment for my inverter.


Encoder signal

I was able to build a signal conditioner to convert the output from the Siemens hall effect sensor into a 5v quadrature encoder signal readable by my motor controller.

On flat ground I hit 87.3 miles per hour!

I've got this drive dialed in sweet, I've spent the last few weeks tuning this inverter and it is running great.

Here is the first freeway run video


I bought a mini laptop and set it up to acquire data from my inverter.

Here is a graph showing 0-60 in 20 seconds.

You can see the red line (motor speed) changing as I shift though 1st, 2nd, and 3rd gear

Torque limit is set to 125%. Current limit is set to 230A.

DC Bus Voltage (0-400 VDC)
Motor RPM x 20 (0-8000 RPM)
Motor current (0-400 Amps/Phase)
Throttle position (0-125% torque demand)

60mph = 6800 rpm in 2nd, 4400 in 3rd, 3300 in 4th.

On flat ground I hit 98.6 miles per hour!


Here is a graph showing 0-60 in 16 seconds (6800rpm) only using 2nd gear.

Torque limit is set to 160%. Current limit is set to 275A.

DC Bus Voltage (0-400 VDC)
Motor RPM x 20 (0-8000 RPM)
Motor current (0-400 Amps/Phase)
Throttle position (0-125% torque demand)

My DC Ammeter is scaled -100A to +300A, and I can peg the needle in both directions! You can see the battery voltage starts at 320v, sags to 280v, then jumps to 360v during regen. Regen torque/current is programmatically limited to keep the battery voltage below 370v.

60mph = 6800 rpm in 2nd, 4400 in 3rd, 3300 in 4th.

2010-05-29 I made some major improvements to the inverter and knocked two seconds off my 0-60 time!

Here is a graph showing 0-60 in 14 seconds (6800rpm) only using 2nd gear.

DC Bus Voltage (0-400 VDC)
(The DC voltage sag is indicative of battery current, every 10v sag = 100A).

Motor RPM x 20 (0-8000 RPM)
Motor current (0-400 Amps/Phase)


Keypad for displaying tag values in the inverter.