martes, 13 de abril de 2021

Control de tren RC por infrarrojos


 
Control de Tren RC
Infrarrojos

Mando TV LG
MX1616
Arduino


Hace tiempo que tenía en mi mente hacer un controlador de tren RC.
Hace tiempo había realizado una serie de montajes sobre control de vehículos RC utilizando
nRF24L01 y L293D. CAR_L293D versión .
Lo que si tenía claro es que debía ser lo mas sencillo posible, por lo que no quería utilizar control por radiofrecuencia.
En otro montaje posterior había creado un controlador de LED mediante un mando de TV.
irc-seta 
El utilizar el mando de una TV LG simplifica mucho el proyecto, solo hace falta crear la parte receptora.

La parte receptora esta compuesta por un par de LEDS que indica la dirección, y un controlador de motores en H.
El módulo tiene un CHIP MX1616 que tiene un doble controlador para dos motores, solo se utiliza 1 solo controlador para cambiar la dirección de giro del motor del tren. El CHIP está formado por interruptores MOS  de baja resistencia, calor mínimo, sin disipador de calor, tamaño pequeño, bajo consumo de energía, es ideal para baterías,  ideal para usar en coches inteligentes a batería, coches de juguete, robots. Voltaje de alimentación de 2V ~ 10V, y una corriente de 1.5A.


MX1616

ESQUEMA DE MONTAJE.




CIRCUITO MONTADO




Debido a la poca capacidad de la máquina del tren, solo he podido meter el módulo MX1616, alimentado con las 2 pilas de 1.5V .
Se sacan 3  cables , GND, IN3,IN4, que serán los utilizados para controlar la dirección de la máquina.

// ___SETA43  _____
// 13/04/2021 _____
//Mando Infrarojo LG

#include <IRremote.h>

#define PinIR   4
#define OUT1 2
#define OUT2 3

IRrecv irrecv(PinIR);

decode_results results;
int codeType = -1;

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT); 
  pinMode(OUT1, OUTPUT);pinMode(OUT2, OUTPUT); 
  Serial.println("HABILITAR IR-TREN");
  irrecv.enableIRIn(); // Start the receiver
 
}

void loop() {
  if (irrecv.decode(&results))
  {
    digitalWrite(13, HIGH);
    codeType = results.decode_type;

    switch (codeType)
    {
      case RC5:
        Serial.print("Received RC5: "); Serial.println(results.value & 255);
        break;
       
      case NEC:
        Serial.print("Received NEC: "); Serial.println(results.value & 255);
        Serial.println("-----------");
       
        switch (results.value & 255)
        {        
          case 253:
              digitalWrite(OUT1, LOW);
              delay(100);         
              digitalWrite(OUT2, HIGH);
            break;
          case 125:
              digitalWrite(OUT2, LOW);
              delay(100);
              digitalWrite(OUT1, HIGH);
            break;
          case 221:
              digitalWrite(OUT2, LOW);
              digitalWrite(OUT1, LOW);
            break;
        }
      break;
      default:
        Serial.print("Unexpected codeType ");
        Serial.print(codeType, DEC);
        Serial.println("---");
        break;
    }

    irrecv.resume(); // Receive the next value
    digitalWrite(13, LOW);
  }
  delay(20);
}


Como se puede observar, el arduino está alimentado con una batería externa de 3.6V , esto es debido a que los 3V de las 2 baterías no son suficientes para que funcione el arduino.

He utilizado los códigos IR del mando LG correspondientes a las flechas de arriba y abajo, junto con la de OK que para el tren.
De esta forma no crean conflictos si la TV LG está apagada.

La alimentación es uno de los problemas a que me he enfrentado, si hubiese tenido 3 baterías de 1.5, 4.5V en total, no hubiera sido necesario doble alimentador. Que cada uno busque su solución dependiendo del tipo de tren que tenga.

VÍDEO


Saludos.
Juan Galaz


Bibliografía:

16/10/2019 - Arduino - COPIADOR CÓDIGOS INFRARROJOS. IRcopy
02/10/2019 - Arduino - EMISOR INFRARROJOS. EmisorIR
17/09/2019 - Arduino - RECEPTOR INFRARROJOS. irc-seta
14/02/2018 - Arduino - Coche teledirigido, mando 3 ejes, nRF24L01, L293D. CAR_L293D versión
13/12/2017 - Arduino - Coche teledirigido con fpv , nRF24L01 , L293D. CAR_L293D
28/11/2017 - Arduino - Coche teledirigido con fpv , nRF24L01 , Arduino. CAR_RELE
https://arduinodiy.wordpress.com/2019/11/02/mx1508-vs-l9110s-vs-l293-motordriver-board/

 

No hay comentarios:

Publicar un comentario