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.

DRV8811 Drive Control

Other Parts Discussed in Thread: DRV8811

I'm having trouble reliably driving a DC stepper motor with the DRV8811. I should start out by saying that I'm very new to DC stepper control, and only know what I've picked up during this project over the last few weeks.

My current control scheme utilizes 1/8 step micro-stepping at 12VDC drive voltage, and an imposed current limit of about 0.4A (PWM controlled via the 8811). Synchronous rectification is disabled, and it's currently set up in "slow decay" mode. The application rotates a slightly asymmetrical load at a fixed rate (about 60RPMs), for extended periods of time.

Figure 1: Motor Example with General Load Condition

The only issues I experience are during start-up, in particular orientations. I am not 100% convinced that there is a correlation to the physical orientation of the load, as much as the position of the center of mass when power is removed from the motor. Occasionally, on power-up, the motor will stall for a second or two, shake somewhat violently (for a 4 in-oz motor), and occasionally begins to rotate in the opposite direction.

I have tried several "start-up" routines, at the suggestion of a colleague, which entail starting the motor in a locked position, starting the motor at lower RPMs and increasing the speed gradually (over a half-rotation or so),  or some variation/combination of the two. I have had success in limiting the frequency of occurrences with these routines, but they still do occur.

Power is an issue in my application as well, so I've reduced the drive current to as little as I possibly can. I have noticed, though, that increasing the current and/or voltage to the motor does not necessarily improve performance. In some instances, it exaggerates the issue I'm experiencing.

From the small amounts of playing around I've done, there does seem to be some relation to the stopped position of the rotor, and whether or not it came to a rest in a particular position. If, in a test condition, I locked the rotor by having the control software hold the rotor in one location, then remove power, the motor never stalls or rotates backwards. If power is removed without any pre-condition, however, the motor typically shutters a little during every power up, and occasionally rotates in the opposite direction.

I'm fairly confident this is user/control error, and hopefully there's a fairly easy fix. If anyone has any suggestions, I'd be very grateful for the help.

  • What the you are experiencing is pretty normal when it comes to stepper motors. It is called resonance and it is caused by the “hammering” effect as each step command oscillates around the commanded position. For some speeds, this effect is worst than for others, as it is directly proportional to how off you are from the commanded position when a new step is issued. In other words:


    You note that synchronous rectification has been disabled, but you are using slow decay mode. This is not possible. On Asynchronous decay, slow decay mode is not reachable as the opposing side body diodes will conduct. As a result, all you can get is asynchronous fast decay. I am not saying this is the root cause, but fast decay by definition offers a little bit less torque per step than slow decay. Can you repeat the testing with real slow decay by enabling synchronous decay (SRn = LO)? I realize that maybe SRn is being made HI in order to remove some of the heat from the driver by utilizing external schottky diodes, but I would like to see if we can remove some of the resonance by going to slow decay.

     

    The other detail that truly scares me is the fact that the motor is going backwards. This is definitely some major resonance here. It should not be allowed to happen, but is again one of the typical behaviors of steppers. What we need to do here is accelerate with an acceleration profile that eradicates this problem. To be honest, there is no way I can possibly know what this acceleration profile’s parameters looks like as each application is unique. These parameters must be found empirically. But once found, they should offer reliable motion. Ideally you will want not to elicit the culprit frequency, or the one that exacerbates resonance. I realize this may be hard to understand as how can you know which frequency that is? It is not a trivial endeavor but it can be determined by accelerating the stepper very slowly and making a note of which speed the motor reacted to more adversely. You can then choose a starting frequency and acceleration rate such that said speed is not utilized.

     

    One last detail. Since this is an off balance application, e.g. the application load is different depending on where the motor stopped/started, you may have a little bit of a challenge finding the right acceleration profile. In essence, you can no longer deem this application identical for the entre rotation span. The inertia requirements during start up will be different depending on where the center of mass is located. This almost calls for some sort of home sensor so that the application is initialized at first and then position is maintained through code. I think this is the only way to ensure the application always starts the same. Otherwise is too random. Again, this is just one of the ways in which steppers work. If you decide to install a home sensor, you would have some kind of flag to slowly take the stepper to a known position. You can then count steps and go from there.

     

    Hope the info helps.

     

    Best regards,

     

    JIQ

    Jose I Quinones