Pages: [1]   Go Down
Author Topic: Micro Stepping without a motor Driver  (Read 1361 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Malaysia
Offline Offline
Sr. Member
****
Karma: 7
Posts: 393
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Shannon Member
****
Karma: 162
Posts: 10496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
  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).
Logged

[ I won't respond to messages, use the forum please ]

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
God Member
*****
Karma: 27
Posts: 829
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

Pages: [1]   Go Up
Jump to: