• No se han encontrado resultados

CONTROL AUTOMATICO DE ILUMINACION DE UN RECINTO

N/A
N/A
Protected

Academic year: 2017

Share "CONTROL AUTOMATICO DE ILUMINACION DE UN RECINTO"

Copied!
73
0
0

Texto completo

(1)
(2)
(3)

Resumen

(4)
(5)

´Indice General

Resumen I

´Indice de General III

´Indice de Figuras V

´Indice de Tablas VII

Objetivo IX

Justificaci´on XI

Introducci´on XIII

1. Componentes 1

1.1. Fototransistor . . . 1

1.1.1. Selecci´on del fototransistor . . . 2

1.2. LED (Diodo Emisor de Luz) . . . 3

1.2.1. Tira de LEDs . . . 4

1.3. Microcontroladores PIC . . . 5

1.3.1. PIC16F1827 . . . 6

1.3.2. PIC16F1933 . . . 6

1.4. LCD alfanum´erico . . . 7

1.5. Teclado matricial . . . 8

2. M´etodos 11 2.1. Medici´on de iluminancia . . . 11

2.1.1. An´alisis del transductor . . . 11

2.1.2. Circuito para la medici´on . . . 12

2.2. Conversi´on A/D . . . 14

2.2.1. Registros de trabajo . . . 15

(6)

2.3.1. Comunicaci´on serie as´ıncrona . . . 16

2.3.2. Velocidad de transmisi´on . . . 18

2.3.3. Transmisi´on as´ıncrona . . . 19

2.3.4. Recepci´on as´ıncrona . . . 20

2.4. Comunicaci´on serie s´ıncrona . . . 21

2.4.1. M´odulo MSSP en modo I2C . . . 21

2.4.2. Concepto del Bus I2C . . . 22

2.4.3. Terminolog´ıa del Bus I2C . . . 22

2.4.4. Caracter´ısticas generales . . . 22

2.5. PWM . . . 23

2.6. Interfaz para el usuario . . . 26

2.6.1. Teclado matricial . . . 26

2.6.2. LCD . . . 27

3. Implementaci´on 31 3.1. Lux´ometro . . . 31

3.2. Transmisi´on por RF . . . 36

3.2.1. Transmisor . . . 37

3.2.2. Receptor . . . 41

3.3. PWM . . . 44

3.4. Interfaz con el usuario . . . 44

3.4.1. Teclado matricial . . . 45

3.4.2. LCD . . . 46

3.5. Control autom´atico . . . 46

4. Sugerencias para trabajos futuros 55

(7)

´Indice de Figuras

1.1. Fototransistor elegido (im´agen tomada de las hojas de datos). . . 2

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

1.3. Tira de LEDs de SiLed usada en este trabajo . . . 4

1.4. Microcontrolador PIC de Microchip. . . 6

1.5. M´odulo LCD usado en este trabajo. . . 7

1.6. Teclado matricial de 16 teclas. . . 8

1.7. Constituci´on interna de un teclado matricial hexadecimal. . . 9

1.8. Ejemplo de conexi´on de un teclado matricial a un microcontrolador PIC. . . 10

2.1. Amplificador de emisor com´un. . . 13

2.2. Amplificador de colector com´un. . . 14

2.3. Diagrama de la comunicaci´on entre el lux´ometro y la etapa de control. . . . 17

2.4. El maestro se conecta con todos los esclavos en el bus I2C con s´olo dos l´ıneas. Por SDA circulan los datos en serie y por SCL el maestro env´ıa los impulsos de reloj que genera. . . 22

2.5. Conexi´on de SDA y SCL al bus. . . 23

2.6. Circuito propuesto para excitar un LED. . . 24

2.7. Conexi´on del teclado matricial con el microcontrolador central. . . 26

2.8. Distribuciones tipicas de los pines de un LCD. . . 28

2.9. Circuito de conexi´on del LCD con el microcontrolador central. . . 29

3.1. Circuito de conexi´on del convertidor A/D con el fototransistor. . . 32

3.2. Diagrama de flujo para la conversi´on A/D. . . 33

3.3. Conexi´on el´ectrica del m´odulo de transmisi´on RF. . . 36

3.4. Conexi´on el´ectrica del m´odulo de recepci´on RF. . . 37

3.5. Diagrama de flujo del programa para la transmisi´on as´ıncrona. . . 38

3.6. Diagrama de flujo del programa para la recepci´on as´ıncrona. . . 42

3.7. Circuito final de aplicaci´on propuesto para el control de la lampara de LEDs por PWM. . . 44

(8)
(9)

´Indice de Tablas

2.1. Frecuencias para el convertidor A/D . . . 15

2.2. Valor de ✭✭SPBRGH:SPBRGL✮✮para la velocidad de transmisi´on. . . 18

2.3. Bits de configuraci´on para la velocidad de transmisi´on. . . 18

2.4. Bits de configuraci´on para las interrupciones del transmisor. . . 19

2.5. Bits de configuraci´on para las interrupciones del receptor. . . 20

2.6. Terminolog´ıa del Bus I2C. . . 22

2.7. Valores del registro CCPR1L para diferentes valores de ciclo ´util. . . 25

2.8. Valores de los registros para la inicializaci´on del PWM. . . 25

(10)
(11)

Objetivo

Dise˜nar un control autom´atico de luz en un ´area limitada para poder administrar la energ´ıa el´ectrica, de tal modo que se aproveche al m´aximo la iluminaci´on natural del ´area (cuando cuenta con esta caracter´ıstica) y se use la menor energ´ıa el´ectrica posible.

Objetivos particulares: Dise˜nar un lux´ometro

Dise˜nar una l´ampara dimeable de LEDs

(12)
(13)

Justificaci´

on

Este trabajo encuentra su justificaci´on en la necesidad que se tiene de ahorrar energ´ıa el´ectrica y al mismo tiempo cumplir con los requerimientos de iluminaci´on que se establecen en la norma correspondiente. Debido a que cualquier centro de trabajo, estudio o investigaci´on debe proporcionar al personal condiciones adecuadas de iluminaci´on es necesario medir esta condici´on, el hecho de que el ´area de trabajo cuente con las condiciones sugeridas implica que el rendimiento y/o concentraci´on de los trabajadores/estudiantes mejore.

(14)
(15)

Introducci´

on

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 onda por la funci´on de luminosidad para relacionarla con la percepci´on de brillo del ojo humano. En unidades derivadas del Sistema Internacional, es medida en lux (lx) o l´umenes por metro cuadrado (lm/m2

). En el sistema CGS (cent´ımetro-gramo-segundo), la unidad de iluminancia es el phot que es igual a 10,000 lux.

La funci´on de luminosidad o de la funci´on eficiencia luminosa describe la sensibilidad visual 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 representaci´on de la sensibilidad visual del ojo humano y es valiosa como punto de referencia para fines experi-mentales. Es una funci´on est´andar establecida por la Comisi´on Internacional de Iluminaci´on (normalmente conocida como CIE por su nombre en franc´es Commission Internationale de l’´Eclairage) y puede ser usada para convertir energ´ıa radiante en energ´ıa luminosa (es decir, visible).

Existen dos funciones de luminosidad usadas com´unmente. Para niveles de luz normales, la funci´on fot´opica 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 funci´on escot´opica de luminosidad es la que mejor describe esta respuesta. Para este trabajo se ha seleccionado un transductor que aproxima su respuesta a la curva fot´opica de luminosidad, la comparaci´on entre las curvas se mostrar´a m´as adelante.

El transductor elegido, un fototransistor, convierte la iluminancia en corriente el´ectrica con una raz´on especificada en las hojas de datos del fabricante, sin embargo la se˜nal debe ser acondicionada para su correcto procesamiento y transmisi´on; la se˜nal de corriente el´ectrica, proporcional a la se˜nal de iluminancia, se convierte a voltaje mediante una resistencia, luego se convierte a una se˜nal digital y se transmite inal´ambrica mente para su monitoreo.

(16)
(17)

Cap´ıtulo 1

Componentes

1.1.

Fototransistor

Floyd (2008) dice que un fototransistor es similar a un BJT regular excepto porque la corriente 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 se˜nal el´ectrica. En un fototransistor la corriente de base se produce cuando la luz choca contra la regi´on de la base semiconductora fotosensible. Se expone la uni´onpn colector-base a la luz incidente mediante la abertura de una lente incluida en el transistor. Cuando no hay luz incidente, s´olo hay una peque˜na corriente generada t´ermicamente del colector al emisor, ICEO; esta corriente oscura en general se encuentra en el orden de los nA. Cuando la luz choca con la uni´on pn colector-base se produce una corriente en la base, Iλ, que es directamente proporcional a la intensidad de la luz. Esta acci´on produce una corriente en el colector que se incrementa con Iλ. Con excepci´on de la forma en que se genera la corriente en la base, el fototransistor se comporta como un BJT convencional. En muchos casos no existe una conexi´on el´ectrica con la base.

La relaci´on entre la corriente en el colector y la corriente en la base generada por luz en un fototransistor es:

IC =βCDIλ (1.1)

(18)

proporciona: la hoja de datos.

1.1.1.

Selecci´

on del fototransistor

[image:18.612.211.371.354.469.2]

Existe una gran gama de fototransistores disponibles en el mercado, muchos de prop´osito espec´ıfico con las caracter´ısticas necesarias que exigen diferentes tipos de aplicaci´on, prin-cipalmente existen fototransistores para aplicaciones que requieren rangos de respuesta de longitud de onda de infrarrojo. Sin embargo existen tambi´en fototransistores que se fabrican con 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 elecci´on del fototransistor con el que 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 montaje superficial.

Figura 1.1: Fototransistor elegido (im´agen tomada de las hojas de datos).

(19)
[image:19.612.189.450.88.314.2]

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

Con esta informaci´on solo es necesario hacer un an´alisis m´as sencillo para obtener el nivel de iluminancia de un ´area deseada, an´alisis que se explicar´a m´as adelante. Es por esta caracter´ıstica en espec´ıfico que se seleccion´o 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 ingl´es Light-Emitting Diode) es un diodo capaz de emitir luz visible cuando se energiza. Boylestad (2003). En cualquier uni´onp-ncon polarizaci´on directa existe, dentro de la estructura y principalmen-te cerca de la uni´on, una recombinaci´on de huecos y electrones. Esta recombinaci´on requiere que la energ´ıa pose´ıda por el electr´on libre sin enlace sea transferida hacia otro estado. En todas las uniones de semiconductores p-n cierta cantidad de esta energ´ıa se desprender´a en forma de calor y otra en forma de fotones. En el caso del silicio y del germanio, el porcentaje mayor de energ´ıa que se desprende es en forma de calor y en una medida insignificante, se desprende luz emitida. En otros materiales como el fosfuro de arseniuro de galio (GaAsP) o el fosfuro de galio (GaP), el n´umero de fotones de energ´ıa luminosa emitida es suficiente como para crear una fuente de luz altamente visible. Al proceso de emisi´on de luz mediante la aplicaci´on de una fuente de energ´ıa el´ectrica se le denomina electroluminiscencia.

(20)

Actualmente es posible encontrar LEDs en color rojo, verde, amarillo, naranja, blanco y RGB. 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 s´olido. Cuentan con tiempos de respuesta de r´apidos (nanosegundos) y ofrecen buenos ´ındices de contraste para mejor visibilidad. Sus requerimientos de potencia son t´ıpicamente de 10 a 150mW con tiempos de vida de m´as de 100,000 horas y adem´as, su construcci´on de semiconductor les a˜nade un factor de significativa durabilidad.

1.2.1.

Tira de LEDs

El impacto que la tecnolog´ıa LED est´a teniendo en la iluminaci´on, no solo se debe a su considerable ahorro en el consumo de energ´ıa y mantenimiento, sino tambi´en a su sorprenden-te ciclo de vida y propuesta de est´etica, sussorprenden-tentabilidad y seguridad. Los m´odulos y tiras de LEDs crean atractivos efectos luminosos (mezclas y variaciones crom´aticas, por ejemplo) para ambientaci´on de la iluminaci´on tanto de interior como de exterior. La capacidad din´amica del alumbrado LED puede aplicarse para crear el ambiente adecuado en el momento oportuno.

[image:20.612.153.430.473.639.2]

Las tiras de LEDs utilizan diferentes tama˜nos de LEDs, entre los que podemos encontrar LED est´andar, Superflux o de Montaje Superficial 3528, 5050 en diversas gamas de colores. Estos pueden ser flexibles o r´ıgidos de f´acil instalaci´on y mantenimiento. Los fabricantes ofrecen un amplio rango de aplicaciones que van desde el alumbrado p´ublico, decoraci´on de interiores, exteriores, se˜nalizaci´on para tiendas, almacenes, cines, hoteles, etc. En concreto, las tiras y m´odulos de LEDs ofrecen una mejor soluci´on en el ´ambito de la iluminaci´on, y sobre todo ofrecen la capacidad de regular la intensidad luminosa a voluntad, variando la corriente con que se les excita. La Figura 1.3 muestra la tira de LEDs usada en este trabajo.

(21)

El modelo elegido de tira de LEDs para este trabajo es FSL-5050W300-N/W, se opt´o por la tira porque permite que el control de la corriente se realice m´as f´acilmente gracias a sus terminales de excitaci´on. Las especificaciones resultan tambi´en aptas para el ´optimo uso, el tipo de LED es montaje superficial 5050, cuenta con 300 y tiene una longitud total de 5 metros con un voltaje de operaci´on de 12 volts.

1.3.

Microcontroladores PIC

Un microcontrolador es, seg´un Usategui (2003), un circuito integrado programable que contiene todos los componentes de un computador. Se emplea para controlar el funciona-miento de una tarea determinada y, debido a su reducido tama˜no, suele ir incorporado en el propio dispositivo al que gobierna. Esta ´ultima caracter´ıstica es la que le confiere la denomina-ci´on de ¸controlador incrustado”(embedded controller). El microcontrolador es un computador dedicado. En su memoria s´olo reside un programa destinado a gobernar una aplicaci´on deter-minada; sus l´ıneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar, y todos los recursos complementarios disponibles tienen como ´unica finalidad atender sus requerimientos. Una vez programado y configurado el microcontrolador solamente sirve para gobernar la tarea asignada.

Las comunicaciones y sus sistemas de transferencia de informaci´on utilizan profusamente estos peque˜nos computadores incorpor´andolos en los grandes automatismos y en los modernos tel´efonos. La instrumentaci´on y la electromedicina son dos campos id´oneos para la implanta-ci´on de estos circuitos integrados. Entre casi un centenar de fabricantes de microcontroladores que existen en el mundo es muy dif´ıcil seleccionar el mejor. En realidad no existe, porque en cada aplicaci´on son sus caracter´ısticas espec´ıficas las que determinan el m´as conveniente. Las razones por las que se eligi´o un microcontrolador PIC de la marca Microchip para este trabajo son las siguientes:

Su bajo costo

