Sie sind auf Seite 1von 40

APLICACIN EN DOMTICA UTILIZANDO CJAR

Plataforma para telemetra y telecontrol utilizando


dispositivos con sistema operativo Android

AUTOR:
Aldana Quintana Pedro Alejandro
paldana@cjarperu.com

CHICLAYO - PER
Febrero 2017
ndice
ndice de figuras 3

ndice de cuadros 3

Acerca de CJAR 4

1. Consideraciones en el Diseo de la Aplicacin 1

2. Funcionalidad general de la Aplicacin 2

3. Hardware y Maqueta 3
3.1. Hardware de la aplicacin . . . . . . . . . . . . . . . . . . . . 3
3.2. Maqueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4. Fundamentos del sistema de control de temperatura 9

5. Software y lgica de programacin 18

6. Simulaciones en Proteus y MPLAB X IDE 31

7. Resultados de la implementacin 33

8. Conclusiones 36

9. Cdigo fuente assembler y archivos generados 36


ndice de figuras 3

ndice de figuras
1. Estructura general de la aplicacin en domtica . . . . . . . . 2
2. Componentes y conexiones de la aplicacin . . . . . . . . . . 3
3. Diagrama funcional del integrado L293D . . . . . . . . . . . . 5
4. Vista en perspectiva de la maqueta . . . . . . . . . . . . . . . 6
5. Panel de control local . . . . . . . . . . . . . . . . . . . . . . 6
6. Vista frontal de la maqueta . . . . . . . . . . . . . . . . . . . 7
7. Vista superior interna de la maqueta . . . . . . . . . . . . . . 7
8. Circuito de control e indicadores . . . . . . . . . . . . . . . . 8
9. Vista de fuente de alimentacin . . . . . . . . . . . . . . . . . 8
10. Vista del sensor LM35 . . . . . . . . . . . . . . . . . . . . . . 9
11. Diagrama de bloques de un sistema de control realimentado . 9
12. Diagrama de dispersin Temperatura (.oC) Vs Tiempo (min) 11
13. Temperaturas Vs Tiempo e iteraciones . . . . . . . . . . . . . 14
14. Integracin de Proteus y MPLAB X IDE . . . . . . . . . . . . 31
15. Simulacin de comunicacin serial y PWM en MPLAB X IDE 32
16. Simulacin de comunicacin serial y PWM en Proteus . . . . 32
17. CJAR Web ejecutndose en Google Chrome . . . . . . . . . . 33
18. CJAR Host en ejecucin . . . . . . . . . . . . . . . . . . . . . 34
19. Pruebas de conexin . . . . . . . . . . . . . . . . . . . . . . . 34
20. Maqueta en funcionamiento . . . . . . . . . . . . . . . . . . . 35
21. Panel de control en maqueta . . . . . . . . . . . . . . . . . . . 35

ndice de cuadros
1. Mediciones de temperatura sin sistema de control . . . . . . . 10
Acerca de CJAR
CJAR se define como una plataforma que hace uso de equipos con SO
Android, de la informtica y mnimo hardware para permitir su uso en te-
lemetra y telecontrol, esta comunicacin es a travs de la red de Internet o
de las redes celulares.

Se ha demostrado la transparencia, utilidad y funcionalidad de CJAR


a travs de distintas aplicaciones diseadas, simples como el CBP (Cir-
cuito Bsico de Pruebas) o de relativa complejidad como una aplicacin
en domtica, aplicaciones cuya documentacin se encuentra disponible en
www.cjarperu.com.
1

1. Consideraciones en el Diseo de la Aplicacin


Para la aplicacin de CJAR en domtica tendremos las siguientes consi-
deraciones para su diseo e implementacin.

1. Balance entre complejidad y simplicidad


La aplicacin ha de ser lo suficientemente elaborada para mostrar la po-
sibilidad de que las creaciones no simples sean compatibles con CJAR,
pero de igual forma la aplicacin no ha de ser tan compleja de tal forma
que permita la fcil compresin de su funcionamiento e integracin con
CJAR.

2. Uso del paquete CJAR estndar


La aplicacin creada no ha de exigir alguna modificacin en el paquete
CJAR estndar, ya que es este paquete estndar el que se est distri-
buyendo de forma masiva. Lo cual tampoco implica la no creacin de
paquetes personalizados de CJAR.

3. Reutilizacin de cdigo
El cdigo fuente que se genere ha de buscarse que pueda ser reutili-
zado y entendido por desarrolladores de aplicaciones, muchos de los
cuales podran tener dificultades en los primeros trabajos. Entregarles
un cdigo reutilizable y claro permitir eliminar en cierta medida la
dificultad de integracin a CJAR.
2

2. Funcionalidad general de la Aplicacin


La aplicacin en domtica consiste en el monitoreo y control remoto de
una variable analgica (temperatura) y de tres digitales (deteccin de puer-
ta abierta, luz y alarma sonora) de una vivienda. Siendo adems la variable
analgica controlada por un sistema de control de tipo proporcional con re-
alimentacin negativa.

Se muestra a continuacin un diagrama con la estructura general de la


aplicacin en domtica:

Figura 1: Estructura general de la aplicacin en domtica

Si bien la aplicacin cuenta con una Interfaz de control y monitoreo


remoto proporcionada por CJAR Web o CJAR Remote, tambin tiene un
panel de control local, por lo tanto a menos que se indique lo contrario las
funcionalidades pueden ser manejadas local o remotamente.
Las funcionalidades se detallan a continuacin.

Encendido y apagado de la luz y el proceso de control automtico de


temperatura.

Habilitacin o deshabilitacin de la deteccin de puerta abierta.


3

Conmutacin entre el control local o remoto de la aplicacin.

Lectura remota del estado de todas las variables ya sean analgicas


(temperaturas) o digitales.

Reseteo del programa de control.

Envo automtico de mensaje de puerta abierta.

Control automtico de la temperatura de la vivienda con un sistema


de control proporcional con realimentacin negativa.

Alarma sonora al detectarse puerta abierta.

Colocacin local de la temperatura de referencia (temperatura desea-


da).

3. Hardware y Maqueta
3.1. Hardware de la aplicacin
Se muestra a continuacin los distintos componentes y sus conexiones1 .

Figura 2: Componentes y conexiones de la aplicacin


1
Durante la implementacin se coloc un transistor 2N3904 entre el micro y el thyristor
BT151 (U4 en el esquema).
3.1 Hardware de la aplicacin 4

Como se puede apreciar, el hardware consiste en:

Un microcontrolador PIC 16F877a el cual estar a cargo de la comuni-


cacin serial con el mdulo bluetooth, control entradas y salidas digi-
tales y la adquisicin de voltajes analgicos a travs del ADC (Analog
Digital Converter), voltajes provenientes del selector de temperatura y
del sensor de temperatura para ejecutar el programa de control auto-
mtico de temperatura.

Un sensor de temperatura LM35, que nos entrega un voltaje lineal-


mente proporcional a la temperatura.

Un potencimetro que nos entrega un voltaje de referencia (y por tanto


una temperatura de referencia), el cual puede entregar voltajes de 0V
a 1,5V .

LEDs indicadores:

