sábado, 22 de junio de 2013

prueba del control del lanzallamas

Aqui estamos realizando la prueba del control de servos por medio del celular, y este video muestra el resultado:




trabajo finalizado, ultima prueba!!!

una vez realizado todos los circuitos, unimos primero la parte del arduino para ver que funcionara y si se moviera el carro, después se le colocaron los servos que mueven el tanque de gas para el lanzallamas. Una vez realizado todo el ensamblaje, este es el resultado del proyecto:





Programa del Arduino y control con la aplicación "Bluetooth RC".

Puedes descargar el programa que hicimos aquí MachineGun Arduino.

Éste es el código de Arduino:

#include <Servo.h>

Servo x;
Servo y;
Servo shoot;
int pos1;
int pos2;

int motorA = 2;
int motorB = 3;
int dirA = 4;
int dirB = 5;
int luz = 11;
int led=13;
char c;
boolean apuntar = false;

void adelante();
void reversa();
void parado();
void derecha();
void izquierda();
void adelanteDerecha();
void adelanteIzquierda();
void atrasDerecha();
void atrasIzquierda();


void encenderLuz();

void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT); 
  pinMode(motorA, OUTPUT); 
  pinMode(motorB, OUTPUT); 
  pinMode(dirA, OUTPUT); 
  pinMode(dirB, OUTPUT); 
  pinMode(luz, OUTPUT);
  x.attach(9);
  y.attach(10);
  shoot.attach(8);
  x.write(90);
  y.write(90);
  shoot.write(50);  
}

void loop(){
  while (Serial.available()) {
    if (Serial.available() >0) {
      c = Serial.read();
    }
  }

  if(apuntar == false){
    switch(c){
    case 'F':
      adelante();
      break;
    case 'B':
      reversa();
      break;
    case 'S':
      parado();
      break;
    case 'L':
      izquierda();
      break;
    case 'R':
      derecha();
      break;
    case 'G':
      adelanteIzquierda();
      break;
    case 'I':
      adelanteDerecha();
      break;
    case 'H':
      atrasIzquierda();
      break;
    case 'J':
      atrasDerecha();
      break; 
    case 'W':
      encenderLuz();
      break;
    case 'w':
      apagarLuz();
      break;
    case 'X':
      apuntar = true; 
      break;
     case 'v':
      shoot.write(50);
      break; 
    }
  }
  else{
    switch(c){
    case 'B':              //HACIA ARRIBA
      pos1++;
      if(pos1 > 100){
        pos1=100;
      }
      y.write(pos1);
      break;
    case 'F':                //HACIA ABAJO
      pos1--;
      if(pos1 < 60){
        pos1=60;
      }
      y.write(pos1);
      break;
    case 'L':
      pos2++;
      if(pos2>180){
        pos2=180;
      }
      x.write(pos2);
      break;
    case 'R':
      pos2--;
      if(pos2<0){
        pos1=0;
      }
      x.write(pos2);
      break;
    case 'x':
      apuntar = false; 
      break;
    case 'V':
      shoot.write(100);
      break;
    case 'v':
      shoot.write(50);
      break;
    } 
    delay(5); 
  }
}

void adelante(){
  digitalWrite(motorA,HIGH);
  digitalWrite(motorB,LOW);
  digitalWrite(led,HIGH);
}

void reversa(){
  digitalWrite(motorA,LOW);
  digitalWrite(motorB,HIGH);
  digitalWrite(led,HIGH);
}

void parado(){
  digitalWrite(motorA,LOW);
  digitalWrite(motorB,LOW);
  digitalWrite(led,LOW);
  digitalWrite(dirA,LOW);
  digitalWrite(dirB,LOW);
}

void izquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(led,HIGH);
}

void derecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
}

void adelanteIzquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(motorB,LOW);
  digitalWrite(motorA,HIGH);
  digitalWrite(led,HIGH);
}

void adelanteDerecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
  digitalWrite(motorA,HIGH);
  digitalWrite(motorB,LOW);
}

void atrasIzquierda(){
  digitalWrite(dirB,LOW);
  digitalWrite(dirA,HIGH);
  digitalWrite(motorB,HIGH);
  digitalWrite(motorA,LOW);
  digitalWrite(led,HIGH);
}