(22)
[image:22.612.178.407.87.316.2]

Figura 1.4: Microcontrolador PIC de Microchip.

1.3.1.

PIC16F1827

Se eligi´o el modelo de microcontrolador PIC16F1827 para su uso en el lux´ometro debido a sus caracter´ısticas perif´ericas y su compacto tama˜no. Se trata de un dispositivo de 8 bits y 18 pines, cuenta con un oscilador interno de frecuencia seleccionable por software de 32 MHz a 31 kHz, lo que lo hace un dispositivo considerablemente r´apido; como muchos microcontroladores de Microchip, cuenta con m´odulos internos que permiten la comunicaci´on serie s´ıncrona y as´ıncrona, convertidor anal´ogico-digital, manejo de interrupciones, entre otras caracter´ısticas. Principalmente se eligi´o este modelo por su compacto tama˜no y caracter´ısticas perif´ericas que permiten la conversi´on A/D y transmisi´on serie UART adem´as de su gran rango de voltaje de operaci´on.

1.3.2.

PIC16F1933

(23)

con el display (LCD) que forman la interfaz con el usuario; dichas caracter´ısticas permiten reducir el n´umero total de circuitos electr´onicos necesarios para la realizaci´on de este trabajo.

1.4.

LCD alfanum´

erico

[image:23.612.206.433.283.453.2]

Las pantallas de cristal l´ıquido o display LCD para mensajes (Liquid Crystal Display) tienen la capacidad de mostrar cualquier car´acter alfanum´erico, permitiendo representar la informaci´on que genera cualquier equipo electr´onico de una forma f´acil y econ´omica (Figura 1.5) Municio (2004). La pantalla consta de una matriz de caracteres (normalmente de 5x7 puntos) distribuidos en una, dos, tres o cuatro l´ıneas de 16 hasta 40 caracteres cada l´ınea. El proceso de visualizaci´on es gobernado por un microcontrolador incorporado a la pantalla, siendo el Hitachi 44780 el modelo m´as utilizado.

Figura 1.5: M´odulo 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 m´odulo LCD de dos columnas de 16 caracteres cada una. Resulta ser ideal para aplicaciones que requieren capacidad de visualizaci´on media gracias a sus caracter´ısticas:

5x7 puntos

Voltaje de operaci´on 5V Consumo de corriente .4mA

(24)

Puede ser controlado de dos formas principales

• 4 bits • 8 bits

1.5.

Teclado matricial

[image:24.612.219.363.311.637.2]

Los sistemas con microcontroladores tienen como finalidad el proceso de datos. ´Estos se obtienen de formas muy variadas, pueden ser de manera autom´atica por medio de sensores que midan par´ametros f´ısicos, como es el caso del lux´ometro, o de forma manual, para el caso de la etapa central del control de la l´ampara de LEDs y que deben ser suministrados por el usuario. Para poder recibir estos datos que el usuario provee se implementa una interfaz con un teclado matricial, que es el dispositivo de teclado de mayor uso en proyectos con microcontroladores. La Figura 1.6 muestra el teclado matricial usado en este proyecto.

(25)
[image:25.612.138.500.214.410.2]

Un teclado matricial est´a compuesto por pulsadores dispuestos en filas y columnas, Figura 1.7. Su intenci´on es disminuir el n´umero de l´ıneas necesarias para su interconexi´on.

Figura 1.7: Constituci´on interna de un teclado matricial hexadecimal.

(26)
[image:26.612.112.473.91.314.2]
(27)

Cap´ıtulo 2

etodos

2.1.

Medici´

on de iluminancia

Para medir iluminancia es imperativo el uso del transductor elegido para poder imple-mentar la funci´on del lux´ometro, y ya que se eligi´o un transductor a energ´ıa el´ectrica se debe aplicar un an´alisis de las caracter´ısticas de dicho dispositivo de tal manera que sea posible conocer el nivel de iluminancia midiendo la corriente del colector, que es la cantidad de la que se puede disponer mediante el fototransistor.

2.1.1.

An´

alisis del transductor

El transductor usado para medir iluminancia en este trabajo es el fototransistor TEMT6000 de la marca VISHAY, principalmente seleccionado por sus caracter´ısticas de informaci´on que permiten hacer una menos complicada operaci´on para poder hacer mediciones de iluminancia. De la Figura 1.2 es posible apreciar que la relaci´on entre Iluminancia y Corriente de Colector del fototransistor es constante, ya que, aunque se trata de ejes logar´ıtmicos remarcando que los dos usan escalas logar´ıtmicas, se ve una l´ınea recta, lo que indica una relaci´on constante, es decir, que la Corriente de Colector se puede describir mediante la ecuaci´on de la recta para dos puntos:

y−y1 =

y2−y1

x2−x1

(x−x1) (2.1)

Y en t´erminos de Iluminancia y Corriente de Colector:

IP CE−IP CE1 =

IP CE2 −IP CE1 EV2 −EV1

(EV −EV1) (2.2) Donde de las mismas hojas de datos sabemos queIP CE1 = 50×10−6,IP CE

2 = 500×10

−6;

(28)

IP CE−50×10−6 = 500×10 −6

−50×10−6

1000−100 (EV −100) (2.3)

IP CE = 500×10−9(EV

−100) + 50×10−6 (2.4)

IP CE = 500×10−9EV

−50×10−6+ 50

×10−6 (2.5)

IP CE = 500×10−9EV (2.6)

Sin embargo, y dado que es el objetivo del transductor, es conocida la corriente y se debe expresar la iluminancia en t´erminos de esta, lo que resulta en:

EV =

IP CE

500×10−9 (2.7)

EV = 2×106IP CE (2.8)

Con esta ´ultima expresi´on es factible conocer la iluminancia en el ´area en que se encuentra el fototransistor en funci´on de la corriente de colector; no obstante se eligi´o conocer la corriente de forma indirecta, midiendo voltaje con el convertidor A/D del microcontrolador PIC, por lo que es necesario expresar la iluminancia (EV) en t´erminos de voltaje. De la expresi´on 2.9, (Ley de Ohm) se sabe que es posible definir la corriente en t´erminos del voltaje que se aplica a la resistencia por la que fluye la corriente de colector del fototransistor. Por lo tanto es posible escribir:

I = V

R (2.9)

EV = 2×106VR

R (2.10)

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

EV = 200VR (2.11)

2.1.2.

Circuito para la medici´

on

(29)

Amplificador de emisor com´un

Amplificador de colector com´un

[image:29.612.270.372.326.497.2]

La Figura 2.1 muestra el circuito del amplificador de emisor com´un, el voltaje de salida es el que existe en el colector y este var´ıa inversamente con respecto a la energ´ıa luminosa aplicada en la zona fotosensible.

Figura 2.1: Amplificador de emisor com´un.

(30)
[image:30.612.237.345.88.259.2]

Figura 2.2: Amplificador de colector com´un.

En ambos circuitos el fototransistor puede ser usado en dos modos, interruptor y activo. El modo de operaci´on activo el fototransistor genera una respuesta proporcional a la luz recibida por el componente hasta cierto nivel. Cuando la cantidad de luz sobrepasa dicho nivel el fototransistor entra en saturaci´on y la salida no incrementar´a incluso si el nivel de luz aumenta. Este modo de operaci´on es ´util para aplicaciones que requieren dos niveles de entrada para comparaci´on. Operar en el modo de interrupci´on significa que el fototransistor va estar en estado “apagado” o “encendido” de acuerdo a la luz. Mediante el ajuste del resistor de carga en el circuito amplificador se puede establecer el modo de operaci´on. El correcto valor del resistor puede ser determinado por las siguientes ecuaciones:

