resumen - tesis.ipn.mx

73

Upload: others

Post on 23-Apr-2022

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Resumen - tesis.ipn.mx
Page 2: Resumen - tesis.ipn.mx
Page 3: Resumen - tesis.ipn.mx

Resumen

Esta tesis presenta el diseno de un sistema de control de iluminacion automatico basadoen el resultado de la medicion de un fototransistor, las adecuaciones necesarias se realizanpara tener como resultado de la medicion unidades de iluminancia (lux), esto debido a losrequerimientos de normas oficiales. Con estas mediciones se retroalimenta a la fuente deiluminacion, una lampara de LEDs, elegida para ahorrar energıa. El control de la iluminacionde la lampara se lleva a cabo mediante la tecnica de modulacion por ancho de pulso (PWM)y el enlace de retroalimentacion se realiza de forma inalambrica.

i

Page 4: Resumen - tesis.ipn.mx

ii

Page 5: Resumen - tesis.ipn.mx

Indice General

Resumen I

Indice de General III

Indice de Figuras V

Indice de Tablas VII

Objetivo IX

Justificacion XI

Introduccion XIII

1. Componentes 11.1. Fototransistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1. Seleccion del fototransistor . . . . . . . . . . . . . . . . . . . . . . . . 21.2. LED (Diodo Emisor de Luz) . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1. Tira de LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3. Microcontroladores PIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3.1. PIC16F1827 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3.2. PIC16F1933 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4. LCD alfanumerico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Teclado matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2. Metodos 112.1. Medicion de iluminancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.1.1. Analisis del transductor . . . . . . . . . . . . . . . . . . . . . . . . . 112.1.2. Circuito para la medicion . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2. Conversion A/D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.1. Registros de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.3. USART: Transmisor/Receptor Sıcrono/Asıncrono Serie . . . . . . . . . . . . 16

iii

Page 6: Resumen - tesis.ipn.mx

2.3.1. Comunicacion serie asıncrona . . . . . . . . . . . . . . . . . . . . . . 162.3.2. Velocidad de transmision . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.3. Transmision asıncrona . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.4. Recepcion asıncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4. Comunicacion serie sıncrona . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.4.1. Modulo MSSP en modo I2C . . . . . . . . . . . . . . . . . . . . . . . 212.4.2. Concepto del Bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4.3. Terminologıa del Bus I2C . . . . . . . . . . . . . . . . . . . . . . . . 222.4.4. Caracterısticas generales . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5. PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6. Interfaz para el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.6.1. Teclado matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.6.2. LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3. Implementacion 313.1. Luxometro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.2. Transmision por RF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2.1. Transmisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.2. Receptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.3. PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.4. Interfaz con el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.4.1. Teclado matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.4.2. LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.5. Control automatico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4. Sugerencias para trabajos futuros 55

Referencias 57

iv

Page 7: Resumen - tesis.ipn.mx

Indice de Figuras

1.1. Fototransistor elegido (imagen tomada de las hojas de datos). . . . . . . . . 21.2. Curva de Illuminancia (horizontal) vs Corriente de colector (vertical). . . . . 31.3. Tira de LEDs de SiLed usada en este trabajo . . . . . . . . . . . . . . . . . . 41.4. Microcontrolador PIC de Microchip. . . . . . . . . . . . . . . . . . . . . . . 61.5. Modulo LCD usado en este trabajo. . . . . . . . . . . . . . . . . . . . . . . . 71.6. Teclado matricial de 16 teclas. . . . . . . . . . . . . . . . . . . . . . . . . . . 81.7. Constitucion interna de un teclado matricial hexadecimal. . . . . . . . . . . 91.8. Ejemplo de conexion de un teclado matricial a un microcontrolador PIC. . . 10

2.1. Amplificador de emisor comun. . . . . . . . . . . . . . . . . . . . . . . . . . 132.2. Amplificador de colector comun. . . . . . . . . . . . . . . . . . . . . . . . . . 142.3. Diagrama de la comunicacion entre el luxometro y la etapa de control. . . . 172.4. El maestro se conecta con todos los esclavos en el bus I2C con solo dos lıneas.

Por SDA circulan los datos en serie y por SCL el maestro envıa los impulsosde reloj que genera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.5. Conexion de SDA y SCL al bus. . . . . . . . . . . . . . . . . . . . . . . . . . 232.6. Circuito propuesto para excitar un LED. . . . . . . . . . . . . . . . . . . . . 242.7. Conexion del teclado matricial con el microcontrolador central. . . . . . . . . 262.8. Distribuciones tipicas de los pines de un LCD. . . . . . . . . . . . . . . . . . 282.9. Circuito de conexion del LCD con el microcontrolador central. . . . . . . . . 29

3.1. Circuito de conexion del convertidor A/D con el fototransistor. . . . . . . . . 323.2. Diagrama de flujo para la conversion A/D. . . . . . . . . . . . . . . . . . . . 333.3. Conexion electrica del modulo de transmision RF. . . . . . . . . . . . . . . . 363.4. Conexion electrica del modulo de recepcion RF. . . . . . . . . . . . . . . . . 373.5. Diagrama de flujo del programa para la transmision asıncrona. . . . . . . . . 383.6. Diagrama de flujo del programa para la recepcion asıncrona. . . . . . . . . . 423.7. Circuito final de aplicacion propuesto para el control de la lampara de LEDs

por PWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.8. Diagrama de flujo de la rutina de reconocimiento de tecla. . . . . . . . . . . 45

v

Page 8: Resumen - tesis.ipn.mx

vi

Page 9: Resumen - tesis.ipn.mx

Indice de Tablas

2.1. Frecuencias para el convertidor A/D . . . . . . . . . . . . . . . . . . . . . . 152.2. Valor de ((SPBRGH:SPBRGL)) para la velocidad de transmision. . . . . . . . 182.3. Bits de configuracion para la velocidad de transmision. . . . . . . . . . . . . 182.4. Bits de configuracion para las interrupciones del transmisor. . . . . . . . . . 192.5. Bits de configuracion para las interrupciones del receptor. . . . . . . . . . . . 202.6. Terminologıa del Bus I2C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.7. Valores del registro CCPR1L para diferentes valores de ciclo util. . . . . . . 252.8. Valores de los registros para la inicializacion del PWM. . . . . . . . . . . . . 252.9. Funcion de los pines de todos los tipos de LCD. . . . . . . . . . . . . . . . . 27

vii

Page 10: Resumen - tesis.ipn.mx

viii

Page 11: Resumen - tesis.ipn.mx

Objetivo

Disenar un control automatico de luz en un area limitada para poder administrar laenergıa electrica, de tal modo que se aproveche al maximo la iluminacion natural del area(cuando cuenta con esta caracterıstica) y se use la menor energıa electrica posible.Objetivos particulares:

Disenar un luxometro

Disenar una lampara dimeable de LEDs

Disenar el metodo para establecer comunicacion inalambrica entre la lampara y elluxometro

ix

Page 12: Resumen - tesis.ipn.mx

x

Page 13: Resumen - tesis.ipn.mx

Justificacion

Este trabajo encuentra su justificacion en la necesidad que se tiene de ahorrar energıaelectrica y al mismo tiempo cumplir con los requerimientos de iluminacion que se establecenen la norma correspondiente. Debido a que cualquier centro de trabajo, estudio o investigaciondebe proporcionar al personal condiciones adecuadas de iluminacion es necesario medir estacondicion, el hecho de que el area de trabajo cuente con las condiciones sugeridas implicaque el rendimiento y/o concentracion de los trabajadores/estudiantes mejore.Para el caso de una institucion educativa las condiciones de iluminacion deben ser optimasen aulas, laboratorios y oficinas del personal, sin embargo, las mejores condiciones puedenser obtenidas si ademas de cumplir con las normas se puede lograr un ahorro de energıa,y esta condicion se puede obtener aprovechando la iluminacion natural de dichas areas, esdecir, la luz con la que se cuenta debido a las ventanas o puertas. El proposito final deeste trabajo es proporcionar las condiciones optimas de iluminacion para un area academicaespecıfica tomando en cuenta sus condiciones naturales, de modo que se pueda lograr unahorro considerable de energıa electrica que beneficiara directamente a la administracion delrecurso economico destinado a la iluminacion.

xi

Page 14: Resumen - tesis.ipn.mx

xii

Page 15: Resumen - tesis.ipn.mx

Introduccion

Iluminancia es el flujo luminoso total incidente sobre una superficie por unidad de area.Se trata de una medida de la intensidad de la luz incidente, ponderada en longitud de ondapor la funcion de luminosidad para relacionarla con la percepcion de brillo del ojo humano.En unidades derivadas del Sistema Internacional, es medida en lux (lx) o lumenes por metrocuadrado (lm/m2). En el sistema CGS (centımetro-gramo-segundo), la unidad de iluminanciaes el phot que es igual a 10,000 lux.

La funcion de luminosidad o de la funcion eficiencia luminosa describe la sensibilidadvisual media del ojo humano a la luz de diferentes longitudes de onda. No se debe conside-rar perfectamente preciso en todos los casos, pero es una muy buena representacion de lasensibilidad visual del ojo humano y es valiosa como punto de referencia para fines experi-mentales. Es una funcion estandar establecida por la Comision Internacional de Iluminacion(normalmente conocida como CIE por su nombre en frances Commission Internationale del’Eclairage) y puede ser usada para convertir energıa radiante en energıa luminosa (es decir,visible).

Existen dos funciones de luminosidad usadas comunmente. Para niveles de luz normales,la funcion fotopica de luminosidad es la que mejor se aproxima a la respuesta del ojo humano.Para niveles bajos de luz, la respuesta del ojo humano cambia y entonces la funcion escotopicade luminosidad es la que mejor describe esta respuesta. Para este trabajo se ha seleccionadoun transductor que aproxima su respuesta a la curva fotopica de luminosidad, la comparacionentre las curvas se mostrara mas adelante.

El transductor elegido, un fototransistor, convierte la iluminancia en corriente electricacon una razon especificada en las hojas de datos del fabricante, sin embargo la senal debe seracondicionada para su correcto procesamiento y transmision; la senal de corriente electrica,proporcional a la senal de iluminancia, se convierte a voltaje mediante una resistencia, luegose convierte a una senal digital y se transmite inalambrica mente para su monitoreo.

Una de las etapas de mayor relevancia en este trabajo es la etapa de control por PWMde la intensidad de corriente que alimenta a la lampara de LEDs; con el resultado recibidodel monitoreo de iluminancia se puede hacer variar el ancho de pulso de la senal con que seexcita la tira de LEDs que compone la lampara. Se implementa un algoritmo en el programade la parte central de esta etapa, el microcontrolador PIC, que es el que permite que el nivelde iluminacion proporcionado por la lampara de LEDs se mantenga constante o varıe en fun-

xiii

Page 16: Resumen - tesis.ipn.mx

