STEP MOTOR CONTROL AND START POSITION

Herkese merhaba,
Bir proje üzerinde çalışıyorum ve şu ana kadar bir sorunu çözemedim. projede kullandığım ekipman; Arduino, tb6600, nema 23 motor ve güç kaynağı sistem şemasını sorunsuz bağladım Sistemin 3 nema motoru ve 3 tb6600 motor sürücüsü var.
Motorları istediğim gibi hareket ettirebiliyorum, kod sorunsuz çalışıyor. Örneğin ilk motor 4 tur döndükten sonra ikinci motor 3 tur sonra üçüncü motor 2 tur dönüyor. şu ana kadar bir sorun yok. Yardım istediğim nokta, sistemi çalıştırdığımda çalışıyor olması, ancak güç aniden kesildiğinde ve sistem tekrar açıldığında, step motorların başlangıç pozisyonlarına dönmesini istiyorum. bu motorlar konveyör sisteminde kullanılacaktır. Elektrik kesildikten sonra tekrar enerji verildiğinde, önce motorlar başlangıç konumuna dönmeli ve sonra çalışmaya başlamalıdır.
Lütfen bana yardım et ?

int driverPUL = 3;
int driverDIR = 2;
int driverPUL2 = 5;
int driverDIR2 = 4;
int driverPUL3 = 7;
int driverDIR3 = 6;

