Two stepper simultaneously

Hi,
I am working on my art installation, which is driven by two steppers and an arduino uno.
As well there is a button and a switch for homing the motors.
The construction controls a magnetwheel, which moves downwards and upwards.
Attached you will find a picture, the final code and the schematic with the electronics.
I think there I produced a mistake.

Now the problem is, that there is no more electricity at all on the steppers. I think I connected these wrong on the breadboard or with the arduino. Also I destroyed 4 tmc2208 drivers, I think with to much electrictiy from the power supply.

Could anybody help me to solve this problem and maby writing the code a bit more effective.

Thanks in Advance

Chris

#include "AccelStepper.h"

#include <ezButton.h>

ezButton button(10);  // create ezButton object that attach to pin 7;


// AccelStepper Setup
AccelStepper stepper1(1, 2, 5);
AccelStepper stepper2(1, 3, 6);   


// Define the Pins used
#define home_switch 9 // Pin 9 connected to Home Switch (MicroSwitch)

// Stepper Travel Variables
long TravelX;  // Used to store the X value entered in the Serial Monitor
int move_finished=1;  // Used to check if move is completed
long initial_homing=-1;  // Used to Home Stepper at startup


void setup() {

  button.setDebounceTime(50); // set debounce time to 50 milliseconds


   Serial.begin(9600);  // Start the Serial monitor with speed of 9600 Bauds
   
   pinMode(home_switch, INPUT_PULLUP);
   
   delay(5);  // Wait for EasyDriver wake up

   //  Set Max Speed and Acceleration of each Steppers at startup for homing
  stepper1.setMaxSpeed(200.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper1.setAcceleration(200.0);  // Set Acceleration of Stepper
  stepper2.setMaxSpeed(200.0);
  stepper2.setAcceleration(200.0);

// Start Homing procedure of Stepper Motor at startup

  Serial.print("Stepper is Homing . . . . . . . . . . . ");

  while (digitalRead(home_switch)) {  // Make the Stepper move CCW until the switch is activated   
    stepper1.moveTo(initial_homing);  // Set the position to move to
    stepper2.moveTo(initial_homing);
    initial_homing--;  // Decrease by 1 for next move if needed
    stepper1.run();
    stepper2.run();  // Start moving the stepper
    delay(5);
}

  stepper1.setCurrentPosition(0);  // Set the current position as zero for now
  stepper1.setMaxSpeed(200.0);     // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper1.setAcceleration(200.0); // Set Acceleration of Stepper
  initial_homing=1;
  stepper2.setCurrentPosition(0);  // Set the current position as zero for now
  stepper2.setMaxSpeed(200.0);      // Set Max Speed of Stepper (Slower to get better accuracy)
  stepper2.setAcceleration(200.0);  // Set Acceleration of Stepper
  initial_homing=1;

  while (!digitalRead(home_switch)) { // Make the Stepper move CW until the switch is deactivated
    stepper1.moveTo(initial_homing);
    stepper2.moveTo(initial_homing);
    stepper1.run();
    stepper2.run();
    initial_homing++;
    delay(5);
  }
  
  stepper1.setCurrentPosition(0);
  stepper2.setCurrentPosition(0);
  Serial.println("Homing Completed");
  Serial.println("");
 
// Print out Instructions on the Serial Monitor at Start
  Serial.println("Enter Travel distance (Positive for CW / Negative for CCW and Zero for back to Home): ");

}

void loop() {

button.loop();

if (button.isPressed()) {action();}

}

void action() {

  stepper1.setMaxSpeed(1100); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(700); // Set acceleration value for the stepper
  stepper1.setCurrentPosition(0); // Set the current position to 0 steps

  stepper2.setMaxSpeed(1100);
  stepper2.setAcceleration(700);
  stepper2.setCurrentPosition(0);

  stepper1.moveTo(10000); // Set desired move: 800 steps (in quater-step resolution that's one rotation)
   // Moves the motor to target position w/ acceleration/ deceleration and it blocks until is in position
  stepper2.moveTo(10000);
 while (stepper1.currentPosition() != 10000 || stepper2.currentPosition() != 10000) {
    stepper1.run();  // Move or step the motor implementing accelerations and decelerations to achieve the target position. Non-blocking function
    stepper2.run();
    //
    //
  }

delay (2000); // Stop vor erstem Kontakt mit Figur

  stepper1.setMaxSpeed(1100); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(8000); // Set acceleration value for the stepper


  stepper2.setMaxSpeed(1100);
  stepper2.setAcceleration(8000);


  stepper1.moveTo(22200); // andocken an das Magnet
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (1000);

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }


  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000);
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  delay (500);


  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }
  stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }
    stepper1.moveTo(23000); 
  stepper2.moveTo(23000);
 while (stepper1.currentPosition() != 23000 || stepper2.currentPosition() != 23000) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500);
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run(); 
    stepper2.run();
    //
    //
  }


