Anda di halaman 1dari 24

CASA INTELIGENTE

OMAR GRANADOS OSPINA


EDWARD OREJUELA VILLANUEVA

UNIVERSIDAD COOPERATIVA DE COLOMBIA


FACULTAD DE INGENIERA
BOGOTA
24 DE MAYO DE 2013

INTRODUCCIN

Este proyecto se realiza con el fin de afianzar conocimientos en la materia de domtica ya que esta
es una rama de la ingeniera muy interesante por sus aplicaciones adems nos permite el uso de
microcontroladores y dems componentes electrnicos los cuales son de uso en el curso al cual
presentaremos el presente proyecto de una casa inteligente haciendo uso de un microcontrolador
16f877a un display lcd y otros componentes activos y pasivos de la electrnica anloga y de este
modo tener un circuito anlogo digital para el montaje y prueba del proyecto.

OBJETIVOS
Objetivo general:

Automatizar y controlar laborares cotidianas de una casa

Objetivos especficos:

Manejo de pic 16f877a

Uso del lcd

Uso del teclado matricial

Amplificacin de corriente para un motor

Visualizar men en la lcd

Acceso desde el teclado

Uso de compilador picc para realizar la programacin del microcontrolador

MARCO TERICO

Microcontrolador

Un microcontrolador (abreviado C, UC o MCU) es un circuito integrado programable, capaz de


ejecutar las rdenes grabadas en su memoria. Est compuesto de varios bloques funcionales, los
cuales cumplen una tarea especfica. Un microcontrolador incluye en su interior las tres principales
unidades funcionales de una computadora: unidad central de procesamiento, memoria y perifricos
de entrada/salida.
Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionan a velocidad de reloj
con frecuencias tan bajas como 4 kHz, con un consumo de baja potencia (mW o microvatios). Por
lo general, tendr la capacidad para mantener la funcionalidad a la espera de un evento como pulsar
un botn o de otra interrupcin, el consumo de energa durante el sueo (reloj de la CPU y los
perifricos de la mayora) puede ser slo nanovatios, lo que hace que muchos de ellos muy
adecuados para aplicaciones con batera de larga duracin. Otros microcontroladores pueden servir
para roles de rendimiento crtico, donde sea necesario actuar ms como un procesador digital de
seal (DSP), con velocidades de reloj y consumo de energa ms altos.

DISPLAY LDC

Las pantallas de cristal lquido (LCD) se han popularizado mucho en los ltimos aos, debido a su
gran versatilidad para presentar mensajes de texto (fijos y en movimiento), valores numricos y
smbolos especiales, su precio reducido, su bajo consumo de potencia, el requerimiento de solo 6
pines del PIC para su conexin y su facilidad de programacin en lenguajes de alto nivel (por
ejemplo, lenguaje C). Desde todo punto de vista el empleo del display LCD 16x2 (LCD 2x16)
debera considerarse como la primera opcin a la hora de decidir por un dispositivo de presentacin
alfanumrica, excepto cuando las condiciones de iluminacin ambiental no sean las ms favorables.
En este ltimo caso se debera pensar en el empleo de displays de 7 segmentos, que aunque no
tienen la misma versatilidad tienen la ventaja innegable de sus mejores caractersticas de visibilidad
an en los ambientes ms desfavorables. En la actualidad existen diversos modelos de display LCD,
aunque los ms comunes son los LCD 16x2 (16 caracteres x 2 filas) o LCD 2x16, gobernados por el
controlador Hitachi HD44780, que se ha convertido en el estndar de facto para las aplicaciones con
microcontroladores PIC. Especficamente se har referencia al display LM016L, que tiene las
caractersticas mencionadas, aunque cualquier otro display LCD con el controlador HD44780 o
compatible se puede utilizar. Existen LCD 16x2 con diferentes combinaciones de colores de fondo
y texto.

TRANSISTOR DARLINGTON

Esta configuracin sirve para que el dispositivo sea capaz de proporcionar una gran ganancia de
corriente y, al poder estar todo integrado, requiere menos espacio que dos transistores normales en
la misma configuracin. La ganancia total del Darlington es el producto de la ganancia de los
transistores individuales. Un dispositivo tpico tiene una ganancia en corriente de 1000 o superior.
Tambin tiene un mayor desplazamiento de fase en altas frecuencias que un nico transistor, de ah
que pueda convertirse fcilmente en inestable. La tensin base-emisor tambin es mayor, siendo la
suma de ambas tensiones base-emisor, y para transistores de silicio es superior a 1.2V. La beta de un
transistor o par Darlington se halla multiplicando las de los transistores individuales. La intensidad
del colector se halla multiplicando la intensidad de la base por la beta total.

