foc
FOC motor controller example
The main purpose of this example is to provide a universal template to implement the motor controller based on the kernel-side FOC device and the application-side FOC library.
At the moment, this example implements a simple open-loop velocity controller.
Hardware setup
This example has not yet implemented any mechanism to protect the powered device. This means that there is no overtemeprature protection, no overcurrent protection and no overvoltage protection.
Make sure that you power the device properly and provide current limits on your own so as not to break your hardware.
Configuration
The FOC PI current controller parameters can be obtained from the given equations:
Kp = ccb * Ls;
pp = Rs / Ls;
Ki = pp * Kp * T;
- where:
Kp - PI proportional coefficient
Ki - PI integral coefficient
Rs - average phase serial resistance
Ls - average phase serial inductance
pp - pole plant
ccb - current control bandwidth
T - sampling period
Sample parameters for some commercially available motors
Motor model |
p |
Rs |
Ls |
i_max |
v_max |
---|---|---|---|---|---|
Odrive D6374 150KV |
7 |
0.0254 Ohm |
8.73 uH |
? |
? |
Linix 45ZWN24-40 |
2 |
0.5 Ohm |
0.400 mH |
2.34A |
24V |
Bull-Running BR2804-1700 |
7 |
0.11 Ohm |
0.018 mH |
1.2A |
12V |
iPower GBM2804H-100T |
7 |
5.29 Ohm |
1.05 mH |
0.15A |
12V |
Odrive D6374 150KV
f_PWM |
f_notifier |
ccb |
Kp |
Ki |
---|---|---|---|---|
20kHz |
10kHz |
1000 |
0.0087 |
0.0025 |
Linix 45ZWN24-40 (PMSM motor dedicated for NXP FRDM-MC-LVMTR kit)
f_PWM |
f_notifier |
ccb |
Kp |
Ki |
---|---|---|---|---|
10kHz |
5kHz |
1000 |
0.4 |
0.1 |
Bull-Running BR2804-1700 kV (motor provided with the ST P-NUCLEO-IHM07 kit)
f_PWM |
f_notifier |
ccb |
Kp |
Ki |
---|---|---|---|---|
20kHz |
10kHz |
200 |
0.036 |
0.022 |
iPower GBM2804H-100T (gimbal motor provided with the ST P-NUCLEO-IHM03 kit)
f_PWM |
f_notifier |
ccb |
Kp |
Ki |
---|---|---|---|---|
20kHz |
10kHz |
TODO |
TODO |
TODO |