// Wechsel auf 2. Magnet


 delay (2000);

  stepper1.setMaxSpeed(1300); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(10000); // Set acceleration value for the stepper


  stepper2.setMaxSpeed(1300);
  stepper2.setAcceleration(10000);

  
  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (100);

  stepper1.moveTo(22600);
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (100);

  stepper1.moveTo(22600); 
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22600); 
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

    stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22600); 
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22600); 
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

    stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22600); 
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }
delay (100);

  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

    
  
delay (100);

  stepper1.moveTo(22600);
  stepper2.moveTo(22600);
 while (stepper1.currentPosition() != 22600 || stepper2.currentPosition() != 22600) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (100);


  stepper1.moveTo(18000); 
  stepper2.moveTo(18000);
 while (stepper1.currentPosition() != 18000 || stepper2.currentPosition() != 18000) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (2000); //Pause in der Mitte




  stepper1.moveTo(22200);
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  delay (800);

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (800);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (800);

   stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (800);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (800);
  
  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (600);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (600);
  
  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (600);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (600);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (400);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (400);
   
   stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (400);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (400);
   
   stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.setMaxSpeed(1400); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(8000); // Set acceleration value for the stepper


  stepper2.setMaxSpeed(1400);
  stepper2.setAcceleration(8000);



   delay (200);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (200);
   
  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (200);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (200);

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (100);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

   delay (50);

stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.setMaxSpeed(1500); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(8000); // Set acceleration value for the stepper


  stepper2.setMaxSpeed(1500);
  stepper2.setAcceleration(8000);

// Ohne Delay



  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

    stepper1.moveTo(22200); 
  stepper2.moveTo(22200);
 while (stepper1.currentPosition() != 22200 || stepper2.currentPosition() != 22200) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  stepper1.moveTo(23500); 
  stepper2.moveTo(23500);
 while (stepper1.currentPosition() != 23500 || stepper2.currentPosition() != 23500) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

  delay (2000);

   stepper1.setMaxSpeed(1000); // Set maximum speed value for the stepper          //Start mit langsamer Geschwindigkeitserhöhung
  stepper1.setAcceleration(8000); // Set acceleration value for the stepper


  stepper2.setMaxSpeed(1000);
  stepper2.setAcceleration(8000);


  stepper1.moveTo(10000); 
  stepper2.moveTo(10000);
 while (stepper1.currentPosition() != 10000 || stepper2.currentPosition() != 10000) {
    stepper1.run();
    stepper2.run();
    //
    //
  }

delay (2000);


  stepper1.moveTo(0);
  stepper2.moveTo(0);
  while (stepper1.currentPosition() != 0 || stepper2.currentPosition() != 0) {
    stepper1.run();  // Move or step the motor implementing accelerations and decelerations to achieve the target position. Non-blocking function
    stepper2.run();
    //

    //
  }

}


Schema_Magnerat.pdf (391,3 KB)

I'm surprised you have not also burned out the UNO.
The stepper motors need a separate power supply.
You cannot power motors from an UNO 5v output.