Modo activo: VCC > RL×ICC

Modo de interrupci´on:VCC < RL×ICC

De acuerdo a las expresiones anteriores y a la hoja de datos del fototransistor, se calcula una resistencia de 10kΩ, ya que la m´axima corriente de colector que se muestra en las hojas de especificaciones esIP CE = 500µAy el voltaje de alimentaci´on del lux´ometro es de 5V. Lo que cumple con las condiciones previamente descritas para el funcionamiento del transistor en modo activo, ya que lo que se desea es obtener una respuesta proporcional del voltaje con respecto a la iluminancia y as´ı poder llevar a cabo la medici´on correctamente.

2.2.

Conversi´

on A/D

(31)

y 12 canales. Lo que proporciona una resoluci´on de 4,5mV /bit. A trav´es del canal de entrada seleccionado se aplica la se˜nal anal´ogica a un capacitor de captura y mantenimiento (simple and hold) y luego se introduce al conversor, el cual proporciona un resultado digital de 10 bits de longitud usando la t´ecnica de aproximaciones sucesivas.

2.2.1.

Registros de trabajo

El funcionamiento del conversos A/D requiere de la manipulaci´on de cuatro registros: ADRESH: Parte alta del resultado de la conversi´on

ADRESL: Parte baja del resultado de la conversi´on ADCON0: registro de control 0

ADCON1: registro de control 1

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

ADCON1<6 : 4 > Frecuencia seleccionada para el convertidor A/D

000 FOSC/2

001 FOSC/8

010 FOSC/32

011 FRC (oscilador RC)

100 FOSC/4

101 FOSC/16

110 FOSC/64

[image:31.612.132.508.378.515.2]

111 FRC (oscilador RC)

Tabla 2.1: Frecuencias para el convertidor A/D

(32)

El bit ADCON1<7>es el bit de configuraci´on del formato del resultado de la conversi´on, haci´endolo ‘0’ se configura el formato de salida “justificado a la izquierda”, lo que implica que los 8 bits m´as significativos del resultado de la conversi´on (recordando que es un convertidor de 10 bits) se almacenar´an en el registro ADRESH, registro del cual se obtendr´a el resultado de la conversi´on, un resultado de 8 bits. Otro grupo de bits de configuraci´on del m´odulo de conversi´on anal´ogico-digital es el que comprende ADCON1< 2 : 0 >, que son los bits de configuraci´on de las referencias de voltaje para el convertidor. Es decir, el rango de voltaje dentro del cual se realizar´a la conversi´on. Configurando este grupo de bits de la forma “000” aseguramos que el rango ser´a completo, de VSS a VDD; o para el caso de este trabajo, de 0V a 5V.

El registro de configuraci´on ADCON0 es m´as sencillo de comprender y establecer, ya que solo define el canal de conversi´on, el estado del m´odulo conversor y el inicio/estado de la conversi´on. Para la selecci´on del canal se deben configurar los bits ADCON0<6 : 2 >, por comodidad en la conexi´on se selecciona el canal 1, ya que es el pin que permitir´ıa un dise˜no de PCB m´as sencillo. El bit que activa el conversor A/D es ADCON0<0>, estableciendo dicho bit en ‘1’ se activa el m´odulo y ya es posible hacer conversiones. El bit ADCON0<1>es el bit con el que se inician las conversiones y el bit que indica el estado del convertidor, tambi´en se puede tener acceso a ´el mediante el identificador “GO”, que es como se manejar´a de ahora en adelante.

Para comenzar una conversi´on es necesario escribir el valor “1” en el bit GO, este bit tiene la propiedad de cambiar autom´aticamente su estado a “0” cuando la conversi´on termi-na; por tanto es de suma utilidad preguntar por su valor una vez iniciada una conversi´on, cuando este bit toma el valor que indica una conversi´on completa se puede, y solo entonces, a menos que se use la interrupci´on del m´odulo, proceder a usar el valor contenido en el re-gistro ADRESH como resultado correcto de la conversi´on. Los rere-gistros de configuraci´on del convertidor anal´ogico-digital del microcontrolador usado, quedan configurados, entonces, de la manera que sigue en el inicio del programa:

ADCON0=0b00000101 ADCON1=0b01010000

2.3.

USART: Transmisor/Receptor S´ıcrono/As´ıncrono

Serie

2.3.1.

Comunicaci´

on serie as´ıncrona

(33)

comunica-ci´onfull duplex o bidireccional as´ıncrono, adapt´andose a multitud de perif´ericos y dispositivos que transfieren informaci´on de esta forma, tales como monitor CRT o el ordenador PC. Tam-bi´en puede trabajar en modo s´ıncrono unidireccional ohalf duplex para soportar perif´ericos como memorias, conversores, etc. En resumen, el USART puede trabajar de tres maneras:

1. AS´INCRONA (Full duplex, bidireccional).

2. S´INCRONA-MAESTRO (Half duplex, unidireccional). 3. S´INCRONA-ESCLAVO (Half duplex, unidireccional).

[image:33.612.136.508.342.505.2]

En este trabajo se hace uso de la comunicaci´on as´ıncrona (UART) ya que las restricciones del mismo permiten una mayor flexibilidad para el establecimiento del modo de comunicaci´on. En principio y b´asicamente, la comunicaci´on se realiza s´olo del lux´ometro a la etapa central del control; y ya que solo se trata de un canal de conversi´on A/D en el lux´ometro, una sola variable es la que se transmitir´a, estableciendo as´ı una l´ınea directa entre el transmisor (lux´ometro) y el receptor (control) unidireccionalsimplex. Figura 2.3.

Figura 2.3: Diagrama de la comunicaci´on entre el lux´ometro y la etapa de control.

(34)

de operaci´on, registros y funcionamiento ya que es lema de la empresa complicar lo menos posible el conocimiento de sus dispositivos.

2.3.2.

Velocidad de transmisi´

on

El m´odulo de transmisi´on, as´ı como el m´odulo de recepci´on as´ıncrona necesita establecer previamente a su funcionamiento la velocidad de transmisi´on de datos. La velocidad con la que el m´odulo env´ıa datos y los recibe es controlada con el mismo registro, ya que indepen-dientemente de que se use transmisi´on o recepci´on, el m´odulo sigue siendo el EUSART. El control de esta caracter´ıstica se explicar´a en t´erminos de los identificadores de cada bit o grupos de bits que sean necesarios y no en como registros ya que de esta forma se facilita el an´alisis y la comprensi´on del proceso.

Tal y como las hojas de datos lo indican, la velocidad de transmisi´on (V elT)queda definida de la siguiente forma:

V elT =

FOSC

64 ([SP BRGH :SP BRGL] + 1) (2.12) Siempre que los bits SYNC, BRG16, BRGH queden definidos como se indica en la Tabla 2.3. Tal y como se muestra en el ejemplo de las hojas de datos que proporciona el fabricante, se opta por una velocidad de transmisi´on de 9615, que representa un error del 0.16 % con respecto a la muy recurrida velocidad 9600. La velocidad de transmisi´on elegida requiere que SP BRGH :SP BRGL= 25, lo que significa que los valores con los que se deber´a establecer la velocidad de transmisi´on son:

SPBRGH SPBRGL

0 25

Tabla 2.2: Valor de ✭✭SPBRGH:SPBRGL✮✮para la velocidad de transmisi´on.

Bit Valor

SYNC 0

BRG16 0

[image:34.612.247.338.524.587.2]

BRGH 0

Tabla 2.3: Bits de configuraci´on para la velocidad de transmisi´on.

