Hi,
I am working on a project that I need to control simultaneously two stepper motors. I have tried to use two DRI0035 TMC 280 stepper motors driver shield by DFRIBOT. I have stacked the two modules on the top of arduino UNO and I have used the following program.
#include <SPI.h>
#include <TMC26XStepper.h>
// Define stepper motors with 200 steps per rotation, CS pin 6 or 7, dir pin 4, step pin 5 and a current of 1000mA
TMC26XStepper Stepper1 = TMC26XStepper(200,6,4,5,1000);
TMC26XStepper Stepper2 = TMC26XStepper(200,7,4,5,1000);
void setup() {
Serial.begin(9600);
Serial.println("==============================");
Serial.println("TMC26X Stepper Driver Demo App");
Serial.println("==============================");
//set this according to you stepper
Serial.println("Configuring stepper driver");
// Initialize stepper motor 1 - char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement
Stepper1.setSpreadCycleChopper(2,24,8,6,0);
Stepper1.setRandomOffTime(0);
Stepper1.SPI_setCoilCurrent(100);
Stepper1.setMicrosteps(128);
Stepper1.setStallGuardThreshold(4,0);
// Initialize stepper motor 1 - char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement
Stepper2.setSpreadCycleChopper(2,24,8,6,0);
Stepper2.setRandomOffTime(0);
Stepper2.SPI_setCoilCurrent(100);
Stepper2.setMicrosteps(128);
Stepper2.setStallGuardThreshold(4,0);
Serial.println("config finished, starting");
Serial.println("started");
}
void loop() {
Stepper1.SPI_setSpeed(10); //Set speed at 80 RPM
Stepper1.SPI_step(-600); //set step at -200 steps, that is to say stepper will turn a circle reverse
Stepper1.spi_start(); //start stepper
Stepper2.SPI_setSpeed(100); //Set speed at 80 RPM
Stepper2.SPI_step(-900); //set step at -200 steps, that is to say stepper will turn a circle reverse
Stepper2.spi_start(); //start stepper
delay(2000); //delay 2s
Stepper1.SPI_step(200); // set step at 200 steps, stepper will turn a circle forward
Stepper1.spi_start();
delay(2000);
Stepper1.SPI_setSpeed(100); // Set speed at 100 RPM
Stepper1.SPI_step(-400); // stepper will turn 1.5 circles reverse
Stepper1.spi_start();
delay(2000);
Stepper1.SPI_setSpeed(200); // Set speed at 120 RPM
Stepper1.SPI_step(800); // stepper will turn 2 circles forward
Stepper1.spi_start();
delay(1000);
}
On the second module I moved the CS jumper to D7.
The motors do not behave as expected. They just make some buzzing moise.
I am wondering if I can actually use two DRI0035 modules.
Any ideas are welcome.
Thanking you in advance