void atrasDerecha(){
  digitalWrite(dirB,HIGH);
  digitalWrite(dirA,LOW);
  digitalWrite(led,HIGH);
  digitalWrite(motorB,HIGH);
  digitalWrite(motorA,LOW);
}

void encenderLuz(){
  digitalWrite(luz,HIGH);
}

void apagarLuz(){
  digitalWrite(luz,LOW);
}



Control del auto mediante la aplicación y cómo utilizamos los botones:





Control de los sevomotores.

Información sobre los servos, funcionamiento y construcción: Servomotores.

Código para controlar los servomotores que usamos para apuntar: Aim.

#include <Servo.h>    //INCLUIMOS LA LIBRERIA SERVO

Servo x;   //DECLARAMOS EL OBJETO SERVO QUE MUEVE EL LANZA LLAMAS EN EL EJE X
Servo y;   //DECLARAMOS EL OBJETO SERVO QUE MUEVE EL LANZA LLAMAS EN EL EJE Y
int pos1;  //DECLARAMOS LA VARIABLE DE LA POSICION DEL SERVO X
int pos2;  //DECLARAMOS LA VARIABLE DE LA POSICION DEL SERVO Y
char c;

void setup(){
  Serial.begin(9600);
  x.attach(9);     //EL SERVO X ESTA CONECTADO AL PIN 9
  y.attach(10);    //EL SERVO Y ESTA CONECTADO AL PIN 10
  x.write(90);     //EL SERVO X TIENE UNA POSICION INICIAL A 90 GRADOS
  y.write(90);     //EL SERVO Y TIENE UNA POSICION INICIAL A 90 GRADOS
}

void loop(){
  while (Serial.available()) {
    if (Serial.available() >0) {
      c = Serial.read();
    }
  }
  switch(c){
  case 'F':                  //HACIA ARRIBA
    pos1++;
    if(pos1 > 100){          //MAXIMO PARA QUE EL LANZA LLAMAS NO GOLPEE CON EL TANQUE
      pos1=100;
    }
    y.write(pos1);
    break;
  case 'B':                  //HACIA ABAJO
    pos1--;
    if(pos1 < 60){           //MAXIMO PARA QUE EL LANZA LLAMAS NO QUEME EL TANQUE
      pos1=60;
    }
    y.write(pos1);
    break;
  case 'L':                  //IZQUIERDA
    pos2++;
    if(pos2>180){
      pos2=180;
    }
    x.write(pos2);
    break;
  case 'R':                  //DERECHA
    pos2--; 
    if(pos2<0){
      pos1=0;
    }
    x.write(pos2);
    break;
  } 
  delay(5); 
}

viernes, 21 de junio de 2013

Circuito de potencia y control montado en el chasis del auto a control remoto




Circuitos de Control para los motores (puente H con relevadores y transistores).

TODO ESTO LO MONTAMOS EN UN CHASIS DE UN AUTO A CONTROL REMOTO.
MT1 ES EL MOTOR TRASERO QUE DA LA DIRECCIÓN.
MT2 ES EL SERVO DELANTERO QUE CONTROLA LA DIRECCIÓN.


La potencia a las salidas del integrado L293 no eran suficientes para mover los motores a la velocidad deseada, nosotros optamos por hacer un puente H con relevadores y transistores. Los transistores los utilizamos para amplificar la señal del Arduino ya que las bobinas de los relevadores consumen mucha corriente. Como los relees son mecánicos no hay perdidas a la salida así que los motores reciben casi todo el voltaje y toda la corriente. Diseñamos el siguiente circuito:
Seguimos utilizando el L293 para el servo de la dirección, los 600mA del integrado son suficientes para moverlos y ahorramos espacio al no poner más relevadores.

Material:

  • 1 Batería 9v (de preferencia utiliza la original del auto a control remoto).
  • 1 LED.
  • 4 resistencias 330 ohms.
  • 1 Switch.
  • 3 Relevadores de 5v.
  • 3 Transitores BC547 (BJT).
  • 1 Arduino.
  • 1 Diodo rectificador
  • 1 Protoboard.
  • Alambre para proto.