(35)

se expuso y se puede comprobar en las hojas de datos, es v´alido usar los mismos identificadores para ambos microcontroladores, el PIC16F1827 y el PIC16F1933.

2.3.3.

Transmisi´

on as´ıncrona

El proceso de transmisi´on se realiza haciendo uso de las interrupciones del m´odulo USART, el m´odulo en si caracter´ıstica de transmisi´on es capaz de generar una interrupci´on, la con-dici´on que hace que la bandera de la mencionada interrupci´on se active (tome el valor de ’1’) ocurre cada que el m´odulo USART es activado y no existe caracter en retenci´on para su transmisi´on en el registro TXREG, ya que el registro TXREG es el que contiene el pr´oximo dato a ser enviado, es posible decir que la bandera de interrupci´on del transmisor as´ıncrono se activa cada vez que se ha terminado de transmitir un dato.

Aprovechando la caracter´ıstica de interrupci´on del m´odulo USART en su funci´on de trans-misor as´ıncrono, resulta bastante propio usar la interrupci´on para saber cu´ando es posible iniciar el env´ıo de un nuevo dato, por lo tanto, el cuerpo de la funci´on de interrupci´on (fun-ci´on a la que se accede cuando la bandera de interrup(fun-ci´on del transmisor, TXIF, se activa) escribe un dato nuevo en el registro TXREG, ya que al hacer esto la transmisi´on es iniciada autom´aticamente y dado que la bandera no se activar´a sino hasta que la transmisi´on actual termine, no se van a generar colas de datos para transmitir.

Sin embargo hay que se˜nalar que para poder usar las caracter´ısticas de interrupci´on del m´odulo USART tanto en su funci´on de transmisor as´ıncrono como de receptor as´ıncrono, es necesario activar bits de control de interrupciones, los bits y sus respectivos valores, que se encuentran en las hojas de datos, en la descripci´on del uso de la interrupci´on se muestran en la Tabla 2.4.

Bit Valor TXIE 1 PEIE 1

[image:35.612.279.362.458.520.2]

GIE 1

Tabla 2.4: Bits de configuraci´on para las interrupciones del transmisor.

Descritos ya los conceptos y consideraciones para llevar a cabo la transmisi´on as´ıncrona, solo basta implementar la programaci´on para que se pueda realizar la transmisi´on. Una vez establecidos los par´ametros se procede a activar el m´odulo y su funci´on de transmisor as´ıncrono haciendo:

(36)

2.3.4.

Recepci´

on as´ıncrona

La recepci´on as´ıncrona es bastante similar a la transmisi´on, la condici´on de interrupci´on es tal que su bandera (RCIF) se activa cada que el m´odulo USART es activado y hay un dato no le´ıdo en el buffer de recepci´on, es decir, la bandera de interrupci´on del receptor as´ıncrono se activa cada que un dato es recibido y se desactiva autom´aticamente (RCIF es un registro solo 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 sin leer a´un, cada que ocurre una interrupci´on, es por esta caracter´ıstica que es factible usar la transmisi´on as´ıncrona, no importa el momento en el que el transmisor decida hacer el env´ıo de datos, ya que autom´aticamente se puede saber si hay datos nuevos o sin leer y si adem´as se dispone de una interrupci´on que es capaz de detectar el momento exacto en que esto ocurre, la recepci´on de datos se hace m´as sencilla y confiable.

Como ya se plante´o, la habilidad de interrupci´on del m´odulo USART en modo receptor as´ıncrono es de gran utilidad, el proceso de recepci´on de nuevos datos es ejecutar una funci´on cuyo cuerpo sea capaz de leer directamente el registro RCREG, donde est´a contenido el nuevo dato recibido, y que se ejecute cada que se reciba un nuevo dato; entonces el cuerpo de la funci´on que se ejecuta cada que la bandera de interrupci´on del receptor se activa deber´a realizar dicho proceso.

Resulta ahora de gran utilidad saber que gracias a la naturaleza del algoritmo de recepci´on de datos mediante interrupciones es bastante eficiente, ya que inmediatamente despu´es de haber recibido un dato, ´este se lee y se dispone el buffer de entrada del receptor para una nueva recepci´on, por lo que dif´ıcilmente se perder´an datos.

Para poder implementar la recepci´on con las caracter´ısticas ya descritas es necesario, al igual que con la transmisi´on, establecer ciertos bits de configuraci´on de interrupciones, estos bits y sus correspondientes valores se muestran en la Tabla 2.5 y son los que se˜nala el fabricante en la hoja de datos.

Bit Valor RCIE 1 PEIE 1

[image:36.612.252.332.485.549.2]

GIE 1

Tabla 2.5: Bits de configuraci´on para las interrupciones del receptor.

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

(37)

CREN=1

2.4.

Comunicaci´

on serie s´ıncrona

En Usategui (2000) se explica que la comunicaci´on serie es una forma de apreciada de transferir datos digitales entre sistemas y circuitos integrados, dada la reducida cantidad de l´ıneas que precisa. En los PIC16(L)F1826/27, Microchip ha implantado en el silicio de sus chips el m´odulo MSSP (Master Synchronous Serial Port), que proporciona un excelente interfaz de comunicaci´on de los microcontroladores con otros microcontroladores y diversos perif´ericos, 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 Puerta C, que correctamente programadas sirven para manejar directamente la comunicaci´on serie. Adem´as, el m´odulo MSSP admite dos de las alternativas m´as usadas en la comunicaci´on serie s´ıncrona:

1. SPI (Serial Peripherial Interface)

2. I2C (Inter-Integrated Circuit)

La comunicaci´on serie en modo SPI la utilizan principalmente las memorias (RAM y EEPROM) y utiliza tres l´ıneas para llevarla a cabo. En el modo I2C s´olo se emplean dos l´ıneas y, recientemente, ha conseguido una importante implantaci´on en la comunicaci´on de circuitos integrados, existiendo en el mercado todo tipo de perif´ericos capaces de trabajar con este protocolo (memorias, controladores, relojes, conversores, etc.), y es el modo que se utiliza en estre trabajo debido a las pocas l´ıneas de las que se debe disponer en el microcontrolador.

2.4.1.

odulo MSSP en modo I2C

(38)
[image:38.612.106.481.91.214.2]

Figura 2.4: El maestro se conecta con todos los esclavos en el bus I2C con s´olo dos l´ıneas. Por SDA 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 informaci´on entre os diferentes dispo-sitivos conectados al bus. Cada dispositivo se identifica con por una ´unica direcci´on y puede transmitir o recibir dependiendo de la operaci´on que se vaya a realizar. Un controlador de LCD, por ejemplo, s´olo recibe mientras que una memoria de tipo RAM pude transmitir o recibir datos en funci´on de que se vaya a leer o escribir.

Los dispositivos pueden clasificarse en maestro (master o principal) o esclavo (slave o secundaro). El maestro es el que inicia la transferencia de datos y genera la se˜nal 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 informaci´on por la l´ınea SDA.

Maestro Dispositivo que inicia la transferencia. genera la se˜nal 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

(39)

Cuando el bus est´a libre, ambas l´ıneas est´an a nivel l´ogico ✭✭1✮✮. Los transistores de salida conectados a las l´ıneas del bus I2C deben ser de colector abierto para que todos ellos se puedan conectar entre s´ı formando una conexi´on tipo AND.

Figura 2.5: Conexi´on de SDA y SCL al bus.

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

2.5.

PWM

La modulaci´on por ancho de pulso es una t´ecnica en la que se genera una se˜nal pulsante en la que la duraci´on del pulso se puede variar, sin cambiar la frecuencia, lo que resulta en una se˜nal con ciclo ´util variable. Algunos microcontroladores PIC cuentan con un m´odulo CCP (captura, comparaci´on, y modulaci´on por ancho de pulso) capaz de generar dicha se˜nal. El m´odulo CCP puede ser usado de las tres formas, sin embargo la ´unica que tiene aplicaci´on en este trabajo es la de PWM (modulaci´on por ancho de pulso).

(40)
[image:40.612.151.434.83.259.2]

Figura 2.6: Circuito propuesto para excitar un LED.

Para poder lograr una intensidad de luz, directamente proporcional a la corriente de la tira de LDEs, se eligi´o usar la t´ecnica de PWM sobre la resistencia de base del circuito de la Figura 2.6. Lo que provoca que la forma de onda de la modulaci´on de pulsos sea la misma forma de onda de la corriente de la tira de LEDs. Es necesario mencionar que la frecuencia elegida para la se˜nal PWM debe ser una frecuencia que evite el efecto flicker, esto es que el ojo humano no sea capaz de percibir la frecuencia con la que se enciende y apaga la l´ampara de LEDs. Para este trabajo la frecuencia seleccionada es de 1kHz, lo que asegura evitar el efecto no deseado. El proceso que recomienda el fabricante en las hojas de datos del microcontrolador indica los registros y su funci´on dentro del proceso de configuraci´on de la caracter´ıstica de PWM del m´odulo CCP al igual que la expresi´on del periodo, y que cuya inversa devuelve la frecuencia:

P W MP ERI OD = [(P Rx) + 1]•4•TOSC •T M Rxprescalevalue (2.13) Donde:

TOSC = 1

FOSC (2.14)

Por lo que:

P W MP ERI OD = [(249) + 1]•4•62,5×10−9•16 (2.15) P W MP ERI OD = 1×103

Es decir:

(41)

Con los valores ya escritos se tiene la frecuencia deseada para la modulaci´on de la inten-sidad luminosa de la l´ampara de LEDs; lo que da verdaderamente diferentes inteninten-sidades de iluminaci´on es el ancho de pulso de la se˜nal PWM. El ancho de pulso se controla mediante el valor del registro CCPR1L (PWM de 8 bits), ya que se opt´o por usar el m´odulo CCP1. Este registro es el que debe cambiar de valor para poder variar el ciclo ´util de la se˜nal que excita la tira de LEDs y de esta forma variar su intensidad luminosa. La Tabla 2.7 muestra el valor de CCPR1L para diferentes valores del ciclo ´util.

DC CCPR1L

Ciclo ´util Valor decimal

0 % 0

10 % 25

20 % 50

30 % 75

40 % 100

50 % 125

60 % 150

70 % 175

80 % 200

90 % 225

[image:41.612.249.393.207.406.2]

100 % 255

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

La tabla anterior se utilizar´a en la implementaci´on del control de intensidad luminosa. Los registros y sus respectivos valores para iniciar la funci´on PWM son:

Registro Valor TRISC 2 PR2 249 CCP1CON 12 CCPR1L 125 CCPTMRS0 0 T2CON 2 TMR2ON 1 TRISC 0

[image:41.612.259.381.507.642.2]
(42)

2.6.

Interfaz para el usuario

La interfaz con el usuario consta b´asicamente de dos elementos conectados al bloque central de control: un teclado matricial de 16 teclas o hexadecimal y un LCD o display alfanum´erico de 5x7 puntos, dos columnas de 16 caracteres cada una.

2.6.1.

Teclado matricial

[image:42.612.111.471.282.504.2]

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

Figura 2.7: Conexi´on del teclado matricial con el microcontrolador central.

(43)

obtendr´ıa el nivel l´ogico de del bit 6, es decir ‘1’. Gracias a este ejemplo es posible deducir un m´etodo de identificaci´on para las teclas presionadas, la resistencia R1, por ejemplo, puede tener en cuatro casos diferentes un nivel l´ogico 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 que asegurarse por software que s´olo uno de los bits del nibble alto tenga un nivel l´ogico ‘1’ en un tiempo definido, luego de asegurar esa condici´on se pregunta por el nivel l´ogico de los bits del nibble bajo, si uno de ellos resulta ser alto es solamente necesario saber cu´al de los bits del nibble alto est´a en nivel l´ogico ‘1’ y de ese modo se identifica por software la tecla presionada. Si nunca se presiona una tecla, el nivel l´ogico de los bits del nibble bajo siempre ser´a ‘0’, es decir, la ´unica condici´on que asegura una tecla presionada es cuando los bits de entrada (nibble bajo) registran al menos un nivel l´ogico ‘1’, suponiendo que al menos uno de los bits del nibble alto est´a en nivel l´ogico ‘1’.

Despu´es de haber planteado la propuesta para el teclado matricial resta ´unicamente su implementaci´on por software, que se explica m´as adelante.

2.6.2.

LCD

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

No. Pin Nombre Funci´on

1 VSS Tierra

2 VDD Alimentaci´on

3 VEE Contraste

4 RS Selecci´on de registro 5 R/W Lectura/Escritura

6 E Permitir

[image:43.612.210.428.377.602.2]

7 D0 Bit 0 de datos 8 D1 Bit 1 de datos 9 D2 Bit 2 de datos 10 D3 Bit 3 de datos 11 D4 Bit 4 de datos 12 D5 Bit 5 de datos 13 D6 Bit 6 de datos 14 D7 Bit 7 de datos

Tabla 2.9: Funci´on de los pines de todos los tipos de LCD.

(44)
[image:44.612.209.375.86.363.2]

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 puerto A 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. Las conexiones se mantienen sin cambios.

(45)
[image:45.612.123.518.216.505.2]
(46)
(47)

Cap´ıtulo 3

Implementaci´

on

3.1.

Lux´

ometro

(48)
[image:48.612.178.404.83.346.2]

Figura 3.1: Circuito de conexi´on del convertidor A/D con el fototransistor.

(49)
[image:49.612.151.492.80.498.2]

Figura 3.2: Diagrama de flujo para la conversi´on A/D.

El c´odigo 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);

(50)

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 el canal de conversi´on; la ecuaci´on 2.11 define la forma de conversi´on de voltaje a iluminancia y como se puede apreciar en el algoritmo del programa, dicha operaci´on nunca se lleva a cabo, esto es para mejorar el acoplamiento de esta etapa con la etapa de transmisi´on inal´ambrica, como se explic´o antes, la transmisi´on es posible as´ıncronamente y solo mediante datos de 8 bits, lo que resulta ser perfectamente ´util ya que el resultado del proceso de la conversi´on A/D, el registro ADRESH es de 8 bits y se puede transmitir casi directamente. No obstante, para evitar transmisiones err´oneas, el ´ultimo valor del registro ADRESH es guardado en una variable que es legible en cualquier momento, esta variable es la que se transmite y de esta forma se evita la lectura indefinida en el momento de conversi´on. Dado que la informaci´on transmitida desde esta etapa es una variable del tipo char (8 bits) tiene un rango variable de 0−255, y que como ya se expuso, representa una cantidad proporcional a un voltaje de

(51)

Res= VREF+−VREF−

2n (3.1)

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

Res= 5−0

256 (3.2)

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

Tomando en cuenta la expresi´on 2.11 que describe la iluminancia en funci´on de voltaje, la operaci´on de c´alculo de iluminancia, tomando en cuenta que el resultado de la conversi´on A/D es un n´umero 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 expresi´on, la iluminancia real se obtiene multiplicando al dato ADres de 8 bits por una constante; el hecho de que la constante sea un n´umero decimal complica la operaci´on en el microcontrolador, sin embargo se puede evitar esta situaci´on haciendo esa constante decimal un entero. De este modo se evitan las operaciones de punto flotante y se hace m´as r´apido el c´alculo de la iluminancia. Se opta por hacer el valor de la constante 39; este n´umero dar´a como m´aximo 255 ×78 = 9945 que perfectamente es

contenible en un dato de tipo entero y por lo tanto no ser´a necesario un procesamiento extra, al momento de mostrar el resultado solo es necesario modificar la posici´on del punto decimal y las unidades no se ver´an afectadas. El error que este m´etodo presenta es de 0.55 % para una iluminancia de 1000lx:

error = 10000−(255×39)

10000 (3.7)

error = 10000−9945)