geçersiz kurulum () {
pinMode (sürücüPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
pinMode (sürücüPUL2, OUTPUT);
pinMode (sürücüDIR2, OUTPUT);
pinMode (sürücüPUL3, OUTPUT);
pinMode (sürücüDIR3, OUTPUT);
}

geçersiz döngü () {

for (int x = 0; x <= 16000; x ++)
{
digitalWrite (sürücüDIR, 1);
digitalWrite (driverPUL, HIGH);
gecikme Mikrosaniye (90);
digitalWrite (sürücüPUL, DÜŞÜK);
gecikme Mikrosaniye (90);
}

digitalWrite (sürücüDIR, 1);
digitalWrite (sürücüPUL, DÜŞÜK);
digitalWrite (sürücüPUL, DÜŞÜK);
gecikme (10);

for (int x = 0; x <= 200; x ++)
{
digitalWrite (driverDIR, 0);
digitalWrite (driverPUL, HIGH);
gecikme Mikrosaniye (10000);
digitalWrite (sürücüPUL, DÜŞÜK);
gecikme Mikrosaniye (10000);
}
digitalWrite (sürücüDIR, 1);
digitalWrite (sürücüPUL, DÜŞÜK);
digitalWrite (sürücüPUL, DÜŞÜK);
gecikme (10);
// ikinci motor
for (int x = 0; x <= 16000; x ++)
{
digitalWrite (sürücüDIR2, 1);
digitalWrite (sürücüPUL2, YÜKSEK);
gecikme Mikrosaniye (90);
digitalWrite (sürücüPUL2, DÜŞÜK);
gecikme Mikrosaniye (90);
}

digitalWrite (sürücüDIR2, 1);
digitalWrite (sürücüPUL2, DÜŞÜK);
digitalWrite (sürücüPUL2, DÜŞÜK);
gecikme (10);

for (int x = 0; x <= 200; x ++)
{
digitalWrite (driverDIR, 0);
digitalWrite (sürücüPUL2, YÜKSEK);
gecikme Mikrosaniye (10000);
digitalWrite (sürücüPUL2, DÜŞÜK);
gecikme Mikrosaniye (10000);
}
digitalWrite (sürücüDIR2, 1);
digitalWrite (sürücüPUL2, DÜŞÜK);
digitalWrite (sürücüPUL2, DÜŞÜK);
gecikme (10);
// üçüncü motor

for (int x = 0; x <= 16000; x ++)
{
digitalWrite (sürücüDIR3, 1);
digitalWrite (sürücüPUL3, YÜKSEK);
gecikme Mikrosaniye (90);
digitalWrite (sürücüPUL3, DÜŞÜK);
gecikme Mikrosaniye (90);
}

digitalWrite (sürücüDIR3, 1);
digitalWrite (sürücüPUL3, DÜŞÜK);
digitalWrite (sürücüPUL3, DÜŞÜK);
gecikme (10);

for (int x = 0; x <= 200; x ++)
{
digitalWrite (sürücüDIR3, 0);
digitalWrite (sürücüPUL3, YÜKSEK);
gecikme Mikrosaniye (10000);
digitalWrite (sürücüPUL3, DÜŞÜK);
gecikme Mikrosaniye (10000);
}
digitalWrite (sürücüDIR3, 1);
digitalWrite (sürücüPUL3, DÜŞÜK);
digitalWrite (sürücüPUL3, DÜŞÜK);
gecikme (10);
}

Hello to everyone,
I'm working on a project and haven't been able to fix a problem so far. the equipment I used in the project; I connected arduino, tb6600, nema 23 motor and power supply system scheme without any problems The system has 3 nema motors and 3 tb6600 motor drivers.
I can move the engines as I want, the code runs smoothly. For example, after the first engine turns 4 turns, the second engine turns 3 turns, then the third engine turns 2 turns. so far there is no problem. The point I ask for help is that it works when I power up the system, but when the power is suddenly cut off and the system is turned back on, I want the step moors to return to their starting position. these motors will be used in the conveyor system. When the power is re-energized after the power is cut, first the motors must return to the starting position and then start working.
please help me ?

limit switch?

I do not use switches. this is the code I use,
int driverPUL = 3;
int driverDIR = 2;
int driverPUL2 = 5;
int driverDIR2 = 4;
int driverPUL3 = 7;
int driverDIR3 = 6;

void setup (){
pinMode (driverPUL, OUTPUT);
pinMode (driverDIR, OUTPUT);
pinMode (driverPUL2, OUTPUT);
pinMode (driverDIR2, OUTPUT);
pinMode (driverPUL3, OUTPUT);
pinMode (driverDIR3, OUTPUT);
}

void loop (){

for (int x=0 ; x <= 16000; x++)
{
digitalWrite(driverDIR, 1);
digitalWrite(driverPUL, HIGH);
delayMicroseconds(90);
digitalWrite(driverPUL, LOW);
delayMicroseconds(90);
}

digitalWrite(driverDIR, 1);
digitalWrite(driverPUL, LOW);
digitalWrite(driverPUL, LOW);
delay(10);

for (int x=0 ; x <= 200; x++)
{
digitalWrite(driverDIR, 0);
digitalWrite(driverPUL, HIGH);
delayMicroseconds(10000);
digitalWrite(driverPUL, LOW);
delayMicroseconds(10000);
}
digitalWrite(driverDIR, 1);
digitalWrite(driverPUL, LOW);
digitalWrite(driverPUL, LOW);
delay(10);
//ikinci motor
for (int x=0 ; x <= 16000; x++)
{
digitalWrite(driverDIR2, 1);
digitalWrite(driverPUL2, HIGH);
delayMicroseconds(90);
digitalWrite(driverPUL2, LOW);
delayMicroseconds(90);
}

digitalWrite(driverDIR2, 1);
digitalWrite(driverPUL2, LOW);
digitalWrite(driverPUL2, LOW);
delay(10);

for (int x=0 ; x <= 200; x++)
{
digitalWrite(driverDIR, 0);
digitalWrite(driverPUL2, HIGH);
delayMicroseconds(10000);
digitalWrite(driverPUL2, LOW);
delayMicroseconds(10000);
}
digitalWrite(driverDIR2, 1);
digitalWrite(driverPUL2, LOW);
digitalWrite(driverPUL2, LOW);
delay(10);
//üçüncü motor

for (int x=0 ; x <= 16000; x++)
{
digitalWrite(driverDIR3, 1);
digitalWrite(driverPUL3, HIGH);
delayMicroseconds(90);
digitalWrite(driverPUL3, LOW);
delayMicroseconds(90);
}

digitalWrite(driverDIR3, 1);
digitalWrite(driverPUL3, LOW);
digitalWrite(driverPUL3, LOW);
delay(10);

for (int x=0 ; x <= 200; x++)
{
digitalWrite(driverDIR3, 0);
digitalWrite(driverPUL3, HIGH);
delayMicroseconds(10000);
digitalWrite(driverPUL3, LOW);
delayMicroseconds(10000);
}
digitalWrite(driverDIR3, 1);
digitalWrite(driverPUL3, LOW);
digitalWrite(driverPUL3, LOW);
delay(10);
}

The only thing I want is that the motors come back to their starting position when the system is powered. how can i do that

And how do you think you will find the end position without limit switch?

I understood thank you.
how can I do that?
Would you recommend a helpful video or narration?

Topics merged

digitalRead(pinnumber) ?

omeratessss:
I understood thank you.
how can I do that?
Would you recommend a helpful video or narration?

You seem to have only one stepper motor that needs to return to a starting position. Since you did not design the system with that requirement, you have to add the capability. What does the first stepper motor move? That is where the micro-switch must be added to in order to know when that component is at the starting position, not when motor one is at the starting position.
Can you add the micro-switch so the device can be moved to press and then release a micro-switch?
Paul