Mostrando entradas con la etiqueta mx1616. Mostrar todas las entradas
Mostrando entradas con la etiqueta mx1616. Mostrar todas las entradas

miércoles, 16 de julio de 2025

Arduino Nano, Excavadora Mando infrarrojos LG

  Página principal


Arduino Nano
Excavadora
Mando infrarrojos LG


Hace algún tiempo realicé unos montajes para manejar pequeños vehículos mediante un mando a distancia  genérico LG.
http://seta43.duckdns.org/artren.html
http://seta43.duckdns.org/car_c/car_c.html

Para este montaje manejo una excavadora de juguete con un mando genérico de televisión LG.
Se utilizan 2 módulos MX1616, que manejan los cuatro motores.
2 motores para la dirección, 1 motor para el giro, y otro para la pala.
La alimentación se realiza mediante una batería recargable de 7,4V (2S).
Para mi gusto la excavadora debería funcionar con un voltaje menor, entre 5 y 6 V, para que fuese más lentos los movimientos.
Se puede conseguir con un diodo en serie, pero eso lo dejo como idea.
En un principio mi idea era montarlo en una placa protoboard, para luego pasarlo a una PCB.
Después de probarlo y funcionar, ví que la excavadora tenía mucha holgura en mucha partes, y  las cadenas de oruga estaban algo deterioradas. Entonces decidí que no merecía la pena hacer el PCB.


Como es difícil saber la polaridad de los motores, al conectar los motores puede ocurrir que los motores no vayan en la dirección adecuada. Existen dos formas de arreglar esto, o en el programa, o cambiando las conexiones físicas.


El manejo se realiza con el mando LG, y la correpondencia de teclas son:

  Serial.println("0 - (OK) STOP");
  Serial.println("1 - (^)  ADELANTE");
  Serial.println("2 - (v)  ATRAS");
  Serial.println("3 - (<)  IZQUIERDA");
  Serial.println("4 - (>)  DERECHA");
  Serial.println("5 - (<<)  Rotar IZQ.");
  Serial.println("6 - (>>)  Rotar DER.");
  Serial.println("7 - (Play)  CARGAR");
  Serial.println("8 - (Pause)  DESCARGA");
Para la depuración en el terminal serie se pueden manejar los diferentes comando con números.

Espero que les haya gustado este pequeño proyecto, yo me lo he pasado bien.

VIDEO

PROGRAMA

Saludos.
Juan Galaz



Bibliografía:

http://seta43.duckdns.org/artren.html
http://seta43.duckdns.org/car_c/car_c.html

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/