I think I figured out a way to not use a PI loop and have the convergence be just about perfect Optimum speed and zero overshoot. It will be influenced by temperature and variations in stator resistance, but maybe those could be corrected on the fly. Here's the train wreck formula I spent the last couple hours deriving:
Desired_V = Iref / (1/R  [1/R  I/V]*exp(loop_period/time_constant))
Where R is the line to line resistance,
I is current feedback
V is Vd (or Vq) in the FOC process
loop_period is 0.0001 second in our case
time_constant is 0.0077 for my motor. I think the stator time constant. Not hard to find. I found it today.
No guessing! Just bam! get your next voltage, and it's perfect or you got to as close to perfect as you could in one step. Sometimes it takes more than one step because you run out of voltage for causing the changes in current. Well, this is only if Iref is bigger than I. I need to do some figgerin' to find desired_V if you have to go the other way.
Note: none of this may work, but I think it makes sense, and will be fun trying it out.
Edit: Actually, I think the bus voltage is needed, not just the duty. Oh dang it. But you could still be close since a person would know their pack voltage. But a pack's voltage varies quite a bit... Now at least I have a reason to include the bus voltage monitor on the next revision.
Edit again: maybe you could use a conservative nominal voltage to still get really good convergence. I''ll try it.
edit again again!: This would work well for a locked rotor, but probably not in real life. haha
Last edited by MPaulHolmes; 10092014 at 11:10 AM..