cion de la informacion recibida inalambricamente que contiene el nivel actual de iluminanciamedido con el fototransistor. Dicho programa cuenta con dos opciones de seleccion de modopara el usuario: automatico y constante. El modo constante permite al usuario seleccionar,en modo de porcentaje, la intensidad de la corriente con que se excita la lampara de LEDs,mediante una sencilla interfaz implementada con un teclado. El modo automatico se esta-blece, tambien, con el teclado, solo que en este caso el ancho de pulso varıa en funcion dela informacion que recibe del sensor inalambricamente, lo que permite monitorear la senalde luz en cualquier area que se necesite; esta caracterıstica permite al usuario controlar laintensidad de luz en un area especıfica, y si ası lo desea, cambiar de ubicacion pero mante-ner el control de luz, siempre que la nueva ubicacion sea iluminada tambien con la mismalampara, las recomendaciones para la extension del trabajo explican las posibles alternativasde implementacion para grandes areas.

xiv

Page 17: Resumen - tesis.ipn.mx

Capıtulo 1

Componentes

1.1. Fototransistor

Floyd (2008) dice que un fototransistor es similar a un BJT regular excepto porque lacorriente en la base es producida y controlada por luz en lugar de por una fuente de voltaje.El fototransistor efectivamente convierte la energıa luminosa en una senal electrica. En unfototransistor la corriente de base se produce cuando la luz choca contra la region de la basesemiconductora fotosensible. Se expone la union pn colector-base a la luz incidente mediantela abertura de una lente incluida en el transistor. Cuando no hay luz incidente, solo hayuna pequena corriente generada termicamente del colector al emisor, ICEO; esta corrienteoscura en general se encuentra en el orden de los nA. Cuando la luz choca con la union pncolector-base se produce una corriente en la base, Iλ, que es directamente proporcional a laintensidad de la luz. Esta accion produce una corriente en el colector que se incrementa conIλ. Con excepcion de la forma en que se genera la corriente en la base, el fototransistor secomporta como un BJT convencional. En muchos casos no existe una conexion electrica conla base.

La relacion entre la corriente en el colector y la corriente en la base generada por luz enun fototransistor es:

IC = βCDIλ (1.1)

La ecuacion anterior indica que es posible conocer la cantidad de luz que incide en la zonafotosensible mediante un sencillo despeje, si se mide la corriente del colector basta con haceruna division del resultado de esta medicion por el factor βCD para conocer la intensidad de luzcon la que se excita a la base. Realizar este procedimiento resulta bastante util debido a quede ese modo es posible tener la informacion necesaria, es decir, informacion de la intensidadluminosa de un area, para este trabajo. Sin embargo hacer calculos que conviertan la energıaluminosa a iluminancia no es el objetivo de este trabajo, y sobre todo resulta poco factiblede implementacion, por lo que se usa la informacion que el fabricante del fototransistor

1

Page 18: Resumen - tesis.ipn.mx

proporciona: la hoja de datos.

1.1.1. Seleccion del fototransistor

Existe una gran gama de fototransistores disponibles en el mercado, muchos de propositoespecıfico con las caracterısticas necesarias que exigen diferentes tipos de aplicacion, prin-cipalmente existen fototransistores para aplicaciones que requieren rangos de respuesta delongitud de onda de infrarrojo. Sin embargo existen tambien fototransistores que se fabricancon respuestas al espectro visible por el ojo humano, es decir, que responden a las longitu-des de onda visibles; este factor se toma en cuenta para la eleccion del fototransistor con elque se hacen las mediciones de iluminancia en este trabajo. Se opta por usar un fototran-sistor epitaxial planar NPN de silicio en montaje transparente para tecnologıa de montajesuperficial.

Figura 1.1: Fototransistor elegido (imagen tomada de las hojas de datos).

El fototransistor TEMT6000 de la marca VISHAY ofrece las caracterısticas apropiadaspreviamente descritas, en las hojas de datos es posible apreciar que cuenta, segun su descrip-cion, con una alta sensibilidad a la luz, ademas de que esta adaptado para la respuesta delojo humano; tiene un angulo de sensibilidad de 60 y tiene, de forma parecida a la respues-ta del ojo humano, su pico de sensibilidad en 570nm. Todas estas caracterısticas hacen deeste dispositivo el mas apto para uso en este trabajo, sin embargo una de sus mas grandesventajas es la informacion que presenta el fabricante con respecto a la conversion de energıaluminosa a energıa electrica, ya que presenta la curva de respuesta de la corriente de colectorcon iluminancia como parametro variable. Figura 1.2

2

Page 19: Resumen - tesis.ipn.mx

Figura 1.2: Curva de Illuminancia (horizontal) vs Corriente de colector (vertical).

Con esta informacion solo es necesario hacer un analisis mas sencillo para obtener elnivel de iluminancia de un area deseada, analisis que se explicara mas adelante. Es por estacaracterıstica en especıfico que se selecciono el fototransistor TEMT6000.

1.2. LED (Diodo Emisor de Luz)

Como su nombre lo indica el diodo emisor de luz (LED por su nombre en ingles Light-Emitting Diode) es un diodo capaz de emitir luz visible cuando se energiza. Boylestad (2003).En cualquier union p-n con polarizacion directa existe, dentro de la estructura y principalmen-te cerca de la union, una recombinacion de huecos y electrones. Esta recombinacion requiereque la energıa poseıda por el electron libre sin enlace sea transferida hacia otro estado. Entodas las uniones de semiconductores p-n cierta cantidad de esta energıa se desprendera enforma de calor y otra en forma de fotones. En el caso del silicio y del germanio, el porcentajemayor de energıa que se desprende es en forma de calor y en una medida insignificante, sedesprende luz emitida. En otros materiales como el fosfuro de arseniuro de galio (GaAsP)o el fosfuro de galio (GaP), el numero de fotones de energıa luminosa emitida es suficientecomo para crear una fuente de luz altamente visible. Al proceso de emision de luz mediantela aplicacion de una fuente de energıa electrica se le denomina electroluminiscencia.

Debido a que el LED es un dispositivo de union p-n, asumira una caracterıstica de polariza-cion directa, similar a la curva de respuesta de un diodo. Habra un incremento practicamentelineal de la intensidad luminosa en funcion de la corriente directa.

3

Page 20: Resumen - tesis.ipn.mx

Actualmente es posible encontrar LEDs en color rojo, verde, amarillo, naranja, blanco yRGB. En general los LEDs operan en rangos de voltaje de 1.7 a 3.3V, lo cual los hace com-pletamente compatibles con los circuitos de estado solido. Cuentan con tiempos de respuestade rapidos (nanosegundos) y ofrecen buenos ındices de contraste para mejor visibilidad. Susrequerimientos de potencia son tıpicamente de 10 a 150mW con tiempos de vida de mas de100,000 horas y ademas, su construccion de semiconductor les anade un factor de significativadurabilidad.

1.2.1. Tira de LEDs

El impacto que la tecnologıa LED esta teniendo en la iluminacion, no solo se debe a suconsiderable ahorro en el consumo de energıa y mantenimiento, sino tambien a su sorprenden-te ciclo de vida y propuesta de estetica, sustentabilidad y seguridad. Los modulos y tiras deLEDs crean atractivos efectos luminosos (mezclas y variaciones cromaticas, por ejemplo) paraambientacion de la iluminacion tanto de interior como de exterior. La capacidad dinamica delalumbrado LED puede aplicarse para crear el ambiente adecuado en el momento oportuno.

Las tiras de LEDs utilizan diferentes tamanos de LEDs, entre los que podemos encontrarLED estandar, Superflux o de Montaje Superficial 3528, 5050 en diversas gamas de colores.Estos pueden ser flexibles o rıgidos de facil instalacion y mantenimiento. Los fabricantesofrecen un amplio rango de aplicaciones que van desde el alumbrado publico, decoracion deinteriores, exteriores, senalizacion para tiendas, almacenes, cines, hoteles, etc. En concreto,las tiras y modulos de LEDs ofrecen una mejor solucion en el ambito de la iluminacion, ysobre todo ofrecen la capacidad de regular la intensidad luminosa a voluntad, variando lacorriente con que se les excita. La Figura 1.3 muestra la tira de LEDs usada en este trabajo.

Figura 1.3: Tira de LEDs de SiLed usada en este trabajo

4

Page 21: Resumen - tesis.ipn.mx

El modelo elegido de tira de LEDs para este trabajo es FSL-5050W300-N/W, se opto porla tira porque permite que el control de la corriente se realice mas facilmente gracias a susterminales de excitacion. Las especificaciones resultan tambien aptas para el optimo uso, eltipo de LED es montaje superficial 5050, cuenta con 300 y tiene una longitud total de 5metros con un voltaje de operacion de 12 volts.

1.3. Microcontroladores PIC

Un microcontrolador es, segun Usategui (2003), un circuito integrado programable quecontiene todos los componentes de un computador. Se emplea para controlar el funciona-miento de una tarea determinada y, debido a su reducido tamano, suele ir incorporado en elpropio dispositivo al que gobierna. Esta ultima caracterıstica es la que le confiere la denomina-cion de controlador incrustado”(embedded controller). El microcontrolador es un computadordedicado. En su memoria solo reside un programa destinado a gobernar una aplicacion deter-minada; sus lıneas de entrada/salida soportan el conexionado de los sensores y actuadores deldispositivo a controlar, y todos los recursos complementarios disponibles tienen como unicafinalidad atender sus requerimientos. Una vez programado y configurado el microcontroladorsolamente sirve para gobernar la tarea asignada.

Las comunicaciones y sus sistemas de transferencia de informacion utilizan profusamenteestos pequenos computadores incorporandolos en los grandes automatismos y en los modernostelefonos. La instrumentacion y la electromedicina son dos campos idoneos para la implanta-cion de estos circuitos integrados. Entre casi un centenar de fabricantes de microcontroladoresque existen en el mundo es muy difıcil seleccionar el mejor. En realidad no existe, porqueen cada aplicacion son sus caracterısticas especıficas las que determinan el mas conveniente.Las razones por las que se eligio un microcontrolador PIC de la marca Microchip para estetrabajo son las siguientes:

Su bajo costo

Su buena velocidad de funcionamiento

Su amplio rango de voltaje de operacion

Sus funciones perifericas

5

Page 22: Resumen - tesis.ipn.mx

Figura 1.4: Microcontrolador PIC de Microchip.

1.3.1. PIC16F1827

Se eligio el modelo de microcontrolador PIC16F1827 para su uso en el luxometro debido asus caracterısticas perifericas y su compacto tamano. Se trata de un dispositivo de 8 bits y 18pines, cuenta con un oscilador interno de frecuencia seleccionable por software de 32 MHz a 31kHz, lo que lo hace un dispositivo considerablemente rapido; como muchos microcontroladoresde Microchip, cuenta con modulos internos que permiten la comunicacion serie sıncrona yasıncrona, convertidor analogico-digital, manejo de interrupciones, entre otras caracterısticas.Principalmente se eligio este modelo por su compacto tamano y caracterısticas perifericas quepermiten la conversion A/D y transmision serie UART ademas de su gran rango de voltajede operacion.

1.3.2. PIC16F1933

