This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV10983: RPM Stability In Open Loop Vs Closed Loop at 3000 RPM.. Can it be improved further than +/- 1.5 rpm speed change

Part Number: DRV10983

Hello,

Unfortunately the application requires very very very stable fixed speed at 3000 RPM. ( its being used in the development of scientific instrument that has spinning optical measurement system)

The DRV10983 is sensor-less but the motor I have has 3 hall effect sensors I use one of the hall signals to generate a square wave to do a 32 bit high resolution frequency measurement on a STM32MCU

The reason I do this the resolution of  DRV10983 Speed register 0x11 and 0x12 speed registers is not high enough its only got 0.1Hz resolution so I cant see whats happening.

I multiply the 32 bit frequency Measured from hall sensor on STM32 By a large number then I apply A low pass 1st order lagging filter works great showing me a real time speed variance zoomed right in. I send the Data out via  UART and display a real time graph of the frequency on a GUI I wrote in visual studio.

The hall effect gives 4 pulses in one revolution of the motor. 200Hz on hall effect ..RPM = 200hz x 60 / 4 = 3000 RPM

In Closed Loop Mode the frequency varies 199.9 Hz 200.0Hz 200.1Hz   +/- 0.1Hz this gives 2998.5 rpm 3000.00rpm and 3001.5rpm max min plus minus 1.5rpm

In open loop the variance is less by say 0.05Hz +/- twice as good!!

I attach a picture from my 32 Bit low pas filtered frequency speed measurement in open loop and closed loop modes.its amazing the speed drift or speed hunt is massively improved by changing the controller from closed loop mode to open loop mode see pictures attached

My question is can it be improved by tuning closed loop mode to be even better than open loop mode.Is there a parameter that alters the PI speed algorithm update rate so speed hunts less in closed loop mode

By changing to open loop mode the speed hunt is far less but there is still quite a bit of movement even in open loop which the senior designer is not happy with.

In closed loop I followed the DRV10983 tuning guide and I have tried so many changes the best stability i can get is 0.1Hz +/- in 200Hz

the strangest thing is in Closed loop if you vary the 24v supply +/-0.5V the speed moves a few hundred RPM in open loop where its more stable if you vary the supply 24v +/0.5v the speed dosent move at all remains solid 3000RPM why is this

I think in closed loop mode its activley trying to regulate the speed ending up in a speed hunt. I know this is a tiny tiny amount +/- 0.1Hz or +/-1.5rpm but in my application we really need very stable speed.

Summary is it possible to tune the Closed loop to get better than +/- 1.5 RPM speed variance

For experienced BLDC motor PEOPLE  last question

If a high end Sensored BLDC Driver Was used designed  using a Microcontroller  And Hall effects with P.I Speed control algorithm could the RPM become more stable than +/- 1.5 RPM or is this the best i can ever achieve  whether DRV10983 back emf or sensored halls custom micro with BLDC driver. I know its a small percent isnt it +/-0.1 Hz in 200Hz is a tiny percentage +/- 0.05% of 3000RPM but the instrument needs very very very stable speed.

Pictures attached 3000RPM open Loop Closed Loop and also My DRV10983 settings only difference in two graphs is open loop ticked or not ticked. 

