Inicio   Foro   Ayuda Buscar Wiki Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Automatización y motorización de desvíos con Arduino  (Leído 168 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Fision
Brickomaníaco
***
Desconectado Desconectado

Sexo: Masculino
Edad: 16
Ciudad: Ayegui
Mensajes: 375


GBC Power


Coleccion BrickSet
Premios
« : 24 de Marzo de 2019, 19:15:12 »


Os presento una nueva forma de poder motorizar los desvíos de manera sencilla sin necesitar construir una caseta de guardagujas contigua a cada desvío donde esconder la electrónica.

El mecanismo no tiene mucha complicación, se trata de un motor "enterrado" en un módulo MILS con una rueda de goma que desliza la aguja desde abajo. Para evitar que el motor la rueda siga girando cuando el desvío ya ha cambiado de posición es necesario utilizar una llanta mas pequeña que el diametro de la rueda que permita que el eje siga girando mientras que la rueda deje de rotar.
       



El desvío requiere alguna pequeña modificación para que pueda funcionar con el motor, es necesario recortar la base para que la rueda del motor pueda rozar con el mecanismo interior y desplazar la aguja. También es necesario limar las pestañas que tiene en el interior que bloquean la aguja en ambas posiciones (izqa/dcha). Una vez limadas estas pestañas la aguja debería desplazarse libremente sin necesidad de hacer fuerza para bloquearla en su posición.
Las pestañas no se ven en la foto pero una vez abierto se localizan fácilmente.

La parte mecánica está acabada pero necesitamos una manera de hacerlo funcionar. He optado por automatizarlo con un Arduino que permite controlarlo facilmente desde un panel de control, donde además, indica la posición en la que se encuentra el desvío.

La electrónica es sencilla y cualquiera con un conocimiento básico de programación con Arduino puede realizarlo.
Los componentes esenciales son una placa Arduino (en este caso un Arduino Nano) y un driver L298N al que conectar el motor del desvío, además, puede servir una fuente de alimentación ya que tiene una salida de 5v. Por otra parte necesitaremos dos LEDs con sus correspondientes resistencias con la que indicar la posición del desvío y un interruptor con el que controlar el desvío. Esto es toda la electrónica del desvío y sigue el siguiente esquema:

El programa tampoco tiene mucho misterio, en este caso simplemente cambia la posición del motor dependiendo del estado del interruptor aunque se podría programar para automatizarlo y hacerlo funcionar de manera autónoma en un circuito completamente automático (pero mis habilidades no dan pa' más Tomatazo!)
Spoiler para Ocultar:
Citar
int estadoInterruptor = 0;  //Variable que indica el estado del interruptor
int ledIzquierda = 12;      //Pin led izquierda
int ledDerecha = 11;        //Pin led derecha
int interruptor = 5;        //Pin interruptor
int IN1=6;                  //Conexiones con el driver de los motores
int IN2=7;
int ENA=9;
int direccion;              //variable que indica la posición del desvío
void setup() {
  estadoInterruptor = digitalRead(interruptor);
  pinMode(ledDerecha, OUTPUT);
  pinMode(ledIzquierda, OUTPUT);
  pinMode(interruptor, INPUT);
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
    if(estadoInterruptor == LOW){
      analogWrite(ENA, 125);
      digitalWrite(IN1, HIGH);
      digitalWrite(IN2, LOW);
      delay(250);
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      direccion=1;
      digitalWrite (ledIzquierda, HIGH);
    }
    if(estadoInterruptor == HIGH){
      analogWrite(ENA, 125);
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, HIGH);
      delay(250);
      digitalWrite(IN1, LOW);
      digitalWrite(IN2, LOW);
      direccion=0;
      digitalWrite (ledDerecha, HIGH);
    }
}

void loop() {
  estadoInterruptor = digitalRead(interruptor);
    if(estadoInterruptor == LOW){         
      digitalWrite(ledIzquierda, HIGH);
      digitalWrite(ledDerecha, LOW);
        if(direccion==0){
          analogWrite(ENA, 125);
          digitalWrite(IN1, HIGH);
          digitalWrite(IN2, LOW);
          delay(250);
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, LOW);
          direccion=1;
        }
    }
    if(estadoInterruptor == HIGH){
      digitalWrite(ledIzquierda, LOW);
      digitalWrite(ledDerecha, HIGH);
        if(direccion==1){
          analogWrite(ENA, 125);
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, HIGH);
          delay(250);
          digitalWrite(IN1, LOW);
          digitalWrite(IN2, LOW);
          direccion=0;
        }
    }
}

La última parte es conectar el motor al panel de control. Para ello he decidido utilzar conectores Dupont entre cada módulo inspirado por las calles con farolas de JUJO, la única pega de utilizar este tipo de conectores entre los módulos es que es necesario cortar el cable del motor para poder soldar los conectores Dupont a los cables C1 y C2 del motor (los dos del medio). Otra posibilidad sería utilizar los cables de extension de Power Functions 8871 y 8886 aunque creo que los conectores son demasido grandes para colocar entre módulos MILS. Si optas por los conectores Dupont el resultado es este:

Por último os dejo un pequeño vídeo del funcionamiento del desvío.


