Problema al parecer por alimentacion

Hola, tengo un proyecto de una banda transportadora. Cuento con 6 sensores de reflectancia infrarroja E18-D80NK para las determinadas paradas de la banda, un modulo rele de estado solido de dos canales que cumple la función de alimentar un contactor a 24VAC, un arduino mega alimentado por una fuente de 9VDC, y dos botones para el reset y puesta en marcha de los motores.

Cuando no tengo conectado el motor al contactor, y realizo las respectivas pruebas, se ve como el contactor se activa y desactiva acorde a la programación, Cuando el motor es conectado al contactor, solo se para el motor cuando llega al ultimo sensor, presentando un fallo en la logica.

He tratado alimentar de manera independiente tanto los sensores como el modulo rele con fuentes de 9 VDC o de 5VDC y de ninguna de las dos maneras me ha funcionado, dejando las tierra tanto independietes como comunes.


int contador= 0;
const int luzmarcha=3;
const int luzreinicio=2;
const int luzmotor=4;
const int reset = 5;
const int marcha =6;
const int foto1 = 7;
const int foto2 = 8;
const int foto3 = 9;
const int foto4 = 10;
const int foto5 = 11;
const int motor1 = 28;
const int motor2 = 29;



void setup() {
  pinMode(marcha, INPUT_PULLUP);
  pinMode(foto1, INPUT);
  pinMode(foto2, INPUT);
  pinMode(foto3, INPUT); 
  pinMode(foto4, INPUT);
  pinMode(foto5, INPUT);
  pinMode(reset, INPUT_PULLUP);
  pinMode(motor1, OUTPUT); 
  pinMode(motor2, OUTPUT);   
  pinMode(luzmarcha, OUTPUT);
  pinMode(luzreinicio, OUTPUT);  
  pinMode(luzmotor, OUTPUT);
}



void primeraestacion (){
digitalWrite (luzmarcha,HIGH);
  while (digitalRead(foto1)!=HIGH){
    digitalWrite (motor1,LOW);
    digitalWrite (motor2,LOW);
  }
  contador=1;
  return;
}


void segundaestacion (){
  digitalWrite (luzmarcha,HIGH);
  while (digitalRead(foto2)!=HIGH){
    digitalWrite (motor1,LOW);
    digitalWrite (motor2,LOW);
  }
  contador=2;
  return;
}

void terceraestacion (){
  digitalWrite (luzmarcha,HIGH);
  while (digitalRead(foto3)!=HIGH){
   digitalWrite (motor1,LOW);
    digitalWrite (motor2,LOW);
  }
  contador=3;
  return;
}

void cuartaestacion (){
  digitalWrite (luzmarcha,HIGH);
  while (digitalRead(foto4)!=HIGH){
   digitalWrite (motor1,LOW);
    digitalWrite (motor2,LOW);
  }
  contador=4;
  return;
}

void final (){
  digitalWrite (luzmarcha,HIGH);
  while (digitalRead(foto5)!=HIGH){
    digitalWrite (motor1,LOW);
    digitalWrite (motor2,LOW);
  }
  contador=4; //SI SE QUIERE REINICIAR PONER CONTADOR EN 0
  return;
}


void loop() {
  // put your main code here, to run repeatedly:
digitalWrite (marcha,LOW); 
digitalWrite (foto1,LOW);
digitalWrite (foto2,LOW); 
digitalWrite (foto3,LOW);
digitalWrite (foto4,LOW); 
digitalWrite (foto5,LOW);
digitalWrite (reset,LOW); 
digitalWrite (motor1,HIGH);
digitalWrite (motor2,HIGH);
digitalWrite (luzmarcha,LOW);
digitalWrite (luzmotor,LOW);
digitalWrite (luzreinicio,LOW);


if (digitalRead (reset)== HIGH){
   
   digitalWrite (luzreinicio,HIGH);
   contador=0;
}

 
if (digitalRead (marcha)== HIGH){
  if (contador ==0){
  primeraestacion ();
}

if (digitalRead (marcha)== HIGH){
  if (contador ==1){
  segundaestacion ();
}
}

if (digitalRead (marcha)== HIGH){
  if (contador ==2){
  terceraestacion ();
}
}

if (digitalRead (marcha)== HIGH){
  if (contador ==3){
  cuartaestacion ();
}
}

if (digitalRead (marcha)== HIGH){
  if (contador ==4){
  final ();
}
}

}
}

Google translate:

No publique en "Uncategorized".
Publique preguntas en idioma español en la sección de español del foro.

Moderador:
Por favor, lee las Normas del foro
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.

El rele es de los comunes de Arduino o es uno que tu has cableado usando algun transitor para activarlo? En ese caso es posible que hayas olvidado poner un diodo en antiparalelo entre bornes de la bobina del rele y eso genere el problema que describes.
Da mas detalles del relé y de todo lo que tienes conectado.
Esquema y fotos pueden servir.

La salidas del arduino van hacia el modulo rele, que este a su vez activa y desactiva el contactor, que este alimenta el motor.

Cuando lo pruebo desconectando las lineas del motor el contactor si activa y se desactiva correctamente, pero al conectar las lineas del motor, este solo se detiene cuando llega al ultimo sensor.

(Publicare tambien el problema en el foro de arduino en español, que no me habia fijado que estaba en el de ingles)

Usas relé SSR estado sólido no, para accionar las bobinas del contactor.
Cuando accionas el motor se produce un ruido electrico que te esta bloqueando el comportamiento del Arduino.
La solución mas simple es colocar los cables que alimentan el arduino dentro de un nucleo ferrite. Como los que ves en cables USB, cables HDMi, etc.
Los dos cables deben estar envueltos por este cilindro de ferrito. Eso bloquea la tensión de modo común que provoca el apagado del motor.

Estoy usando este adaptador, entonces pondría la placa a este adaptador?

O te refieres a los cables de 5v y GND que saco del Arduino?

Muchas gracias

Hi,
Para poder darte una contestacion podrias explica el processo completo de que se trata el projecto. Que hace el motor. Quu clase de motor estas hablendo, el voltaje y la corriente que debe alimentar el relay.

¿Cuál es el sentido de escribir en las entradas?

digitalWrite (marcha,LOW); 
digitalWrite (foto1,LOW);
digitalWrite (foto2,LOW); 
digitalWrite (foto3,LOW);
digitalWrite (foto4,LOW); 
digitalWrite (foto5,LOW);
digitalWrite (reset,LOW); 

Además, se están desactivando las R pullup de los pines reset y marcha al eschibir LOW en esos pines.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.