Go Down

Topic: Micro Stepping without a motor Driver (Read 2008 times) previous topic - next topic

organnoise

Hello,

I recently rigged up this circuit to drive a stepper:

http://itp.nyu.edu/~gg964/blog/wp-content/uploads/2012/03/Stepper_bb1.png

It is working, but the I'd like a smaller degree between steps. So now I want to implement micro stepping. Which I do not know anything about despite my googling.

I want to know if the circuit I have currently set up - a dual H-bridge to control a bi-polar stepper- can implement micro stepping?

If my current circuit doesn't support microstepping is there a circuit I can set up to allow micro stepping without use of a motor driver?

If someone could explain how microstepping works in layman's terms that would be amazing too...

Thanks!

ash901226

organnoise
micro stepping involde you to know the amount of current that flow thru the coil at a given step,want you need is to supply current until it reach to its max point, and quickly cut it off

MarkT

You could also use PWM to control the average voltage to the windings (which for a slow-moving motor controls the current
OK).  You'd need to try something like 2 to 8kHz PWM frequency I think.   And there are 4 different PWM signals needed
depending on phase although some H-bridges allow PWM on the enable input which means only one PWM signal per H-bridge.

The control loop is then something like:
Code: [Select]

  phase += phase_step ;  // phase_step == 0x400 would give 1/16th microstepping for instance
  quadrant = phase >> 14 ; // get top two bits of phase
  if (quadrant != old_quadrant)
  {
    // maybe adjust variables/pins to allow controlling the appropriate PWM pins from the sine and cosine values
    old_quadrant = quadrant ;
  }
  analogWrite (pwm_sine_pin [quadrant], sinetable [(phase >> 8) & 0x3F]) ; // lookup sine
  analogWrite (pwm_cosine_pin [quadrant], sinetable [0x40 - ((phase >> 8) & 0x3F)]) ; // lookup cosine


(So you can use table lookup in a small table of sines to get the analogWrite values, and use table
lookup to choose which PWM pins for the quadrant - there may be other house keeping like changing
direction of each H-bridge, etc)

For high performance stepper motor applications the chopper-method described by previous poster
is used which also allows running from a high voltage supply (which allows back EMF to be overcome
at higher rotation speeds).
[ I won't respond to messages, use the forum please ]

organnoise

MarkT:

Sorry I don't completely understand the code, I am using maxuino to control the stepper. Does microstepping relate to the regular way of power a stepper, as in powering the coils in the proper phase? This is how I understand I am powering a stepper properly A+,B+,A-,B-

Would sending PWM frequency between 2 - 8kHz in the same phase (A+,B+,A-,B-) be how I attain microstepping?

Sorry for not understanding your post, I am not very fluent in arduino code

Retroplayer

Micro-stepping is where you provide a sine-wave to each coil, 90 degrees out of phase with each other. The code presented is simulating the sine waves using PWM. Essentially, you need the beginning of one sinewave to start at the highest point of the first, etc.. etc..

Eh... a picture does better:

http://en.wikipedia.org/wiki/File:Drive.png


Go Up