BLDC motor as a spiral spring

Hello everybody, I have just discovered simpleFOC, and I think it could be very useful for my project. I’m planning to build a small roller shutter and considering using a BLDC motor to roll it up and apply a constant torque to keep it taut. Currently, I’m using a spiral spring, but I require precise and constant torque over the entire travel, and it would be ideal if this torque could be adjusted based on the weight of the shutter.

My question is, can this be achieved with a BLDC gimbal motor and simpleFOC? Or are there potential problems with motor overheating or control difficulties? I would appreciate any feedback before I start purchasing all the required components.

Welcome to the forum.

Yes it is possible. Yes overheating would be an issue.

As @Valentine said, this is possible. I do something similar for an application I have. You should ensure you can have closed loop current control working, as being able to decouple speed and torque while limiting current may be needed, depending on your exact setup.

Thank you @wrcman555 and @Valentine for your response.
@wrcman555 did you experience any overheating issues? I would love to learn more details about your application, if you are able to share, such as the driver and motor being used and the level of complexity involved in achieving the desired control.

I’m fairly inexperienced with electronics, but I just wanted to add that it’s possible that overheating might not be an issue depending on various factors. If the amount of torque the motor needs to apply while motionless is very small, it’s possible that it’ll be able to dissipate the heat just fine.

You might be assuming it’ll generate a lot of heat because that’s what happens with other setups when motors stall, but that doesn’t apply with FOC. Simpler setups depend on back EMF for regulation, which goes away when the motor stalls, so they draw full power and burn out motors. With FOC the power is being measured and regulated even while stalled, so the heat it generates will be proportional to the torque generated. So if you’re trying to hold a garage door open with a tiny gimbal motor, it’s not going to work, but something like a tiny fabric shutter seems totally possible.

If aliexpress sellers actually listed detailed specs for their motors, you’d be able to calculate how much heat you’d be generating in Watts and then select a motor capable of that heat dissipation rate, but instead you’ll probably have to experiment with different motors.

1 Like


I used the DRV8302 board from AliExpress in conjunction with a Nucelo F401RE board to control a moderate size industrial AC servo motor. I used an AS5048A magnetic position sensor for closed loop feedback, and controlled the Iq (torque producing current) as a function of the motor shaft angle. The code is quite simple - you can dynamically set the motor torque in the main loop as a function of shaft angle. I was able to produce several Nm of torque using the setup, and the DRV8302 board is capable of ~15 A of current, which was plenty for me.

Thank you @bob for your explanation. I will investigate the overheating of the motor experimentally, as the torque requested to keep the shutter taut is small.

Thank you. The setup is similar to what I have in mind. I’m planning to use a Teensy 4.1 (which has 35 PWM pins) to control four DVR8302 boards. I’m currently calculating the torque needed so I can choose a motor to test with. The motors will probably have integrated hall sensors, but I’m wondering if that will be enough for this control, or if I need an external encoder?

Regarding the programming, in my application the shaft needs to complete three revolutions and the torque needs to increase continuously as the shutter unrolls (in order to keep it taut), and increase by 2-3 times when the shutter changes direction to roll up. Is this obtainable controlling the torque as a function of the shaft angle? It also has to consider direction of the shutter.

For clarity, the shutter is moved manually, the motor just need to keep it taut and facilitate the roll-up

Please keep in mind that running simpleFoc is somewhat computationally intensive and only works properly if the loop is able to run fast enough. The teensy is a pretty powerful board but running four DVR8302 drivers, which means running four instances of simpleFoc, might be too much and loop times might grow too long to be effective. If a board is supported by simpleFoc and has spare capacity the only way to know for sure how many instances it can run is to find someone with the same setup who made it work or to just try yourself.

This doesn’t yet cover the requirements for the boards peripherals, you already said you have enough PWM pins but you should also check if you have enough timers to drive them and (if you use current sensing with the internal ADC) if you have enough ADC capacity (enough pins connected to the ADC and a fast enough ADC or multiple ADCs to read them at a high enough frequency) to do the sensing for four driver boards.

Thank you @bartios for pointing out this possibility.
I’ve already bought the DVR8302 and Teensy 4.1, so I am going to try to see how much I can get from the hardware I have. As for the timers and ADC, the board seems to have plenty, but I am not sure if there are any limitations or incompatibilities when using them all together. Perhaps someone in this forum has already experimented with the Teensy and can provide some advice on its performance and capabilities.