La eleccion del microcontrolador, como ya se explico, depende basicamente del tipo deaplicacion para el que se requiera, ası, como se eligio el microcontrolador PIC16F182 parasu uso en el luxometro, se opto por el microcontrolador PIC16F1933 para realizar la in-terpretacion de los comandos del usuario enviados mediante el teclado y decidir el modode funcionamiento; este dispositivo fue seleccionado por sus caracterısticas perifericas: unoscilador interno de frecuencia seleccionable por software de 32 MHz a 31 kHz, modulo decomunicacion asıncrona UART y sus 28 pines, que permiten la conexion con el teclado y

6

Page 23: Resumen - tesis.ipn.mx

con el display (LCD) que forman la interfaz con el usuario; dichas caracterısticas permitenreducir el numero total de circuitos electronicos necesarios para la realizacion de este trabajo.

1.4. LCD alfanumerico

Las pantallas de cristal lıquido o display LCD para mensajes (Liquid Crystal Display)tienen la capacidad de mostrar cualquier caracter alfanumerico, permitiendo representar lainformacion que genera cualquier equipo electronico de una forma facil y economica (Figura1.5) Municio (2004). La pantalla consta de una matriz de caracteres (normalmente de 5x7puntos) distribuidos en una, dos, tres o cuatro lıneas de 16 hasta 40 caracteres cada lınea.El proceso de visualizacion es gobernado por un microcontrolador incorporado a la pantalla,siendo el Hitachi 44780 el modelo mas utilizado.

Figura 1.5: Modulo LCD usado en este trabajo.

Distintos fabricantes ofrecen multitud de modelos de visualizadores de cristal lıquido.El modelo usado en este trabajo es el JHD162A, que es un modulo LCD de dos columnasde 16 caracteres cada una. Resulta ser ideal para aplicaciones que requieren capacidad devisualizacion media gracias a sus caracterısticas:

5x7 puntos

Voltaje de operacion 5V

Consumo de corriente .4mA

Pantalla de caracteres ASCII, ademas de caracteres japoneses, griegos y sımbolos ma-tematicos

7

Page 24: Resumen - tesis.ipn.mx

Puede ser controlado de dos formas principales

• 4 bits

• 8 bits

1.5. Teclado matricial

Los sistemas con microcontroladores tienen como finalidad el proceso de datos. Estos seobtienen de formas muy variadas, pueden ser de manera automatica por medio de sensoresque midan parametros fısicos, como es el caso del luxometro, o de forma manual, para el casode la etapa central del control de la lampara de LEDs y que deben ser suministrados porel usuario. Para poder recibir estos datos que el usuario provee se implementa una interfazcon un teclado matricial, que es el dispositivo de teclado de mayor uso en proyectos conmicrocontroladores. La Figura 1.6 muestra el teclado matricial usado en este proyecto.

Figura 1.6: Teclado matricial de 16 teclas.

8

Page 25: Resumen - tesis.ipn.mx

Un teclado matricial esta compuesto por pulsadores dispuestos en filas y columnas, Figura1.7. Su intencion es disminuir el numero de lıneas necesarias para su interconexion.

Figura 1.7: Constitucion interna de un teclado matricial hexadecimal.

La Figura 1.7 muestra la constitucion interna y el aspecto fısico de un teclado matricialde 16 teclas o hexadecimal. Cada tecla se conecta a una fila y a una columna. Las 16 teclasnecesitan solo 18 pines para conectarse con el exterior, en lugar de usar las 16 lıneas quese usarıan para 16 pulsadores, se usan solo 8, lo que permite reducir el tamano y numerode componentes necesarios de su circuito de aplicacion. Cuando una tecla es pulsada, que-da en contacto una fila con una columna y, si ninguna tecla es presionada, las filas estandesconectadas de las columnas (Figura 1.8).

9

Page 26: Resumen - tesis.ipn.mx

Figura 1.8: Ejemplo de conexion de un teclado matricial a un microcontrolador PIC.

10

Page 27: Resumen - tesis.ipn.mx

Capıtulo 2

Metodos

2.1. Medicion de iluminancia

Para medir iluminancia es imperativo el uso del transductor elegido para poder imple-mentar la funcion del luxometro, y ya que se eligio un transductor a energıa electrica se debeaplicar un analisis de las caracterısticas de dicho dispositivo de tal manera que sea posibleconocer el nivel de iluminancia midiendo la corriente del colector, que es la cantidad de laque se puede disponer mediante el fototransistor.

2.1.1. Analisis del transductor

El transductor usado para medir iluminancia en este trabajo es el fototransistor TEMT6000de la marca VISHAY, principalmente seleccionado por sus caracterısticas de informacion quepermiten hacer una menos complicada operacion para poder hacer mediciones de iluminancia.De la Figura 1.2 es posible apreciar que la relacion entre Iluminancia y Corriente de Colectordel fototransistor es constante, ya que, aunque se trata de ejes logarıtmicos remarcando quelos dos usan escalas logarıtmicas, se ve una lınea recta, lo que indica una relacion constante,es decir, que la Corriente de Colector se puede describir mediante la ecuacion de la recta parados puntos:

y − y1 =y2 − y1x2 − x1

(x− x1) (2.1)

Y en terminos de Iluminancia y Corriente de Colector:

IPCE − IPCE1 =IPCE2 − IPCE1

EV2 − EV1(EV − EV1) (2.2)

Donde de las mismas hojas de datos sabemos que IPCE1 = 50×10−6, IPCE2 = 500×10−6;EV2 = 1000, EV1 = 100, por lo tanto:

11

Page 28: Resumen - tesis.ipn.mx

IPCE − 50 × 10−6 =500 × 10−6 − 50 × 10−6

1000 − 100(EV − 100) (2.3)

IPCE = 500 × 10−9 (EV − 100) + 50 × 10−6 (2.4)

IPCE = 500 × 10−9EV − 50 × 10−6 + 50 × 10−6 (2.5)

IPCE = 500 × 10−9EV (2.6)

Sin embargo, y dado que es el objetivo del transductor, es conocida la corriente y se debeexpresar la iluminancia en terminos de esta, lo que resulta en:

EV =IPCE

500 × 10−9(2.7)

EV = 2 × 106IPCE (2.8)

Con esta ultima expresion es factible conocer la iluminancia en el area en que se encuentrael fototransistor en funcion de la corriente de colector; no obstante se eligio conocer la corrientede forma indirecta, midiendo voltaje con el convertidor A/D del microcontrolador PIC, porlo que es necesario expresar la iluminancia (EV ) en terminos de voltaje. De la expresion 2.9,(Ley de Ohm) se sabe que es posible definir la corriente en terminos del voltaje que se aplicaa la resistencia por la que fluye la corriente de colector del fototransistor. Por lo tanto esposible escribir:

I =V

R(2.9)

EV = 2 × 106VRR

(2.10)

Donde R = 10 × 103Ω, y entonces la expresion se reduce a su forma final:

EV = 200VR (2.11)

2.1.2. Circuito para la medicion

Con esta ultima expresion, el metodo para la implementacion del luxometro queda com-pletamente definido, y ya es posible implementar el algoritmo de que calculara la iluminanciamediante el resultado del convertidor A/D. Sin embargo la medicion indirecta de la corrientese hara mediante una resistencia cuyo valor ya se expuso y el analisis se explica a continuacion.

De acuerdo a la nota de aplicacion AN-3005 de Fairchild, se recomienda usar, para medi-ciones de fototransistores uno de los siguientes circuitos:

12

Page 29: Resumen - tesis.ipn.mx

Amplificador de emisor comun

Amplificador de colector comun

La Figura 2.1 muestra el circuito del amplificador de emisor comun, el voltaje de salidaes el que existe en el colector y este varıa inversamente con respecto a la energıa luminosaaplicada en la zona fotosensible.

Figura 2.1: Amplificador de emisor comun.

El circuito de la Figura 2.2 muestra la topologıa del amplificador de emisor comun, en estecircuito el voltaje de salida es el de la resistencia, es decir, tomado de la terminal emisor delfototransistor. Este circuito proporciona una salida de voltaje proporcional a la iluminanciaque incide sobre el area fotosensible del fototransistor, dicha caracterıstica es la que lo haceelegible para este trabajo, la relacion entre el voltaje de salida y la iluminancia se puedeobservar en la ecuacion 2.11.

13

Page 30: Resumen - tesis.ipn.mx

Figura 2.2: Amplificador de colector comun.

En ambos circuitos el fototransistor puede ser usado en dos modos, interruptor y activo.El modo de operacion activo el fototransistor genera una respuesta proporcional a la luzrecibida por el componente hasta cierto nivel. Cuando la cantidad de luz sobrepasa dichonivel el fototransistor entra en saturacion y la salida no incrementara incluso si el nivel deluz aumenta. Este modo de operacion es util para aplicaciones que requieren dos niveles deentrada para comparacion. Operar en el modo de interrupcion significa que el fototransistorva estar en estado “apagado” o “encendido” de acuerdo a la luz. Mediante el ajuste delresistor de carga en el circuito amplificador se puede establecer el modo de operacion. Elcorrecto valor del resistor puede ser determinado por las siguientes ecuaciones:

Modo activo: VCC > RL × ICC

Modo de interrupcion: VCC < RL × ICC

De acuerdo a las expresiones anteriores y a la hoja de datos del fototransistor, se calculauna resistencia de 10kΩ, ya que la maxima corriente de colector que se muestra en las hojasde especificaciones es IPCE = 500µA y el voltaje de alimentacion del luxometro es de 5V . Loque cumple con las condiciones previamente descritas para el funcionamiento del transistoren modo activo, ya que lo que se desea es obtener una respuesta proporcional del voltaje conrespecto a la iluminancia y ası poder llevar a cabo la medicion correctamente.

2.2. Conversion A/D

El modulo de conversion A/D del microcontrolador elegido para el luxometro, al igual queel de muchos otros modelos de microcontroladores PIC, es un modulo de 10 bits de resolucion

14

Page 31: Resumen - tesis.ipn.mx

y 12 canales. Lo que proporciona una resolucion de 4,5mV/bit. A traves del canal de entradaseleccionado se aplica la senal analogica a un capacitor de captura y mantenimiento (simpleand hold) y luego se introduce al conversor, el cual proporciona un resultado digital de 10bits de longitud usando la tecnica de aproximaciones sucesivas.

2.2.1. Registros de trabajo

El funcionamiento del conversos A/D requiere de la manipulacion de cuatro registros:

ADRESH: Parte alta del resultado de la conversion

ADRESL: Parte baja del resultado de la conversion

ADCON0: registro de control 0

ADCON1: registro de control 1

En la pareja de registros ADRESH:ADRESL se deposita el resultado de la conversion,que al estar compuesto por 10 bits, solo son significativos 10 bits de dicha pareja. Los bitsADCON1< 6 : 4 > sirven para asignar la frecuencia de reloj que se emplea en la conversion,con la siguiente asignacion:

ADCON1< 6 : 4 > Frecuencia seleccionada para el convertidor A/D000 FOSC/2001 FOSC/8010 FOSC/32011 FRC (oscilador RC)100 FOSC/4101 FOSC/16110 FOSC/64111 FRC (oscilador RC)

Tabla 2.1: Frecuencias para el convertidor A/D

El tiempo para completar una conversion de 1 bit se designa como TAD, para una con-version de 10 bits se requieren 11,5TAD periodos. Para la correcta conversion, las apropiadasespecificaciones deben ser establecidas. El fabricante proporciona una tabla con las frecuen-cias de reloj para el convertidor apropiadas y para diferentes frecuencias de reloj. Dicha tablase encuentra en las hojas de datos, de donde se puede comprobar que para una frecuencia dereloj de 16MHz del microcontrolador, es recomendable una frecuencia de reloj de FOSC/16,lo que provee un TAD = 2,0µs, que cumple con los requerimientos mınimos que exige unacorrecta conversion.

15

Page 32: Resumen - tesis.ipn.mx

El bit ADCON1< 7 > es el bit de configuracion del formato del resultado de la conversion,haciendolo ‘0’ se configura el formato de salida “justificado a la izquierda”, lo que implica quelos 8 bits mas significativos del resultado de la conversion (recordando que es un convertidorde 10 bits) se almacenaran en el registro ADRESH, registro del cual se obtendra el resultadode la conversion, un resultado de 8 bits. Otro grupo de bits de configuracion del modulo deconversion analogico-digital es el que comprende ADCON1< 2 : 0 >, que son los bits deconfiguracion de las referencias de voltaje para el convertidor. Es decir, el rango de voltajedentro del cual se realizara la conversion. Configurando este grupo de bits de la forma “000”aseguramos que el rango sera completo, de VSS a VDD; o para el caso de este trabajo, de 0Va 5V.

El registro de configuracion ADCON0 es mas sencillo de comprender y establecer, ya quesolo define el canal de conversion, el estado del modulo conversor y el inicio/estado de laconversion. Para la seleccion del canal se deben configurar los bits ADCON0< 6 : 2 >, porcomodidad en la conexion se selecciona el canal 1, ya que es el pin que permitirıa un diseno dePCB mas sencillo. El bit que activa el conversor A/D es ADCON0< 0 >, estableciendo dichobit en ‘1’ se activa el modulo y ya es posible hacer conversiones. El bit ADCON0< 1 > es elbit con el que se inician las conversiones y el bit que indica el estado del convertidor, tambiense puede tener acceso a el mediante el identificador “GO”, que es como se manejara de ahoraen adelante.

Para comenzar una conversion es necesario escribir el valor “1” en el bit GO, este bittiene la propiedad de cambiar automaticamente su estado a “0” cuando la conversion termi-na; por tanto es de suma utilidad preguntar por su valor una vez iniciada una conversion,cuando este bit toma el valor que indica una conversion completa se puede, y solo entonces,a menos que se use la interrupcion del modulo, proceder a usar el valor contenido en el re-gistro ADRESH como resultado correcto de la conversion. Los registros de configuracion delconvertidor analogico-digital del microcontrolador usado, quedan configurados, entonces, dela manera que sigue en el inicio del programa:

ADCON0=0b00000101ADCON1=0b01010000

2.3. USART: Transmisor/Receptor Sıcrono/Asıncrono

Serie

2.3.1. Comunicacion serie asıncrona

Algunos microcontroladores PIC contienen un modulo MSSP con dos puertas para lacomunicacion serie ((sıncrona)), o sea, con senal de reloj. Ademas, tambien disponen de unmodulo USART capaz de soportar la comunicacion serie sıncrona y asıncrona. El USART,llamado SCI (Serial Comunications Interface), puede funciona como un sistema de comunica-

16

Page 33: Resumen - tesis.ipn.mx

cion full duplex o bidireccional asıncrono, adaptandose a multitud de perifericos y dispositivosque transfieren informacion de esta forma, tales como monitor CRT o el ordenador PC. Tam-bien puede trabajar en modo sıncrono unidireccional o half duplex para soportar perifericoscomo memorias, conversores, etc. En resumen, el USART puede trabajar de tres maneras:

1. ASINCRONA (Full duplex, bidireccional).

2. SINCRONA-MAESTRO (Half duplex, unidireccional).

3. SINCRONA-ESCLAVO (Half duplex, unidireccional).

En este trabajo se hace uso de la comunicacion asıncrona (UART) ya que las restriccionesdel mismo permiten una mayor flexibilidad para el establecimiento del modo de comunicacion.En principio y basicamente, la comunicacion se realiza solo del luxometro a la etapa centraldel control; y ya que solo se trata de un canal de conversion A/D en el luxometro, unasola variable es la que se transmitira, estableciendo ası una lınea directa entre el transmisor(luxometro) y el receptor (control) unidireccional simplex. Figura 2.3.

Figura 2.3: Diagrama de la comunicacion entre el luxometro y la etapa de control.

Tomando en cuenta la conexion que se necesita, y dejando de considerar por ahora que serealiza mediante RF, resulta evidente que solo habra que configurar la transmision asıncro-na en el microcontrolador del luxometro para enviar el valor de la variable que contiene elresultado de la conversion del canal analogico al que se conecta la resistencia que contiene lainformacion de iluminancia que se desea medir. Ası mismo, en el control se necesita configu-rar unicamente el modulo receptor, dado que solo necesita la informacion que el luxometroprovee para llevar a cabo sus tareas. Debido a esto se explicaran los modulos de recepciony transmision de los microcontroladores PIC, que cabe mencionar, tienen la misma forma

17

Page 34: Resumen - tesis.ipn.mx

de operacion, registros y funcionamiento ya que es lema de la empresa complicar lo menosposible el conocimiento de sus dispositivos.

2.3.2. Velocidad de transmision

El modulo de transmision, ası como el modulo de recepcion asıncrona necesita establecerpreviamente a su funcionamiento la velocidad de transmision de datos. La velocidad con laque el modulo envıa datos y los recibe es controlada con el mismo registro, ya que indepen-dientemente de que se use transmision o recepcion, el modulo sigue siendo el EUSART. Elcontrol de esta caracterıstica se explicara en terminos de los identificadores de cada bit ogrupos de bits que sean necesarios y no en como registros ya que de esta forma se facilita elanalisis y la comprension del proceso.

Tal y como las hojas de datos lo indican, la velocidad de transmision (V elT )queda definidade la siguiente forma:

V elT =FOSC

64 ([SPBRGH : SPBRGL] + 1)(2.12)

Siempre que los bits SYNC, BRG16, BRGH queden definidos como se indica en la Tabla2.3. Tal y como se muestra en el ejemplo de las hojas de datos que proporciona el fabricante,se opta por una velocidad de transmision de 9615, que representa un error del 0.16 % conrespecto a la muy recurrida velocidad 9600. La velocidad de transmision elegida requiere queSPBRGH : SPBRGL = 25, lo que significa que los valores con los que se debera establecerla velocidad de transmision son:

SPBRGH SPBRGL0 25

Tabla 2.2: Valor de ((SPBRGH:SPBRGL)) para la velocidad de transmision.

Bit ValorSYNC 0BRG16 0BRGH 0

Tabla 2.3: Bits de configuracion para la velocidad de transmision.

Una vez que se ha definido la velocidad de transmision, es posible iniciar la transmision orecepcion, no esta de mas mencionar que los dos dispositivos (transmisor y receptor) deberancoincidir en dicha velocidad para que se lleve a cabo la correcta comunicacion; y que, como ya

18

Page 35: Resumen - tesis.ipn.mx

se expuso y se puede comprobar en las hojas de datos, es valido usar los mismos identificadorespara ambos microcontroladores, el PIC16F1827 y el PIC16F1933.

2.3.3. Transmision asıncrona

El proceso de transmision se realiza haciendo uso de las interrupciones del modulo USART,el modulo en si caracterıstica de transmision es capaz de generar una interrupcion, la con-dicion que hace que la bandera de la mencionada interrupcion se active (tome el valor de’1’) ocurre cada que el modulo USART es activado y no existe caracter en retencion para sutransmision en el registro TXREG, ya que el registro TXREG es el que contiene el proximodato a ser enviado, es posible decir que la bandera de interrupcion del transmisor asıncronose activa cada vez que se ha terminado de transmitir un dato.

Aprovechando la caracterıstica de interrupcion del modulo USART en su funcion de trans-misor asıncrono, resulta bastante propio usar la interrupcion para saber cuando es posibleiniciar el envıo de un nuevo dato, por lo tanto, el cuerpo de la funcion de interrupcion (fun-cion a la que se accede cuando la bandera de interrupcion del transmisor, TXIF, se activa)escribe un dato nuevo en el registro TXREG, ya que al hacer esto la transmision es iniciadaautomaticamente y dado que la bandera no se activara sino hasta que la transmision actualtermine, no se van a generar colas de datos para transmitir.

Sin embargo hay que senalar que para poder usar las caracterısticas de interrupcion delmodulo USART tanto en su funcion de transmisor asıncrono como de receptor asıncrono, esnecesario activar bits de control de interrupciones, los bits y sus respectivos valores, que seencuentran en las hojas de datos, en la descripcion del uso de la interrupcion se muestran enla Tabla 2.4.

Bit ValorTXIE 1PEIE 1GIE 1

Tabla 2.4: Bits de configuracion para las interrupciones del transmisor.

Descritos ya los conceptos y consideraciones para llevar a cabo la transmision asıncrona,solo basta implementar la programacion para que se pueda realizar la transmision. Unavez establecidos los parametros se procede a activar el modulo y su funcion de transmisorasıncrono haciendo:

SPEN=1TXEN=1

19

Page 36: Resumen - tesis.ipn.mx

2.3.4. Recepcion asıncrona

La recepcion asıncrona es bastante similar a la transmision, la condicion de interrupciones tal que su bandera (RCIF) se activa cada que el modulo USART es activado y hay un datono leıdo en el buffer de recepcion, es decir, la bandera de interrupcion del receptor asıncronose activa cada que un dato es recibido y se desactiva automaticamente (RCIF es un registrosolo de lectura) cada que se lee el valor del dato recibido, disponible en el registro RCREG.Haciendo uso de esta caracterıstica es posible disponer de un nuevo dato, o de un dato sinleer aun, cada que ocurre una interrupcion, es por esta caracterıstica que es factible usar latransmision asıncrona, no importa el momento en el que el transmisor decida hacer el envıode datos, ya que automaticamente se puede saber si hay datos nuevos o sin leer y si ademas sedispone de una interrupcion que es capaz de detectar el momento exacto en que esto ocurre,la recepcion de datos se hace mas sencilla y confiable.

Como ya se planteo, la habilidad de interrupcion del modulo USART en modo receptorasıncrono es de gran utilidad, el proceso de recepcion de nuevos datos es ejecutar una funcioncuyo cuerpo sea capaz de leer directamente el registro RCREG, donde esta contenido elnuevo dato recibido, y que se ejecute cada que se reciba un nuevo dato; entonces el cuerpode la funcion que se ejecuta cada que la bandera de interrupcion del receptor se activadebera realizar dicho proceso.

Resulta ahora de gran utilidad saber que gracias a la naturaleza del algoritmo de recepcionde datos mediante interrupciones es bastante eficiente, ya que inmediatamente despues dehaber recibido un dato, este se lee y se dispone el buffer de entrada del receptor para unanueva recepcion, por lo que difıcilmente se perderan datos.

Para poder implementar la recepcion con las caracterısticas ya descritas es necesario,al igual que con la transmision, establecer ciertos bits de configuracion de interrupciones,estos bits y sus correspondientes valores se muestran en la Tabla 2.5 y son los que senala elfabricante en la hoja de datos.

Bit ValorRCIE 1PEIE 1GIE 1

Tabla 2.5: Bits de configuracion para las interrupciones del receptor.

Aclarando ya las consideraciones de la recepcion asıncrona se procede plasmar dichas con-sideraciones en el programa para que la recepcion pueda ejecutarse tal y como esta planeado,para eso es necesario activar el USART en su modo de funcionamiento de receptor asıncronoestableciendo los siguientes registros:

SPEN=1

20

Page 37: Resumen - tesis.ipn.mx

CREN=1

2.4. Comunicacion serie sıncrona

En Usategui (2000) se explica que la comunicacion serie es una forma de apreciada detransferir datos digitales entre sistemas y circuitos integrados, dada la reducida cantidadde lıneas que precisa. En los PIC16(L)F1826/27, Microchip ha implantado en el silicio desus chips el modulo MSSP (Master Synchronous Serial Port), que proporciona un excelenteinterfaz de comunicacion de los microcontroladores con otros microcontroladores y diversosperifericos, entre los que destacan memorias EEPROM serie, los conversores A/D, los con-troladores de displays, etc. De esta forma, el usuario dispone de algunas patitas de la PuertaC, que correctamente programadas sirven para manejar directamente la comunicacion serie.Ademas, el modulo MSSP admite dos de las alternativas mas usadas en la comunicacion seriesıncrona:

1. SPI (Serial Peripherial Interface)

2. I2C (Inter-Integrated Circuit)

La comunicacion serie en modo SPI la utilizan principalmente las memorias (RAM yEEPROM) y utiliza tres lıneas para llevarla a cabo. En el modo I2C solo se emplean doslıneas y, recientemente, ha conseguido una importante implantacion en la comunicacion decircuitos integrados, existiendo en el mercado todo tipo de perifericos capaces de trabajar coneste protocolo (memorias, controladores, relojes, conversores, etc.), y es el modo que se utilizaen estre trabajo debido a las pocas lıneas de las que se debe disponer en el microcontrolador.

2.4.1. Modulo MSSP en modo I2C

El protocolo de comunicacion serie I2C fue desarrollado por Phillips para cubrir suspropias necesidades en la implementacion de diversos productos electronicos que requerıanuna elevada interconexion de circuitos integrados. El protocolo I2C (Inter-Integrated Circuit)utiliza unicamente dos lıneas para la transferencia de informacion entre los elementos que seacoplan al bus. Una de dichas lıneas se dedica a soportar los datos, es bidireccional y se llamaSDA; la otra lleva los impulsos de reloj para la sincronizacion, es unidireccional y recibe elnombre de SCL. Los impulsos de reloj siempre los genera el maestro y tienen la funcion desincronizar las transferencias con todos los esclavos colgados a las dos lıneas.Figura 2.4.

21

Page 38: Resumen - tesis.ipn.mx

Figura 2.4: El maestro se conecta con todos los esclavos en el bus I2C con solo dos lıneas. PorSDA circulan los datos en serie y por SCL el maestro envıa los impulsos de reloj que genera.

2.4.2. Concepto del Bus I2C

Dos lıneas, SDA (datos) SCL (reloj), transportan la informacion entre os diferentes dispo-sitivos conectados al bus. Cada dispositivo se identifica con por una unica direccion y puedetransmitir o recibir dependiendo de la operacion que se vaya a realizar. Un controlador deLCD, por ejemplo, solo recibe mientras que una memoria de tipo RAM pude transmitir orecibir datos en funcion de que se vaya a leer o escribir.

Los dispositivos pueden clasificarse en maestro (master o principal) o esclavo (slave osecundaro). El maestro es el que inicia la transferencia de datos y genera la senal de reloj.Cualquiera de los dispositivos direccionados por un maestro se considera un esclavo.

2.4.3. Terminologıa del Bus I2C

Receptor Dispositivo que recibe informacion por la lınea SDA.Maestro Dispositivo que inicia la transferencia. genera la senal

de reloj y finaliza la transferencia.Esclavo Dispositivo seleccionado por el maestro.

Tabla 2.6: Terminologıa del Bus I2C.

2.4.4. Caracterısticas generales

Todas las lıneas SDA como SCL son lıneas bidireccionales que se conectan a +Vdd me-diante resistencias de carga pull-up, tal y como se muestra en la Figura 2.5.

22

Page 39: Resumen - tesis.ipn.mx

Cuando el bus esta libre, ambas lıneas estan a nivel logico ((1)). Los transistores de salidaconectados a las lıneas del bus I2C deben ser de colector abierto para que todos ellos sepuedan conectar entre sı formando una conexion tipo AND.

Figura 2.5: Conexion de SDA y SCL al bus.

Los bits de datos sobre el bus pueden transferirse a una velocidad maxima de 100 Kbits/s.

2.5. PWM

La modulacion por ancho de pulso es una tecnica en la que se genera una senal pulsanteen la que la duracion del pulso se puede variar, sin cambiar la frecuencia, lo que resulta enuna senal con ciclo util variable. Algunos microcontroladores PIC cuentan con un moduloCCP (captura, comparacion, y modulacion por ancho de pulso) capaz de generar dicha senal.El modulo CCP puede ser usado de las tres formas, sin embargo la unica que tiene aplicacionen este trabajo es la de PWM (modulacion por ancho de pulso).

El circuito de la Figura 2.6 propuesto por Malvino (2000) es usado en este trabajo parael control de la lampara de LEDs. Dado que el modulo ya tiene impresas las terminalesde alimentacion, es posible sustituir el unico LED de este circuito por la tira usada comolampara.

23

Page 40: Resumen - tesis.ipn.mx

Figura 2.6: Circuito propuesto para excitar un LED.

Para poder lograr una intensidad de luz, directamente proporcional a la corriente de latira de LDEs, se eligio usar la tecnica de PWM sobre la resistencia de base del circuito de laFigura 2.6. Lo que provoca que la forma de onda de la modulacion de pulsos sea la mismaforma de onda de la corriente de la tira de LEDs. Es necesario mencionar que la frecuenciaelegida para la senal PWM debe ser una frecuencia que evite el efecto flicker, esto es queel ojo humano no sea capaz de percibir la frecuencia con la que se enciende y apaga lalampara de LEDs. Para este trabajo la frecuencia seleccionada es de 1kHz, lo que aseguraevitar el efecto no deseado. El proceso que recomienda el fabricante en las hojas de datos delmicrocontrolador indica los registros y su funcion dentro del proceso de configuracion de lacaracterıstica de PWM del modulo CCP al igual que la expresion del periodo, y que cuyainversa devuelve la frecuencia:

PWMPERIOD = [(PRx) + 1] • 4 • TOSC • TMRxprescalevalue (2.13)

Donde:

TOSC =1

FOSC(2.14)

Por lo que:

PWMPERIOD = [(249) + 1] • 4 • 62,5 × 10−9 • 16 (2.15)

PWMPERIOD = 1 × 103

Es decir:

frecPWM = 1kHz

24

Page 41: Resumen - tesis.ipn.mx

Con los valores ya escritos se tiene la frecuencia deseada para la modulacion de la inten-sidad luminosa de la lampara de LEDs; lo que da verdaderamente diferentes intensidades deiluminacion es el ancho de pulso de la senal PWM. El ancho de pulso se controla medianteel valor del registro CCPR1L (PWM de 8 bits), ya que se opto por usar el modulo CCP1.Este registro es el que debe cambiar de valor para poder variar el ciclo util de la senal queexcita la tira de LEDs y de esta forma variar su intensidad luminosa. La Tabla 2.7 muestrael valor de CCPR1L para diferentes valores del ciclo util.

DC CCPR1LCiclo util Valor decimal

0 % 010 % 2520 % 5030 % 7540 % 10050 % 12560 % 15070 % 17580 % 20090 % 225100 % 255

Tabla 2.7: Valores del registro CCPR1L para diferentes valores de ciclo util.

La tabla anterior se utilizara en la implementacion del control de intensidad luminosa.Los registros y sus respectivos valores para iniciar la funcion PWM son:

Registro ValorTRISC 2

PR2 249CCP1CON 12CCPR1L 125

CCPTMRS0 0T2CON 2

TMR2ON 1TRISC 0

Tabla 2.8: Valores de los registros para la inicializacion del PWM.

25

Page 42: Resumen - tesis.ipn.mx

2.6. Interfaz para el usuario

La interfaz con el usuario consta basicamente de dos elementos conectados al bloquecentral de control: un teclado matricial de 16 teclas o hexadecimal y un LCD o displayalfanumerico de 5x7 puntos, dos columnas de 16 caracteres cada una.

2.6.1. Teclado matricial

El circuito de conexion con el teclado matricial es parecido al mostrado en la Figura1.8. Las 8 lıneas se conectan directamente a un puerto del microcontrolador PIC16F1933, elpuerto B; variando del circuito la conexion de las resistencias, resultando en el circuito de laFigura 2.7.

Figura 2.7: Conexion del teclado matricial con el microcontrolador central.

El circuito propuesto para el uso del teclado funciona declarando los cuatro bits massignificativos del puerto B como salidas y los cuatro bits menos significativos como entradas;dado que los bits menos significativos son entradas es necesario inducirles siempre un voltaje,esto para evitar el estado incierto entre niveles logicos y se logra con los resistores a tierra.Del circuito de la Figura 2.7 resulta evidente que si los bits mas significativos del puertoson salidas, la resistencia de cada bit del nibble bajo se polarizara con el voltaje de algunbit del nibble alto cuando una tecla es presionada. En la figura se muestra el ejemplo de latecla 3 presionada, resulta evidente que si el bit 6 estuviera en estado alto, la resistencia R1

26

Page 43: Resumen - tesis.ipn.mx

obtendrıa el nivel logico de del bit 6, es decir ‘1’. Gracias a este ejemplo es posible deducirun metodo de identificacion para las teclas presionadas, la resistencia R1, por ejemplo, puedetener en cuatro casos diferentes un nivel logico alto, cuando R7 es alto, cuando R6 es alto,cuando R5 es alto o cuando R4 es alto; para poder discriminar entre estos casos hay queasegurarse por software que solo uno de los bits del nibble alto tenga un nivel logico ‘1’ enun tiempo definido, luego de asegurar esa condicion se pregunta por el nivel logico de losbits del nibble bajo, si uno de ellos resulta ser alto es solamente necesario saber cual de losbits del nibble alto esta en nivel logico ‘1’ y de ese modo se identifica por software la teclapresionada. Si nunca se presiona una tecla, el nivel logico de los bits del nibble bajo siempresera ‘0’, es decir, la unica condicion que asegura una tecla presionada es cuando los bits deentrada (nibble bajo) registran al menos un nivel logico ‘1’, suponiendo que al menos uno delos bits del nibble alto esta en nivel logico ‘1’.

Despues de haber planteado la propuesta para el teclado matricial resta unicamente suimplementacion por software, que se explica mas adelante.

2.6.2. LCD

La figura 1.5 muestra el aspecto tıpico de un LCD, la Figura 2.8 muestra sus distribucionesde pines comunes; los nombres y funciones de cada pin se describen en la Tabla 2.9.

No. Pin Nombre Funcion1 VSS Tierra2 VDD Alimentacion3 VEE Contraste4 RS Seleccion de registro5 R/W Lectura/Escritura6 E Permitir7 D0 Bit 0 de datos8 D1 Bit 1 de datos9 D2 Bit 2 de datos10 D3 Bit 3 de datos11 D4 Bit 4 de datos12 D5 Bit 5 de datos13 D6 Bit 6 de datos14 D7 Bit 7 de datos

Tabla 2.9: Funcion de los pines de todos los tipos de LCD.

El circuito propuesto para la conexion definitiva con el microcontrolador es el de la Figura2.9; sin embargo hay que senalar que, ya que en la Figura 2.7 tambien se usa el puerto B

27

Page 44: Resumen - tesis.ipn.mx

Figura 2.8: Distribuciones tipicas de los pines de un LCD.

para conectar el teclado matricial, en cualquiera de los dos casos puede sustituirse el puertoA por el puerto B, lo unico que cambia es el grupo de identificadores del programa principal.Para este trabajo, el puerto A fue asignado al LCD y el puerto B al teclado matricial. Lasconexiones se mantienen sin cambios.

Como se puede ver en la figura anterior, se opta por la conexion propia del modo decomunicacion de 4 bits con el LCD, esto con el proposito de ahorrar pines del microcontroladorcentral.

28

Page 45: Resumen - tesis.ipn.mx

Figura 2.9: Circuito de conexion del LCD con el microcontrolador central.

29

Page 46: Resumen - tesis.ipn.mx

30

Page 47: Resumen - tesis.ipn.mx

Capıtulo 3

Implementacion

3.1. Luxometro

Como ya se explico anteriormente, el luxometro es un dispositivo que mide iluminancia, ydebe mostrar el resultado en lux, que es la magnitud correspondiente. La figura 2.2 muestrael circuito usado en la implementacion del luxometro para la interpretacion del resultado deltransductor. La Figura 3.1 muestra la conexion del circuito con el pin del convertidor A/Ddel microcontrolador PIC16F1827.

31

Page 48: Resumen - tesis.ipn.mx

Figura 3.1: Circuito de conexion del convertidor A/D con el fototransistor.

Tomando en cuenta las consideraciones expuestas en el metodo de la conversion A/D sediseno el siguiente algoritmo para llevar a cabo dicho proceso.

32

Page 49: Resumen - tesis.ipn.mx

Figura 3.2: Diagrama de flujo para la conversion A/D.

El codigo en lenguaje C del programa que describe el algoritmo es:

#include <htc.h>

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000

#endif

__CONFIG(0x09E4);

__CONFIG(0x18FF);

volatile unsigned char ADres=0;

33

Page 50: Resumen - tesis.ipn.mx

void PICstart(void)

OSCCON=0x7A;

TRISB=0x00;

ANSELB=0x00;

PORTB=0x00;

TRISA=0x02;

ANSELA=0x02;

ADCON0=0b00000101;

ADCON1=0b01010000;

GIE=1;

PEIE=1;

void main(void)

PICstart();

env=0;

while(1)

GO=1;

while(GO==1)

ADres=ADRESH;

//while

//main

El programa hace conversiones indefinidamente para medir en todo tiempo el voltaje en elcanal de conversion; la ecuacion 2.11 define la forma de conversion de voltaje a iluminancia ycomo se puede apreciar en el algoritmo del programa, dicha operacion nunca se lleva a cabo,esto es para mejorar el acoplamiento de esta etapa con la etapa de transmision inalambrica,como se explico antes, la transmision es posible asıncronamente y solo mediante datos de 8bits, lo que resulta ser perfectamente util ya que el resultado del proceso de la conversionA/D, el registro ADRESH es de 8 bits y se puede transmitir casi directamente. No obstante,para evitar transmisiones erroneas, el ultimo valor del registro ADRESH es guardado en unavariable que es legible en cualquier momento, esta variable es la que se transmite y de estaforma se evita la lectura indefinida en el momento de conversion. Dado que la informaciontransmitida desde esta etapa es una variable del tipo char (8 bits) tiene un rango variablede 0 − 255, y que como ya se expuso, representa una cantidad proporcional a un voltaje dereferencia, en este caso 5V. Por lo que cuando el dato tiene el valor 0, el valor de voltajecorrespondiente es 0; y cuando se envıa el valor 255, el valor de voltaje es, en realidad, 5V.La resolucion queda ahora definida, segun Usategui (2006), por:

34

Page 51: Resumen - tesis.ipn.mx

Res =VREF+ − VREF−

2n(3.1)

En donde ahora es evidente que n = 8, lo que significa:

Res =5 − 0

256(3.2)

Res = 19,53 × 10−3V/bit (3.3)

Tomando en cuenta la expresion 2.11 que describe la iluminancia en funcion de voltaje,la operacion de calculo de iluminancia, tomando en cuenta que el resultado de la conversionA/D es un numero que varıa de 0 a 255, se realiza de la siguiente manera:

VR = ADres

[5

255

](3.4)

EV = 200ADres

[5

255

](3.5)

EV = 3,921ADres (3.6)

Como se puede apreciar en la expresion, la iluminancia real se obtiene multiplicando aldato ADres de 8 bits por una constante; el hecho de que la constante sea un numero decimalcomplica la operacion en el microcontrolador, sin embargo se puede evitar esta situacionhaciendo esa constante decimal un entero. De este modo se evitan las operaciones de puntoflotante y se hace mas rapido el calculo de la iluminancia. Se opta por hacer el valor dela constante 39; este numero dara como maximo 255 × 78 = 9945 que perfectamente escontenible en un dato de tipo entero y por lo tanto no sera necesario un procesamiento extra,al momento de mostrar el resultado solo es necesario modificar la posicion del punto decimaly las unidades no se veran afectadas. El error que este metodo presenta es de 0.55 % parauna iluminancia de 1000lx:

error =10000 − (255 × 39)

10000(3.7)

error =10000 − 9945)

10000(3.8)

error = 0,0055 (3.9)

error = 0,55 % (3.10)

35

Page 52: Resumen - tesis.ipn.mx

Con el metodo de conversion del resultado del convertidor A/D a iluminancia ya esta-blecido hay que senalar que dicho metodo no es implementado en el bloque del luxometro.El resultado final, iluminancia es un dato de tipo entero, es decir, de 16 bits; para evitarimplementar codigo que retrase el proceso se decidio enviar unicamente el resultado de laconversion A/D, un dato de tipo caracter (8 bits), y la etapa encargada de hacer la conver-sion de ese dato a iluminancia es la central de control, esto resulta ser lo mas adecuado yconveniente para el optimo funcionamiento del sistema en general. Se transmite un solo datode 8 bits, sin mayor problema para la transmision asıncrona y su interpretacion como medidade iluminancia se hace en el bloque central de control, en el microcontrolador PIC16F1933.

3.2. Transmision por RF

La figura 2.3 muestra un esquema basico de la transmision A/D, el bloque de RF esta com-puesto en realidad de dos elementos, el transmisor, instalado en el luxometro, y el receptor,instalado en la etapa central de control. Las Figuras 3.3 y 3.4 muestran el diagrama electricode la conexion real implementada para llevar a cabo la transmision por RF.

Figura 3.3: Conexion electrica del modulo de transmision RF.

36

Page 53: Resumen - tesis.ipn.mx

Figura 3.4: Conexion electrica del modulo de recepcion RF.

3.2.1. Transmisor

Como se puede apreciar en la figura 3.3, la etapa de transmision esta compuesta porel microcontrolador PIC16F1827 y el modulo de transmision HM-T915. El modulo esta di-rectamente conectado al pin de transmision asıncrona del microcontrolador, por lo que lasenal que enviara sera exactamente la que dicho pin genere. El pin corresponde a la salidadel modulo de transmision asıncrona, y como ya se explico, transmite un dato de 8 bits. Enmetodo de transmision se decidio hacer uso de las interrupciones del modulo para llevar acabo la transmision, el algoritmo se describe en el siguiente diagrama de flujo:

37

Page 54: Resumen - tesis.ipn.mx

Figura 3.5: Diagrama de flujo del programa para la transmision asıncrona.

El algoritmo descrito en la Figura 3.5 se compone de dos procesos que se ejecutan si-multaneamente, el programa principal y una rutina de interrupcion. Cabe recordar que no esposible manejar interrupciones si antes no se han establecido los valores correspondientes enlos identificadores de control, por lo que las interrupciones no se llevaran a cabo sino hastaque se hayan establecido dichos valores. Es claro que los procesos se ejecutan simultanea-mente, el cuerpo de la interrupcion se compone unicamente de una instruccion, recordandoque al escribir el valor en el identificador TXREG se inicia automaticamente la transmisiony que la bandera de interrupcion del transmisor se activa cada que es posible iniciar unanueva transferencia de datos, es como se explica la sencillez del cuerpo del programa de lainterrupcion. El proceso principal del programa ya se explico anteriormente, es el convertidoranalogico-digital del canal al que esta conectado el fototransistor que mide iluminancia. Elcodigo en lenguaje C de la rutina de interrupcion, ası como su inicializacion es el siguiente:

#include <htc.h>

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000

#endif

__CONFIG(0x09E4);

__CONFIG(0x18FF);

void PICstart(void)

OSCCON=0x7A;

TRISB=0x00;

ANSELB=0x00;

PORTB=0x00;

TRISA=0x02;

38

Page 55: Resumen - tesis.ipn.mx

ANSELA=0x02;

ADCON0=0b00000101;

ADCON1=0b01010000;

GIE=1;

PEIE=1;

void E_Tx(void)

SPBRGH=0x00;

SPBRGL=25;

BRG16=0;

BRGH=0;

SYNC=0;

SPEN=1;

TX9=0;

TXEN=1;

TXIE=1;

GIE=1;

PEIE=1;

void main(void)

PICstart();

E_Tx();

while(1)

//programa principal

//while

//main

static void interrupt

inter(void) // Here be interrupt function - the name is unimportant.

if(TXIF)

TXREG=env;

//TXIF

Una vez explicadas las etapas que componen el luxometro no es en inutil recordar quese eligio el microcontrolador PIC15F1827 para realizar dicha etapa. Es necesario, entonces,unificar los dos procesos, el de medicion y el de transmision en un solo codigo, que sera elque se use para generar el archivo hexadecimal de programa que se grabara en la memoriadel microcontrolador. El codigo completo es:

39

Page 56: Resumen - tesis.ipn.mx

#include <htc.h>

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000

#endif

__CONFIG(0x09E4);

__CONFIG(0x18FF);

volatile unsigned char ADres=0;

void PICstart(void)

OSCCON=0x7A;

TRISB=0x00;

ANSELB=0x00;

