viernes, 14 de febrero de 2014

Cabeza móvil con led rgb

Cabeza móvil con led rgb de 3w controlado por arduino uno




Describimos los componentes utilizados en el proyecto.

6-led RGB de 3w
1- arduino atmega328
3- transistores tip31c
21- resistencias de 22 ohm
1- módulo bluetooth hc05 para arduino
1-motor dc
1-puente en h l293d
1- servo
1- adaptador de ac-dc a 5v
cables


Proceso de construcción

De un ordenador en desuso utilizaremos la caja de la fuente de alimentación como base del proyecto, y el soporte de los lectores de cd como cabeza giratoria,



Para la cabeza utilizaremos un rodillo de una impresora, cortándolo a medida y colocando unos cojinetes que se encuentran en la propia impresora será el eje.

Tras trabajar un poco el metal, hemos colocado el motor en la base (fuente de alimentación) y encima la cabeza, donde se pondrán los led en el eje.


La manera que tenemos de conectar los led que se encuentran en la cabeza con la alimentación y el arduino, será mediante un sistema rotatorio de conexión por fricción (estilo scalectrix), el sistema lo hemos sacado a partir de los contactores de relés que es un material flexible y en la punta un poco de malla de cobre para el rozamiento con las pistas 

las pistas las hemos construido a partir de cubrir una placa con un forrador de libros y haciendo circunferencias con un compas y retirando una circunferencia y conservando otra, así, aislamos las pistas, yá que al meter la placa en el ácido el cobre que no esté cubierto por el plástico se deshacerá y el otro se quedará como podemos apreciar en la foto

conseguimos separar las pistas y quedaría un resultado como éste un resultado como éste



Ahora hablaremos del arduino.

El arduino realmente es un atmega 328 del que buscamos una pcb en internet, aquí os dejo el enlace de la pagina oficial de arduino para todo aquel que quiera hacerse uno.La base del proyecto yá está construida.




El arduino controlará un motor con un puente en H para cambiar los sentidos de giro horizontales y un servo para controlar los giros verticales, tambien vamos a controlar los colores de los led rgb desde el móvil o cualquier dispositivo de comunicación.

Este es el programa que he realizado para controlar el color de los led y un servo con la comunicacion por bluetooth desde el móvil.

#include <Servo.h>


Servo myservo;

int var = 0;         
int var2 = 0;
int ledRojo = 6; //Declara Pin LED Rojo
int ledVerde = 5; //Declara Pin LED Verde
int ledAzul = 11;  //Declara Pin LED Azul
int red = 0;
int green = 0;
int blue = 0;
int temp;     //variable del flash
int pos;       //variable del servo


void setup() //Arduino se inicia
  Serial.begin(9600);
  
  pinMode(ledRojo,OUTPUT);  
  pinMode(ledVerde,OUTPUT); 
  pinMode(ledAzul,OUTPUT); 
  myservo.attach(9);
}


void loop() 
  for(pos = 130; pos >= 50; pos -= 1) 
{                                  
  myservo.write(pos);       
  delay(15); 
  
if (Serial.available()>0)
  {     
    var = Serial.read();
    
    if(var >= 199 && var<= 204)                       ///si el rango que es enviado desde la aplicacion del 
    {                                                                        movil es de 199 a 204 entrará en la función flash
      temp = var - 198;
      temp = temp * 30;
      flash(temp);
    }
    
    if(var >=0 && var <= 50                                           /////si el rango es de 0 a 50 es azul
    {
      var2 = var;
      green = var2 * 5;
      color(red,green,blue);
    }
    
    if(var >=60 && var <= 110)                                     /////si el rango es de 60 a 110 es rojo
    {
      var2 = var;
      var2 = var2 - 60;
      red = var2 * 5;
      color(red,green,blue);
    }
    
    if(var >=120 && var <= 170)                                  /////si el rango es de 120 a 170 es verde
    {
      var2 = var;
      var2 = var2 - 120;
      blue = var2 * 5;
      color(red,green,blue);    
    }
  }
}
for(pos = 50; pos < 130; pos += 1)
{                                 
  myservo.write(pos);          
  delay(15);    
  if (Serial.available()>0)
  { 
    var = Serial.read();  
    if(var >= 199 && var<= 204)
    {
      temp = var - 198;
      temp = temp * 30;
      flash(temp);
    }
    
    if(var >=0 && var <= 50)
    {
      var2 = var;
      green = var2 * 5;
      color(red,green,blue);
    }
    
    if(var >=60 && var <= 110)
    {
      var2 = var;
      var2 = var2 - 60;
      red = var2 * 5;
      color(red,green,blue);
    }
    
    if(var >=120 && var <= 170)                                            
    {
      var2 = var;
      var2 = var2 - 120;
      blue = var2 * 5;
      color(red,green,blue);
    }
  }
}

}


void flash(int tf){                                                                  /////funcion del flash
  int ciclo=1;
  while(ciclo)
  {
    for(pos = 30; pos>=1; pos-=6)     
    {                                
      myservo.write(pos);         
      color(255,255,255);
      delay(tf);
      color(0,0,0);
      delay(tf);
      if (Serial.available()>0)
      {
        ciclo = 0;
      }
    }
    for(pos = 0; pos < 30; pos += 6)  
    {                                 
      myservo.write(pos);                   
      color(255,255,255);
      delay(tf);
      color(0,0,0);
      delay(tf);
      if (Serial.available()>0)
      {
        ciclo = 0;
      }
    }
  }
}

    
void color(int rojo, int verde, int azul)                      /////////////Función led rgb
{

   
    analogWrite(ledRojo,rojo);


    analogWrite(ledVerde,verde);


    analogWrite(ledAzul,azul);
}


En caso de que el programa no os funcione correctamente puede ser debido a los timer de arduino, deberéis de cambiar los pines del servo para que no coincidan con los de los led, las clavijas utilizadas por los timer sobre Arduino UNO son:
  • Pines 5 y 6: controlado por Timer0
  • Pines 9 y 10: controlado por Timer1
  • Pines 11 y 3: controlado por Timer2
de todos modos este es un programa de prueba cada cual puede diseñarlo a su gusto.



Para la comunicacion por bluetooth utilizaremos App Inventor 2 el cual diseñaremos nuestra propia aplicación personalizada

                                                                                                                                                                  
                                                                                                                                                                                        -Slider del color verde
-Slider del color rojo
-Slider del color azul

-Marca el ritmo al que irá el flash y el servo

- Conecta y desconecta la la comunicación bluetooth

- Salida del programa










Es un programa relativamente sencillo de utilizar yá que la programación se realiza con bloques gráficos, y la aplicación en sí tambien es sencilla, una pequeña introducción para la gran creatividad que se puede elaborar.



Este es el proceso de construcción de la placa led
http://www.youtube.com/watch?v=NVLNjsopbog


Cara Inferior

Cara Superior

Esta sería la placa terminada y aquí podemos ver un vídeo de prueba



Este es el Gantt con el cual me he guiado y he ido cumpliendo cada semana lo marcado en él, hasta acabar realizando la memoria del mismo.

Un proyecto muy entretenido didáctico, y como dije en un principio con muy bajo coste

 aquí el gantt de mi proyecto

No hay comentarios:

Publicar un comentario