Go Down

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

#### organnoise

##### Feb 02, 2013, 04:14 pm
Hello,

I recently rigged up this circuit to drive a stepper:

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

#1
##### Feb 02, 2013, 04:37 pm
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

#2
##### Feb 03, 2013, 12:44 am
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 will NOT respond to personal messages, I WILL delete them, use the forum please ]

#### organnoise

#3
##### Feb 04, 2013, 01:07 pm
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

#4
##### Feb 04, 2013, 10:56 pm
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