Description: The SparkFun AutoDriver makes it easy to put the L6470 Stepper Driver (a.k.a “dSPIN”) to work in your project. Simply connect your motors and your SPI-capable microcontroller and get steppin'!
STMicro’s L6470 is a 3A, 8-45V bipolar stepper motor driver. It has built-in overcurrent detection, undervoltage detection, overtemperature detection, stall detection, a 5-bit ADC, and a switch input that can be used for either user jog control or as a hard stop function. As if that weren’t enough, it also features microstepping support (up to 128 microsteps per full step) and PWM drive voltage limiting.
Unlike most stepper motor drivers, the dSPIN is controlled over an SPI link. It has an on-board 16MHz oscillator which allows it to autonomously execute movement commands. That means no more counting steps in your code! It also supports customized acceleration and deceleration profiles to prevent jerky starts and stops. On-board registers track current speed and location.
The logic supply voltage supports both 3.3V and 5V I/O levels.
Based on 2 ratings:
4 of 4 found this helpful:
This driver, as per the description, lets you offload the stepper complexity (acceleration/speed control, step counting) to it rather than deal with it in your program, which is super helpful for driving multiple motors. I have not chained them together, but the tutorial shows how to do this and how to set up the boards (they need lots of boilerplate code to start).
Also: ATTENTION ARDUINO MEGA USERS: The libraries provided for the autodriver are excellent, however the .ccp files have hard-coded references to the SPI pin numbers on the Uno. In order for this board to function on the Mega, you must edit the files to use the SPI pin numbers on the Mega. Hopefully this will save someone some time (it would have saved me a few hours…).
After you have your hookups soldered on, use the “SparkFundSPINexample” code to begin. The 1st defines within that example will tell you which pins goto what numbers on the arduino board. Pins 16 & 17 are A3 and A4 respectively. Know your stepper motor’s needed RMS amps, resistance per lead, and rated voltage. Look up the ST voltage mode control guide (direct link http://goo.gl/d8QJri, or lookup EVAL6470H & it will have the link to it) on page 10 it will have the equations to calculate your gains for running, accelerating, decelerating, and holding. Additionally it has tons of useful information of how the chopper motor driver works. once you’ve calulated your gains, look for the dSPIN_SetParam(dSPIN_KVAL_RUN) function and put your calculated gains IN HEX, adding additional copies of the function call to set the rest of the gains (HOLD, ACC,DEC) under the dSPIN_SetParam(dSPIN_MAX_SPEED) function, change the MaxSpdCalc() to the total number of FULL STEPS/SEC i.e. if your stepper has a step size of 1.8deg then MaxSpdCalc(1) will give you 1.8deg/sec. Under the dSPIN_SetParam(dSPIN_STEP_MODE) call, check the dSPIN_STEP_SEL_1_16 and set it to a number of microsteps per full step you want (see SparkFunL6470.h for choices available). Finally, in the loop, use the dSPIN_Move function and the number of steps input is the number of MICROSTEPS, NOT FULL STEPS. ,so calculateh ow much you want to move it, and put a direction in. They use a while “(digitalRead(dSPIN_BUSYN) == LOW);” to keep it from jumping to the next command, but i had to additionally add a “delay(1000)” after the softstop() command to ensure it didn’t immediately move to the next moment. Good luck! this was the bare minimum I needed to get this working, use the smallest amount of voltage you can bear to avoid blowing up the board (minimum 8V from the board, even if your motor is rated 6V). [WARNING: THIS STEPPER DRIVER HAS A SINUSOIDAL CURRENT, NOT ALL POWER SUPPLIES (mine included) WILL REPORT TOTAL RMS AND INSTEAD WILL ONLY REPORT POSITIVE RMS. IF YOU ARE PULLING MORE THAN 1.5 AMPS YOU ARE GOING OVER THE RMS RATING OF THE DRIVER, ADDITIONALLY YOU HAVE TO CHECK YOUR OVERCURRENT DETECTION TO COMPENSATE FOR THE SINUSOIDAL CURRENT (+/- 1.5 amps needs over 3kmilliamps overcurrent)]