10000 (3.8)

error = 0,0055 (3.9)

(52)

Con el m´etodo de conversi´on del resultado del convertidor A/D a iluminancia ya esta-blecido hay que se˜nalar que dicho m´etodo no es implementado en el bloque del lux´ometro. El resultado final, iluminancia es un dato de tipo entero, es decir, de 16 bits; para evitar implementar c´odigo que retrase el proceso se decidi´o enviar ´unicamente el resultado de la conversi´on A/D, un dato de tipo car´acter (8 bits), y la etapa encargada de hacer la conver-si´on de ese dato a iluminancia es la central de control, esto resulta ser lo m´as adecuado y conveniente para el ´optimo funcionamiento del sistema en general. Se transmite un solo dato de 8 bits, sin mayor problema para la transmisi´on as´ıncrona y su interpretaci´on como medida de iluminancia se hace en el bloque central de control, en el microcontrolador PIC16F1933.

3.2.

Transmisi´

on por RF

[image:52.612.123.461.397.637.2]

La figura 2.3 muestra un esquema b´asico de la transmisi´on A/D, el bloque de RF est´a com-puesto en realidad de dos elementos, el transmisor, instalado en el lux´ometro, y el receptor, instalado en la etapa central de control. Las Figuras 3.3 y 3.4 muestran el diagrama el´ectrico de la conexi´on real implementada para llevar a cabo la transmisi´on por RF.

