Changing stepping resolution on-the-fly

Discussion in 'Embedded Systems and Microcontrollers' started by jankopod, Oct 6, 2010.

  1. jankopod

    Thread Starter New Member

    Oct 5, 2010
    I am working on a telescope tracking project (DIY GOTO). I am using 5V 1.2A 200 steps per revolution stepper motor and an Allegro A4983 driver ( for driving stepper motor on a Pololu PCB (

    For tracking I will be driving stepper motor with 16 microsteps, but for slewing between targets the idea was to use full steps. For correct tracking and slewing I will count the steps to calculate the coordinates where the telescope is pointing. Correct driving of stepper motors is therefore important requirement for correct and accurate tracking. Tracking is done at very low speed (0.5RMP), however slewing will be done at 250 to 400 RPM, which corresponds to 500 to 800x tracking speed.
    Stepping resolution on Allegro A4983 driver can be selected with three MS pins. For 16 microsteps MS are put on LOW, and for full step MS pins are put on HIGH. I will put all three MS pins on one microcontroller pin so I could change the stepping resolution.

    The idea as I mentioned before is to use 1/16 steps for tracking and full steps for slewing. The question here is can I change stepping resolution on-the-fly? I haven't found much useful beyond the statement that changing resolution on-the-fly is a bad practice and that it could even damage the driver chip. I talked to my colleagues and one of them changes stepping resolution on-the-fly and he hasn't experienced any problems with it. The other colleague said that I should stop the motor, reset the driver and then change the resolution. I imagine that when you reset the driver, the motor shaft could rotate a little bit and then the information about the rotation of the motor would become (even more) inaccurate.
    So what do you think, any idea is very welcome.
  2. John P

    AAC Fanatic!

    Oct 14, 2008
    Since you posted this on the Embedded Systems and Microcontrollers board, I assume there's a processor involved here. Maybe if you have a source of variable frequency pulses, it would just make sense to run the driver in 1/16 step mode all the time and forget the full-step mode. Is it necessary to use it at all, if you can drive the motor at the speed you want?
  3. jankopod

    Thread Starter New Member

    Oct 5, 2010
    Yes, actual that is true. I will be using NXP LPC2138 (ARM7 architecture). I will probably generate pulses on GPIO lines or maybe with PWM. Anyhow I will have full control over the frequency of the generate pulses.

    Actually you are again correct. Maybe the first question should be about the relation between speed and missed steps of the stepper motor. I imagine that there is some number of missed steps, and that the stepper actually makes lower number of steps than there were counted.
    I wonder if there would be much larger number of missed steps at 400 RPM at 1/16 steps than at full steps. That is the main question actually.
    Maybe I created this thread on a wrong sub forum. Could you direct me to the proper sub forum.