I'm trying to figure out if it's safe to drive a low-voltage hybrid stepper (200ppr) with a v1 AFMotor (the one with the L293D).
I understand that the L293D is a dumb controller, i.e. no voltage chopping, but I prefer it to the Pololu and Easydriver because it can mount directly on the Arduino.
I know that the four motor phases are controlled via PWM pins. So would it be possible to "implement" chopping by PWM'ing the pins instead of switching them high/low? the AFMotor definitely controls DC motors this way.
I don't believe it is possible to control the current in a stepper motor using PWM on an L293 driver. The proper stepper motor driver boards check the current in the coils continuously without intervention by the Arduino.
If you use the L293 the only way you can limit the current in the motor coils is by keeping the voltage low but that will greatly limit the speed at which the motor can run. The proper driver boards can use higher voltages to offset the effect of inductance of the motor coils at higher step frequencies.
Writing code for the proper driver boards is also much easier as they just need step and direction signals. The complex processing of which coil to energize is done by the driver board.
As you haven't provided a link to your motor's specifications these are only general comments.
orly_andico:
I'm trying to figure out if it's safe to drive a low-voltage hybrid stepper (200ppr) with a v1 AFMotor (the one with the L293D).
I understand that the L293D is a dumb controller, i.e. no voltage chopping, but I prefer it to the Pololu and Easydriver because it can mount directly on the Arduino.
If the actual voltage to the winding after the losses in the L293 is about right, it will work,
but you won't be able to spin the motor fast.
I know that the four motor phases are controlled via PWM pins. So would it be possible to "implement" chopping by PWM'ing the pins instead of switching them high/low? the AFMotor definitely controls DC motors this way.
You don't understand chopper-drivers. They implement a constant-current output by
a feedback loop controlling a variable duty cycle oscillator cycle-by-cycle - this requires
current sensing and comparators connected to astables or monostables - the current
changes too fast for software control to be appropriate. The hardware also detects
gross-overcurrent and shuts down (which protects against shorts or mis-wired motors).
The Arduino neither has fast-enough ADC nor enough analog comparators to really
do this job itself.
If you want to get performance (ie fast rotation) out of a stepper it has to be low-impedance
and it has to be current-driven from a supply voltage that's far larger than the winding
voltage drop - the extra voltage is needed to overcome back-EMF as the motor spins
faster.
If speed isn't an issue then a unipolar high-impedance motor is ideal as a single ULN2803
can drive two motors...
Mounting motor drivers on a shield isn't particularly good idea - the high current
paths induce noise on nearby circuitry. Its better to put the stepper motor drivers
on/near the motors and run power and control signals to them.