FLUXOPT #
Brief #
fluxopt reduces the flux of an induction motor at light load (acim_foc) to cut the copper loss. conf/template/acim_foc.txt loads it between the field weakening and the field oriented control with fluxopt0.torque = pid0.torque_cmd, fluxopt0.scale_in = acim_fw0.scale, fluxopt0.id_n = acim_foc0.id_n, fluxopt0.lmr = acim_flux0.lmr_act, fluxopt0.polecount = conf0.polecount and acim_foc0.scale = fluxopt0.scale. It is off there (min 1); fluxopt0.min = 0.5 in a config turns it on.
Component Explanation #
All work is done in rt.
- Flux for a torque:
- With
k = 1.5 * polecount * lmrthe torque isT = k * id * iq. The copper loss for a torque is lowest withid = iq, i.e.id = sqrt(abs(T) / k). - Target scale:
sqrt(abs(torque) / k) / id_n, clamped toMAX(min, 0.05)..scale_in. - With
min >= 1,k <= 0orid_n <= 0the target isscale_in(off).
- Rise and fall:
- Rising flux follows the torque at once (the rotor flux lags by tr anyway).
- Falling flux is low passed at
fall_hz(0 = at once), so a pause between cuts does not demagnetize the motor. scalenever exceedsscale_in, so field weakening always wins.
- Results (spindle bench, 12 Oct): idle copper loss 111 W down to 28 W. Start torque 9.8 Nm instead of 13.9 Nm until the flux is back.
Lower flux at idle means less torque on a sudden load until the rotor flux has built up again (tr).
Pins #
| Name | Description |
|---|---|
| torque | input, Torque command (Nm), pid0.torque_cmd |
| scale_in | input, Field weakening scale, upper limit of scale (default 1), acim_fw0.scale |
| scale | output, Flux scale, to acim_foc0.scale |
| min | parameter, Lowest flux scale, 1 = off (default 1, at least 0.05) |
| id_n | input, Rated magnetizing current (A), acim_foc0.id_n |
| lmr | input, Magnetizing inductance lmr (H), acim_flux0.lmr_act |
| polecount | input, Pole pairs, conf0.polecount |
| fall_hz | parameter, Low pass of falling flux (Hz, default 1, 0 = no filter) |
References #
Source: .c File