TECLADO MATRICIAL

Un teclado matricial es un conjunto de botones (switches) dispuestos en forma de malla, de modo


que no se requieran de muchas lneas para su interface. De hecho, la mayora de los teclados
(incluyendo quiz el de tu computadora) funciona con una estructura similar. En esta prctica
trabajaremos con un teclado de 44.
Como se aprecia en la siguiente imagen, cada botn del teclado est conectado a alguna de las filas
Row, por un lado; y por el otro, a alguna de las columnas Col.

MOTOR DC

El motor de corriente continua es una mquina que convierte la energa elctrica continua en
mecnica, provocando un movimiento rotatorio. En la actualidad existen nuevas aplicaciones con
motores elctricos que no producen movimiento rotatorio, sino que con algunas modificaciones,
ejercen traccin sobre un riel. Estos motores se conocen como motores lineales.
Esta mquina de corriente continua es una de las ms verstiles en la industria. Su fcil control de
posicin, par y velocidad la han convertido en una de las mejores opciones en aplicaciones de
control y automatizacin de procesos. Pero con la llegada de la electrnica su uso ha disminuido en
gran medida, pues los motores de corriente alterna, del tipo asncrono, pueden ser controlados de
igual forma a precios ms accesibles para el consumidor medio de la industria. A pesar de esto los
motores de corriente continua se siguen utilizando en muchas aplicaciones de potencia (trenes y
tranvas) o de precisin (mquinas, micros motores, etc.)

MARCO PRCTICO
Diagrama de flujo
El programa a realizar se divide en 4 diagramas:
1. Men
Es el programa principal

Y nos muestra cmo funciona cada si se presiona la tecla correspondiente pues este responde a otro
programa dentro del principal.
2. Leds
Es un subprograma que me lleva a otro men con el fin de activar cualquiera de los 4 leds que
representan una bombilla de una casa y se da su respectivo nombre.

3. Motor
Si en el men principal se selecciona la opcin motor este abre un men con varios tipos de
velocidades y para pausar el motor.

4. Clave de acceso
Y este ltimo nos representa la parte de acceso de la casa el cual almacena una clave en la memoria
del pic y la compara con la ingresada.

DIAGRAMA DE BLOQUES

El diagrama de bloques nos da a grandes rasgos lo que se pretende hacer en un proyecto, actividad,
investigacin etc. Gracias a este es ms sencilla la comprensin de nuestro proyecto sin tener que
profundizar de una manera muy especfica.

CDIGO EN LENGUAJE C
El lenguaje de programacin c es muy conocido y de gran utilidad en nuestro proyecto debido a que
es un lenguaje de programacin de un nivel alto pero de fcil comprensin, usamos el compilador
picc para generar nuestro archivo .hex el cual reconoce nuestro pic ya que es el cdigo de mquina.
Cdigo
#include <kbd_lib.c>
#include <LCD.C>
#byte kbd_port_b = 8
#include <stdlib.h>
#rom 0x2100={'3','4','3','4'}

void acceso()
{
char k;
int i;

char data[4], clave[4];

//Matrices para guardar clave y datos

lcd_init();
kbd_init();
i=0;

//posicin de la matriz

printf(lcd_putc,"\fDigito Clave 1\n");

//Para primer dato

while(i<=3)
{
k=kbd_getc();
if (k!=0)
{data[i]=k;
i++;

//Lee el teclado
//Si se ha pulsado alguna tecla
//se guarda en la posicin correspondiente
//de la matriz

printf(lcd_putc,"\fDigito Clave %u\n",i+1); //Siguiente dato


}
}
for (i=0;i<=3;i++)

//Pasa datos de eeprom a la matriz clave

{
clave[i]=read_eeprom(i);
}
if
((data[0]==clave[0])&&(data[1]==clave[1])&&(data[2]==clave[2])&&(data[3]==clave[3]))
//Compara los datos con la clave
{
printf(lcd_putc,"\fPuerta Abierta");
output_high(PIN_A0);
delay_ms(1500);
output_low(PIN_A0);

//Si es igual da pulso al rel

}
else printf(lcd_putc,"\fPuerta Cerrada");

//Clave erronea

delay_ms(1000);
}

int cont;
#int_TIMER1

void TIMER1_isr(void)
{
if (cont>=20) OUTPUT_A(0x00);
set_timer1(3036);
cont++;
}

void luces()
{
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_wdt(WDT_18MS);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);

// TODO: USER CODE!!


