jueves, 14 de abril de 2016

TERRAMATIC

TERRAMATIC


INTRODUCCIÓN

Después de pensar en ideas para mi proyecto final me decidí por automatizar mi terrario en el que tengo un camaleón para poder controlarlo a traves de la placa en la que incorporado un pic y un arduino, la cual se comunica con una aplicación android en mi mobil mediante bluetooth . De esta forma tengo dos formas de controlar mi terrario desde la aplicacion de android, y otra seria automaticamente el propio terrario se controla realizando lecturas de los sensores de temp y hum, actuando sobre las luces y el generador de niebla.


COMPONENTES

  • PLACA ELECTRÓNICA :

- 2 x Pulsadores  0,50€
- 1 x Zócalo de 40 pines y 1 de 28  1,50€
- 2 x Cristales de cuarzo de 16Mhz   0,50€
- 4 x Condesadores de 22pF   1
- 1 x PIC16F877A ,1 Atmel328p   7
- 2 x Filas de pines  hembra.   0,50€
- 7 x Resistencias , 2 de 10k para el reset y otras 2 de 220 ohm para leds. 3 en  SMD. 1
- 2 x Condensador de 100nF   0,50€
- 2 x Condensador de 100uF    1
- 2 x  LED y 2 SMD    1,50€
1 x Micro usb hembra   0,50€


PRESUPUESTO FINAL=  15,5€

  • TERRARIO:

- 1 Sensor DHT11 de temperatura y humedad, 1 LDR. 3€



- 5 metros de listón de abeto 2x2. 8€

- 1 Metro de malla metalica . 2€

-  Plástico transparente flexible. 1,50€

- Spot de neodimio exoterra 100 w y tubo uvb  5.0  20w. 12€-20€

  
                                            


- Modulo de reles para arduino. 2,50€














- Generador de niebla por ultrasonidos.   7,44€






PRESUPUESTO FINAL=  56,44€


PRESUPUESTO TOTAL PROYECTO =  71,94€



FUNCIONAMIENTO


Mi proyecto se controla de dos formas distintas:


Auto control: de esta forma el terrario lleva a cabo una regulación automática de sus actuadores basándose en las medidas realizadas con el sensor DHT11 de humedad y temperatura:


  • Control de las luces: las luces se regulan automáticamente en función de la temperatura medida cuando el sensor detecta una temperatura mayor de 30ªC desactiva la luz de calor apagando esta hasta que la temperatura no descienda diez grados por debajo del limite. Con el sensor ldr gobierno las dos luces apagandolas cuando sea de noche que el animal esta durmiendo.
  • Control generador de niebla: cuando el sensor detecta una humedad mayor 70% apaga el generador no volviendo a encenderlo hasta que la humedad en el terrario vuelva a 60%.
  • Control alarma: tenemos un final de carrera situado en la puerta este manda una señal a un buffer que nos alerta cuando la puerta esta abierta y nos manda una señal a la aplicación de android alertándonos.


Control Android: He desarrollado una aplicación con app inventor en la cual podemos manejar el terrario a nuestro gusto a distancia mediante bluetooth pudiendo apagar o encender los actuadores cuando queramos . En esta aplicación hago una monitorizacion de la humedad y la temperatura que tiene el terrario en su interior a tiempo real. También dispone de una alarma que se activaría cuando la puerta del terrario se abriese por accidente.


                                              



PLANIFICACION


DIAGRAMA DE GANT

Para la planificación de mi proyecto he utilizado un diagrama de gant en el cual administramos las tareas en las que va a consistir nuestro proyecto ajustándolo al tiempo que tenemos.





PRUEBAS

Antes  de terminar mi proyecto tuve que hace diversas pruebas con el generador de niebla el recipiente en el que debería de ir, también simule el proyecto con leds en una placa board para verificar que todo funcionaba antes de hacer la placa definitiva.


Video de prueba de la aplicacion y los reles en protoboard:







Video de prueba de generador de niebla:









Fotos de las pruebas realizadas con pic y la placa terminada:




       



Fotos de la realización de la maqueta:



    




PROGRAMACIÓN


PROGRAMA ARDUINO:

#include <stdio.h>
#include "DHT.h"
#include <SoftwareSerial.h>
#define DHTPIN 2
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);

int spot=5;

int niebla=4;
int UVB=3;
int seta=1;
int LDR=0;
int luminosidad; 
int setpoint=400;
int zumb;
int puerta=124;

char modo;

SoftwareSerial Blue(10,11);

void setup() {

Serial.begin(9600);
dht.begin();
pinMode(UVB,OUTPUT);
pinMode(niebla,OUTPUT);
pinMode(spot,OUTPUT);
Blue.begin(9600);
}
void loop() {  
  
zumb=analogRead(seta);
int h = dht.readHumidity();// Lee la humedad
int t= dht.readTemperature();//Lee la temperatura


Blue.println();

Blue.print("Humedad: " +  String(h) + " %" + "          " + "Temperatura: " + String(t) + " C");

if(zumb==puerta)

{
Blue.println("PUERTA ABIERTA");
}  
delay(10);

if(modo=='N')

{
if (h<50) digitalWrite(niebla, HIGH);
if (h>50) digitalWrite(niebla, HIGH);
if (h>70) digitalWrite(niebla, LOW);

luminosidad= analogRead(LDR); 


if (luminosidad < setpoint)

    {
     digitalWrite(spot,LOW);
     digitalWrite(UVB,LOW);
    }    
   
else{
digitalWrite(UVB, HIGH);
if (t<20) digitalWrite(spot, HIGH);
if (t>20) digitalWrite(spot, HIGH);
if (t>30) digitalWrite(spot, LOW);
}

}



PROGRAMA PIC16F877A:


#include "C:\Users\juanma y lola\Desktop\pic2\main.h"


void setup();

void loop();

void main()

{

   setup_adc_ports(NO_ANALOGS);

   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DIV_BY_16,255,1);
   setup_ccp1(CCP_PWM);
   set_pwm1_duty(0);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

setup();
loop(); 
}
void setup()
{

set_tris_a(0x00);

set_tris_b(0xff);
set_tris_c(0x00);
}

void loop()

{
while(true)
{

if(input(pin_B0))

{
set_pwm1_duty(0);
}

else 

{
set_pwm1_duty(124);
}
}
}



DISEÑO Y FABRICACIÓN DE LA PLACA

Para el diseño de la placa hemos utilizado proteus, en isis hacemos el circuito electrónico y en ares la distribución de las pistas y los componentes.

Diseño en isis:

                                                        PIC                                                                      ARDUINO



Diseño en ares:





Fabricacion de la placa:


Una vez hecho el diseño de la placa, vamos a hacerla por el método de impresión por papel fotográfico en una placa de doble cara para ello tenemos que hacer unos negativos  de las dos caras:




Una vez hechos los negativos haremos los agujeros a nuestra placa y la envolveremos en papel phil, después pegaremos los negativos y los irradiaremos para fijar las pistas, una vez hecho esto solo queda dar un baño de revelador y seguidamente un baño de cloruro ferrico.

   


      







Tras el baño de cloruro ferrico este es el aspecto :



   

                        Botton copper                                                      Top copper con serigrafia


Hecho esto solo queda soldar los componentes y ya tenemos nuestra placa terminada:

     
           
                                             Top copper
                                                                                                          Simulacion 3D





                  
                             
                                                         Botton copper                                             Detalle SMD                      




VIDEO DE FUNCIONAMIENTO TERRAMATIC







NOTA: Para mi proyecto he utilizado una maqueta pequeña de simulación a escala pequeña, mi proyecto está destinado a terrarios más grandes para camaleones gigantes como es mi caso. En mi casa tengo la maqueta real a tamaño original en la que instalare mi proyecto. A continuación os pondré unas fotos de la maqueta y de mi mascota:



                              
                                 
                                          Terrario real






      Este es mi camaleon del yemen Nilo



ESTE ES MI PROYECTO FINAL ESPERO QUE OS HAYA GUSTADO...

No hay comentarios:

Publicar un comentario