At the most basic level we are controlling motor current. Our serial output is not fast enough to report every current measurement (two performed every 12kHz), but we can see if the current is behaving within the region we expect. First we can compare the requested current output magnitude, vs raw, directly sampled phase currents. The vertical axis is a signed internal scale, where 32700 is approximately 1000 Amps.
Here you can see that every reported current is within the magnitude requested. Because of stroboscopic effects, (sampling windows and AC sinusoidal waveforms etc) it is expected that we would see values less than requested current.
Delving into the Motor Model at the heart of Field Oriented Control, we can check that the two current vectors, (magnetic flux producing Id and torque producing Iq) are controlling:
Here, the error between requested Id and Iq are plotted as DId and Diq. The error is around 1%, which equates to a output Torque error of about 0.01% (output Torque is proportional to motor flux times torque current).
At the moment, we are controlling Flux and Torque to equal throttle position (thick grey line). Flux (the green line) should always be positive however, (as two negative numbers would multiply to a positive torque). We have set the throttle zero position to produce regen torque, to approximate engine braking, but only while moving. You can see at 175 seconds when the vehicle was stopped that the torque and flux trending to zero, no longer following the throttle position. A small acceleration occurs from 184-193 seconds, and a much greater one at 205 seconds.
Finally, a big thanks to Lachlan for putting together the data extraction scripts that made these graphs possible and to Switch EV for building such a great EV!
Stay tuned, driving videos coming soon...