Espero que esta especie de tutorial os sirva y si tenéis cualquier duda estaré encantado de aclararosla.

P.D. Los dos botones verde y rojo del panel de control no tienen nada que ver con el desvío, tengo pensado añadir un semáforo en el futuro.
« Última modificación: 24 de Marzo de 2019, 19:21:44 por Fision » En línea

ostman
Administrador
Lugnático
*******
Desconectado Desconectado

Sexo: Masculino
Edad: 47
Ciudad: Santa Perpètua de Mogoda (Barcelona)
Mensajes: 3909




Premios
« Respuesta #1 : 24 de Marzo de 2019, 19:34:18 »

Muy buen trabajo... Muchas gracias por compartir tu estupendo tutorial...
En línea

alberto luna
Brickomaníaco
***
Desconectado Desconectado

Sexo: Masculino
Edad: 20
Ciudad: Cádiz: Donde van a parar todos los plátanos de canarias...
Mensajes: 934


The cake is a lie...



WWW Premios
« Respuesta #2 : 24 de Marzo de 2019, 19:43:24 »

Ostras, vaya curro, ¡muy interesante!
En línea

"La violencia es el último recurso del incompetente" -Salvor Hardin, alcalde de Términus-
JUJO
Minifig
**
Desconectado Desconectado

Sexo: Masculino
Edad: 45
Ciudad: Pamplona
Mensajes: 120



Galeria Flickr
Premios
« Respuesta #3 : 24 de Marzo de 2019, 20:08:24 »

Felicidades por este estupendo trabajo  Aplauso Aplauso Aplauso Aplauso
En línea

asnito
Lugnático
****
Desconectado Desconectado

Ciudad: Barcelona
Mensajes: 1172




Premios
« Respuesta #4 : 24 de Marzo de 2019, 21:10:39 »

Fisión!!! Estàs que te sales!!!!
En línea

Dedón vas tacirupeca! A saca de mi talibuea!!!
Yago
LEGO User Group Ambassador
Gran maestro Brick
*
Desconectado Desconectado

Sexo: Masculino
Edad: 43
Ciudad: Barcelona
Mensajes: 6612



Galeria Flickr Coleccion BrickSet
Premios
« Respuesta #5 : 24 de Marzo de 2019, 21:56:16 »

espectacular!! grandisimo y muy elegante.. apenas se nota el espacio! Bravo Fision!  Aplauso Aplauso Aplauso Aplauso
En línea
marcus
Administrador
Lugnático
*******
Desconectado Desconectado

Sexo: Masculino
Edad: 36
Ciudad: Barcelona
Mensajes: 2328


Leg godt!!


Galeria Flickr
Premios
« Respuesta #6 : 25 de Marzo de 2019, 11:50:27 »

Aquí entran en juego varias cosa:
1. Motorizar algo tan cotidiano como un desvío.
2. Hacerlo de manera que no se aprecie en absoluto.
3. Automatizarlo con Arduino.
4. Hacer un tutorial para dummies.

Así que nada más que añadir, señoría!

¡OLE, OLE y OLE! Enhorabuenísima por esto y por lo que -espero no equivocarme- vendrá.
En línea

Diseñado para una sencilla construcción y rápido juego.

Jero
Gran maestro Brick
*****
Desconectado Desconectado

Sexo: Masculino
Edad: 52
Ciudad: Granollers (BCN)
Mensajes: 7706


Dear Jero


Galeria Brickshelf Galeria MOCpages
WWW Premios
« Respuesta #7 : 25 de Marzo de 2019, 15:40:21 »

De todo el montaje automatizado me quedo con este detalle técnico.
... Para evitar que la rueda siga girando cuando el desvío ya ha cambiado de posición es necesario utilizar una llanta mas pequeña que el diametro de la rueda que permita que el eje siga girando mientras que la rueda deje de rotar.
Sin este detalle, intuyo que sería necesario controlar la posición de exacta del desvío para que el motor dejara de girar. Me parece realmente ingenioso  Aplauso Aplauso
En línea

murielskt
Brickomaníaco
***
Desconectado Desconectado

Sexo: Masculino
Edad: 41
Mensajes: 379




Premios
« Respuesta #8 : 26 de Marzo de 2019, 17:26:02 »

Ay Dios mío....! ¿Éste chaval dónde llegará? Eres un crack Fisión! Sigue así que vas por el mejor camino... hacia dónde quieras!!!  Aplauso Aplauso Aplauso
En línea

Soy uno de los 10 tipos de personas que entienden bricknario

d(^_^)b
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

www.HispaLUG.com - La web en español de los aficionados a LEGO®
LEGO®, DUPLO®, MINDSTORMS®, EXO-FORCE®, BIONICLE® y el logotipo LEGO® son marcas registradas de The LEGO Group.
Esta web no es un sitio oficial de LEGO®, el cual no patrocina, autoriza o aprueba esta sitio.
Para cualquier consulta dirígete a info@hispalug.com - ©HispaLUG® 2006-2012

Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines
SimplePortal 2.3.5 © 2008-2012, SimplePortal
Página creada en 0.116 segundos con 24 consultas.