Sorry for the Long Post I found it hard to summarise my findings without giving more detail...

  • Here is a picture of the motor and the setup,

    The Rm pase to phase / 2 = 1.857 R    :::         The KT is calculated using scope to give 25.69mv/hZ

    The motors rated to 5000 RPM we use it at 3000 Rpm

    My summary is can it be improved  with parameters to do better than +/- 0.1Hz speed variance in closed loop mode at 200Hz = 3000Rpm

    I have tried every parameter i can think of and cant improve the speed hunt without going into open loop mode

    Why is speed more stable in open loop mode?? is it because the the DRV10983 is not actively controlling as much as it does in closed loop

    Would a microcontroller with hall effects and PI control ever improve or is this the best that can be achieved

  • Hi Matthew,

    Thank you for the well though out and thoroughly investigated post!

    I am going to compile and order your list of questions in the post:

    Q1: Why is the speed variation less in the open loop vs closed loop?

    A1: How the open loop works is that it will step through the commutation table at a fixed rate set by the devices internal clock. There is no feedback from the motor on determining what speed to drive the motor or when to commutate the motor. Therefore in open loop the device should have very little speed variation. In closed loop the DRV10983 will try to sense the motors BEMF to determine when to commutate the motor but since there could be noise on the BEMF signal the DRV10983 could off on its timing of when to commutate the motor causing the motors to vary a little bit.

    Q2: Does the DRV10983 have a speed PI loop in the device causing this "speed hunt"?

    A2: No the DRV10983 does not have a speed PI loop in the device. the DRV10983 will take in the speed command or Speed signal or PWM and then turn that into a percentage and then apply that percentage of Vm to the motor. This means that if you apply a higher speed command then the DRV10983 applies more voltage to the motor and therefore more current in the motor will be produced. This more current will then make the motor generate more torque which will speed up the motor. 

    Q3: Can it be improved by tuning closed loop mode to be even better than open loop mode.Is there a parameter that alters the PI speed algorithm update rate so speed hunts less in closed loop mode? 

    A3: To increase the accuracy of the holding speed in closed loop you can make sure that the motor load has no variation in torque loading. You can also try to make sure the device had good grounding and the Vm of the device is very stable. You could also impliment an external PI speed loop using your hall sensor and use the speed command to increase or decrease the speed applied to keep it at a more stable speed. 

    Q4: The strangest thing is in Closed loop if you vary the 24v supply +/-0.5V the speed moves a few hundred RPM in open loop where its more stable if you vary the supply 24v +/0.5v the speed dosent move at all remains solid 3000RPM why is this?

    A4: This is because like I said above the speed command in close loop is not telling the motor diver what speed to apply to the motor it is telling the motor driver what percentage of the Vm to apply to the motor. If the Vm is larger then the voltage applied to the motor will be larger. This means that the motor will spin faster. in open loop the motor should always be at the closed to open loop threshold no matter the Vm.

    Q5: If a high end Sensored BLDC Driver Was used designed  using a Microcontroller  And Hall effects with P.I Speed control algorithm could the RPM become more stable than +/- 1.5 RPM or is this the best i can ever achieve  whether DRV10983 back emf or sensored halls custom micro with BLDC driver. I know its a small percent isnt it +/-0.1 Hz in 200Hz is a tiny percentage +/- 0.05% of 3000RPM but the instrument needs very very very stable speed.

    A5: You could probably design a Sensored system that would be able to hold a more stable speed than a sensorless system. I am sure there are motor control algorithms that someone has developed to solve problems like this.

    Regards,

    Michael W.

  • Dear Michael,

    Thank you so much for your extremely Helpful reply.

    Please give me a couple of days to experiment and try various things to improve the speed stability.

    Thanks for clarifying my post and breaking it into more manageable blocks.

    I could have the STM32 do a PI speed loop measuring frequency with a 3000RPM set-point and alter in closed loop a 12 bit DAC voltage through a buffered follower opamp to to drive the speed demand voltage in closed loop.

    However I do not think the DRV10983 will react fast enough, each of the 10 bits drv analogue speed input resoloution moves the speed massively,

    in fact about only  0.7 v of the maximum 3.3 v analogue speed demand gives my target speed.

    Example ls going from 0.699v to 0.700v to  0.701v makes the speed swing +/- 20 rpm so i dont think it has the resolution to hold at 3000Rpm Ill try this with a STM32 PI closed loop with dac and let you know how i get on over next few days

    Many thanks for youre detailed anser and taking the time to help me

    I will do more experiments

    P.S I tried putting 3* 330n nf capacitors from u v w to gnd to smooth bemf readings in closed loop mode. It sparked and shut the motor down

    DRV10983 does not like  Like Caps across U.V.W to gnd  see picture it nearly blew up lucky after power cycle it recovered

    How can i smooth the bemf reading with extranl caps without upsetting the chip

    doing it like this in picture sparks and shuts the chip down .

     

    Many thanks for your time and help I appreciate it.

  • I am used to working with DC brushed motor drives,

    Positioning systems,

    It wont like the capacitors in that configuration the u,v,w signals are high frequency ac signals, this will ac couple the cap to GND lucky it didnt blow the chip,

    This cant be used to smooth the backemf readings in open loop,

    I will try some ferrite calmps  round the three u,v,w cables close to the terminals for uvw on the driver board

  • Hi Matthew,

    I have not found many ways to smooth out the BEMF waveform with discrete components. I do not know if adding a ferrite clamp will decrease the noise on the BEMF waveform and make the speed holding more stable.

    Regards,

    Michael