PORTB=0x00;

TRISA=0x02;

ANSELA=0x02;

ADCON0=0b00000101;

ADCON1=0b01010000;

GIE=1;

PEIE=1;

void E_Tx(void)

SPBRGH=0x00;

SPBRGL=25;

BRG16=0;

BRGH=0;

SYNC=0;

SPEN=1;

TX9=0;

TXEN=1;

TXIE=1;

GIE=1;

PEIE=1;

void main(void)

PICstart();

env=0;

while(1)

GO=1;

40

Page 57: Resumen - tesis.ipn.mx

while(GO==1)

ADres=ADRESH;

//while

//main

static void interrupt

inter(void) // Here be interrupt function - the name is unimportant.

if(TXIF)

TXREG=env;

//TXIF

3.2.2. Receptor

Hasta ahora el luxometro no esta terminado, ya que lo que se ha logrado transmitir es unsolo dato de 8 bits, el resultado de la conversion A/D. Y como se explico en el metodo, esnecesario multiplicar ese numero por una constante para tener el dato real de iluminancia.Este proceso se realiza en el microcontrolador de la etapa central, el PIC18F1933, que recibeel dato de forma inalambrica. El circuito de la Figura 3.4 muestra la conexion con el modulode RF. Se puede observar que existe una terminal de enable que se conecta directamenteal microcontrolador, el objetivo de este pin es activar el modulo de recepcion, el fabricantesiguiere esperar un tiempo indefinido antes de encender el modulo ya que esto asegura sucorrecto funcionamiento, se eligio un tiempo de mas de 500ms. La recepcion se maneja deforma parecida a la transmision, mediante interrupciones. El diagrama de flujo de la Figura3.6 muestra el algoritmo seguido para su implementacion. Dado que es bastante similar alde transmision, se omitira el codigo correspondiente y se mostrara en el codigo completo delmicrocontrolador central en su etapa de luxometro.

41

Page 58: Resumen - tesis.ipn.mx

Figura 3.6: Diagrama de flujo del programa para la recepcion asıncrona.

El metodo para la conversion de voltaje a iluminancia resulta en una multiplicacion, comolo dice la expresion 3.6 y como se propuso, se hara la multiplicacion por 39, que proporcionaun error relativamente pequeno y resulta en la iluminancia multiplicada por diez, lo que norepresenta ningun problema o inconveniente al mostrar este resultado. La operacion de mul-tiplicacion se realiza dentro del programa principal (main), lo que permite la multiplicaciondel ultimo dato recibido y por lo tanto tener el valor actualizado de iluminancia, ya que elprograma principal se compone de un ciclo que se repite infinitamente, es posible asegurarel monitoreo y conversion constante. El programa que completa la funcion de luxometro enlenguaje C es el que se muestra a continuacion:

#include <htc.h>

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000

#endif

__CONFIG(0x09E4);

__CONFIG(0x18FF);

unsigned char rec=0;

unsigned int aux=0;

void PICstart(void)

OSCCON = 0b01111000;

while(HFIOFR==0)

__delay_ms(500);

APFCON = 0b00000000;

TRISC = 0x00;

42

Page 59: Resumen - tesis.ipn.mx

PORTC = 0x00;

ANSELA= 0x00;

TRISA = 0x00;

TRISB = 0x0F; //PORTB -> Out<7:4> || In<3:0>

ANSELB=0x00;

PORTB=0x00;

void E_Rx(void)

TRISC7 = 1; //Rx enable

CREN = 1;

SYNC = 0;

SPBRGH = 0x00;

SPBRGL = 25;

BRG16 = 0;

BRGH = 0;

SPEN = 1;

RCIE = 1;

GIE = 1;

PEIE = 1;

RX9 = 0;

CREN = 1;

void main(void)

PICstart();

E_Rx();

while(1)

aux=(rec*39);

//while(1)

//main

static void interrupt

interr(void) // Here be interrupt function - the name is unimportant.

if(RCIF)

rec=RCREG;

//RCIF

43

Page 60: Resumen - tesis.ipn.mx

3.3. PWM

La modulacion por ancho de pulsos usara basicamente el circuito de la Figura 2.6, sus-tituyendo el interruptor mecanico por la salida del pin con la senal PWM generada por elmicrocontrolador central, el PIC16F1933. El circuito de aplicacion propuesto se muestra enla Figura 3.7.

Figura 3.7: Circuito final de aplicacion propuesto para el control de la lampara de LEDs porPWM.

Para hacer el control del cambio del ciclo util, que es la caracterıstica que generara varia-ciones en la intensidad de iluminacion de la lampara, es necesario unicamente cambiar el valorde un registro de 8 bits, por lo que la variacion resulta relativamente sencilla de controlar.Dadas estas condiciones se puede omitir el diagrama de flujo y se considerara simplemen-te, por ahora, que la variacion se hace dentro del programa principal del microcontroladorcentral.

3.4. Interfaz con el usuario

Anteriormente se explico que la interfaz con el usuario de todo el control esta compuestade dos elementos, un teclado de dieciseis teclas y un LCD alfanumerico. Las Figuras 2.7 y2.9 muestran los circuitos de conexion con cada dispositivo, tomando en cuenta lo aclaradocon respecto a la facilidad de implementar dichas conexiones con el puerto A o el puerto Bindistintamente, se eligio conectar el LCD al puerto A y el teclado al puerto B.

44

Page 61: Resumen - tesis.ipn.mx

3.4.1. Teclado matricial

El algoritmo para poder interpretar la informacion proveniente del teclado es un algoritmode iteraciones, como se puede ver en la Figura 2.7 el nibble alto del puerto es completamentede salida y el nibble bajo de entrada. Basicamente se hace que los pines del nibble altocontengan un valor logico ‘1’ y se pregunta por el valor de los bits del nibble bajo, si unoresulta en nivel alto se hace una operacion de modo que se regresa un numero en funciondel bit de salida que esta en nivel alto (controlado y sabido por software) y del bit deentrada que registra el mencionado nivel. Este proceso se repite cuatro veces cada vez quese quiera preguntar si hay una tecla presionada en determinado momento. Las cuatro vecescorresponden a los cuatro bits que componen el nibble alto del puerto. El diagrama de flujose muestra en la Figura 3.8.

Figura 3.8: Diagrama de flujo de la rutina de reconocimiento de tecla.

El algoritmo de la Figura 3.8 se repite cuatro veces cada ocasion que se quiera conocersi una tecla esta oprimida. Para la primer iteracion PORTB=0b10000000 y m=0; para lasegunda iteracion PORTB=0b01000000 y m=1; para la tercer iteracion PORTB=0b00100000y m=2; para la cuarta operacion PORTB=0b00010000 y m=3. Con esto se obtendra unnumero que varıa entre 1 y 16, mismo que debe ser interpretado de acuerdo la informacionimpresa sobre el teclado, ya que el valor no siempre coincide con la calcomanıa de cada tecla.

45

Page 62: Resumen - tesis.ipn.mx

3.4.2. LCD

La conexion de la etapa central con el LCD se explica en la Figura 2.9. No esta demasaclarar una vez mas que se opto por usar el puerto A para llevar a cabo esta conexion yaque no representa mas que un cambio en la posicion fısica de las conexiones. En el programaprincipal del controlador se definen funciones de usuario para realizar la escritura sobre elLCD, si se requiere ahondar mas en el tema se sugiere revisar las referencias al final de estetrabajo escrito. Se explicaran brevemente las funciones definidas y su uso.

Funciones

unsigned char MS Int(unsigned int x,unsigned char i)Devuelve el valor del i-esimo dıgito del entero ‘x’.

unsigned char MS Char(unsigned char x,unsigned char j)Devuelve el valor del i-esimo dıgito del caracter ‘x’.

void EnIns(void)Para enviar una senal de enable para instrucciones o comandos al LCD.

void EnDat(void)Para enviar una senal de enable para datos al LCD.

void Zend(unsigned char x,unsigned char b)Envıa un dato de tipo caracter en formato de 4 bits; b define si es instruccion/comando odato.

void Zline(char *x)Envıa una cadena de caracteres como datos.

void LCDstart(void)Rutina de inicio del LCD.

3.5. Control automatico

Como objetivo final de este trabajo se planteo desarrollar un control automatico de ilu-minacion, con la medida recibida inalambricamente se sabe el nivel actual de iluminacion delarea donde se esta trabajando, la interfaz provee una forma de ingresar y mostrar datos, yel control por PWM de la intensidad de iluminacion de la lampara permiten modificar lascondiciones de iluminacion del area. La etapa por desarrollar ahora es la de control automati-co, la que integra todas las etapas anteriores y tambien la permite al usuario establecer unnivel de iluminacion de la lampara independiente de cualquier condicion de iluminacion, esdecir, sin tomar en cuenta la medicion del luxometro. Todo este proceso de decisiones, me-dicion y control PWM es llevado a cabo en la etapa central del sistema, el microcontroladorPIC16F1933.El algoritmo de control consiste en una iteracion infinita, dentro de esta iteracion se defineuna estructura dependiente del valor de alguna tecla presionada (independientemente de si

46

Page 63: Resumen - tesis.ipn.mx

se decide o no usar el luxometro); dado que el valor de la tecla es un numero entre 1 y 16,cualquier valor que no este dentro de ese rango no tiene por que provocar alguna reaccionen el programa, es decir, el valor predefinido de la variable ‘option’ (que contiene el valor dela tecla presionada) es cero. Dicho valor solo cambia cuando se oprime una tecla. Durante elciclo infinito, se hara que el valor de ‘option’ sea el valor que devuelve la funcion de identifi-cacion de tecla, ası, cuando no hay tecla alguna presionada el valor que se devuelve es cero(Figura 3.8) y ninguna accion se lleva a cabo dentro del programa de toma de decisiones. Serevisa la condicion de teclas presionadas tan rapidamente de modo que el usuario tiene laimpresion de que el programa reacciona instantaneamente a su interaccion.Dentro del ciclo infinito y fuera de la seccion de toma de decisiones se hace uso de las fun-ciones definidas para controlar el LCD, cada vez que el ciclo se ejecuta se muestra el valoractualizado, como se explica en el metodo de adquisicion del valor de iluminancia, del re-sultado de la conversion A/D e inmediatamente se muestra el resultado como iluminancia.Basta con mostrar uno a uno los dıgitos que conforman el dato de tipo entero que contienenel valor de iluminancia y enviar un ‘punto decimal’ antes de enviar el dıgito menos signifi-cativo, de esta forma se corrige la multiplicacion por decenas que genera el factor 39 que seexplico anteriormente.Dentro de la rutina de toma de decisiones se han caracterizado y asignado los valores de cadatecla. Asignando los valores correspondientes a un porcentaje de ciclo util deseado (Tabla2.7)y definiendo perfectamente la condicion bajo la cual estos deberan operar, se tiene quepara las teclas numericas se asigna un ciclo util del digito que indican multiplicado por diez;esto significa que el usuario quiere establecer dicho ciclo util sin tomar en cuenta el resultadodel luxometro, por lo que no se hara el control automatico.Para las teclas con caracteres especiales se ha asignado un valor especıfico de iluminancia quese debe mantener, en funcion de las especificaciones de la Norma Oficial Mexicana NOM-025-STPS-2008 se eligieron los rangos de 50, 100, 200, 300 lux, y por supuesto, se habilita laopcion de control automatico.El control automatico se realiza con base en la medicion; con el dato de la medicion actualde iluminancia se calcula un error con respecto a la iluminacion deseada; cuando la medi-cion resulta ser mas grande que la deseada se restan unidades progresivamente al registrode control de ciclo util del PWM hasta que la medicion actual sea menor que la deseada.Cuando la medicion es mucho menor que la condicion deseada se suman progresivamenteunidades al registro de control de ciclo util del PWM a modo de incrementar la intensidadluminosa de la lampara de LEDs hasta que la condicion actual mediada sea superior a ladeseada. Es observable que este algoritmo mantiene al registro de control de ciclo util varian-do constantemente dentro de un rango pequeno de valores, sin embargo para esta aplicaciondicho intervalo no es significativo, ya que el efecto en la iluminancia resulta practicamenteimperceptible al ojo humano, y dado que es un intervalo pequeno se puede asegurar que lasvariaciones de iluminancia debidas a el no seran significativas.El codigo en lenguaje C del programa que se usa en el microcontrolador central es, finalmente:

