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: Unstable Motor Period reading in closed loop

Part Number: DRV10983

Hi,

I am setting up a drv10983 to control a bldc motor.  I have a problem where the motor starts and spins fine, but when reading the motor period register to determine the speed, I see very large oscillations from read to reed, with a fixed speed command issued to the motor driver. There is no load on the motor and it is not changing speed by 400+ rpm in the 20ms polling period.

When the motor is starting to spin, i get very consistent speed feedback from the motor period register. Then the motor driver switches modes, or something, and the value in the period register begins to oscillate wildly. Here is the trace of the variable RPM reading that I see.

Raw 8054,
Raw 7802,
Raw 8065,
Raw 8054,
Raw 7792,
Raw 8054,
Raw 8054,
Raw 7792,
Raw 7792,
Raw 8054,
Raw 7792,
Raw 7792,
Raw 8065,
Raw 7802,
Raw 7792,
Raw 8054,
Raw 7782,
Raw 7792,
Raw 8054,
Raw 7802,
Raw 7802,
Raw 8054,
Raw 8054,
Raw 7802,
Raw 8065,
Raw 8043,
Raw 7792,
Raw 8054,
Raw 8054,
Raw 7792,
Raw 8054,
Raw 8054,
Raw 7792,
Raw 7792,
Raw 8065,
Raw 7792,
Raw 7802,
Raw 8086,

It is interesting to note that I only see this problem most of the time. Very occasionally the motor seems to start up correctly and I get very smooth consistent speed readings for the entire time the motor runs. I am wondering what kind of settings in the driver chip would cause these bogus motor period readings.

  • Ariosto,

    The point of switching is most likely when the IC goes from open loop commutation to closed loop commutation.

    Have you looked at the current waveform and/or the FG signal during the operation?

    I'm thinking that the lead time may not be tuned correctly and without a load on your motor it may actually be changing speed dramatically or our algorithm is making calculations that make it appear the motor speed is changing dramatically.

    Thanks,
    Brian
  • Brian,

    Thanks for the tips!


    In your post you mentioned the lead time setting, but in the documentation and tuning manual I could not find a reference to a lead time. Could you clarify which register this setting is programmed in?

    I sampled the FG pin and saw that it's period does in fact vary significantly! Between 7.3 and 7.9ms, equating to 8219 and 7594 RPM!

    That's a huge swing in speed. It is my understanding the the FG pin represents the real speed of the motor. If this is the case, the speed of my motor really is varying like you suggested, which I was quite surprised by. I don't have another way to measure the speed over short intervals--a photo tachometer would just give me a long-running average, so I can only assume that the FG pin is correct and that the speed of the motor is changing a lot.

    I captured a waveform of the phase V current, see the attached waveform. I suspect something is wrong, based on the waveform and my comparison to it on section 4.8 of the tuning manual. The tuning manual suggests that the steady-state current will be approximately the same amplitude as the peak acceleration/open loop current. In my waveform it appears that as soon as the motor switches to closed loop mode, the current drops off dramatically. The tuning manual doesn't indicate why this may happen, but because it's not similar to picture 1, the good waveform, I suspect something is wrong.

    Full disclosure, I have not actually gone through the tuning process with the GUI myself, I am doing that now. I received a mostly implemented driver and I am writing a PID control loop for this motor, but I am finding the driver settings may not be correct, and I'll need to figure out the correct motor settings before I can make a stable PID. I have not actually used a BLDC motor before and I am a lowly programmer so I am not entirely familiar with all of the electrical concepts.

  • I've solved the speed instability:

    The driver was set to calculate t_adv using a fixed time, instead of calculating it based on motor speed and vcc. After changing the settings to calculate t_adv based on the motor speed (setting 1, not 0), the speed oscillation that I saw went away...

    Is perhaps the t_adv setting the lead time setting you were referring to?

    I'm still concerned about the apparent current drop once the motor enters closed loop.
  • Ariosto,

    Yes, t_adv (lead time) are the same.

    I'm glad to hear you've got the motor up and running.

    What you see when going from open loop (blind commutaiton) in the current is that fact that the IC is trying to accelerate based on the profile programmed. Once you go to closed loop a different profile is applied and since the motor is now synchronized less current may be required to run the same speed. Addtionally if you have set a high current limit for open loop acceleraiton our IC applies that current whether it is required or not.

    Thanks,
    Brian