I have a CubeMars GL30 gimbal motor and checked whether the SimpleFOCShield would be suitable.
Its spec is 12v 2.3A and phase to phase resistance of 1.53 Ohms. The shield description warns against resistances lower than 10 ohms and suggested asking here.
Is the issue that at 12v, one could inadvertently exceed the current limit of the shield and motor ? I will be debug the system with a bench power supply. Can I make it safer by simply reducing the motor supply voltage ?
The board is based around the L6234. The datasheet says minimum supply voltage is 7v, so can I go as low as 7v with the shield ? The SimpleFOCShield has 12-24v written on it.
Even at 7v, my stalled motor would exceed the current limits. I am assuming the Arduino code modulates a PWM signal to produce the sinusoidal driving voltages and with the current sensors, can reduce the amplitude of the sine waves so as to limit the current to a user defined value.
So is the warning about low resistance motors just drawing your attention that the software current limiting must be carefully selected ? I guess it also means that not burning the electronics relies on the arduino not crashing.
Yes, you can use motor.current_limit for software control, if you initialize your BLDCMotor with phase resistance parameter. However, I found that it is not always so accurate, but erring on the side of lower currents get passed than specified.
Thinking more about it, the software current limiting can only limit the current over a timescale that is some multiple of the pwm frequency. It looks like there is just one capacitor, so there is unlikely to be any filtering of the modulated supply voltage. At any instant in time, the motor windings will be exposed to the whole supply voltage, so I would have to rely on the motor’s inductance to prevent the peak allowable current of the board being exceeded ?
Current cannot instantaneously flow in or out of inductors, the BEMF opposes the change (inductors can be thought to short DC and open AC). With PWM frequency sufficiently high, the perceived voltage at the motor is less than the full supply voltage, although like you said, it depends on frame of reference. I guess the best concept here would be something like ‘time averaged’ current since it will certainly be less than supply voltage * winding resistance.
With PWM frequency above 10kHz this should not cause any problem for you. The default recommended for this project is 20-25kHz.
Ok, lets double check. The motor winding has a specified inductance of 0.33mH. A LR filter has a cut off frequency of R/2 * PI * L , so 1.54/2 * 3.14 * 0.00033= 740hz which is way below the 25K you mention.
Cool, so it looks like the SW will keep the system safe. Thanks guys. Has been useful to talk it through.
I am still curious about the warning about motors with less than 10 ohms. Perhaps the FOC becomes more tricky at low resistances ?
Not the way simplefoc does it. Just try it at like 8 volts power supply and 1 volt as the voltage limit and work your way up, use the commander so you can just type the command to change the voltage and rads per second in open loop, and don’t let it get too hot. Set the bech supply to limit current to a reasonable level.
I think this is just a ballpark number mostly to prevent people from exceeding current limit without setting up the software right.
SimpleFOCshield supports up to 24V, with 10R windings this gives you 2.4A, which is under the current limit for that board (suggested 5A?) with some headroom.
There can also be some issues with high currents at low rotation speeds, due to lack of BEMF limiting the current in windings.
@pleaback the fact that you are concerned about the 10ohms recommendation suggests that you’ve got the message about what the driver can do. I’ve used motors with 0.3ohm resistance and voltage limits of 1.5v, i tend to run off a bench power supply limited to 250ma. If i get things wrong with software limits the bench supply will protect and I’ll notice the voltage sagging.