47

Page 64: Resumen - tesis.ipn.mx

#include <htc.h>

#ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000

#endif

#define Dat 1

#define Ins 0

__CONFIG(0x09E4);

__CONFIG(0x18FF);

unsigned char MS_Int(unsigned int x,unsigned char i);

unsigned char MS_Char(unsigned char x,unsigned char j);

void EnIns(void);

void EnDat(void);

void Zend(unsigned char x,unsigned char b);

void Zline(char *x);

void LCDstart(void);

void ShowDat(void);

unsigned char Get_Key(void);

unsigned char AD[]="Display ON~";

unsigned char AN[]="Adan, wait...~";

unsigned char IL[]="Ev = ~";

unsigned char MN[]="Menu~";

unsigned char rec=0;

unsigned char pwm=0;

unsigned char option=0xFF;

unsigned char control=0;

unsigned int aux=0;

unsigned int act=0;

unsigned int req=0;

void PICstart(void)

OSCCON = 0b01111000;

while(HFIOFR==0)

__delay_ms(500);

APFCON = 0b00000000;

TRISC = 0x00;

48

Page 65: Resumen - tesis.ipn.mx

PORTC = 0x00;

ANSELA= 0x00;

TRISA = 0x00;

TRISB = 0x0F; //PORTB -> Out<7:4> || In<3:0>

ANSELB=0x00;

PORTB=0x00;

void PWMstart(void)

TRISC = 0b00000010;

PR2 = 249; //PWM’s Period

CCP1CON = 0b00001100;

CCPR1L = 0x7F; //PWM’s DC

CCPTMRS0 = 0b00000000;

TMR2IF = 0;

T2CON = 0b00000010; //Prescaler

TMR2ON = 1;

TRISC = 0b00000000;

void E_Rx(void)

TRISC7 = 1;

CREN = 1;

SYNC = 0;

SPBRGH = 0x00;

SPBRGL = 25;

BRG16 = 0;

BRGH = 0;

SPEN = 1;

RCIE = 1;

GIE = 1;

PEIE = 1;

RX9 = 0;

CREN = 1;

void main(void)

PICstart();

PWMstart();

LCDstart();

E_Rx();

Zend(0x80,Ins);Zline(AD);

Zend(0xC0,Ins);Zline(AN);

49

Page 66: Resumen - tesis.ipn.mx

Zend(0x01,Ins); //Clear Display

__delay_ms(100);

while(1)

//ShowDat();

option=Get_Key();

switch(option)

case 1: CCPR1L =25; control=0; break;

case 5: CCPR1L =50; control=0; break;

case 9: CCPR1L =75; control=0; break;

case 2: CCPR1L =100; control=0; break;

case 6: CCPR1L =125; control=0; break;

case 10: CCPR1L =150; control=0; break;

case 3: CCPR1L =175; control=0; break;

case 7: CCPR1L =200; control=0; break;

case 11: CCPR1L =225; control=0; break;

case 8: CCPR1L =0; control=0; break;

case 4: CCPR1L =1; control=0; break;

case 12: CCPR1L =255; control=0; break;

case 13: req = 1000; control=1; break;

case 14: req = 2000; control=1; break;

case 15: req = 3000; control=1; break;

case 16: req = 500; control=1; break;

//switch

ShowDat();

Zend(’ ’,Dat);

Zend(’ ’,Dat);

if(control==1)

aux=(rec*39);

act=aux;

if(req>act)

if(CCPR1L<255)CCPR1L++;

if(req<act)

if(CCPR1L>0)CCPR1L--;

__delay_ms(100);

//while(1)

50

Page 67: Resumen - tesis.ipn.mx

//main

void EnIns(void) //RS=RA3 //EN=RA2

RA2=1;__delay_us(10);RA2=0;

void EnDat(void) //RS=RA3 //EN=RA2

RA3=1;RA2=1;__delay_us(10);RA2=0;RA3=0;

void Zend(unsigned char x,unsigned char b)

PORTA=0x01;

PORTA|=(x&0xF0);__delay_us(20);

if(b==1)EnDat();

if(b==0)EnIns();

PORTA=0x01;

PORTA|=((x<<4)&0xF0);__delay_us(20);

if(b==1)EnDat();

if(b==0)EnIns();

void LCDstart(void)

PORTA=0x21;EnIns();__delay_ms(100);

Zend(0x28,Ins);Zend(0x06,Ins);Zend(0x0C,Ins);Zend(0x01,Ins);__delay_ms(25);

void Zline(char *x)

while((*x)!=’~’)

Zend(*x,Dat);

x++;

unsigned char MS_Int(unsigned int x,unsigned char j)

if(j==1)return(’0’+(x%10));

if(j==2)return(’0’+((x/10)%10));

if(j==3)return(’0’+((x/100)%10));

if(j==4)return(’0’+((x/1000)%10));

if(j==5)return(’0’+((x/10000)%10));

unsigned char MS_Char(unsigned char x,unsigned char j)

if(j==1)return(’0’+(x%10));

if(j==2)return(’0’+((x/10)%10));

if(j==3)return(’0’+((x/100)%10));

void ShowDat(void)

aux=(rec*39);

Zend(0x80,Ins);

Zline(IL);

Zend(MS_Int(aux,5),Dat);

Zend(MS_Int(aux,4),Dat);

Zend(MS_Int(aux,3),Dat);

51

Page 68: Resumen - tesis.ipn.mx

Zend(MS_Int(aux,2),Dat);

Zend(’.’,Dat);

Zend(MS_Int(aux,1),Dat);

Zend(’ ’,Dat);

Zend(’l’,Dat);

Zend(’x’,Dat);

Zend(0xC0,Ins);

Zline(MN);

Zend(’ ’,Dat);

Zend(’ ’,Dat);

Zend(MS_Char(rec,3),Dat);

Zend(MS_Char(rec,2),Dat);

Zend(MS_Char(rec,1),Dat);

unsigned char Get_Key(void)

unsigned char n=0xFF;

unsigned char m=0;

while(1)

if(m>3)goto xlabb2;

if(m==0)PORTB=0b10000000;goto xlabb1;

if(m==1)PORTB=0b01000000;goto xlabb1;

if(m==2)PORTB=0b00100000;goto xlabb1;

if(m==3)PORTB=0b00010000;goto xlabb1;

xlabb1:

if(RB3==1)n=m+1;goto xlabb2;

if(RB2==1)n=m+5;goto xlabb2;

if(RB1==1)n=m+9;goto xlabb2;

if(RB0==1)n=m+13;goto xlabb2;

m++;

xlabb2:

PORTB=0x00;

return n;

static void interrupt

interr(void) // Here be interrupt function - the name is unimportant.

if(RCIF)

rec=RCREG;

//RCIF

52

Page 69: Resumen - tesis.ipn.mx

53

Page 70: Resumen - tesis.ipn.mx

54

Page 71: Resumen - tesis.ipn.mx

Capıtulo 4

Sugerencias para trabajos futuros

Una evidente mejora de este trabajo es la posible implementacion del luxometro paradiferentes areas dentro del recinto. Mediante un arreglo de elementos esclavos en el bus I2Ces posible conectar a la etapa central de control de este trabajo un numero considerable desensores, de este modo se podrıa aprovechar de forma mas eficiente la iluminacion de cadaarea por separado. Se propone para la conexion, si fuera necesario, el uso de un estandarrecomendado RS-232, RS-485 para evitar tener perdidas de informacion debidas a longitudesgrandes en la lınea de transmision.Es posible mantener la conexion inalambrica del luxometro con el control, el uso de codifi-cadores se podrıa considerar antes de la etapa de transmision por RF, sin embargo hay queconsiderar que la velocidad de transferencia se reduce en este caso.Para mantener un mayor numero de lamparas se recomienda el uso de un microcontroladorde un mayor numero de pines, un microcontrolador PIC de 40 es bastante recomendable (ej.PIC16F887) al contar con 5 modulos CCP en total.Si se desea, es posible controlar tambien fuentes de iluminacion de AC, ya que se usa la mismatecnica base para el PWM, solo que en lugar de controlar el ancho de pulso se controla eltiempo de disparo del tiristor, con referencia a una senal de sincronıa de 60Hz o 120Hz.

Estas recomendaciones pueden, en caso de que se desee, mejorar el trabajo aquı expuestocontrolando mas fuentes de iluminacion y de mejor forma al contar con un numero mayor desensores posicionados estrategicamente.

55

Page 72: Resumen - tesis.ipn.mx

56 CAPITULO 4. SUGERENCIAS PARA TRABAJOS FUTUROS

Page 73: Resumen - tesis.ipn.mx

Referencias

Boylestad, Robert L. (2003). Electronica: teorıa de circuitos y dispositivos electronicos.PEARSON EDUCACION, 8a edicion.

Floyd, Thomas L. (2008). Dispositivos Electronicos. PEARSON EDUCACION, 8a edicion.

Malvino, Albert Paul (2000). Principios de electronica. McGRAW-HILL, 6a edicion.

Municio, Enrique Palacios (2004). Microcontrolador PIC16F84. Desarrollo de proyectos.Alfaomega Grupo Editor, 1a edicion.

Usategui, Jose M. Angulo (2000). MICROCONTROLADORES ((PIC)). Diseno practicode aplicaciones. SEGUNDA PARTE: PIC16F87x. McGRAW-HILL, 2a edicion.

Usategui, Jose M. Angulo (2003). MICROCONTROLADORES ((PIC)). Diseno practi-co de aplicaciones. Primera parte: El PIC16F84. Lenguajes PBASIC y Ensamblador.McGRAW-HILL, 3a edicion.

Usategui, Jose M. Angulo (2006). MICROCONTROLADORES ((PIC)) Diseno practicode aplicaciones SEGUNDA PARTE: PIC16F87x, PIC18FXXXX. McGRAW-HILL, 2a edi-cion.

57