How much current do your steppers require?

Hi,
Thanks for your reply.

They are already connected to the 5V Arduino Uno. The seperate Power supply delivers 12V to the steppers. And yes, I burned already a UNO board.
I think I do not connect them correctly to the breadboard. I think they should be all on the same side of the breadboard? But last time I tried to do so, I burned the Arduino...

First, you should not use a breadboard for motors. The breadboards cannot handle the high currents.
Second, you must determine the current required by your steppers and adjust the driver accordingly.
Third, you need a power supply that can supply the required current for the motors.

2 Likes

Depending on you motor requirements you should consider one of these drivers
https://www.omc-stepperonline.com/stepper-motor-driver

What should I use instead of a breadboard for the motors?
And how do I connect in relation to my schematic the other components to each other and the arduino uno?
Could you please give a feedback to my schematic?

I have two Nema-17, the external power of 9-12V should be enough for them, right? I did it like the guy in this video: https://www.youtube.com/watch?v=7spK_BkMJys, basically I installed the whole thing as he suggested...

Is the following power supply a proper solution?:

Thanks for your support!

The drivers I suggested have screw terminals for wire connections, so no breadboard is needed.

Is the following power supply a proper solution?

Probably not but as I already mentioned you need to find out the power requirements of your motors. Then you can select the appropriate power supply

Yes I saw that on the picture.
There is a recommended current of 12-24V, so I think the power supply on the pic could be possible..?

So as far as I got it right: I buy two of these drivers you recommend (for each stepper one, right?) and connect them directly to the arduino uno? Is for this project an arduino mega better?
Where do I connect the button and the switch?

Don't buy anything until we get this straight. 12-24V is the voltage, we need to know the current which is in Amps (A) not V
I think it best if you post the data sheet for the steppers you have. So we can see.

Here the sheet…

Thank you. Let me review.

Two of these will be your best solution for the drivers.
They are rugged, won't get hot and are more tolerant to over currents.
https://www.omc-stepperonline.com/digital-stepper-driver-1-0-4-2a-20-50vdc-for-nema-17-23-24-stepper-motor-dm542t

They are model DM542T, you may find them cheaper at other places.

Now you need a 24V 4A or 5A power supply. Just find one in you price range. It will connect to both drivers. If the motors are located far from the drivers and power supply then you will need some 16 gauge wire to make the connections.

1 Like

I show them connedted to pins 2 and 3 but you can use any pins.

Thank you very much for your help!
So I connect the two steppers to each driver, then to the arduino and separately the switch and button as you showed?
The power supply is connected to the drivers?
Is that correct?

What you think about the code. Could you make more effective? Now I think its akward, isnt it?

Yes to all three questions. See page 4 of the DM542 manual on how to connect. Use the common-anode connection scheme.

What you think about the code. Could you make more effective?

Why don't you wait and see if that code even works and does what you want. No point in optimizing code of it doesn't do what you want.

You may want to play around with the code to get art to work the way you want.

Thank you so much! Now Im trying to set all this things.
Could you maby recommend a proper power supply for the DM542?

maby this:

I'm located in the US, so what I might recommend might not be available to you, might be out of your price range, or may have extremely high shipping costs. It best that you search for yourself. However, I only use power supplies made by MeanWell. They are good quality, you can download the datasheets from the meanwell site and I never had any problems.

The one you selected should be OK but I can't vouch for the quality. Note that it claims to be UL certified but there is no UL mark on the product. Also, the label says " for use with information technology equipment only". Does that mean it is not suitable for motors? Who knows?

Consider one of these:
The second one is cheaper and you need to buy a power cord for it.

The second one is an industrial device intended for professionals only. It must not be used by electrical amateurs. (I know that many people use it anyway, but this is not ok and could be dangerous. It should not be recommended - especially in europe with 230V mains voltage).

1 Like

Ok, thanks for your reply, could you recommend one for my installation?

Does it have to be available in Germany or can it be anywhere in the world.
I only chose those available on Amazon.de