(53)
[image:53.612.150.488.91.329.2]

Figura 3.4: Conexi´on el´ectrica del m´odulo de recepci´on RF.

3.2.1.

Transmisor

(54)
[image:54.612.123.457.90.250.2]

Figura 3.5: Diagrama de flujo del programa para la transmisi´on as´ıncrona.

El algoritmo descrito en la Figura 3.5 se compone de dos procesos que se ejecutan si-mult´aneamente, el programa principal y una rutina de interrupci´on. Cabe recordar que no es posible manejar interrupciones si antes no se han establecido los valores correspondientes en los identificadores de control, por lo que las interrupciones no se llevar´an a cabo sino hasta que se hayan establecido dichos valores. Es claro que los procesos se ejecutan simult´anea-mente, el cuerpo de la interrupci´on se compone ´unicamente de una instrucci´on, recordando que al escribir el valor en el identificador TXREG se inicia autom´aticamente la transmisi´on y que la bandera de interrupci´on del transmisor se activa cada que es posible iniciar una nueva transferencia de datos, es como se explica la sencillez del cuerpo del programa de la interrupci´on. El proceso principal del programa ya se explic´o anteriormente, es el convertidor anal´ogico-digital del canal al que est´a conectado el fototransistor que mide iluminancia. El c´odigo en lenguaje C de la rutina de interrupci´on, as´ı como su inicializaci´on es el siguiente:

#include <htc.h>

#ifndef _XTAL_FREQ #define _XTAL_FREQ 16000000 #endif

__CONFIG(0x09E4); __CONFIG(0x18FF);

(55)

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

}

(56)

#include <htc.h> #ifndef _XTAL_FREQ

#define _XTAL_FREQ 16000000 #endif

__CONFIG(0x09E4); __CONFIG(0x18FF);

volatile unsigned char ADres=0;

(57)

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

(58)
[image:58.612.124.461.89.251.2]

Figura 3.6: Diagrama de flujo del programa para la recepci´on as´ıncrona.

El m´etodo para la conversi´on de voltaje a iluminancia resulta en una multiplicaci´on, como lo dice la expresi´on 3.6 y como se propuso, se har´a la multiplicaci´on por 39, que proporciona un error relativamente peque˜no y resulta en la iluminancia multiplicada por diez, lo que no representa ning´un problema o inconveniente al mostrar este resultado. La operaci´on de mul-tiplicaci´on se realiza dentro del programa principal (main), lo que permite la mulmul-tiplicaci´on del ´ultimo dato recibido y por lo tanto tener el valor actualizado de iluminancia, ya que el programa principal se compone de un ciclo que se repite infinitamente, es posible asegurar el monitoreo y conversi´on constante. El programa que completa la funci´on de lux´ometro en lenguaje C es el que se muestra a continuaci´on:

#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){

(59)

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

(60)

3.3.

PWM

La modulaci´on por ancho de pulsos usar´a b´asicamente el circuito de la Figura 2.6, sus-tituyendo el interruptor mec´anico por la salida del pin con la se˜nal PWM generada por el microcontrolador central, el PIC16F1933. El circuito de aplicaci´on propuesto se muestra en la Figura 3.7.

Figura 3.7: Circuito final de aplicaci´on propuesto para el control de la lampara de LEDs por PWM.

Para hacer el control del cambio del ciclo ´util, que es la caracter´ıstica que generar´a varia-ciones en la intensidad de iluminaci´on de la l´ampara, es necesario ´unicamente cambiar el valor de un registro de 8 bits, por lo que la variaci´on resulta relativamente sencilla de controlar. Dadas estas condiciones se puede omitir el diagrama de flujo y se considerar´a simplemen-te, por ahora, que la variaci´on se hace dentro del programa principal del microcontrolador central.

3.4.

Interfaz con el usuario

(61)

3.4.1.

Teclado matricial

[image:61.612.153.492.286.526.2]

El algoritmo para poder interpretar la informaci´on proveniente del teclado es un algoritmo de iteraciones, como se puede ver en la Figura 2.7 el nibble alto del puerto es completamente de salida y el nibble bajo de entrada. B´asicamente se hace que los pines del nibble alto contengan un valor l´ogico ‘1’ y se pregunta por el valor de los bits del nibble bajo, si uno resulta en nivel alto se hace una operaci´on de modo que se regresa un n´umero en funci´on del bit de salida que est´a en nivel alto (controlado y sabido por software) y del bit de entrada que registra el mencionado nivel. Este proceso se repite cuatro veces cada vez que se quiera preguntar si hay una tecla presionada en determinado momento. Las cuatro veces corresponden a los cuatro bits que componen el nibble alto del puerto. El diagrama de flujo se muestra en la Figura 3.8.

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

(62)

3.4.2.

LCD

La conexi´on de la etapa central con el LCD se explica en la Figura 2.9. No est´a dem´as aclarar una vez m´as que se opt´o por usar el puerto A para llevar a cabo esta conexi´on ya que no representa m´as que un cambio en la posici´on f´ısica de las conexiones. En el programa principal del controlador se definen funciones de usuario para realizar la escritura sobre el LCD, si se requiere ahondar m´as en el tema se sugiere revisar las referencias al final de este trabajo escrito. Se explicar´an 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 se˜nal de enable para instrucciones o comandos al LCD. void EnDat(void)

Para enviar una se˜nal de enable para datos al LCD. void Zend(unsigned char x,unsigned char b)

