Go Down

Topic: Giro de Motor DC [ELEVADOR] (Read 389 times) previous topic - next topic

GO_zalo

Vale pero no veo la imagen así que no se como esta conectado

Deberías poner el pulsador entre el pin y gnd y activar PinMode(xx, INPUT_PULLUP)

omarigg

Espero ahora si puedas visualizar las fotos

GO_zalo

De verdad esperas que aprecie como esta conectado nada en esa foto?

Lee las normas del foto y postea una imagen del diseño de conexiones con las etiquetas correctas para que siga ayudándote

omarigg

#18
Dec 03, 2015, 02:10 pm Last Edit: Dec 03, 2015, 02:25 pm by omarigg
Code: [Select]


/*Control de relay*/
int relay = 10;
int relay2 = 11;
int BotonDer1 = 9;
int BotonDer2 = 8;
int BotonDer3 = 6;
int BotonIzq1 = 7;
int BotonIzq2 = 3;
int BotonIzq3 = 12;
int botonp1 =2;
int botonp2 =4;
int botonp3 =5;



void setup() {               

  pinMode(relay, OUTPUT); 
  pinMode(relay2, OUTPUT); 
  pinMode(BotonDer1,INPUT);
  pinMode(BotonDer2,INPUT);
  pinMode(BotonDer3,INPUT);
  pinMode(BotonIzq1,INPUT);
  pinMode(BotonIzq2,INPUT);
  pinMode(BotonIzq3,INPUT);
 
  pinMode(botonp1, INPUT);
  pinMode(botonp2, INPUT);
  pinMode(botonp3, INPUT);
}

void loop() {
  //PUSHBOTTON ARRANQUE DERECHO 1
  if (digitalRead (9) == HIGH){
    digitalWrite ( relay, HIGH);
    digitalWrite ( relay2, LOW);
  }
    else if (digitalRead (2) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay, LOW);
  }
//PUSHBOTTON ARRANQUE DERECHO 2
 if (digitalRead (8) == HIGH){
    digitalWrite ( relay, HIGH);
    digitalWrite ( relay2, LOW);
  }
    else if (digitalRead (4) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay, LOW);
  }

//PUSHBOTTON ARRANQUE DERECHO 3
 if (digitalRead (6) == HIGH){
    digitalWrite ( relay, HIGH);
    digitalWrite ( relay2, LOW);
  }
    else if (digitalRead (5) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay, LOW);
  }
 
  //PUSHBOTTON ARRANQUE IZQUIERDO 1
   if (digitalRead (7) == HIGH){
    digitalWrite ( relay2, HIGH);
    digitalWrite ( relay, LOW);
   }
  else if (digitalRead (2) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay2, LOW);
  }

    //PUSHBOTTON ARRANQUE IZQUIERDO 2
   if (digitalRead (3) == HIGH){
    digitalWrite ( relay2, HIGH);
    digitalWrite ( relay, LOW);
   }
  else if (digitalRead (13) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay2, LOW);
  }

    //PUSHBOTTON ARRANQUE IZQUIERDO 3
   if (digitalRead (12) == HIGH){
    digitalWrite ( relay2, HIGH);
    digitalWrite ( relay, LOW);
   }
  else if (digitalRead (5) != HIGH){
      digitalWrite ( relay, LOW);
      digitalWrite ( relay2, LOW);
  }
   
 
}
     












Disculpa las molestias, he subido tres imagenes a google drive, para que se vean con mejor calidad, tambien dibuje un pequeño diagrama de como hize las conexiones, omiti los otros 3 pushboton que son para el giro inverso, solo es para demostrar como hize las conexiones.

si te hace falta algo mas pidemelo, espero me puedas ayudar con este codigo. muchas gracias por tu tiempo.

omarigg

Si has podido ver las imagenes?

GO_zalo

no, las imagenes no se ven el drive no es buen sitio para alojarlas

omarigg

Espero no errar

omarigg

Antes que nada pido una disculpa por los mensajes repetidos y la insistencia en dejar tanta basura.
Aqui el pequeño diagrama que te mencionaba:




Y fotos del circuito:





Espero me puedas ayudar! Gracias de ante mano Go_zalo!

GO_zalo

#23
Dec 03, 2015, 10:51 pm Last Edit: Dec 03, 2015, 10:52 pm by GO_zalo
Primer ejercicio revisa el codigo por que defines int BotonDer1 = 9; OK luego haces  pinMode(BotonDer1,INPUT); OK peeero luego a la hora de la verdad haces:  if (digitalRead (9) == HIGH){ con lo cual es imposible seguir tu codigo

Ahora bien creo que te voy entendiedo puede ser esto lo que buscas?


Code: [Select]

...
  //PUSHBOTTON ARRANQUE DERECHO 1
  if (digitalRead (BotonDer1) == HIGH){
    digitalWrite ( relay, HIGH);
    digitalWrite ( relay2, LOW);
    while (digitalRead (2) != HIGH);  //<-Fijate en el ; esto hace que espere sin hacer nada hasta que se cumple la condicion
    digitalWrite ( relay, LOW);  // cuando llega aquí ya se ha cumplido asi que apaga el motor
    digitalWrite ( relay, LOW);
  }

  }
...

omarigg

Es exactamente eso lo que quiero, ya he modificado el codigo con puros if y while para detener el motor en ese punto, pero parece no obedecerme, note que al cargar el codigo anterior donde uso if y else if hay una salida de Voltaje de 3.3 en las salidas 10 y 11 que van a los relays,  acompañado pequeño sonido agudo y constante,  en cambio cuando cargo el codigo como tu me lo aconsejaste en este ultimo mensaje no hace el sonido y hay un voltaje de casi los 5v en estos pines, pero ahora no obedece a los botones de arranque, alguna idea de que podria ser?
Muchas gracias!

GO_zalo

por el ruido que dices, y la tensión intermedia es que esta todo el rato ejecutando el loop principal y conmutando la salida hay algo mal conectado

prueba a cambiar los emisores IR por pulsadores para las pruebas

utiliza serial.println para depurar y saber en que estas

si pones dentro de cada if algo asi, sin tocar nada no debería salir nada en la consola, si sale es que hay alguna mala conexión y que esta detectando pulsaciones

Code: [Select]

...
  //PUSHBOTTON ARRANQUE DERECHO 1
  if (digitalRead (BotonDer1) == HIGH){
    serial.println ("Pulsado BotonDer1: motor girando");
    digitalWrite ( relay, HIGH);
    digitalWrite ( relay2, LOW);
    while (digitalRead (2) != HIGH);  //<-Fijate en el ; esto hace que espere sin hacer nada hasta que se cumple la condicion
    digitalWrite ( relay, LOW);  // cuando llega aquí ya se ha cumplido asi que apaga el motor
    digitalWrite ( relay, LOW);
    serial.println ("Ha llegado: motor parado");
  }

  }
...

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy