Designing more efficient stepper motor control subsystems
Contemporary stepper motor drive systems typically use an integrated power IC that drives the motor and may integrate some simple controls like the current control. More advanced control ICs also integrate a state machine to control the stepping sequence for the motor. Generally, the step timing and the motion profile are controlled by an external microcontroller or dedicated logic in an ASIC.
For multiple motor controls, either the dedicated logic is replicated for each motor or the microcontroller has additional software loading for each motor being controlled.
A new IC, the L6470, simplifies the implementation of multiple motor controls by integrating a digital control core with the driver IC. Working in voltage mode, the IC is able to manage user-defined movement profiles at up to 1/128 microstepping with minimal loading on the main microcontroller.
In this implementation, a single micro can easily manage several motors since it only has to issue high level movement commands to the IC. The controller IC L6470 for stepper motors integrates the power stage along with a digital control core on a monolithic IC.
The device can receive motion profile commands across the SPI interface and autonomously execute the complete movement using the programmed acceleration and speed profile. It can also autonomously accelerate the motor up and keep it running at a programmed speed.
The block diagram of the device is shown in Figure 1 below. The Control Logic is a programmable state machine that can receive and store parameters for the acceleration rate, deceleration rate, start speed, run speed, phase current control (PWM) parameters and step mode.
Figure 1: Shown is the block diagram of a controller IC.
Eight step modes, from full step to 1/128 microstepping are supported by the controller. For any selected step mode, the internal absolute position counter counts the number of steps or microsteps to continually track the motor position with a resolution equal to the step mode.
Rotating a 1.8 degree per step motor one full rotation in 1/128 microstepping would increment (or decrement) the position counter by 25,600 counts (128 * 200 steps). All of the motion parameters and the movement commands are received over the SPI interface.
The commands, like move forward a number of steps, are interpreted by the control logic that controls the output step time and number of steps to accelerate the motor from the starting speed to the running speed and back down to stop while moving the total number of steps commanded.
Complex movements can be made by programming queuing up and sending a set of movement commands to be sent across the SPI to the device signifi- cantly reducing the overhead on the microcontroller.
Movement, position commands
The Digital Core can execute five movement commands and four stop commands including those listed in Table 1 below.
Table 1: The Digital Core can execute five movement commands and four stop commands.
Before any movement is made, the operating parameters, Minimum Speed, Maximum Speed, Acceleration Rate, Deceleration Rate and other operating values are set using the SetParam command across the SPI interface. To ensure motion integrity, many of the motion profile settings are locked during a movement and can only be updated when the motor is stopped.
A typical movement profile for the Move command is shown in Figure 2 below. When the device receives a Move command, it calculates the required profile and executes the profile to accelerate from the minimum speed to the maximum speed and back down to end at a position N steps from the starting position all under control of the digital core hardware.
Figure 2: Shown is the typical movement profile.
The GoTo command tells the driver to move the motor to a specific position based on the internal 22bit absolute position counter.There are two GoTo commands, one that will move in the specified direction and the other that will move in most direct path, determining the direction to move that moves the least number of steps to reach the desired position.
For a 1.8 degree per step motor operation at 1/128 microstepping, the resolution of the 22bit position counter is equivalent to about 164 revolutions of the motor. Even with a significant gear reduction, the usable resolution is still well within the range of the position counter.
The movement profile for the GoTo command looks the same as a Move command, but the number of steps is automatically calculated to reach the commanded absolute position. The Run and GoUntil commands are used to run the motor at a constant speed until a stop command (Run) is received or an external event (GoUntil) occurs.
When a stop command is received the device either hard stops or decelerates down to a stop, depending on the command. The device can also be commanded to stop, hard or soft, and then tri-state the outputs.
Figure 3: Multiple run commands can implement complex movements.
Complex movements can be performed using a series of run commands, as shown in Figure 3 above. Each time a new run command is received, the device will accelerate or decelerate the motor to the new commanded speed and continue to run at that speed until the next run command or a stop command is received. When a command is received to reverse the direction of movement, the motor is decelerated down to the minimum speed and then accelerated up to speed in the opposite direction.