-Panel local : Encendido indica control local, apagado indica que el con-
trol es remoto.

-Fuera de rango: Se enciende si la diferencia entre las temperaturas del


sensor y el selector excede cierto lmite l, para esta aplicacin l = 9.oC.

-N.TT imer : El estado de este LED conmuta a la velocidad N.TT imer ,


siendo N N y TT imer la velocidad mxima conseguida con el Timer
1 del microcontrolador.

-Text_ok y S_Text_ok : Estos LEDs nos indican si los textos recibidos


por el puerto USART del PIC corresponden o no a alguna palabra
predefinida. S_Text_ok se mantiene encendido mientras llegue algn
carcter perteneciente a una palabra predefinida, Text_ok se enciende
si se detecta el carcter de fin de texto & despus de una secuencia
correcta de caracteres y esta resulta en una palabra predefinida, y
ambos LEDs se encienden si no se reconoce los caracteres o la palabra
recibida.
3.1 Hardware de la aplicacin 5

Dos pulsadores, uno para reset del microcontrolador y otro para con-
mutar entre control local y remoto.

Switches para control local:

-Temp: Permite o desactiva la ejecucin del programa de control auto-


mtico de temperatura.

-Luz : Apagado o encendido de la luz.

-Alar : Permite o desactiva la alarma sonora.

-Puer : Permite o desactiva la deteccin de puerta abierta.

Integrado L293D, el cual consiste en 4 puentes H, los cuales repoten-


cian las seales digitales del PIC para el manejo de las cargas. Este
se alimenta de forma independiente con 5V para indicar el voltaje de
control y con 12V como voltaje de salida a las cargas. Me muestra a
continuacin su diagrama funcional (Los diodos mostrados son inter-
nos).

Figura 3: Diagrama funcional del integrado L293D

Dos motores DC de 12V cuya velocidades son controladas por PWM


(Pulse Width Modulation), uno de menor tamao que permite el ingre-
so del aire caliente a la vivienda y el otro de mayor tamao que permite
el ingreso de aire a temperatura ambiente. Para mover el primero se
usa el integrado L293D, mientras que para el segundo se usan el tran-
sistor de pequea seal 2N3904 (en corte y saturacin) con su Emisor
conectado al Gateway del Thyristor BT151 como etapa de potencia.

Un buzzer, el cual nos proporciona la alarma sonora.


3.2 Maqueta 6

Una lmpara.
Una relay, el cual es controlado por el PIC y proporciona de forma
independiente alimentacin a la fuente de calor, fuente que consiste en
un arreglo de Resistencias Cermicas y Alambre Incandescente.

3.2. Maqueta
Para la construccin de la maqueta se ha tenido en cuenta el flujo del
aire tanto caliente como a temperatura ambiente, la simetra en el diseo y
el aislamiento del sistema de control y comunicacin con la fuente de energa
principal y el ambiente cuya temperatura se desea controlar.
Se muestran a continuacin imgenes de la maqueta con la identificacin de
las partes.

Figura 4: Vista en perspectiva de la maqueta

Figura 5: Panel de control local


3.2 Maqueta 7

Figura 6: Vista frontal de la maqueta

El circuito de control y las partes electromecnicas se encuentran en la parte


superior de la maqueta y esta a su vez est dividida en dos partes, aislando
las Resistencias Cermicas, el Alambre Incandescente y el aire caliente del
sistema de control.

Figura 7: Vista superior interna de la maqueta

El circuito de control hace uso de tres voltajes; se esta tomando 12V de


la fuente de alimentacin el cual llega a la parte superior para alimentar el
L293D al que estn conectados los ventiladores, relay y buzzer, este voltaje
3.2 Maqueta 8

es convertido a 5V por un L7805CV para alimentar el PIC, LEDs, Switches


de control, modulo bluetooth, sensor y switch de puerta y a 1,25V por un
LM317T para alimentar el potencimetro que da el voltaje (Temperatura)
de referencia. Se usa un disipador de calor en el L7805CV.

Figura 8: Circuito de control e indicadores

En la parte inferior se ubica la fuente de alimentacin, la cual toma


220V AC y nos entrega 12V DC, este voltaje es distribuido independiente-
mente al circuito de control y a travs del relay a los elementos que calientan
el aire, ambos en la parte superior.

Figura 9: Vista de fuente de alimentacin


9

En la parte interna encontramos el sensor de temperatura. Por fines de-


mostrativos hemos colocado un potencimetro que simule voltajes entregados
por el sensor. La seleccin de uno u otro es a travs de los conectores headers.

Figura 10: Vista del sensor LM35

4. Fundamentos del sistema de control de tempe-


ratura
En trminos generales un sistema de control con realimentacin consta
de los siguientes bloques y seales en funcin del tiempo.

Figura 11: Diagrama de bloques de un sistema de control realimentado

El PIC engloba tanto el Controlador como la etapa de obtencin de las


seales x(t) y r(t) las cuales corresponden a los voltajes provenientes del
potencimetro de referencia y al sensor de temperatura respectivamente, en-
tregando al final del procesamiento una seal de control v(t) a los actuadores
de la planta para obtener una temperatura deseada y(t), la cual puede variar
10

por ejemplo por cambios en la temperatura ambiente o por la misma natura-


leza del sistema de control; esto que causa las variaciones en la temperatura
deseada a la salida seran las perturbaciones v(t).

Empezaremos nuestro anlisis del sistema estudiando el comportamiento