cont=0;
char k;
lcd_gotoxy(1,1);
lcd_putc("1.Cocina");
lcd_gotoxy(10,1);
lcd_putc("2.Comedor");
lcd_gotoxy(1,2);
lcd_putc("3.Sala");
lcd_gotoxy(10,2);
lcd_putc("4.Habitacion");
set_timer1(3036);
while(k=='\0'){
k=kbd_getc();
}
switch (k){
case '1':
output_high(PIN_A1);
break;
case '2':

output_high(PIN_A2);
break;
case '3':
output_high(PIN_A3);
break;
case '4':
output_high(PIN_A5);
break;
default:
lcd_putc("\f");
lcd_putc("Opcion Incorrecta");
delay_ms(1000);
break;
}
k='\0';
}
void pwm()
{

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_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

// TODO: USER CODE!!


setup_ccp1(CCP_PWM);
char q;
lcd_gotoxy(1,1);
lcd_putc("1.Alta");
lcd_gotoxy(10,1);
lcd_putc("2.Media");
lcd_gotoxy(1,2);
lcd_putc("3.Baja");
lcd_gotoxy(10,2);
lcd_putc("4.Parar");
while(q=='\0'){
q=kbd_getc();
}
switch (q){
case '1':
setup_timer_2(T2_DIV_BY_16, 255, 1); //para dejaar un frecuencia fija
set_pwm1_duty(200);//el porcentaje del ciclo util, solo voy a modificar esto
delay_ms(25);
break;
case '2':
setup_timer_2(T2_DIV_BY_16, 255, 1); //para dejaar un frecuencia fija

set_pwm1_duty(50);//el porcentaje del ciclo util, solo voy a modificar esto


delay_ms(25);
break;
case '3':
setup_timer_2(T2_DIV_BY_16, 254, 1); //para dejaar un frecuencia fija
set_pwm1_duty(10);//el porcentaje del ciclo util, solo voy a modificar esto
delay_ms(25);
break;
case '4':
setup_timer_2(T2_DIV_BY_16, 255, 1); //para dejaar un frecuencia fija
set_pwm1_duty(0);//el porcentaje del ciclo util, solo voy a modificar esto
delay_ms(25);
break;
default:
lcd_putc("\f");
lcd_putc("Opcion Incorrecta");
delay_ms(1000);
break;
}
q='\0';
}

void main()
{
setup_adc_ports(NO_ANALOGS);

char k;
while (TRUE)
{
lcd_init();
kbd_init();
lcd_gotoxy(1,1);
lcd_putc("1.Luces");
lcd_gotoxy(10,1);
lcd_putc("2.Motor");
lcd_gotoxy(1,2);
lcd_putc("3.Acceso Puerta");

while(k=='\0'){
k=kbd_getc();
}

switch (k){
case '1':
lcd_putc("\f");
luces();
break;
case '2':
lcd_putc("\f");
pwm();
break;

case '3':
lcd_putc("\f");
acceso();
break;
default:
lcd_putc("\f");
lcd_putc("Opcion Incorrecta");
delay_ms(1000);
break;
}
k='\0';
}
}

Es un poco extenso
De manera muy sencilla explicare el funcionamiento de este cdigo comienza definiendo libreras y
fuses los cuales son necesarios para la debida comprensin y proteccin del pic despus de esto se
inicia con una funcin principal el cual nos muestra un men de donde dependiendo de la opcin
deseada se procede a llamar la rutina correspondiente en este caso hay 3 una para prender leds otra
para la velocidad de un motor y el acceso por medio de una clave, a su vez cada uno de los tres
anteriores mencionados estn compuesto por un submen el cual nos indicara que hacer y cmo
proceder a activar de manera muy sencilla gracias a nuestra entrada que es un teclado matricial de
3x4.

ESQUEMTICO
La simulacin de este proyecto se puede realizar gracias a nuestro esquema de diseo electrnico el
cual se muestra en la siguiente figura y lo simularemos en un programa diseado para circuitos que
se llama Proteus

CONCLUSIONES

Es realmente satisfactorio llevar a cabo un proyecto de tal magnitud ya que se ve la esencia de lo


que es un ingeniero y de cmo debe afrontar y tomar decisiones al momento de realizar tales
labores adems es un comienzo a un campo muy grande como lo es la domtica ya que podemos
optimizar y mejorar el consumo de energa por algo se empieza quiz este sea un proyecto a futuro
como una empresa dedicada a esta labor ya que no es muy conocida adems con diseos propios se
puede empezar a bajar costos para poder realizar y dar mantenimiento a esta fantstica labor.

WEB GRAFA

http://www.programarpicenc.com/libro/cap03-display-lcd-16x2-2x16-hd44780-mikroc-pro.html
http://es.wikipedia.org/wiki/Microcontrolador
http://es.wikipedia.org/wiki/Transistor_Darlington
http://es.wikipedia.org/wiki/Motor_de_corriente_continua

Anda mungkin juga menyukai