Proyecto contador de longitud mediante pulsos y motor trifasico

Hola, buen dia. Espero me puedan ayudar con esto.
Estoy diseñando una maquina que enrede cuerda, mediante un motor trifásico y un contador de pulsos. ya conecte el pulsador. cada que la cuerda va avanzando (tirada por el motor) gira una polea que presiona un interruptor cada vuelta. el contador funciona.
el error que no puedo resolver es el siguiente.
conecte un relevador al arduino que enciende el contactor del motor trifásico. pero a la hora de que arduino manda la señal de arranque, y el motor se enciende, el contador suma pulsos, a pesar de que no esta siendo pulsado, lo mismo sucede cuando el motor trifásico se apaga. esto hace que la medición sea errada. espero me puedan ayudar. gracias
les dejo el codigo del programa.
(el motor a pasos que programé es para un cambio de fleca que hace la maquina, el relevador que controla el contactor del motor esta en la entrada analogica a0, pero la usé como digital, esto pensando que se solucionaria el problema si alejaba esa salida de la entrada del pulsador)

volatile int contador = 0;

static volatile unsigned long debounce = 0;
int metros=27;
int n ;
int reset= 10;
int direccion= 9;
int pasos= 13;
#define VELOCIDAD 2000
int totalPasos=510;
int x;

void setup(){
Serial.begin(19200);
pinMode(3,INPUT_PULLUP); // interrupcion
attachInterrupt( 1, ServicioBoton, HIGH);
///RELE/////////////////////////////
pinMode(14,OUTPUT);
digitalWrite(14,HIGH);
/////TABLERO//////////
pinMode(reset,OUTPUT );
pinMode(pasos, OUTPUT);
pinMode(direccion,OUTPUT);

//////////inicio//

pinMode(7,INPUT_PULLUP);

do{
digitalRead(7);
Serial.println(digitalRead(7));

}while(digitalRead(7)==HIGH);

}

void loop()
{
delay(1000)
do{
digitalWrite(14,LOW);

}while(contador<metros);

digitalWrite(14,HIGH);

x=x+1;
delay (10000);
if(x%2==0){

delay(800);
digitalWrite(reset, HIGH);
digitalWrite(direccion, LOW);
n=0;
do{
digitalWrite(pasos,HIGH);
digitalWrite(pasos,LOW);
delayMicroseconds(VELOCIDAD);
n=n+1;
}while(n<totalPasos);

}

else{

delay(800);
digitalWrite(reset, HIGH);
digitalWrite(direccion, HIGH);
n=0;
do{
digitalWrite(pasos,HIGH);
digitalWrite(pasos,LOW);
delayMicroseconds(VELOCIDAD);
n=n+1;
}while(n<totalPasos);

}

contador=0;

}

void ServicioBoton()
{

if( digitalRead (3) && (micros()-debounce > 500) && digitalRead (3) ) {
debounce = micros();
contador++;
Serial.println(contador);
}
else ;
if(contador==metros){digitalWrite(7,HIGH);
}}

Hola Tyrell_W_09, bienvenido. Por favor edita tu mensaje y debes poner todo el código entre las etiquetas apropiadas code.