de la planta sin controlador. Nuestra planta en trminos fsicos costa de una
maqueta, que representa nuestra vivienda, la cual como se vio en la seccin
anterior hace uso de dos ventiladores para el ingreso del aire caliente o del aire
a temperatura ambiente, de tal forma que se pueda cambiar la temperatura
interior entre 8.oC y 10.oC por encima de la temperatura ambiente. Pero
estos ventiladores no entraran en funcionamiento si no hay una seal de
arranque (voltaje), llamaremos a esta seal v 0 (t), y si definimos el arranque
de alguno de los motores en t = t0 entonces v 0 (t) puede ser definida como:
(
0 0V si t < t0
v (t) = (1)
12V si t t0

Si esta es la seal de estrada para el sistema sin control, cual es la


seal de salida? o ms claramente la temperatura de la maqueta. Para esto
debemos conocer el comportamiento de la planta al estar presente v 0 (t),
obtendremos de forma experimental la salida sin controlar y 0 (t), para lo
cual haremos mediciones en intervalos regulares (muestreo).
La siguiente tabla muestra las mediciones obtenidas experimentalmente para
y 0 (t) cuando v 0 (t) = 12V .

Cuadro 1: Mediciones de temperatura sin sistema de control


11

Las mediciones son las obtenidas tanto por un termmetro digital (T


Term) como por el ADC de microcontrolador con la lectura del sensor LM32
(T Sensor), tambin se muestra las mediciones en el decremento de la tem-
peratura, durante todo el tiempo de medicin uno de los ventiladores estuvo
funcionando es decir v 0 (t) = 12V .
Las mediciones muestran una tendencia de tipo lineal entre el tiempo y el
cambio de temperatura, pero qu tan lineal se puede considerar?. Para es-
tudiar esto haremos uso de un concepto estadstico llamado Coeficiente de
Pearson.

Para estudiar la fuerza de asociacin lineal entre dos variables; utilizare-


mos el coeficiente de correlacin lineal de Pearson. La asociacin ser ms
elevada cuando ms cerca de 1 est el coeficiente, y menor cuando ms cerca
este de 02 . Existen frmulas para calcular manualmente este coeficiente pero
tambin existen herramientas informticas, haciendo uso de Excel se obtie-
ne este coeficiente para las tres columnas mostradas en la parte inferior del
cuadro. Se puede apreciar la linealidad casi perfecta ya que r es prximo a
1. Ya con la seguridad de que el comportamiento de y 0 (t) es en esencia lineal
podemos hacer uso del modelo de Regrecin Lineal para r = 0, 993, con lo
cual obtenemos para y 0 (t):
(
23, 238.oC si t < t0
y 0 (t) =
0, 5073t + 23, 238.oC si t t0
Se muestra a continuacin el diagrama de dispersin para las mediciones
hechas experimentalmente.

Figura 12: Diagrama de dispersin Temperatura (.oC) Vs Tiempo (min)

En esencia lo que nos dice la ecuacin anterior es que el aumento de


la temperatura es lineal cuando encendemos el ventilador a plena potencia
2
P. Juez y F. Diez, Probabilidad y Estadstica en medicina, Espaa: Ediciones Daz de
Santos S.A., 1997 , pp. 98
12

(v 0 (t) = 12V ) partiendo de la temperatura ambiente. Siendo este un sistema


fsico con energa limitada y 0 (t) no puede aumentar de forma ilimitada, para
algn valor suficientemente grande de t, y 0 (t) ha de alcanzar su mximo va-
lor, el cual experimentalmente podra considerarse el ultimo valor de la tabla
para T Term. Por lo que la ecuacin se redefine como:


o
23, 238. C
si t < t0
0
y (t) = 0, 5073t + 23, 238.oC si t0 t < t (2)
32, 8.oC

si t > t ; t 1200s
Si bien la ecuacin (5,2) vara en funcin de la temperatura ambiente
donde se tomen las mediciones y la fuente de calor usada (asumiendo el
diseo geomtrico de la maqueta constante), estas variaciones no seran en
realidad importantes, lo importante de este estudio experimental es que po-
demos suponer una relacin lineal entre el aumento de la temperatura y el
tiempo, funcionando los ventiladores a plena potencia. Y si trabajamos en
t0 t < t entonces podemos plantear la ecuacin general de la tempera-
tura de nuestra maqueta en funcin del tiempo, con los ventiladores a plena
potencia, v 0 (t) = 12V , como:

y 0 (t) = y 0 (t0 ) + mt si t0 t < t (3)


Siendo y 0 (t0 ) la temperatura inicial del sistema y m la velocidad de cre-
cimiento o pendiente de la recta de regresin lineal.

Los ventiladores cumplen una relacin lineal entre el flujo y su velocidad


de rotacin, es decir:

1 2
= lo que es lo mismo q(t) = k1 (t) (4)
q1 q2
Es decir el flujo q(t) de aire caliente o frio es proporcional a su velocidad
de rotacin (t). Este flujo de calor es lo que hace variar la temperatura
en el interior de la maqueta, por tanto para variar la temperatura (controlar
la temperatura) en el interior de la maqueta podemos hacer cambios en (t).

La ley de enfriamiento de Newton nos permite explicar la transferencia


de calor por conveccin.

dQ(t)
= h(t)As(y(t) y ) (5)
dt
Donde dQ(t)/dt es la velocidad de cambio durante la transferencia de calor,
h(t) es el coeficiente de conveccin, el cual depende de mltiples parmetros,
entre ellos la velocidad del fluido y puesto que este pensamos variarlo en
13

el tiempo entonces h = h(t), As es la superficie de contacto con el fluido,


el cual es un aspecto geomtrico que no variara, y(t) es la temperatura en
la superficie de contacto o en el interior de la maqueta, notar que estamos
colocando y(t) y no y 0 (t) ya que consideramos esta relacin vlida con o sin
controlador, y es la temperatura del fluido lejos de la maqueta, la cual no es
otra que la temperatura ambiente. Es en este punto donde se puede apreciar
que la velocidad de cambio de Q(t) expresada en (5,5) est relacionada con
q(t), para variaciones pequeas en las temperaturas he intervalos cortos de
tiempo podemos considerar:

dQ(t) dQ(t)
= k2 q(t), usando(5,5) = k1 k2 (t)
dt dt
Remplazando este resultado en (5,6)

h(t)As(y(t) y ) = k1 k2 (t)

Reordenando los trminos tendremos.


k1 k2 (t)
y(t) = y +
As h(t)
Esta sera la ecuacin si variamos la velocidad de rotacin de los ven-
tiladores, puesto que h(t) depende de la velocidad del flujo y este de (t),
entonces h(t) = f ((t)) y tomando en cuenta que la temperatura lejos de la
maqueta es igual a la temperatura ambiente y esta a su vez es la temperatura
al inicio de las mediciones en t = t0 , entonces.

k1 k2 (t)
y(t) = y(t0 ) + F ((t)), donde F ((t)) = (6)
As f ((t))
La ecuacin (5,6) nos proporciona informacin de la temperatura obte-
nida cuando se entrega una seal de control v(t) para variar (t). Siendo
h(t) un parmetro que estimamos no vare de forma considerable, entonces
h(t) k3 , luego.

k1 k2
y(t) y(t0 ) + (t), h(t) k3 (7)
Ask3
Para poder controlar (t), es decir la velocidad de rotacin, podemos
variar el voltaje o usar PWM (Pulse Width Modulation), una ventaja de
usar PWM y no simplemente bajar el voltaje es que se mantiene el torque
constante en los motores. Se define el Ciclo de Trabajo como:

(t)
CT (t) =
T
Siendo (t) el ancho de pulso, donde se aplica torque a los motores, T es
el periodo de la seal.
14

En la aplicacin se usa el PIC para realizar el PWM, donde CT (t) y T


son valores colocados en registros del microcontrolador, se fija T y se vara
CT (t). Puesto que (t) depende del torque aplicado de forma directamente
proporcional, entonces (t) = k4 CT (t). Lo que nos lleva a:

k1 k2 k4
y(t) y(t0 ) + kCT (t), k= , h(t) k3 (8)
Ask3
Como se puede apreciar CT (t) es la seal se control hacia los actuadores
de la planta y recordando el diagrama de bloques presentado al inicio en-
tonces v(t) = CT (t). Para efectuar los clculos siguientes tomaremos (5,8)
como una ecuacin y no como una aproximacin.

Tomando en cuenta las ecuaciones (5,3), (5,7), lo analizado hasta el mo-


mento, as como las iteraciones que se desean realizar para modificar h(t).
Entonces se muestra la siguiente grfica que resume lo expuesto y permite
definir nuevos parmetros, necesarios para hacer los ajusten en el CT (t).

Figura 13: Temperaturas Vs Tiempo e iteraciones

Donde:

CTmax es el mximo valor asignable a CT (t).

Ttimer es el tiempo proporcionado por el temporizador Timer 1.


15

N.Ttimer es el tiempo entre cada iteracin, donde N N.

d es el decremento hecho a CT (t) en una iteracin.

ei y ef , son los errores iniciales y finales en cada iteracin respectiva-


mente.

Tp es la temperatura seteada por el potencimetro de referencia, equi-


valente a x(t) del diagrama de bloques.

Ts = Ts (t) es la temperatura detectada por el sensor de temperatura


equivalente a r(t) del diagrama de bloques.3 .

Tmax es la temperatura mxima alcanzable por el sistema.

Ta es el tiempo de ajuste, el tiempo requerido para que las sucesivas


iteraciones lleven el valor de y(t) a Tp .

y 0 (t) es la ecuacin (5,3)

y(t) es la ecuacin (5,8)

Como se puede apreciar el algoritmo consiste llevar Ts (t) al valor de re-


ferencia Tp usando el mximo valor posible de CT (t), el cual es CTmax ; una
vez alcanzado este valor, se comienzan iteraciones que decrementan CT (t)
en d unidades cada N.Ttimer segundos. Apenas supere Ts a Tp , se ejecuta la
primera iteracin, siendo el nmero total de iteraciones n y el tiempo total
empleado Ta .

De las definiciones dadas se deduce la siguiente ecuacin.

Ta = (n 1)N.Ttimer , n, N N (9)
La ecuacin (5,8) es vlida para cualquier t y por tanto tambin es vlida
durante cualquier iteracin. Si usamos esta ecuacin para por ejemplo la h
-sima iteracin, entonces.

y(h) = y(h 1) + kCT (h), para todo h N (10)

3
Cabe apreciar que Tp y Ts son considerados en la grfica como temperaturas, en
realidad son voltajes entregados al ADC de PIC, consideramos aqu ya transformados
estos voltajes a sus equivalentes en temperatura.
16

Las iteraciones realizadas durante el proceso de ajuste son:

CT (1) = CTmax d
CT (2) = CTmax 2d
..
.
CTmax CT (m)
CT (m) = CTmax md d = (11)
m
..
.
CTmax CT (n)
CT (n) = CTmax nd d = (12)
n
Siendo (5,11) la m-sima iteracin y representa cualquier ajuste durante
todo el proceso, mientras que (5,12) es nicamente la ltima iteracin, fijan-
do un n, se tiene que 1 m n.

Despejando CT (h) de (5,10)

y(h) y(h 1)
CT (h) = , haciendo h = m
k
y(m) y(m 1)
CT (m) = (13)
k
Remplazando (5,13) en (5,11)

CTmax y(m) y(m 1)


d= (14)
m m.k
La ecuacin (5,8) puede expresarse como:

y(t)
k=
CT (t)

Siendo y(t) la variacin de la temperatura para un CT (t) dado, puesto


que k es constante, si CT (t) = CTmax y(t) = ymax . Luego se tiene
para k.
ymax
k= (15)
CTmax
Remplazando (5,15) en (5,14)
CTmax CTmax
d= [y(m) y(m 1)], 1mn (16)
m mymax

La ecuacin (5,16) nos proporciona el decremento en cada iteracin, du-


rante todo el proceso de ajuste, sin embargo y(m) y y(m 1) son los valores
a la salida de la planta (recordar el diagrama de bloques), y estos valores
no los tenemos, el valor que si tenemos es el entregado por el sensor, que en
17

la Figura 5.13 es Ts (t) y en el diagrama de bloques es r(t). Luego debemos


encontrar una relacin entre y(t) y r(t). Esta relacin puede tener muchas
formas, sin embargo consideraremos esta relacin lineal ya que usaremos un
sensor lineal, es decir.

y(t) = pr(t), p constante (17)


Aplicando (5,17) en (5,16).

CTmax CTmax
d= [pr(m) pr(m 1)]
m mprmax

CTmax CTmax
d= [r(m) r(m 1)], 1mn (18)
m mrmax
Se define el error e(t) como la diferencia entre la entrada de referencia
x(t) y la lectura del sensor r(t), luego

e(t) = x(t) r(t)

Aplicando a la m -sima iteracin

e(m) = x(m) r(m)

Aplicando a la (m 1) -sima iteracin

e(m 1) = x(m 1) r(m 1)

Restando ambos resultados y teniendo en cuenta que x(m) = x(m 1)


ya que el punto de referencia permanece constante.

r(n) r(n 1) = (e(n) e(n 1))

Remplazando este resultado en la ecuacin (5,18), se tiene finalmente


que:
CTmax CTmax
d= + [e(m) e(m 1)], 1 m n (19)
m mrmax
De similar forma se obtiene d en funcin de n.
CTmax CTmax
d= + [e(n) e(n 1)], n fijo (20)
n nrmax
Si bien las ecuaciones (5,19) y (5,20) son en apariencia iguales, esto no
es as, ya que en (5,19) m es un nmero que varia en cada iteracin y
e(m) e(m 1) es conocido en cada momento (son las lecturas de sen-
sor antes y despues de cada iteracin) y por tanto queda bien definido d;
mientras que en (5,20), n es un nmero fijo y si bien podemos escoger un n
adecuado, no nos es posible conocer a priori el valor de los errores finales,
18

luego (5,20) no se puede usar tal y como est planteada.

Si bien (5,19) esta bien definida en cada iteracin, la dificultad de su uso


radica en el aspecto computacional, ya que se usar un microcontrolador y
se programar en assembler, las divisiones en assembler demandas muchos
recursos, siendo el fin de esta aplicacin la demostracin de su buena interac-
cin con CJAR entonces es la comunicacin serial y los algoritmos asociados
a esta la prioridad. Haciendo uso de la siguiente aproximacin para calcular
las iteraciones.

e(n) e(n 1) e(m) e(m 1)


Remplazando esto en (5,20).
CTmax CTmax
d + [e(m) e(m 1)], 1 m n, n fijo (21)
n nrmax
Que ser la ecuacin que se usar para calcular el decremento en las ite-
raciones. Las ecuaciones (5,21) y (5,9) sern implementadas en el programa
del microcontrolador, en la etapa de control de temperatura.

5. Software y lgica de programacin


Dentro de las consideraciones en el diseo de la aplicacin, se tiene la
reutilizacin de cdigo, es decir la posibilidad de usar el cdigo generado en
otras aplicaciones sin mayores modificaciones. Si bien el programa en su to-
talidad no se puede aplicar a cualquier aplicacin, si hay dentro del programa
una estructura bsica o columna vertebral completamente reutilizable.

En realidad el mayor esfuerzo en la programacin del cdigo radic en


crear esta estructura bsica, lo suficientemente estable y adaptable para soste-
ner aplicaciones tan bsicas como el CBP (Circuito Bsico de Pruebas) o con
relativa complejidad como la aplicacin en domtica que se est presentan-
do. Pero cmo crear una estructura estable y adaptable?4 . Conseguiremos
que el programa sea estable si no forzamos el hardware y los algoritmos
implementados son consistentes, es decir que el resultado de la ejecucin de
un algoritmo no quede al azar si no bien definido, de igual forma progra-
mamos tomando en cuenta los lmites que el fabricante impone al hardware,
si bien esto ltimo es casi obvio, no lo es su ejecucin, para esto no slo
leemos el datasheet del fabricante sino que tambin forzamos con el cdigo
deliberadamente el hardware para ver cmo responde el programa, de tal
forma que en la etapa de diseo se detecten errores presentes y potenciales
4
Es en este punto donde el autor del presente documento recuerda su responsabilidad
en las opiniones vertidas. Durante todo el trabajo se ha respetado la referencia a los autores
o a la fuente de informacin si esto corresponda
19

de las aplicaciones, tener claras las reglas del juego y transmitir estar reglas
al diseador o implementador de las aplicaciones con CJAR, minimiza los
posibles errores en sus aplicaciones y junto a algoritmos consistentes hace
estable esta estructura bsica creada.

Para que el cdigo o mejor dicho la estructura bsica de este sea adactable
sin que esto implique aminorar su alcance, usaremos una simetra creciente
en su diseo. Para comprender este concepto, haremos las siguientes defini-
ciones.

Rk : Representa un requerimiento de categora k, por ejemplo el re-


querimiento de atencin a interrupciones, o de envo de caracteres por
el USART.

Rki : Representa un elemento i del requerimiento de categora k, por


ejemplo interrupcin por el timer o el carcter a ser enviado por el
USART.

Mk : Es el multiplexor lgico de los elementos de categora k.

Pk : Es el algoritmo que procesa los elementos de categora k, recibe los


datos de Mk .

Dk : Es el desmultiplexor lgico, que toma los resultados de Pk y los


deriva a las correspondientes salidas.

Sk : Representa el conjunto de salidas a los requerimientos de categora


k.

Ski : Representa la salida al elemento i de categora k.

Un programa con simetra creciente tendra la siguiente estructura l-


gica:

R11 R12 . . . R1p R21 R22 . . . R2q ...... Rn1 Rn2 . . . Rnm
R1 R2 ...... Rn

M 1 + P1 + D1 M 2 + P2 + D2 ...... Mn + Pn + Dn

S1 S2 ...... Sn
S11 S12 . . . S1p S21 S22 . . . S2q ...... Sn1 Sn2 . . . Snm
Como se puede apreciar la estructura es ordenada y simtrica, es decir
puedo por ejemplo intercambiar el elemento R12 por R1(p1) sin que se altere
la estructura del programa, o intercambiar todos los elementos de la columna
20

donde encuentra R2 por los elementos de la columna donde se encuentre Rn


sin tampoco alterar la estructura lgica del programa. Intercambiar R12 por
R1(p1) implica que el algoritmo P 1 que los procesa sea el mismo incluso pa-
ra cualquier otro valor de R1k , la posibilidad de intercambiar los elementos
de ingreso sin modificar el algoritmo e incluso de intercambiar los algoritmos
del programa sin modificar la estructura total es la simetra buscada.

Esta estructura lgica es fcilmente creciente por su misma simetra, ya


que podemos variar los valores de p, q...m y n segn nuestras necesidades,
esto slo estara limitado por las capacidades del hardware usado, en este
caso del microcontrolador, variar los valores de p, q...m y n en la prctica
es ingresar nuevos datos e implementar nuevos algoritmos manteniendo la
estructura lgica total del programa. Por lo expuesto es que el programa
escrito en assembler se ha implementado lo ms simtrico posible e indepen-
diente de la variacin de los datos si estos son de la misma categora.

Pero lograr esta simetra creciente tiene sus costos, implica buscar al-
goritmos eficientes y generales, implica costes computacionales. Para que el
algoritmo o el programa en su totalidad sea considerado simtrico creciente,
deben hacerse los intercambios ya mencionados y comprobar que el programa
sigue funcionando con el mismo nivel de confianza. La estructura mostrada
es una idealizacin pero como ya se mencion esto es alcanzable en la medida
de lo que el hardware lo permita.

Ya aclarado el enfoque usado para la programacin del microcontrolador,


se entrar de lleno al programa en s y a los algoritmos implementados. No
se expondr detalles de cmo programar el PIC, sobre esto ya hay mucha
bibliografa especializada, se centrar en explicar los algoritmos implemen-
tados y la interaccin del programa con CJAR.

De los algoritmos a implementar cul de ellos es el ms importante?, es-


ta pregunta no es completa ya que debe ser planteada de la siguiente forma:
Cul de ellos es el ms importante para CJAR? y la respuesta naturalmente
es la comunicacin y esta comunicacin se da a travs del puerto USART
del PIC y el puerto serie del mdulo (por lo menos en la primera versin de
CJAR Host).

La comunicacin ha de ser bidireccional, y no ha de estar limitada a slo


caracteres, debe poder enviarse y recibirse cadenas de caracteres (palabras)
y el nmero de estas palabras debe ser el mayor posible sin la necesidad de
que tenga que existir alguna relacin entre estas palabras. Por ejemplo no
se debe limitar a solo cadenas de caracteres de tres caracteres.
21

El envo de un carcter en el PIC es relativamente sencillo, basta con


consultar si el buffer est ocupado y si no lo est se coloca el carcter a
enviar en el registro TRXREG, se muestra el fragmento de cdigo que hace
esto.

Luego enviar una cadena de caracteres, es ejecutar esta subrutina de for-


ma repetitiva, slo se tendra que tener un mecanismo que indique el fin
del texto a enviar, este mecanismo en el programa es un carcter de fin de
texto, en este caso es &. Existe una subrutina que enva cadenas de caracte-
res usando de forma repetitiva el cdigo anterior. Se muestra el detalle del
carcter de fin de texto.

Enviar cadenas de caracteres no implica mucha dificultad, sin embargo


hay que implementar este procedimiento de tal forma que el algoritmo bus-
que ser simtrico creciente, hay que considerar adems que muchas de estas
palabras enviadas son informacin que CJAR a de transmitir a la interfaz
del usuario y se ha de tener de alguna forma una confirmacin de que el
mensaje lleg correctamente y si esto no fuese el caso enviar nuevamente la
palabra. Esto se logra teniendo un registro de lo enviado y esperando al-
gn mensaje de confirmacin del envo o error durante el envo. Para esto
de define el registro de usuario de 8 bist REG_AVISO, este registro est
asociado a los distintos textos a enviar, si el valor de un bit es 0 entonces el
texto asociado a este bit fue enviado y se confirm la recepcin por CJAR y el
valor del bit es 1 en el caso contrario, la estructura del registro es el siguiente.

REG_AVISO 7 6 5 4 3 2 1 0
0: Texto enviado, 1: Texto no enviado.
22

Posicin Texto asociado

REG_AVISO[0] Puerta abierta.


REG_AVISO[1] Comando error.
REG_AVISO[2] Variable ON.
REG_AVISO[3] Variable OFF.
REG_AVISO[4] Tem: XYZ.oC, XYZ es un nmero.
REG_AVISO[5] Comando ejecutado.
Pero cmo es posible la confirmacin de envo?, esto es posible ya que
como se vio en la descripcin de CJAR, este responde con ok & si el envo es
satisfactorio y con error & si no lo es, estas palabras con detectadas por el
programa del PIC ya que estn dentro de sus textos de ingreso predefinidos.
Si se detecta un ok &, simplemente se limpia el registro REG_AVISO y si
no se envan todos los textos donde su bit en REG_AVISO sea 1.

Para comprender el algoritmo implementado para la recepcin de cadenas


de caracteres, primero veremos cmo detectar un carcter. Es posible saber
si un carcter ha llegado por el puerto serie leyendo de forma peridica el
estado de la bandera RCIF del registro PIR1, si esta est en 1 entonces
significa que hay un carcter a leer desde el registro RCREG. Pero esta
forma de obtener un carcter es en cierta medida ineficiente, ya que no
sabremos si un carcter lleg por el puerto USART hasta que el programa
ejecute nuevamente el bloque de cdigo de deteccin, se corre el riesgo de
perder el carcter por la llegada de otros. La solucin a esto se logra usando
interrupciones, la interrupcin es un mecanismo por el cual el PIC deja de
ejecutar el normal funcionamiento secuencial del programa y salta a las lneas
de cdigo que se definen para atender la interrupcin. Se usar la interrupcin
por recepcin en el USART para procesar este carcter y que no se pierda.
23

Esto soluciona la lectura de un carcter, pero qu pasa si es una cadena


de caracteres o peor an es una cadena de caracteres que se debe identificar
y tambin dar una respuesta en funcin de esta cadena identificada?, el pro-
blema radica en que si bien podemos definir las palabras (cadenas de texto)
que se consideren comandos reconocibles no nos es posible definir que texto
llegar o cuantos caracteres tendr y en todo caso es deseable poder procesar
cualquier texto que ingrese, consideraremos esta posibilidad, slo pediremos
al usuario un carcter de fin de texto y que el texto no sea de longitud 0.

Programar en assembler implica que no se puede recibir la palabra com-


pleta si no carcter por carcter Se muestra el algoritmo de reconocimiento
de texto recibido.
ti t0 t1 . . . th th+1

TEXT[0] Si 0 a0 a1 . . . ap ap+1 ti = ai ?
Si 1
TEXT[1] Si 0 b0 b1 . . . bq bq+1 ti = bi ?
Si 1
..
.
TEXT[n] Si 0 z0 z1 . . . zm zm+1 ti = zi ?
Si 1
TEXT[k]?

Donde:

a0 a1 . . . ap , b0 b1 . . . bq , . . . . . . z0 z1 . . . zm : Son las cadenas de caracte-


res (palabras) reconocibles por el programa, donde no necesariamente
p = q . . . = m.

ap+1 ,bq+1 ,. . . zm+1 : Son los caracteres de fin de texto de las palabras
predefinidas, y como este carcter a de ser igual para todas las palabras
predefinidas entonces ap+1 = bq+1 . . . = zm+1 = &.

t0 t1 . . . th : Son los caracteres del texto recibido, no necesariamente tie-


nen que llegan juntos, pero si llegar en el orden correcto.

th+1 : Es el carcter final de la cadena de texto recibido. Si el texto


recibido quiere tener la posibilidad de ser reconocido como una de las
palabras predefinidas entonces th+1 = & y h 0

TEXT: Es un registro o conjunto de registros auxiliares de (n+1) posi-


ciones (bist) y asocia cada posicin a una de las palabras predefinidas.
TEXT[k]= 0 indica que la palabra definida en la posicin k no se ha
descartado, si TEXT[k]= 1 el texto asociado se ha descartado.
24

Apuntador_Rx : Es una variable auxiliar que guarda temporalmente la


posicin del carcter que se ha de comparar.
ai , bi , . . . , zi ti : Son los caracteres en la posicin i, i = 0, 1, 2 . . ..
En el inicio TEXT[k]= 0 para todo k, 0 k n, es decir todos los
textos pre definidos pueden ser comparados, TEXT[k] hace referencia a la
palabra predefinida en la posicin k; tambin al inicio Apuntador_Rx = 0,
Apuntador_Rx = i y TEXT[k]= 1 indica que el caracter a ser compara-
do esta en la posicin i de la palabra predefinida de la posicin k, i =
M ax{p + 1, q + 1, . . . , m + 1} siempre que i h + 1.

Durante la primera comparacin y para facilitar la descripcin asumire-


mos que t0 6= &. Al llegar t0 , el programa consulta el estado de TEXT[0]
y puesto que al inicio TEXT[0]= 0, entonces t0 se compara con a0 si son
iguales se activa un indicador de que el carcter es vlido o pertenece a una
de las palabras predefinidas, luego pasa a consultar el estado de TEXT[1], si
no son iguales el programa hace TEXT[0]= 1 y pasa a comparar el estado de
TEXT[1], puesto que TEXT[1] es tambin 0, entonces comparar t0 con b0 ,
nuevamente si al realizar la comparacin los caracteres son iguales entonces
el programa activa el indicador de carcter reconocido y pasa a consultar el
estado de TEXT[2] y si por el contrario resultaron ser diferentes, el programa
coloca TEXT[1]= 1 y pasa a consultar el estado de TEXT[2], esto se repite
hasta el consultar el estado en el registro de la n -simo palabra predefinida,
es decir consultar el estado de TEXT[n] y compara t0 con z0 , al hacer esta
ltima comparacin y dejar TEXT[n] en 1 o 0 segn corresponda, pasa a
consultar si algn TEXT[k]= 1, si para todo k, TEXT[k]= 1 entonces el
carcter no se reconoce, se activa un indicador de carcter no reconocido, se
coloca TEXT[k]= 0 para todo k y se pone el valor de Apuntador_Rx en 0,
aunque en esta primera comparacin Apuntador_Rx ya era 0, esto significa
se reiniciarn las comparaciones asumiendo el carcter que llegue despus co-
mo t0 . Si por el contrario TEXT[k]= 0 para algn k entonces se incrementa el
valor de Apuntador_Rx en 1, es decir Apuntador_Rx =Apuntador_Rx +1 y
se dejan tal y como estaban los valores de TEXT[k] para todo k. Pero hemos
asumido que t0 6= &, pero que pasa si t0 = &?. Para explicar esto se debe
agregar que en cada comparacin realizada y descrita anteriormente cuando
t0 es igual a alguno de de los caracteres a0 , b0 , . . . z0 , entonces adems de lo
ya expuesto, consulta el valor de Apuntador_Rx y si este es 0 entonces lo
asumir como un carcter no vlido y har indicado anteriormente cuando el
carcter no es vlido o reconocido como de una palabra predefinida. Si fuese
el caso de que Apuntador_Rx > 0 entonces no estaramos en la comparacin
del primer carcter, y aqu estamos hablando de la primera comparacin.

Una ves finalizada esta primera comparacin de caracteres, slo pasa-


ramos a la siguiente comparacin si result TEXT[k]= 0 para algn k, se
25

comparara los caracteres de posicin 1 ya que Apuntador_Rx es ahora 1,


en esta segunda comparacin se repetir el proceso descrito anteriormente
simplemente que ya se descartan las comparaciones donde TEXT[k]= 1, nue-
vamente si se tiene el carcter &, se medir la longitud de la cadena recidiva
y puesto que ahora ya no ser 0, entonces la cadena recibida ser considera-
da vlida, se activar un indicativo de texto reconocido y se ejecutara una
subrutina que atender las peticiones asociadas a este texto reconocido. Nue-
vamente se coloca TEXT[k]= 0 para todo k y de hace Apuntador_Rx = 0.
Es decir se deja todo preparado para la deteccin de nuevos caracteres.

El proceso descrito anteriormente se repite en la tercera, cuarta,. . . i -


sima comparacin hasta que se reconozca alguno de los textos predefinidos
o se descarte lo que se reciba, el valor de Apuntador_Rx va aumentando en
cada comparacin.

El algoritmo mostrado permite al diseador de aplicaciones recibir cual-


quier texto, en cualquier momento (usa interrupciones), y de cualquier lon-
gitud sin ms que definir un carcter comn de fin de texto. Tanto el envo
como recepcin de texto tienen la caracterstica de poder enviar o recibir
cualquier texto (cadena de caracteres).

Para nuestra aplicacin, el indicativo de carcter reconocido es poner


RB6 en 1 y RB7 en 0, el indicativo de que se recibi una cadena de carac-
teres correcta y reconocible como una palabra predefinida es poner RB6 en
0 y RB7 en 1, el indicativo de carcter no reconocido es poner RB6 en 1 y
RB7 en 1. Se muestra un fragmento de cdigo.

En el fragmento de cdigo mostrado se puede apreciar que TEXT[k] co-


rresponde a Texto_Aux_1 unido a Texto_Aux_1, esto es necesario ya que
estos variables definidas son posiciones de memoria de 8 bits cada uno, usar
estas dos variables nos permite manejar hasta 16 palabras predefinidas, se
han implementado 13 palabras predefinidas.
26

Como se puede apreciar el algoritmo implementado busca ser de natu-


raleza simtrica creciente, esto se aprecia en su propia descripcin, pero
tambin se puede apreciar en el fragmento cdigo mostrado, para aumentar
el nmero de textos predefinidos (reconocer ms textos recibidos) basta con
remplazar en todas las lneas cuyos comentarios inician con (Rx_n:) n por el
valor siguiente al mximo existente, en el cdigo este valor es n_max = 13.
Se aprecia tambin en este fragmento de cdigo la funcin f aplicada a
n_max, esta funcin nos permite transmitir de una forma compacta al
desarrollador lo que se ha de escribir en cada lnea de cdigo. Para definir f
primero recordaremos la definicin de la funcin mximo entero.

Si x R, su mximo entero se denota [| x |], y se define como:

[| x |] = n n x < n + 1, n Z
El mximo entero de un nmero real x, es el mayor de todos los nmeros
enteros menores o iguales a x. Dada la definicin de mximo entero de un
nmero real, entonces la funcin f en las lineas de cdigo comentadas en el
programa se define como:

f (n) = (n 1) 8[| (n 1)/8 |], nN (22)


Para la aplicacin de han implementado 13 textos predefinidos, que son
los comandos que el microcontrolador reconoce y ejecuta ciertas instruccio-
nes en funcin de estas, dos de los textos predefinidos son ok & y error & que
son enviados automticamente por CJAR Host cuando se confirma el envo
de los datos o cuando se detecta errores en el envo respectivamente.

Los 11 textos restantes tienen el siguiente formato.

Ti xyzTf

Donde:
Ti : Puede tomar dos valores, Ti = G si lo que se realiza es una consulta
del estado de una variable y Ti = S si lo que se quiere es conmutar el
estado de una variable o ejecutar una accin.

xyz: Son nemotecnicos que describen a que variable va dirigido el co-


mando.

Ti : Es el carcter de fin de texto, en el programa es Ti = &.


La lista de comandos completos es:
1. Sres&: Reseteo del microcontrolador.

2. Gsen&: Lectura del sensor de temperatura.


27

3. Gsel &: Lectura del selector de temperatura (potencimetro).


4. Gloc&: Consulta si el control es local (ON) o el control es remoto
(OFF).
5. Sloc&: Conmuta el estado del control, conmuta entre local y remoto.
6. Gtem&: Consulta si se est ejecutando el control de temperatura (ON),
(OFF) si no se est ejecutando.
7. Stem&: Conmuta entre ejecutar el control de temperatura y detener el
control de temperatura.
8. Gluz &: Consulta si la luz est prendida (ON) o apagada (OFF).
9. Sluz &: Conmuta entre encender y apagar la luz.
10. Gpue&: Consulta si la puerta est abierta (ON) o cerrada (OFF).
11. Spue&: Conmuta entre activar o desactivar la deteccin de puerta
abierta.
Diseado ya el aspecto ms importante del programa del microcontrola-
dor que es la comunicacin, se implementa el algoritmo de control de tem-
peratura. Para esto tomaremos en cuenta lo expuesto en la seccin anterior
y especficamente las ecuaciones (5,21) y (5,9).

Tomando en cuenta las mediciones realizadas y plasmadas en el cuadro


5,1, podemos considerar que rmax = 8.oC.

En el programa para cambiar el ciclo de trabajo colocamos valores en


los registros CCPR1L y CCPR2L, en CCPR1L si queremos variar ciclo
de trabajo del ventilador que hace ingresar el aire caliente y en CCPR2L si
queremos variar el ciclo de trabajo del ventilador de ingreso de aire a tem-
peratura ambiente. La misma naturaleza del control de temperatura hace
incompatible el funcionamiento de ambos ventiladores, por tanto si CCPR1L
tiene un valor entonces CCPR2L es cero y viceversa. Si CT es el ciclo de
trabajo entonces en el programa podemos variar este entre 0 y 256(28 ), luego
CTmax = 256.

En la ecuacin (5,9) escogeremos un valor de n de tal forma que el coe-


ficiente de [e(m) e(m 1)] sea 1, esto nos facilitar el algoritmo; luego:

CTmax CTmax 256


=1n= = n = 32
nrmax rmax 8
Remplazando estos valores en 5,21, tendramos para el decremento:

d 8 + [e(m) e(m 1)], 1 m n, n = 32


28

Puesto que en el assembler del microcontrolador no podemos propia-


mente restar un nmero mayor a un nmero menor, entonces redefinimos la
ecuacin anterior como:

8 + [e(m) e(m 1)] si e(m) > e(m 1)

d 8 si e(m) = e(m 1) (23)
8 [e(m 1) e(m)] si e(m) < e(m 1)

La ecuacin (5,23) se implementa en el programa y se toma siempre en


cuenta que d 0 y 0 CT 256. Se muestra un fragmento del cdigo que
implementa 8 [e(m 1) e(m)].

Donde se puede apreciar que Error_F= e(m) y Error_I= e(m 1), finaliza-
do el clculo del decremento se asigna el valor final del error al valor inicial,
ya que este sera el nuevo valor inicial para el siguiente clculo.

Hasta este momento se tiene el decremento a realizar d y el nmero de


decrementos n = 32, pero durante cunto tiempo se ejecutarn estos de-
crementos y cada cunto tiempo?. Si nuevamente revisamos el cuadro 5,1 y
sobre todo la recta de regresin lineal y = 0,5073x + 23,238 de la Figura 5,12
nos percatamos que cada dos minutos el incremento es de aproximadamente
un grado, por tanto si queremos que las variaciones tiendan a corregirse ya
en un grado, tendramos que hacer el tiempo de ajuste en dos minutos, es
decir Ta = 120s.

Despejando N.Ttimer de la ecuacin (5.9) y reemplazando valores.

Ta 120
N.Ttimer = = N.Ttimer = 3,871s (24)
n1 32 1
Es decir los decrementos se realizaran cada 3,871s. Luego para realizar
estos clculos de tiempo se requiere usar un temporizador, y para esto hare-
mos uso del timer uno del microcontrolador, lo denotaremos por Ttimer . Para
un oscilador de 4M Hz como el que se est usando y un preescalador de 1/8,
el mximo alcanzable por Ttimer es de 0,524288s, por lo cual no llega por si
29

slo a darnos los conteos de cada 3,871s que se requieren, es por este motivo
que multiplicaremos este tiempo N veces, donde N N, luego escogeremos
el tiempo del timer uno como su mximo posible, Ttimer = 0,524288s.

Usando la ecuacin (5,24) para calcular el valor de N.


3,871 3,871
N= = N = 7,383, pero N N N = 7
Ttimer 0,524288
Puesto que N se ha aproximado a siete, entonces tambin cambiara el
tiempo de ajuste, y el tiempo entre cada decremento, haciendo uso de las
ecuaciones (5,9) y (5,24), tendremos finalmente los siguientes valores.

Ttimer = 0,524288s Valor de conteo del timer uno.


N =7 Nmero de veces que se repite el conteo del timer uno.
N.Ttimer = 3,67s Tiempo entre cada decremento.
Ta = 113,77s Tiempo de ajuste.
n = 32 Nmero de decrementos del CT .
Se muestra a continuacin la implementacin de temporizador N.Ttimer .

Cabe mencionar que la relacin entre la temperatura y(t) y el voltaje


entregado r(t) por el sensor est dado por la ecuacin (5.17), para el LM35
se tiene que p = 100. Pero este valor del voltaje no es el que usa el micro-
controlador para sus clculos aritmticos ya que primero pasa por el ADC.

Si rd (t) es el valor entregado por el ADC, entonces:


rd (t) = 2014,6r(t) (25)
Esto no modifica los resultados anteriores ya que el factor 2014,6 es comn
en el numerador y denominador del segundo trmino del primer miembro de
la ecuacin (5,21) ya que e(n) e(n 1) = (r(n) r(n 1)) y por tanto
de anulan.

Con respecto a la modificacin del estado de variables digitales y sus lec-


turas, no amerita mayor explicacin ya que no es ms que activar o desactivar
salidas digitales y consultar el estado de entradas digitales5 . Sin embargo ca-
be la aclaracin de que se usa un registro auxiliar REG_CONFI para
5
La obtencin del cdigo fuente completo y comentado se puede hacer desde la pagina
web de CJAR
30

guardar las configuraciones que se setean ya sea localmente por los switches
o remotamente por palabras predefinidas, estas configuraciones guardadas
son consultadas por el programa para ejecutar las acciones que se soliciten.

Se muestra a continuacin el cuadro con los bits de configuracin de


REG_CONFI.

Posicin Estado Indicativo

REG_CONFI[2][1] 00 No se obtiene el texto de las temperatura.s


01 Optiene texto de la temp. del sensor.
10 Optiene texto de la temp. del potencimetro.
11 Optiene textos de ambas temperaturas.
REG_CONFI[3] 0 Control local ON.
1 Control local OFF.
REG_CONFI[4] 0 Permite deteccin de puerta abierta.
1 No permite deteccin de puerta abierta.
REG_CONFI[5] 0 Permite sonido de alarma.
1 Desactiva sonido de alarma.
REG_CONFI[6] 0 Luz prendida.
1 Luz apagada
REG_CONFI[7] 0 Permite control de temperatura.
1 Desactiva control de temperatura.
Por ejemplo el cdigo que hace una consulta al bit 6 del registro REG_CONFI
para saber si apagar o encender a luz es:
31

6. Simulaciones en Proteus y MPLAB X IDE


Dos de las herramientas ms potentes para trabajar con los microcon-
troladores PIC son Proteus y MPLAB X IDE, es posible integrar ambos
programas.

Figura 14: Integracin de Proteus y MPLAB X IDE

Se puede apreciar en la parte izquierda en el dashboard (tablero de ins-


trucciones) que en Debug Tool est configurado Proteus VSM Viewer.
32

Las siguientes imgenes muestran las simulaciones de comunicacin serial


y el control de temperatura por PWM. Notar los valores en los registros

Figura 15: Simulacin de comunicacin serial y PWM en MPLAB X IDE

Los nmeros resaltados con color rojo son los que en la ltima ejecucin
del programa han cambiado sus valores, notar el valor cambiante en el timer.
Para efectos de simulacin y ver los cambios rpidamente se ha dado al
mltiplo del timer el valor de uno.

Figura 16: Simulacin de comunicacin serial y PWM en Proteus


33

7. Resultados de la implementacin
Las imgenes mostradas en este captulo corresponden a la ejecucin de
CJAR en modo automtico HTTP y su conexin a la aplicacin en domtica.

Se muestra a continuacin la ejecucin de CJAR Web en Google Chrome.

Figura 17: CJAR Web ejecutndose en Google Chrome

Como se puede apreciar, el microcontrolador est enviando informacin a


travs de CJAR y respondiendo a los comandos enviados, tambin se ejecut
los comandos para solicitar el envo de coordenadas por parte de CJAR Host,
el cuadro en rojo y la reproduccin del audio son indicativos del ingreso de
datos a CJAR Web.
34

Las siguientes imgenes muestran la notificacin en el host (celular) de


CJAR ejecutndose en modo automtico HTTP y en la imagen de la derecha
se aprecia el cono de GPS consultado.

(a) Notificacin (b) GPS consultado

Figura 18: CJAR Host en ejecucin

Previamente se realizaron pruebas de conexin local y remota.

(a) Test Bluetooth 2 (b) Test Web

Figura 19: Pruebas de conexin


35

Las siguientes fotos muestran los elementos de control y monitoreo de la


maqueta en pleno funcionamiento.

Figura 20: Maqueta en funcionamiento

(a) Control local (b) Control remoto

Figura 21: Panel de control en maqueta


36

8. Conclusiones
1. El desarrollador o implementador de aplicaciones ve de forma transpa-
rente el diseo y funcionamiento interno de CJAR, por lo que slo ha
de centrarse en el diseo de su aplicacin

2. El aspecto ms crtico e importante para la integracin de una apli-


cacin con CJAR es la comunicacin. Si el desarrollador implementa
un programa, a de asegurar que sus algoritmos de comunicacin serial
sean eficientes.

3. La aplicacin en domtica implementa un algoritmo de control de tem-


peratura y un algoritmo de comunicacin serial, de naturaleza simtri-
ca creciente que puede ser usado en aplicaciones elementales as como
en aplicaciones de mayor complejidad, algoritmo que en la aplicacin
presentada se ha escrito en lenguaje ensamblador.

9. Cdigo fuente assembler y archivos generados


El conjunto de archivos completos de este programa pueden ser descar-
gados de la pgina web de CJAR www.cjarperu.com.

Das könnte Ihnen auch gefallen