Be careful with openloop mode

Se this, Danger bug! Voltage multiplier does not react to voltage limit! · Issue #124 · simplefoc/Arduino-FOC · GitHub

The voltage limit has no effect in 3pwm mode…

Are you able to reproduce this bug?

Hey @Juan-Antonio_Soren_E
This is not a bug :smiley:

I see that now, thank you for the detailed explanation. Let’s call it pour guidelines in the open loop example. Having a 50% duty cycle on a low resistance motor will draw a lota amps.

The open loop example is probably the one newcomers will try out first. There should definitely be a driver voltage limit in there.

Let’s say one use a 24v psu and have a 0.053ohm resistance motor.

Am I missing something?

Aha, the relative voltage part can be a bit tricky to grasp. I think I will need to experience it. Will need to make a new bootloader and then I will power up the motor. The Adafruit feather LED pin is messing with my half ridge driver at bootup.

Hey Juan-Antonio,

When using motors with low resistance windings, you will always have the problem of high currents. The design has to account for it in at least software, but ideally also the hardware.

Keep in mind that using position control, you could be asking to “hold” the motor in a position where one of the phases is almost “permanently on”. It’s only when the motor is turning that you can rely on the commutation to keep the impulses on each phase short in duration.

So you can use the driver.voltage_limit (and/or current limit if using current sensing) to keep the current within the permissible boundaries.
And you can use a driver IC that does over-current detection and prevention. Typically they do this by “chopping” the PWM signal, either in sync with the PWM or asynchronously. Texas Instrument datasheets and app-notes describe it quite well.

If you enter the “chopping” mode your signals will be more trapezoidal / square wave shaped than sine wave shaped, and this will surely affect performance in some ways.

Even once you have tuned everything to stay within “non-burning” limits, you still have to consider the slow burn… if you run the motor and driver near their limits for any length of time, they will get hot! So you need cooling. The drivers typically have over-temperature protection, but the motors typically don’t. A motor that has been run within current spec but for too long can still get so hot it will fail…

So you can use the driver.voltage_limit (and/or current limit if using current sensing) to keep the current within the permissible boundaries.

That is good to know…

I just figured out how to install Ubuntu, running on Windows 10 :smiley: Pretty amazing feature. So will fork the repo and make a description in the open loop example to push your way. I managed to make the SAME51 bootloader :call_me_hand: