Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

low current threshold feature for lower power/torque operations #157

Open
DarrenLevine opened this issue Sep 4, 2021 · 1 comment
Open

Comments

@DarrenLevine
Copy link

When first powering on tinymovr, I think the gate driver starts in a disabled mode, and so the attached motor's resistance to being turned is at its minimum, and its current draw is also very very small. However, by just enabling current control mode, even if the commanded current is still at zero, the gate driver is enabled, which increases idle current draw (doubles it in my experiments), and increases the motor's resistance to turning. If attempting torque control, and trying to get as close to zero torque as possible, the motor's friction may in some motors have a smaller torque effect than an enabled gate driver (commanded to some current below a user provided threshold), which makes it more desirable from a power draw and control dynamics standpoint to just disable the gate driver under a certain current threshold. Especially if the motor has a lot of extra friction due to a gearbox.

It would be a cool feature to let the user specify a current threshold for disabling the gate driver, to unlock that extra low-torque control, and get a small power savings to boost when idling for long periods of time.

Or instead of having the user set this threshold manually, during calibration, you might actually be able to automatically determine this low-current threshold by slowly ramping the current down while the motor is actively turning (to measure dynamic friction), until the current is low enough that it cannot overcome that particular motor's friction and so the motor stops moving at a specific low current level. I assume that dynamic friction will be lower than static friction, so I wouldn't suggest measuring it by increasing the current of a stopped motor until it starts turning, since that value would probably give you too large of a current threshold (though I'm speculating on that one). Then, if you take that lowest measured current value and divide it by 2, and use it as your threshold value for disabling the gate driver, you'll essentially end up taking the user's commanded current control value and rounding to the closest possible state for that particular motor, giving them a tiny bit of extra control authority and power savings.

When I've messed with the STSPIN32 MCU in the past, I remember it has a standby mode you could quickly enter-into / exit-out-of to accomplish this sort of feature, but fair warning, I don't know if the same is feasible (and safe) with the PAC5527.

Very cool product by the way, I'm very much enjoying using my Tinymovr boards so far.

@yconst
Copy link
Collaborator

yconst commented Sep 5, 2021

Thanks for this issue and the feedback!

As a first comment, I think the issue you are describing might be related to the other issue you raised, #156 . Let me explain.

At current control mode, the FOC loop still runs in the background. This means that for a well-tuned current controller, the d and q components should be close to zero (as the commanded q-current is zero). Therefore, the motor should exhibit the same characteristics as if the phases were disconnected when the inverter is off.

Now, if the current controller gains are tuned for a motor with different RL characteristics, this could also affect the current regulation performance, and introduce errors even if the commanded q component is zero. The resistance that you mention could thus be related to improper current controller tuning.

I have tested current control and it does not seem to impede motor movement to a noticeable degree. Granted, my test was in a high-current motor, with much lower RL than yours, so any effect could be much less pronounced in my case.

Nonetheless, your suggestion is interesting and I'm going to leave it open for consideration.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants