Fake microstepping in A4899 and LV8729 stepper-drivers?
Question
A4899's microstepping operation seems not performing as specified.  Is it fake microstepping?

Answer
Short Answer
I proved that my A4988 is doing real microstepping, as specified in datasheet.

Long Answer (TLDR)
Abstract
This long answer shows how the A4988 is tested using

High frequency signal, 1kHz, 50% duty cycle, using a oscilloscope to measure microstep timing/performance, and,

Low frequency signal, 20Hz, 10% ~ 90% duty cycle, using a stop watch to time by hand the full step, half step, and micro step operations.



References
(1) A4988 Datasheet - Allergo
(2) A4988 Stepper Motor Driver Module - AliExpress US$0.6
(3) Fake microstepping in A4899 and LV8729 stepper-drivers? - @GnuReligion,  EESE, Asked 2021apr14
(4) What could be the reasons for a stepper motor stuttering with an A4988 driver? [Locked] EESE, Asked 2021apr05
(5) What is better for precision? Stepper motor VS DC Motor [Closed] - EESE 2021apr13
(6) AliExpress HK42BYG250-001 Stepper Motor NEMA17 | High torque 1.2A 38mm stepper motor for 3D printer 42 with speed feedback
(7) Youtube video of A4988 Full Step Performance - tlfong01 2021apr18
(8) RpiMotorLib python library to drive NEMA 17 stepper for A4988 - DiyProjects 2021feb09

Appendices
Contents
Appendix A - Testing A4988 using 1kHz 50% Ducty Cycle Square Wave

Appendix B - Testing A4899 using 500Hz, 50% square wave

Appendix C - Testing A4988 Micro Stepping using 20Hz, 50%dc signa

Appendix D - Proof of concept - Motor speed is independent of PWM pulse width

Appendix E - Clarify difference between A4899's Step and Enable Signals


Appendix A - Testing A4988 using 1kHz 50% Ducty Cycle Square Wave
Chat record #1
#GnuReligion, I just started playing with A4988 a couple of days ago. I only tried full step with a bipolar motor with quadrature encoder A and B signals. This afternoon I used square wave 1kHz, 50%dc as step pauses. Preliminary test shows that full step, half step, 16th step mode drives the motor from slowest to fastest. I have uploaded the scope screen captures as my answer. I don't understand how you count the step movements. Do you use a very slow frequency, say 1 step pause per second, and use your human eyes to do the counting?










Youtube A4988 Test 01

Appendix B - Testing A4899 using 500Hz, 50% square wave
Full step


Half step not sure


Step 16


Appendix C - Testing A4988 Micro Stepping using 20Hz, 50%dc signal

Configuration

A4988 Setting - (a) full step, (b) half step, (c) microstepping (16th step)

Step pause setting = 20 step pulses per second (20Hz, 50%dc)

Stepper motor HK42BYG250-001 1.8 degrees (360 / 1,8 = 200 steps per revolution)



Results
Time taken for one revolution:
Full Step ~= 10 seconds
Half Step = ~= 20 seconds
16th Step = ~= 2:39 min ~= 159 ~=160 seconds

Conclusion
a4899 microstepping seems working OK.

Appendix D - Proof of concept - A4899 performance/Operation/Motor speed is independent of pulse width of step pulse input
Configuration

Pulse frequency = 20Hz = 20 pulses per second

Pulse width (a) 10% dc, (b) 20% dc, (c) 90% dc


Results
Times taken per revolution for different pulse widths: 10%, 50%, 90% are all the same: 10 seconds.
Conclusion
Motor speed is independent of pulse width.

Appendix E - Clarify difference between A4899's Step and Enable Signals
So far I have been using the Step signal to prove that A4899 can detect the microstep jumper configuration and perform the operation.  But I might have misled readers that the Step pin/signal is used to control the speed of the motor. It is true that Step pulse frequency can be used to control motor speed, but I think step signal is used to position the motor, or revolutions and degrees traversed. It think it is the enable signal which can be PWM, is used to control the motor speed.  So I am now extracting materials from Ref 4 and placed here for discussion.

The pin functions.


A4899 Spec Summary


Stepper motor spec summary


Notes
The above motor spec shows that torque decreases with increasing torque.  For future tests, the default 1KHz, 50%dc will be used as the default.