Env´ıa un dato de tipo car´acter en formato de 4 bits; b define si es instrucci´on/comando o dato.

void Zline(char *x)

Env´ıa una cadena de caracteres como datos. void LCDstart(void)

Rutina de inicio del LCD.

3.5.

Control autom´

atico

Como objetivo final de este trabajo se plante´o desarrollar un control autom´atico de ilu-minaci´on, con la medida recibida inal´ambricamente se sabe el nivel actual de iluminaci´on del ´area donde se est´a trabajando, la interfaz provee una forma de ingresar y mostrar datos, y el control por PWM de la intensidad de iluminaci´on de la l´ampara permiten modificar las condiciones de iluminaci´on del ´area. La etapa por desarrollar ahora es la de control autom´ati-co, la que integra todas las etapas anteriores y tambi´en la permite al usuario establecer un nivel de iluminaci´on de la l´ampara independiente de cualquier condici´on de iluminaci´on, es decir, sin tomar en cuenta la medici´on del lux´ometro. Todo este proceso de decisiones, me-dici´on y control PWM es llevado a cabo en la etapa central del sistema, el microcontrolador PIC16F1933.

(63)

se decide o no usar el lux´ometro); dado que el valor de la tecla es un n´umero entre 1 y 16, cualquier valor que no est´e dentro de ese rango no tiene por qu´e provocar alguna reacci´on en el programa, es decir, el valor predefinido de la variable ‘option’ (que contiene el valor de la tecla presionada) es cero. Dicho valor solo cambia cuando se oprime una tecla. Durante el ciclo infinito, se har´a que el valor de ‘option’ sea el valor que devuelve la funci´on de identifi-caci´on de tecla, as´ı, cuando no hay tecla alguna presionada el valor que se devuelve es cero (Figura 3.8) y ninguna acci´on se lleva a cabo dentro del programa de toma de decisiones. Se revisa la condici´on de teclas presionadas tan r´apidamente de modo que el usuario tiene la impresi´on de que el programa reacciona instant´aneamente a su interacci´on.

Dentro del ciclo infinito y fuera de la secci´on 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 valor actualizado, como se explica en el m´etodo de adquisici´on del valor de iluminancia, del re-sultado de la conversi´on A/D e inmediatamente se muestra el rere-sultado como iluminancia. Basta con mostrar uno a uno los d´ıgitos que conforman el dato de tipo entero que contienen el valor de iluminancia y enviar un ‘punto decimal’ antes de enviar el d´ıgito menos signifi-cativo, de esta forma se corrige la multiplicaci´on por decenas que genera el factor 39 que se explic´o anteriormente.

Dentro de la rutina de toma de decisiones se han caracterizado y asignado los valores de cada tecla. Asignando los valores correspondientes a un porcentaje de ciclo ´util deseado (Tabla 2.7)y definiendo perfectamente la condici´on bajo la cual estos deber´an operar, se tiene que para las teclas num´ericas 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 resultado del lux´ometro, por lo que no se har´a el control autom´atico.

Para las teclas con caracteres especiales se ha asignado un valor espec´ıfico de iluminancia que se debe mantener, en funci´on 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 la opci´on de control autom´atico.

El control autom´atico se realiza con base en la medici´on; con el dato de la medici´on actual de iluminancia se calcula un error con respecto a la iluminaci´on deseada; cuando la medi-ci´on resulta ser m´as grande que la deseada se restan unidades progresivamente al registro de control de ciclo ´util del PWM hasta que la medici´on actual sea menor que la deseada. Cuando la medici´on es mucho menor que la condici´on deseada se suman progresivamente unidades al registro de control de ciclo ´util del PWM a modo de incrementar la intensidad luminosa de la l´ampara de LEDs hasta que la condici´on actual mediada sea superior a la deseada. Es observable que este algoritmo mantiene al registro de control de ciclo ´util varian-do constantemente dentro de un rango peque˜no de valores, sin embargo para esta aplicaci´on dicho intervalo no es significativo, ya que el efecto en la iluminancia resulta pr´acticamente imperceptible al ojo humano, y dado que es un intervalo peque˜no se puede asegurar que las variaciones de iluminancia debidas a ´el no ser´an significativas.

(64)

#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;

(65)

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;

(66)

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;}

(67)

}//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));}}

(68)

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. {

(69)
(70)
(71)

Cap´ıtulo 4

Sugerencias para trabajos futuros

Una evidente mejora de este trabajo es la posible implementaci´on del lux´ometro para diferentes ´areas dentro del recinto. Mediante un arreglo de elementos esclavos en el bus I2C es posible conectar a la etapa central de control de este trabajo un n´umero considerable de sensores, de este modo se podr´ıa aprovechar de forma m´as eficiente la iluminaci´on de cada ´area por separado. Se propone para la conexi´on, si fuera necesario, el uso de un est´andar recomendado RS-232, RS-485 para evitar tener p´erdidas de informaci´on debidas a longitudes grandes en la l´ınea de transmisi´on.

Es posible mantener la conexi´on inal´ambrica del lux´ometro con el control, el uso de codifi-cadores se podr´ıa considerar antes de la etapa de transmisi´on por RF, sin embargo hay que considerar que la velocidad de transferencia se reduce en este caso.

Para mantener un mayor n´umero de l´amparas se recomienda el uso de un microcontrolador de un mayor n´umero de pines, un microcontrolador PIC de 40 es bastante recomendable (ej. PIC16F887) al contar con 5 m´odulos CCP en total.

Si se desea, es posible controlar tambi´en fuentes de iluminaci´on de AC, ya que se usa la misma t´ecnica base para el PWM, solo que en lugar de controlar el ancho de pulso se controla el tiempo de disparo del tiristor, con referencia a una se˜nal de sincron´ıa de 60Hz o 120Hz.

(72)
(73)

Referencias

Boylestad, Robert L.(2003). Electr´onica: teor´ıa de circuitos y dispositivos electr´onicos. PEARSON EDUCACI ´ON, 8a

edici´on.

Floyd,Thomas L.(2008).Dispositivos Electr´onicos. PEARSON EDUCACI ´ON, 8a

edici´on. Malvino,Albert Paul (2000). Principios de electr´onica. McGRAW-HILL, 6a

edici´on. Municio,Enrique Palacios(2004).Microcontrolador PIC16F84. Desarrollo de proyectos.

Alfaomega Grupo Editor, 1a

edici´on.

Usategui,Jos´e M. Angulo(2000).MICROCONTROLADORES ✭✭PIC✮✮. Dise˜no pr´actico de aplicaciones. SEGUNDA PARTE: PIC16F87x. McGRAW-HILL, 2a

edici´on.

Usategui, Jos´e M. Angulo (2003). MICROCONTROLADORES ✭✭PIC✮✮. Dise˜no pr´ acti-co de aplicaciones. Primera parte: El PIC16F84. Lenguajes PBASIC y Ensamblador. McGRAW-HILL, 3a

edici´on.

Usategui,Jos´e M. Angulo(2006). MICROCONTROLADORES ✭✭PIC✮✮ Dise˜no pr´actico de aplicaciones SEGUNDA PARTE: PIC16F87x, PIC18FXXXX. McGRAW-HILL, 2a

Figure

Figura 1.1: Fototransistor elegido (im´agen tomada de las hojas de datos).
Figura 1.2: Curva de Illuminancia (horizontal) vs Corriente de colector (vertical).
Figura 1.3: Tira de LEDs de SiLed usada en este trabajo
Figura 1.4: Microcontrolador PIC de Microchip.
+7

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)