Discussion and Research on Multi-Level Microstepping Drive Methods for Stepper Motors
2026-04-06 06:00:45··#1
As an electromagnetic mechanical device, the feed resolution of a stepper motor depends on microstepping technology. Software microstepping offers advantages such as low cost, high efficiency, and ease of modification due to its programming flexibility and versatility. It also addresses issues like low-frequency vibration and noise that can occur at low speeds. However, a single software microstepping approach presents a trade-off between accuracy and speed: more microsteps result in higher accuracy but lower speed; conversely, increasing speed requires fewer microsteps. Therefore, a multi-level microstepping system was designed to achieve different microstepping levels while maintaining varying speeds. 1. Microstepping Principle The microstepping mechanism is inherent in stepper motor control. For example, a three-phase stepper motor energized sequentially in the order A→B→C… operates in full steps. Energized in the order A→AC→C→CB→B→BA→A…, it operates in half-steps. Taking A→B as an example, if we consider the currents of each phase as vectors, the transformation from a full step to a half step involves inserting a transition vector IAB between IA and IB. This is because the direction of the resultant current vectors determines the direction of the stepper motor's resultant magnetomotive force (MMF), and the rotation angle of the resultant MMF is itself the step angle of the stepper motor. Clearly, the insertion of IAB changes the magnitude of the rotation of the resultant MMF, causing the stepper motor's step angle to change from θb to 0.5θb, thus achieving 2-step microstepping. Therefore, the microstepping principle of a stepper motor is to reduce the rotation angle of the resultant MMF by regularly inserting current resultant vectors at equal angles, thereby achieving the purpose of microstepping control. Inserting the resultant vector AB between phases A and B of a three-phase stepper motor achieves 2-step microstepping. To achieve 4-step microstepping, we only need to insert three vectors I1, I2, and I3 between A and AB, making the rotation angle of the resultant MMF θ1=θ2=θ3=θ4, thus achieving 4-step microstepping. However, 4-step subdivision is different from 2-step subdivision. Since the insertion of the 3 vectors I1, I2, and I3 decomposes the current vector IB, the control pulse has become a stepped wave. The higher the subdivision level, the more complex the stepped wave. When a three-phase stepper motor operates in full steps, the rotation process for achieving 2-step subdivision is IA→IAB→IB; the rotation process for achieving 4-step subdivision is IA→I2→IAB…; and the rotation process for achieving 8-step subdivision is IA→I1→I2→I3→IAB…. It is evident that different subdivision steps require the insertion of different current synthesis vectors. 2. Implementation of the Multi-Level Subdivision Drive System 2.1 System Composition The system consists of a host computer, a keyboard input system, a stepper display system, and a stepper control system. The host computer uses the AT89C51 microcontroller, a low-power 8-bit microcontroller with a 4K-byte Flash programmable, erasable, and read-only memory, which simplifies the system configuration and meets the data storage space requirements of this system. The host receives step control data from the serial port and processes it to implement step control. The keyboard input system is used to input the required microstepping levels. During system design, considering that with increasing microstepping precision, such as 128 steps, the step angle becomes sufficiently small to meet various stepping requirements, a power of 2 is used as the microstepping reference. The stepping display system uses an LCD to display the current microstepping level and the resulting step angle, among other parameters. To reduce circuit complexity, the smallest unit displayed is specified as 0.01°. The stepping control system consists of a D/A conversion section and a drive system. The D/A conversion section includes three DAC0830 integrated chips and a data latch system. The DAC0830 has an 8-bit conversion resolution and offers advantages such as microprocessor compatibility, low cost, simple interface, and easy conversion control. The function of the D/A conversion section is to convert the stepped waveform value represented by binary code into a corresponding current value output, which is then amplified by the drive system to control the stepper motor's rotation. The drive system uses transistors to amplify the current. 2.2 Generation of Subdivision Step Waves The subdivision process involves inserting and converting the current synthesis vector. The prerequisite for current synthesis vector conversion is the insertion of the synthesis vector. In the system, the host calculates relevant parameters based on the set subdivision level and generates the corresponding step wave by looking up a table, thus inserting the current synthesis vector. Under the control signal for forward or reverse rotation, the step wave pulse is sent from the output port through the latching system to the D/A converter DAC0830 for current synthesis vector conversion, outputting the corresponding current value. This value is then amplified and used to control the stepper motor, thereby achieving subdivision drive. The insertion of the current synthesis vector is crucial for subdivision, and to obtain the current synthesis vector, a step wave must first be generated. As shown in Figure 1, in the case of a three-phase motor operating at half-step speed, to achieve 4-step subdivision, the B-phase current must be divided into 4 parts, but not equally; θ1=θ2=θ3=θ4 must be ensured. If the current vectors corresponding to θ1, θ2, θ3, and θ4 are IB1, IB2, IB3, and IB4 respectively, then within the triangle corresponding to θ1, let the step angle be θb. Then α = 180° - θb and β = θb - θ1. According to the sine theorem, considering the general case, since the stepper motor control pulse waveform is stepped during subdivision, when performing 4-step subdivision on phase B, its current input is IB1, IB1+IB2, IB1+IB2+IB3, IB1+IB2+IB3+IB4, and the corresponding angles through which the synthesized magnetomotive force rotates are θ1, θ1+θ2, θ1+θ2+θ3, and θ1+θ2+θ3+θ4. At this time, let IBk be the current value of the kth order in the stepped wave of phase B in the current synthesis vector, and θk be the angle through which the synthesized magnetomotive force rotates at this time. Therefore, for phase B, when the step angle of the stepper motor is θb, considering IA=IB, the current value of any step of the stepped waveform is the same. Similarly, the stepped waveform current values corresponding to phases A and C in the subdivision can be obtained. To solve equation (1), considering that the conversion accuracy of the D/A device DAC0830 is 8 bits and the conversion settling time is 1μs, a maximum of 128 subdivision steps were performed. The corresponding subdivision current values were obtained and converted accordingly to obtain the corresponding binary value list. At this time, all the values in the list are the current values of each step of the stepped waveform when 128 subdivision steps are implemented. 2.3 Implementation of multi-level subdivision drive To implement multi-level subdivision on the basis of subdivision, different stepped waveforms must be generated for different subdivision levels. For this reason, the system adopts the cyclic incremental lookup table method. First, a staircase waveform value storage table is established. There are two methods: one is to create a corresponding table for each subdivision mode, which allows for diverse subdivision types but requires a large table size; the other, which is adopted by this system, is to create only one table for the number of steps corresponding to the maximum subdivision level, greatly reducing the required storage space and minimizing instability factors during program operation. In specific control, the system achieves multi-level subdivision driving by setting a cyclic increment base, so that different subdivision levels correspond to different subdivision steps. The cyclic increment base refers to the number of steps required for equal-interval addressing for different subdivision levels. The cyclic increment base is obtained by the corresponding calculation formula after the subdivision level is set. Since the maximum subdivision step size of this system is 128 steps, the maximum table length is 128 bytes. If the subdivision step size is m steps, then the cyclic increment base is LB = (128/m) - 1. Different levels correspond to different cyclic increment bases, and the same table generates the staircase waveform required for multi-level subdivision. Furthermore, based on the overall control, if it is subdivided into m steps, and the current values of each phase during each m step are analyzed and compared, the following pattern can be found: the changing trend of the current values of each phase appears cyclically with the phase change, as shown in Table 1. Table 1: Changing Trend of Current Values of Each Phase in Subdivided Control Phase A→BB→CC→A Phase A: High → Decreasing Current Value = 0 Phase B: Increase → High Phase C: Increase → High Phase D: Decreasing Current Value = 0 Phase C: Current Value = 0 Phase D: Increase → High Phase D: Decreasing In Table 1, each hold or change lasts for m/2 steps, and its good cyclicality can be seen. Based on the above pattern, in specific control, the system implements subroutine control for the corresponding current value changes of each phase when controlled from A to B, while the overall control is implemented using a circular shift method. That is, as the synthetic magnetomotive force rotates from A to B, B to C, and C to A, the control data for the same output address appears cyclically every m steps. This method simplifies the actual control program and improves control efficiency.