Pines del Transistor BC547.



Puente H

Un Puente H o Puente en H es un circuito electrónico que permite a un motor eléctrico DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados en robótica y como convertidores de potencia. Los puentes H están disponibles como circuitos integrados, pero también pueden construirse a partir de componentes discretos.
El término "puente H" proviene de la típica representación gráfica del circuito. Un puente H se construye con 4 interruptores (mecánicos o mediante transistores). Cuando los interruptores S1 y S4 (ver primera figura) están cerrados (y S2 y S3 abiertos) se aplica una tensión positiva en el motor, haciéndolo girar en un sentido. Abriendo los interruptores S1 y S4 (y cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.


El término puente H proviene de la típica representación gráfica del circuito.
El término "puente H" proviene de la típica representación gráfica del circuito. Un puente H se construye con 4 interruptores (mecánicos o mediante transistores). Cuando los interruptores S1 y S4 (ver primera figura) están cerrados (y S2 y S3 abiertos) se aplica una tensión positiva en el motor, haciéndolo girar en un sentido. Abriendo los interruptores S1 y S4 (y cerrando S2 y S3), el voltaje se invierte, permitiendo el giro en sentido inverso del motor.
Con la nomenclatura que estamos usando, los interruptores S1 y S2 nunca podrán estar cerrados al mismo tiempo, porque esto cortocircuitaría la fuente de tensión. Lo mismo sucede con S3 y S4.

Más información: Puente H wikipedia

Lanza Llamas

Para el Lanzallamas utilizamos un desodorante montado sobre dos servos que lo mueven en los ejes xy y un tercer servo para presionar la válvula y disparar.
Lo montamos de la siguiente manera:

Sujetamos un servo a la parte trasera para presionar la válvula.




Hicimos una pieza que encajara en la boquilla de la válvula para que al jalarla con el servo la presionara y saliera el desodorante.

Amarramos alambre a cada extremo de la pieza que hicimos y luego los sujetamos a un clavo para que el servo pudiera tirar de él.



jueves, 9 de mayo de 2013

Control de los motores DC con el LN293 o puente H

Utilizando una aplicación Android, Arduino, Módulo Bluetooth y un puente H podemos controlar los motores de nuestro tanque, la App que nosotros utilizamos se llama “Bluetooth RC”, la puedes encontrar en Google Play y es gratuita. Su manejo es intuitivo, al abrir el menú de opciones puedes ver un botón que dice “Info” allí viene la lista de caracteres que “manda” al presionar los botones, estos caracteres son los que el Arduino interpretará para realizar las funciones.


Material:
  • Arduino Uno.
  • Cable para proto.
  • L293.
  • Módulo bluetooth.
  • Dos Motores DC bipolares.
  • Batería (el voltaje depende de los motores que utilices).


Herramientas:
  • Computadora.
  • Dispositivo Android.
  • Pinzas de corte y de punta.
  • Protoboard.



Forward - F
Backward - B
Left - L
Right - R
Forward Left - G
Forward Right - I
Backward Left - H
Backward Right - JStop - S




El Puente H que utilizamos es el LN293, lo puedes conseguir en cualquier tienda de electrónica y cuesta aproximadamente $50 Mexicanos. Este es su diagrama de conexiones:


Para nuestro caso lo conectaremos al Arduino y a los motores de la siguiente manera:


 El código de Arduino está en el siguiente Link: TanqueArduinoBT_good.rar

viernes, 3 de mayo de 2013

Encender y apagar un LED (Arduino-Módulo Bluetooth)

 Una manera muy sencilla de aprender a utilizar el módulo bluetooth es encender y apagar un LED, para esto se conecta el módulo como se muestra en el diagrama y se puede hacer una aplicación Android en App Inventor para controlarlo (http://appinventor.mit.edu/) en la misma página hay tutoriales y explicaciones para instalarlo y aprender a utilizarlo.

Esto es la base para controlar los motores y todo lo que el tanque tenga.

Material:
LED.
Resistencia 330 ohms.
Cable para proto.
Módulo bluetooth.
Arduino.

Herramientas:
Computadora.
Dispositivo Android.
Pinzas de corte y de punta.