Você está na página 1de 151

UNIVERSIDAD TECNOLGICA NACIONAL

FACULTAD REGIONAL SAN NICOLS


INGENIERA ELECTRNICA

PROYECTO FINAL

TELEMETRA ECG

Profesor:
Ing. Carlos Puccini

Autores:
Martn Roberti
Vctor Arvalo

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

OBJETIVO
Disear un equipo capaz de adquirir un bio-potencial (ECG), procesarlo y acondicionarlo analgicamente,
digitalizarlo y transmitirlo inalmbricamente a travs de la red de telefona celular por GPRS hacia un
servidor en Internet. De este modo, personal de enfermera, sin necesidad de poseer conocimientos
tcnicos e informticos, pueda transmitir un estudio de ECG al centro de salud para ser analizado por el
mdico cardilogo y dar un diagnstico al instante.
Posibles aplicaciones de un equipo con estas caractersticas:
1.
2.
3.
4.

Estudio de ECG zona de Islas


Estudio de ECG zonas rurales
Estudio de ECG en zonas anegadas y/o de difcil acceso
Estudio de ECG ambulatorio

Arvalo, Vctor Roberti, Martn

2 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

CONTENIDO
Pgina

OBJETIVO

1 - BASES DE ELECTROCARDIOGRAFIA

1.1 - Introduccin

1.2 Clasificacin bsica de los estudios de ECG

1.3 Derivaciones o canales de medicin en el ECG

1.3.1 Derivaciones en el plano frontal

10

1.3.1.1 Derivaciones bipolares de EINTHOVEN

10

1.3.1.2 Derivaciones monopolares de GOLDBERGER

12

1.3.2 Derivaciones del plano transversal o monopolares de WILSON

12

1.3.3 Resumen de las derivaciones de los planos frontal y transversal

14

1.4 Caractersticas de la seal de ECG

15

1.4.1 Caracterizacin temporal y morfologa general

15

1.4.2 Caracterizacin en frecuencia

16

1.5 Fuentes de interferencia

17

1.6 Electrodos de piel

17

2 ELECTRNICA ANALGICA

18

2.1 - Introduccin

19

2.2 Diagrama en bloques del sistema analgico

19

2.2.1 Etapa de proteccin de las entradas

19

2.2.2 Etapa del amplificador de instrumentacin (AI)

22

2.2.3 Etapa de calibracin

26

Arvalo, Vctor Roberti, Martn

3 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

2.2.4 Etapa de realimentacin del modo comn

30

2.2.5 - Filtrado

31

2.2.5.1 Filtro pasa altos

31

2.2.5.2 Filtro pasa bajos

32

2.2.5.3 Filtro Notch

33

2.2.6 Circuito INSTO

34

2.3 - Aislacin galvnica

36

2.3.1 Amplificador de aislacin

36

2.3.2 - Optoacopladores

38

2.3.3 Fuente aislada

40

2.4 Seales de control

41

3 TRANSMISIN INALMBRICA

42

3.1 - Introduccin

43

3.2 Concepto general de la comunicacin

43

3.3 G20 Datamodem

44

3.3.1 Caractersticas tcnicas

45

3.4 Anlisis de costos de transmisin

46

3.5 Esquema de comunicacin

46

3.6 Seleccin de la compaa de telefona celular

48

3.7 - Recepcin de mensajes

49

3.8 Flags de estados

49

3.9 Seleccin del MMS

50

3.10 Software de recepcin en PC

51

3.11 Botones de comandos

52

3.12 Indicaciones en display

52

4 DISPLAY LCD

54

4.1 - Introduccin

55

4.2 Caractersticas tcnicas

55

Arvalo, Vctor Roberti, Martn

4 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.3 Diagrama en bloques

56

4.4 Diagrama temporal

57

4.5 Arquitectura del display

58

4.6 Instrucciones de control

59

4.7 - Funcionamiento

59

4.8 - Escalado

61

4.9 - Interpolacin

63

5 - MICROCONTROLADOR

64

5.1 - Introduccin

65

5.2 Caractersticas tcnicas

65

5.3 Conversin A/D

65

5.3.1 Tiempo mnimo de adquisicin

65

5.3.2 Configuracin de la tasa de muestreo

67

5.4 El programa

68

5.5 Generador de seal de calibracin

68

5.6 Clculo de los tiempos de interrupciones

69

5.7 Buffers de transmisin y recepcin

69

5.8 Subrutinas principales

70

5.8.1 - DISPLAY

70

5.8.2 - CONVERT

70

5.8.3 - SENDCHAR

70

5.8.4 - SENDSTR

70

5.8.5 - SENDDATA

70

5.8.6 - RXCHARS_G20

71

5.8.7 - STRCMP

71

6 GUA DE USO

72

7 - CONCLUSIONES

74

Arvalo, Vctor Roberti, Martn

5 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

8 - BIBLIOGRAFA

76

ANEXOS

78

Anexo I Descripcin de pines del PIC

79

Anexo II Descripcin de pines del display

80

Anexo III Diagramas de flujo

81

Anexo IV Cable de interconexin del mdem

86

Anexo V Programa PC

89

Anexo VI Programa Microcontrolador PIC

97

Anexo VII Recursos

149

Anexo VIII Esquema electrnico completo.

150

Arvalo, Vctor Roberti, Martn

6 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

I
Bases de electrocardiografa

Arvalo, Vctor Roberti, Martn

7 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

1 BASES DE ELECTROCARDIOGRAFA
1.1 INTRODUCCIN
La seal que vamos a procesar corresponde a la seal electrocardiogrfica llamada tambin ECG, sta es
producto de la actividad electroqumica del corazn, para medirla se pueden utilizar varios mtodos, a
grandes rasgos stos pueden clasificarse en mtodos invasivos y no invasivos.
El mtodo no invasivo comnmente ms usado es el electrocardiograma, en el cual se basa nuestra tesis de
grado, para medir la seal electrocardiogrfica se colocan electrodos en puntos especficos sobre la piel del
paciente. El funcionamiento del corazn obedece a complejos procesos electroqumicos, se producen as
cargas y descargas elctricas
(despolarizaciones y repolarizaciones) que dan origen a la actividad
muscular del corazn.
Esta actividad elctrica se traslada hasta la piel de la persona debido a que todo el tejido humano que rodea
al corazn se comporta esencialmente como un conductor, ver figura 1.1, por lo tanto el objetivo del
electrocardiograma es caracterizar el funcionamiento del corazn midiendo los potenciales elctricos
presentes en la piel del cuerpo humano.
La piel del cuerpo humano es entonces la superficie de un conductor, es decir podemos pensar que entre el
corazn y la piel existen resistencias elctricas que hacen de conductores, de esta manera colocando
electrodos adheridos a la piel podemos medir la diferencia de potencial que existe entre ellos, en la figura
1.1 se observan 2 electrodos P1 y P2 y el modelo circuital equivalente.

Fig. 1.1 - Cuerpo humano como conductor y modelo equivalente de medicin.

1.2 CLASIFICACIN BSICA DE LOS ESTUDIOS DE ECG


Bsicamente podemos distinguir 2 tipos de observaciones de ECG de inters mdico:
Observacin temporal o ECG clsico: corresponde a la observacin tpica de consultorio, el
paciente llega al consultorio del mdico para hacerse un chequeo de rutina, se lo acuesta en una camilla, se
colocan los electrodos y pinzas en sus respectivas posiciones, se conecta el electrocardigrafo a los

Arvalo, Vctor Roberti, Martn

8 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

electrodos y a las pinzas y se procede a la medicin. Este proceso lleva unos pocos minutos, en la mayora
de los equipos el registro queda asentado sobre papel impreso trmicamente, actualmente existen equipos
con posibilidad de almacenamiento en medios digitales.
Observacin Clnica : este tipo de observacin se da cuando el paciente est en internacin,
terapia intensiva o en quirfano, en este caso se colocan los electrodos sobre el trax del paciente. El fin de
este estudio es el monitoreo del paciente por lo cual se requieren menos conexiones, tpicamente con una o
dos derivaciones alcanza.

1.3 DERIVACIONES O CANALES DE MEDICIN EN EL ECG


La curva electrocardiogrfica presenta distintas morfologas segn dnde est colocado el electrodo
explorador. Los lugares donde se colocan los electrodos determinan las distintas derivaciones.
Las ondas del ECG son la expresin de la despolarizacin y repolarizacin del corazn.
Para medir el ECG, es necesario colocar los electrodos y las pinzas en contacto con la piel del paciente en
puntos especficos, determinndose as lo que se llama Derivaciones del ECG. Cada derivacin determina
un canal o mejor dicho una seal.
Las derivaciones se agrupan en planos de medicin, es comn hablar entonces de 3 planos de medicin, ver
figura 1.2. Segn como estos planos seccionen el cuerpo humano, se tiene:

plano frontal : determina las derivaciones I, II y III y las derivaciones ampliadas aVR, aVL y aVF.

plano transversal : determina las derivaciones precordiales V1, V2, V3, V4, V5 y V6.

Plano longitudinal o sagital : es un plano de medicin no usado en estudios generales ya que


involucra la introduccin de un electrodo de medicin a travs del esfago que se ubica en
distintas posiciones para determinar los distintos puntos de medicin.

La figura 1.2 muestra el plano frontal (color rojo) y el plano transversal (color azul), no se muestra el plano
longitudinal ya que como hemos dicho no es un plano muy usado en electrocardiografa convencional.
El plano frontal secciona la figura humana paralelo a la columna vertebral y paralelo al trax, pasando por el
centro del tronco o corazn, el plano transversal secciona la figura humana perpendicular al trax y
perpendicular a la columna vertebral pasando por el centro del corazn.
Por lo tanto, los planos de medicin frontal y transversal determinan 12 derivaciones estndar que han sido
sistematizadas y universalmente aceptadas. Seguido explicamos cuales son estas derivaciones segn el
plano de medicin.

Arvalo, Vctor Roberti, Martn

9 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 1.2 - Plano frontal y plano transversal.

1.3.1 DERIVACIONES EN EL PLANO FRONTAL


En este plano de medicin se presentan dos variantes :

Derivaciones bipolares de Einthoven.

Derivaciones monopolares de Goldberger.

1.3.1.1 DERIVACIONES BIPOLARES DE EINTHOVEN


Tambin conocidas como bipolares de miembros o bipolares de extremidades, registran la diferencia de
potencial elctrico que se produce entre 2 puntos, para ello utilizan 2 electrodos activos, en este caso los
puntos corresponden a las extremidades de la persona dadas por los brazos izquierdo y derecho y la pierna
izquierda, dejando fuera la pierna derecha. Se determinan as 3 derivaciones llamadas DI, DII y DIII (D1, D2 y
D3) o simplemente derivaciones I, II y III. La figura 1.3 aclara lo comentado.
Estas derivaciones recogen diferencias de potencial entre brazo derecho y brazo izquierdo (derivacin 1),
brazo derecho y pierna izquierda (derivacin 2) y brazo izquierdo y pierna izquierda (derivacin 3). Cada
lnea de derivacin (I, II, III) tiene su parte positiva y negativa, se considera que la parte positiva de I
corresponde a 0, la parte positiva de II a +60 y la parte positiva de III a +120. Las partes negativas de las
tres derivaciones corresponden a 180, -120 y -60 respectivamente. Mediante ellas se puede conocer la
direccin y magnitud de las fuerzas vectoriales en el plano frontal (superior-inferior, derecha-izquierda).

Arvalo, Vctor Roberti, Martn

10 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 1.3 - Derivaciones bipolares del plano frontal.

Einthoven consideraba estas tres derivaciones bipolares como un circuito cerrado, en el que segn la ley de
Kirchhoff se cumple II = I + III. Esta relacin se conoce como ley de Einthoven. Dicha ley, que debe cumplirse
siempre en electrocardiografa, permite asegurar que el electrocardiograma est correctamente registrado
(cables bien colocados) y rotulado. Einthoven, basndose en esa ley, describi su tringulo y partiendo del
principio de que era igual colocar los electrodos en las partes distales de los brazos o de las piernas que en
las races de los miembros (hombro derecho, hombro izquierdo y pubis), traslad dicho tringulo al torso
del cuerpo humano, ver figura 1.4.

Fig. 1.4 - Tringulo de Einthoven.

En el comienzo de la electrocardiografa fueron estas las primeras derivaciones usadas. Einthoven fue un
fisilogo holands nacido en la Isla de Java en el siglo XIX y premio Nobel.
El nivel de voltaje de las derivaciones I, II y III es intermedio dentro del grupo de seales de ECG.

Arvalo, Vctor Roberti, Martn

11 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

1.3.1.2 DERIVACIONES MONOPOLARES DE GOLDBERGER


Estas son conocidas como derivaciones unipolares de miembros o unipolares de extremidades, derivaciones
ampliadas o aumentadas (de miembros o extremidades), son en total 3 derivaciones, se las llama aVR, aVL y
aVF y se caracterizan por tener un solo electrodo activo, la figura 1.4 nos muestra su ubicacin en el
triangulo de Einthoven.
Se obtienen con los mismos tres electrodos que las derivaciones I, II, y III; sin embargo, ven el corazn a
travs de ngulos diferentes (o vectores) porque el electrodo negativo para estas derivaciones es una
modificacin obtenida al considerar conjuntamente las derivaciones I, II, y III conectndolas en el borne
negativo de la mquina del ECG. Esto anula el electrodo negativo y permite al electrodo positivo convertirse
en el "electrodo explorador" o derivacin unipolar. La figura 1.5 aclara lo que estamos diciendo.

Fig. 1.5 - Derivaciones Unipolares o ampliadas del plano frontal.

La derivacin aVR tiene el electrodo positivo en el brazo derecho.

La derivacin aVL tiene el electrodo positivo en el brazo izquierdo.

La derivacin aVF tiene el electrodo positivo en la pierna izquierda.

Los resistores y el punto medio son formados internamente por el equipo adquisidor (electrocardigrafo),
este punto medio es conectado automticamente al terminal negativo (terminal inversor) del amplificador
de entrada.
El nivel de tensin obtenido es el ms chico dentro de las seales de ECG.

1.3.2 DERIVACIONES DEL PLANO TRANSVERSAL (HORIZONTAL) O MONOPOLARES DE


WILSON
Estas derivaciones son del tipo monopolar o unipolar, son llamadas tambin precordiales o torcicas, son en
total 6 derivaciones, se obtienen midiendo la diferencia de potencial con un electrodo activo respecto a un

Arvalo, Vctor Roberti, Martn

12 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

punto central llamado terminal central de Wilson, este terminal es formado automticamente en el interior
del electrocardigrafo uniendo los terminales I, II y III del plano frontal a travs de 3 resistencias formando
un centro de estrella que es conectado al terminal negativo del amplificador.
Se las llama V1, V2, V3, V4, V5 y V6 , en ocasiones segn la norma tambin se las designa derivaciones C1 a
C6 o menos frecuente T1 a T6.

Fig. 1.6 - Derivaciones precordiales.

Las figuras 1.6 y 1.7 muestran la disposicin de los electrodos activos y la formacin del terminal central de
Wilson, el potencial elctrico del terminal central de Wilson es bastante estable, geomtricamente
corresponde al centro del tringulo de Einthoven, fisiolgicamente hablando es el potencial elctrico
presente en el centro del trax inmediatamente detrs del corazn.

Fig. 1.7 - Ubicacin de las derivaciones precordiales.

Arvalo, Vctor Roberti, Martn

13 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

1.3.3 RESUMEN DE LAS DERIVACIONES DE LOS PLANOS FRONTAL Y TRANSVERSAL


La figura 1.8 nos muestra resumidamente las 12 derivaciones agrupadas segn los planos de medicin y la
polaridad de las mismas. La tabla 1.1 resume otras propiedades.

Fig. 1.8 - Derivaciones electrocardiogrficas ms usadas.

Clasificacin de las derivaciones electrocardiogrficas


Denominacin

Plano

Electrodos activos
por derivacin

Polaridad

Nivel relativo de diferencia de


potencial

DI,DII y DIII

Frontal

Bipolar

Intermedio

aVR, aVL y aVF

Frontal

Monopolar

Bajo

V1, V2, V3, V4, V5


y V6

Transversal

Monopolar

Alto

Tabla 1.1 - Derivaciones electrocardiogrficas.

Arvalo, Vctor Roberti, Martn

14 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

1.4 CARACTERSTICAS DE LA SEAL DE ECG


1.4.1 CARACTERIZACIN TEMPORAL Y MORFOLOGA GENERAL
En la figura 1.9, se puede observar una grfica tpica de la seal de electrocardiografa (ECG).
La informacin contenida en la seal de ECG est dada por las variaciones tanto en la amplitud como en la
duracin temporal, analizando estas variaciones el cardilogo puede realizar un diagnstico.
Nuestro trabajo est dividido en etapas, una de las cuales es precisamente disear un buen adquisidor de la
seal de ECG, es decir un bio-amplificador, sin entrar en detalles mdicos, ni mucho menos en
clasificaciones de patologas cardacas.
El diseo del bio-amplificador ser tratado en detalle en el captulo 2, el bio-amplificador debe reflejar
fehacientemente la actividad elctrica cardaca, es decir, visualizar lo mejor posible estas variaciones de
magnitud y de tiempo sin introducir perturbaciones, que entregue adems la salida libre de las principales
fuentes de interferencias.
Las interferencias propias de la seal de ECG sern detalladas en el punto 1.5.

Fig. 1.9 - Eventos principales de la seal de ECG a lo largo del tiempo.

Por lo tanto, para disear, primero debemos conocer de antemano la seal sobre la que vamos a trabajar, y
cules son sus caractersticas principales, tanto en magnitud como en tiempo. En el siguiente tem (1.4.2),
presentaremos el contenido espectral de la seal ECG.
En la figura 1.9 se observa una espiga pronunciada, con gran amplitud y pendiente a ambos lados, y de
corta duracin, esta espiga corresponde al complejo QRS, formado precisamente por la composicin de las
ondas Q, onda R y onda S. La amplitud de este complejo es la ms significativa en la seal ECG, con valores
de potencial elctrico en piel que pueden llegar hasta 5 mili-voltios, tpicamente 2 mV, obviamente esto
depende de la derivacin que tomemos, tema que ya hemos tratado en los prrafos anteriores.
Tambin observamos que la onda P es la de menor magnitud, por lo tanto el amplificador debe ser capaz de

Arvalo, Vctor Roberti, Martn

15 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

adquirirla, tpicamente, la magnitud de esta onda P es de algunas decenas de micro voltios.


Es importante aclarar que la seal mostrada en la figura 1.9 es una seal de modo diferencial, ya que
representa la diferencia de potencial entre dos puntos de medicin que estn flotantes, es decir, no
referenciados a tierra.

1.4.2 CARACTERIZACIN EN FRECUENCIA


La figura 1.10 muestra el contenido espectral del ECG clsico, el ancho de banda de inters del ECG clsico
no se extiende ms all de los 100 Hz, existen otros estudios de ECG que s necesitan ampliar el ancho de
banda, tal es el caso del ECG de alta resolucin cuyo ancho de banda se extiende hasta los 500 Hz.

Fig. - 1.10 Espectro del ECG clsico

En la figura 1.10 podemos apreciar que el mayor contenido frecuencial del ECG clsico se encuentra en el
rango de unos pocos mHz a los 20 Hz aproximadamente. Esta figura es til para comprender las frecuencias
de corte de los filtros pasa altos y pasa bajos. Una aclaracin importante es que esta curva espectral
corresponde al de un ECG limpio, es decir ideal. En la prctica, como ya hemos dicho existen importantes
fuentes de interferencia, la ms importante corresponde al zumbido de 50 Hz por acoplamiento con las
redes elctricas de alimentacin, con lo cual el diagrama espectral de la figura 1.10 cambia levemente.

Arvalo, Vctor Roberti, Martn

16 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

1.5 FUENTES DE INTERFERENCIA


Las fuentes de interferencia ms comunes en el ECG son debidas tanto al acoplamiento inductivo como al
capacitivo que existe entre el paciente y el entorno que lo rodea.
La red elctrica propia de la instalacin del edificio ubicada en las cercanas del paciente, inducen por
acoplamiento capacitivo con ste tensiones de frecuencia de red, esta interferencia se la denomina
zumbido de lnea, en la jerga es comn llamarla ruido, aunque en rigor el ruido es no determinstico, en
cambio el zumbido del que estamos hablando es determinstico.
Por otro lado, como el cuerpo humano est compuesto por agua y sales entre otras sustancias, es en
esencia una masa conductora, por lo tanto los campos magnticos variables en las cercanas del paciente
inducen sobre l tensiones debido al acoplamiento inductivo.
Otra fuente de interferencia es el ruido muscular debido a movimientos bruscos del paciente, para evitar
este inconveniente es necesario acostar en una camilla a la persona que se le est realizando el estudio de
ECG, exigindole adems que se sienta cmodo y tranquilo. Es importante en este punto remarcar que este
tipo de interferencia ingresa al equipo como tensin de modo diferencial, por lo tanto su eliminacin es
todo un problema.

1.6 ELECTRODOS DE PIEL


En este punto, sin entrar en mayores detalles, comentamos que los electrodos de piel estn formados por
un pequeo disco o placa hecho en plata recubierto con un gel que contiene cloruro de plata. ste gel es
conductor elctrico y es la parte del electrodo que asegura un buen contacto elctrico con la piel del
paciente.
Este sistema de medicin cutnea, es en esencia una micro-celda galvnica.
En ocasiones, por polarizacin electro-qumica del electrodo, se producen pequeas pilas cuyo voltaje
ingresa al bio-amplificador como off-set de tensiones continuas de modo diferencial.
Por tal razn, cuando se utilizan electrodos cutneos, por lo general, la primera etapa amplificadora es de
baja ganancia, tpicamente no ms de 50 V/V, para evitar saturacin en la salida del bio-amplificador ya que
en ocasiones la magnitud del off-set supera la propia seal electrofsiolgica.

Arvalo, Vctor Roberti, Martn

17 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

II
Electrnica Analgica

Arvalo, Vctor Roberti, Martn

18 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

2 ELECTRNICA ANALGICA
2.1 INTRODUCCIN
En base a las nociones adquiridas en el captulo anterior, abordamos en este captulo el diseo de la
electrnica analgica, la cual es responsable de acondicionar la seal electrocardiogrfica que luego ser
procesada en la etapa digital.
Presentamos el anlisis y diseo de la etapa analgica por separado considerando la subdivisin de la
misma en subetapas, cada una de stas responsables de una funcin en particular.
La primera de estas subetapas es la de proteccin, su funcin es proteger al amplificador de niveles de
tensin que superan un determinado valor, luego veremos en detalle a qu se deben estos niveles. Luego
tenemos la etapa de amplificador de instrumentacin (AI), seguido de la etapa de filtrado pasa altos y pasa
bajos, luego se adaptan niveles y se asla mediante un amplificador de aislacin del tipo comercial, por
ltimo, ya en la etapa no aislada tenemos un filtro del tipo muesca, conocido tambin como filtro notch.
Otra de las subetapas es la de calibracin, que permite calibrar la ganancia en base a una tensin de
referencia y a un selector de ganancia. Otra, es la de realimentacin del modo comn a la pierna derecha
del paciente conocida como circuito DRL (right-leg driving), por ltimo un circuito elemental que sirve para
cambiar la constante de tiempo en el filtro pasa altos, conocido en algunos equipos como circuito INSTO.
En este captulo, sern abordadas en detalle cada una de estas subetapas.

2.2 DIAGRAMA EN BLOQUES DEL SISTEMA ANALGICO


La figura 2.1 muestra un diagrama genrico de la etapa analgica. El diagrama habla por s solo.
Como puede observarse en esa figura, bsicamente est dividida en 2 sectores, uno aislado y otro no
aislado de tierra, veremos luego en detalle esta caracterstica.
Seguidamente pasamos a describir cada uno de estos bloques en mayor detalle.

2.2.1 ETAPA DE PROTECCIN DE ENTRADAS


Tambin llamada en la bibliografa etapa de proteccin contra transientes de voltaje. Este bloque de la
etapa analgica es el primero en tener contacto con el paciente. La funcin de esta etapa es proteger al bioamplificador de niveles de voltaje que puedan daarlo. Esencialmente est formada por limitadores de
voltaje.

Arvalo, Vctor Roberti, Martn

19 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.1 Diagrama en bloques de la etapa analgica.

Existen varios tipos de limitadores de voltajes, tal como se observa en la figura 2.2.
La figura 2.2 (a) muestra la caracterstica de transferencia de estos dispositivos, se observa que para un
umbral de voltaje determinado la corriente se dispara limitando as el voltaje presente.
La figura 2.2 (b) muestra un acoplamiento de diodos usado para limitacin de voltaje del orden de los
milivoltios, 2.2 (c) representa un acoplamiento de diodos Zener utilizado para limitar voltajes de hasta 20
voltios. Por ltimo la figura 2.2 (d) muestra un limitador de voltaje del tipo gaseoso, utilizado para voltajes
elevados, este dispositivo electrnico est formado por 2 electrodos revestidos en plata en una atmsfera
de gas de nen a baja presin.
En nuestro diseo, utilizamos 2 tipos de limitadores de voltaje, el acoplamiento de diodos y el descargador
gaseoso.

Arvalo, Vctor Roberti, Martn

20 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.2 Distintos tipos de limitadores de voltaje.

El uso de cardio-desfibriladores es responsable de los altos voltajes que puedan ingresar al bio-amplificador,
para evitar su efecto perjudicial en el resto del equipo se utilizan descargadores gaseosos de nen,
(posiciones E2, H2 y F2 del esquemtico general).
En la figura 2.3, vemos una seccin del plano general (correspondiente a la derivacin 1) en la que est
presente la proteccin de alta tensin a travs de la lmpara de nen de acuerdo con la figura 2.2(d), por
otro lado aseguramos una proteccin de baja tensin que enclava la seal de entrada dentro del intervalo
dado por [(V-)-V;(V+)+V] determinada por los diodos D2 y D1 respectivamente, D4 y D3 cumplen esta
misma funcin para la derivacin 2. Vale aclarar que la disposicin de diodos no es idntica a la
configuracin mostrada en la figura 2.2(b) pero el principio de funcionamiento es el mismo.

Fig. 2.3 Descargadores gaseosos y diodos de proteccin.

La descarga elctrica de un cardio-desfibrilador produce tensiones elevadas sobre la piel del paciente que

Arvalo, Vctor Roberti, Martn

21 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

pueden llegar a ser del orden de algunos centenares de voltios, stas son capturadas por los electrodos de
piel ingresando al bio-amplificador, cuando se supera la tensin de umbral del descargador (en nuestro caso
usamos descargadores de nen de 110 voltios ) se produce un arco disruptivo a masa debido a la ionizacin
del gas de nen a baja presin, la cada de tensin sobre el descargador gaseoso es prcticamente cero,
cayendo toda la tensin sobre la resistencia R1 para la derivacin 1 y sobre R3 para la derivacin 2.
Adems de las tensiones elevadas producto del uso de cardiodesfibriladores, otras tensiones de menor
magnitud pueden presentarse en el circuito de entrada, stas son producto muchas veces de ruidos o
debido a la polarizacin de los electrodos de piel, es por tanto necesario limitarlas ya que pueden llegar a
saturar la siguiente etapa, que es el amplificador de instrumentacin. La funcin de limitacin de bajas
tensiones es llevada a cabo por los diodos D1 y D2 (derivacin 1), ver figura 2.3, y por los diodos D3 y D4
(derivacin 2), ver plano esquemtico general, posiciones E2 y F2.

2.2.2 ETAPA DEL AMPLIFICADOR DE INSTRUMENTACIN


Volviendo al diagrama de bloques de la figura 2.1, vemos que antes del amplificador de instrumentacin
tenemos un bloque identificado como selector 2, el cual est sintetizado por un multiplexor analgico
CD4053, circuito integrado IC2 ubicado en las posiciones F3 y G3 del esquemtico general.
La funcin de ste es seleccionar qu seal ser aplicada al AMPLIFICADOR DE INSTRUMENTACIN,
habiendo 2 posibilidades, primero la seal de calibracin y segundo la seal de ECG
Explicaremos en detalle la etapa de calibracin en el punto 2.2.3 .

Fig. 2.4 Switch analgico selector de entradas.

Volviendo a nuestro IC2 (CD4053), el cual vemos en la figura 2.4, cuando la seal CAL o ECG AISLADA
aplicada a los pines 10 y 11 est en alto, el canal X (pin 14) conmuta al canal X1 (pin 13) y tambin el canal Y
(pin 15) conmuta al canal Y1 (pin 1), como los canales X e Y estn conectados al AMPLIFICADOR DE

Arvalo, Vctor Roberti, Martn

22 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

INSTRUMENTACIN, ste ltimo entonces est amplificando la seal VCAL1 y VCAL2 presente en los canales
X1 e Y1 respectivamente, es decir, estamos amplificando la seal de calibracin.
Cuando la seal CAL o ECG AISLADA est a un nivel bajo de tensin, el canal X (pin 14) conmuta al canal
X0 (pin 12) y el canal Y (pin 15) conmuta al canal Y0 (pin 2), siendo ahora las seales ECG1 y ECG2 las
aplicadas al AMPLIFICADOR DE INSTRUMENTACIN, es decir, estamos observando la seal
electrocardiogrfica que nos llega del paciente.
En el diseo de bio-amplificadores, es importante que ste cumpla con los siguientes puntos:

Alta impedancia de entrada.

Baja corriente de polarizacin de entrada.

Alto rechazo al modo comn en baja ganancia.

Nos detenemos aqu para hacer unos breves comentarios sobre cada uno de los anteriores parmetros.

Alta impedancia de entrada


En la figura 1.1, primer captulo, vemos que el potencial elctrico que se quiere medir fue modelizado como
una fuente de tensin ideal en serie con 2 resistencias. Si bien este modelo es muy elemental, es bastante
parecido al real. Tal modelo nos est mostrando que la fuente de bio-potenciales tiene una resistencia
interna cuyo valor es considerable ya que es la resistencia hmica propia del tejido humano.

Fig.2.5 Modelo Amplificador de instrumentacin junto al paciente.

Como vemos en la figura 2.5 la resistencia interna de paciente junto con la impedancia de entrada del
amplificador de instrumentacin (AI) forman un divisor de voltaje, donde la Vin es la tensin observada por
el AI. Las reglas de circuitos nos dicen que si queremos que la magnitud de la seal Vpaciente sea
prcticamente la observada por el AI, se debe cumplir que Zin sea mucho mayor que Rpaciente.

(EC 2.1)

Arvalo, Vctor Roberti, Martn

23 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Donde, si se cumple Zin >> Rpaciente Vin Vpaciente


El amplificador de instrumentacin que utilizamos en nuestro diseo fue el INA111 de la firma BURR
BROWN, ubicado en la posicin B2 del esquemtico general, la hoja de datos del dispositivo especifica una
impedancia de entrada de 1012 , es decir 1G, es fcil observar segn la ecuacin 2.1 que esta alta
impedancia de entrada cumple sobradamente con las necesidades requeridas.
En resumen, es necesaria una alta impedancia de entrada ya que el amplificador representa la carga
aplicada a los electrodos.

Baja corriente de polarizacin de entrada


Este otro parmetro es sumamente importante, como bien sabemos, los terminales de entrada del
amplificador de instrumentacin son directamente las bases o las puertas de los transistores de entrada,
por tal razn es necesaria una corriente de polarizacin para hacer funcionar al dispositivo en su regin
lineal de amplificacin. La fuente a medir es el paciente, el cual no posee una capacidad de suministro de
corriente considerable, ms bien es bastante reducida, siendo un valor tpico 500 nA. Por otro lado si fuera
necesario suministrar la corriente de polarizacin mediante una red resistiva externa, se vera perjudicada la
impedancia de entrada del bio-amplificador.
El datasheet del INA111 especifica una corriente de polarizacin de entrada (Input Bias Current) tpica de
2 pA y un valor mximo de 20 pA, el cual cumple sobradamente con el objetivo de no tener que utilizar
una red resistiva de polarizacin externa.
En resumen, en el diseo de bio-amplificadores, es necesaria una baja corriente de polarizacin de entrada
para que la fuente de seal a medir (en este caso el paciente) suministre la corriente de polarizacin.

Alto rechazo al modo comn en baja ganancia


En el diseo de bio-amplificadores, la primer etapa por lo general requiere una baja ganancia sin perder un
alto rechazo al modo comn, veamos el porqu de esto.
En la industria como en las aplicaciones mdicas, existe la necesidad de medir pequeas seales del orden
de los micro-voltios o algunos pocos mili-voltios en la presencia de, comparativamente, grandes seales de
ruido del orden de decenas de voltios provenientes de distintas fuentes como motores, lmparas de
descarga gaseosa, equipos con fuentes conmutadas conectados a la lnea, y el siempre presente zumbido de
50 o 60 Hz segn la frecuencia de red en cada pas.
En el punto 1.5, hemos hablado de estas fuentes de interferencias, por ejemplo, los acoplamientos
capacitivos e inductivos que existen entre el paciente y las lneas elctricas son los responsables del voltaje
de 50 o 60 Hz inducido sobre el paciente, este voltaje se conoce como zumbido de lnea acoplado sobre el
paciente y es un clsico en el mundo de la bio-instrumentacin. En ocasiones el ruido y la interferencia (que
representan la seal en modo comn) pueden alcanzar magnitudes del orden de decenas de voltios, mucho
mayor que la seal que nos interesa amplificar (seal en modo diferencial) del orden de pocos milivoltios.
De aqu, la necesidad de disponer de amplificadores con alto rechazo al modo comn.
Por otro lado, la baja ganancia es requerida por el hecho de que los electrodos pueden llegar a producir

Arvalo, Vctor Roberti, Martn

24 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

potenciales de off-set del orden de 200mV debido a su naturaleza qumica, este potencial aparece en serie
con el bio-potencial de inters, es decir aparece como potencial en modo diferencial y por ende ser
amplificado. Dado que su magnitud es considerable, se corre el riego de llevar a saturacin la salida del
amplificador de instrumentacin, as, en el diseo de bio-amplificadores, la primer etapa por lo general se
ajusta con ganancias reducidas del orden de 20 a 50 V/V.
La figura 2.6 muestra la relacin entre el rechazo en modo comn en funcin de la frecuencia para distintas
ganancias.

Fig. 2.6 - CMRR en funcin de la frecuencia para distintas ganancias

En nuestro caso vamos a trabajar con una ganancia de 50 V/V, suponiendo como mximo una tensin de
off-set de 200 mV sobre los electrodos esto puede provocar un off-set en la salida del AI del orden de 10
Voltios.
Observando la figura 2.6, para una ganancia de 50 V/V, curva ubicada entre las curvas de ganancia 10 y 100
dB respectivamente, y considerando un ancho de banda de inters de 100 Hz, tpico para los estudios de
ECG, la RRMC se ubica en aproximadamente 115 dB.
La ecuacin 2.2, establece el valor de Rg para ajustar la ganancia del AI.

(EC 2.2)

Despejando, para G=50, Rg adopta un valor de 1020 , es ideal para realizar este ajuste un trimpot del tipo
multivueltas de 2K, observando detenidamente el plano general (coordenadas H3), vemos que en paralelo
al trimpot aparecen 2 resistencias en serie de 10K, es decir el trimpot est en paralelo con 1 resistencia
equivalente de 20 K, por lo tato el ajuste real del trimpot se obtiene despejando Rtrimpot de la ec 2.3:

Arvalo, Vctor Roberti, Martn

25 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

(EC. 2.3)
Obtenindose:
R trimpot = 1.07481 K 1075

2.2.3 ETAPA DE CALIBRACIN


El fin de esta etapa es proveer una seal patrn que sirva para tener una referencia en el eje de ordenadas.
Para lograr esto se utiliza una referencia de tensin y una seal de control que comanda un switch analgico
(IC3 ubicado en la posicin C4 del plano esquemtico general) para formar un tren de pulsos que se inyecta
en la entrada del bio-amplificador. En la figura 2.7 observamos el circuito integrado correspondiente al
switch analgico para formar el tren de pulsos, el canal que se usa para ese objetivo es el Z, el pin de control
de ese canal es el C (pin 9), al cual se conecta la seal SEAL_CAL_AISLADA proveniente del optoacoplador CNY17 ubicado en la posicin G7 del plano esquemtico general.

Fig. 2.7 Seal VCAL, formacin de pulsos de calibracin.

El funcionamiento es simple, cuando la seal de control SEAL_CAL_AISLADA est a un cero lgico, el

Arvalo, Vctor Roberti, Martn

26 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

canal Z conmuta al canal Z0, o lo que es lo mismo el pin 4 queda unido internamente al pin 5, es decir la
seal VCAL adopta un potencial nulo ya que Z0 est a MASA. Cuando la seal de control
SEAL_CAL_AISLADA est a un uno lgico, el canal Z conmuta al canal Z1, o lo que es lo mismo el pin 4
queda unido internamente al pin 3, es decir la seal VCAL es igual a REF afectada por el divisor de tensin
formado por R40 y R41.
El divisor de tensin es ajustado para obtener un valor de pico en el tren de pulsos de 50 mV. El clculo de
R40 y R41 se obtiene como sigue, suponiendo un valor central en el trimpot R41 de 500 lo cual implica
usar un trimpot de 1K, el valor de R40 es calculado segn la expresin 2.4.

(EC. 2.4)

de donde se obtiene R40 = 49500 = 49.5 K, adoptamos un valor comercial de 47 K del tipo metal film
al 1%, asegurndonos con este tipo de resistencia un bajo ruido trmico. Es claro que habr que reajustar
R41 para obtener los 50 mV deseados sin desviarnos demasiado del punto central.
Resumiendo, la seal VCAL es un tren de pulsos con mnimo valor igual a cero (MASA) y con mximo valor
igual a 50 mV.
REF en la expresin 2.4 es un voltaje provisto por una referencia de tensin, en nuestro caso usamos el
circuito integrado MAX6350 de la firma MAXIM (antiguamente Dallas Semiconductors). Esta referencia de
tensin es sumamente precisa, posee una deriva trmica de tan solo 1 ppm (partes por milln) por cada
grado Celsius de variacin de temperatura, es decir 1ppm/C.
En la figura 2.8 mostramos parte del esquemtico de este circuito integrado utilizado como referencia
(ubicado en la posicin H5 del esquemtico general).

Fig. 2.8 Referencia de tensin para formar la seal de calibracin.

Arvalo, Vctor Roberti, Martn

27 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

El trimpot R39 permite hacer un ajuste fino de la tensin de referencia sin afectar la estabilidad trmica del
sistema, el capacitor C6 ayuda a reducir los ruidos, por lo general un valor til para este fin es 1 uF, valores
ms grandes no provocan notables mejoras. El capacitor C7 ayuda a mejorar la inmunidad al ruido cuando la
fuente de alimentacin que alimenta el dispositivo es algo ruidosa. El capacitor C8 puede ayudar tambin
en la reduccin del ruido y en la compensacin de transientes causadas por variaciones de carga.
Es importante en este punto remarcar que los equipos comerciales utilizan distintas configuraciones para
inyectar la seal de calibracin, bsicamente existen 2 variantes para llevar a cabo el proceso de calibracin.

Fig. 2.9 Etapa analgica y calibracin en un equipo comercial.

Arvalo, Vctor Roberti, Martn

28 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Variante 1: Inyectar la seal de calibracin a la salida del amplificador de instrumentacin con una
amplitud igual a la ganancia de esa primer etapa, es equivalente a inyectar una seal de amplitud 1
mV a la entrada del AI. La desventaja de este esquema es que solamente se est probando las
etapas subsiguientes al amplificador de instrumentacin menos justamente el AI, por lo tanto si el
AI estuviera averiado no se estara comprobando su funcionamiento. La figura 2.9 muestra el plano
de un equipo comercial en donde la seal de calibracin es inyectada en el terminal no inversor del
amplificador operacional U12B. El amplificador de instrumentacin est formado por los
amplificadores operacionales U11A y U11B (los cuales constituyen un amplificador de entrada
diferencial y salida diferencial cuya ganancia est dada por la ecuacin 2.5) y por el operacional
U12B configurado como un amplificador de entrada diferencial y salida unipolar de ganancia
unitaria.

La ecuacin de la ganancia de un AI viene dada por:


(EC. 2.5)

donde a es la relacin entre la resistencia central R45 y la de realimentacin R46, ver figura 2.9.
Haciendo los clculos:

As, es fcil ver por qu una tensin de 10 mV es inyectada posterior a la etapa de entrada.

Variante 2: La otra variante es inyectar la seal de calibracin a la entrada del AI con una amplitud
de 1 mV. Este esquema tiene como ventaja que se prueba toda la cadena analgica. La desventaja
es que no es fcil formar una seal cuadrada de 1 mV libre de ruido.

En nuestro proyecto utilizamos una tercer variante que consiste en inyectar en la entrada del AI una seal
de amplitud numricamente igual a la ganancia del AI cuando este trabaja en modo ECG, pero forzando la
ganancia del AI a valor unitario cuando hacemos la calibracin.
Es decir, inyectar 1 mV a ganancia 50 es equivalente a inyectar 50 mV a ganancia 1.
De esta forma solucionamos la desventaja de la primera variante la cual no comprobaba completamente la
cadena analgica ya que dejaba afuera al AI. Por otro lado como la seal de entrada es de una amplitud
considerable, en este caso 50 mV, es mucho ms fcil obtenerla.

Arvalo, Vctor Roberti, Martn

29 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Como vemos, la variante usada en nuestro proyecto es una combinacin de las variantes 1 y 2. Para poder
implementarla, es necesario cambiar la ganancia del AI a un valor unitario cuando se est haciendo
calibracin, esta funcin la realiza el circuito integrado IC2 CD4053, ver figura 2.4, conmutando al canal Z a
Z1, de esta manera el potencimetro R37 ajusta la ganancia del AI a un valor unitario.

2.2.4 ETAPA DE REALIMENTACIN DEL MODO COMN


Esta etapa es conocida como circuito de pierna derecha, el objetivo de esta etapa es re-alimentar todo el
voltaje de modo comn nuevamente hacia el paciente, con la caracterstica de inversin en fase y afectado
por una ganancia.
Para lograr este objetivo, vemos en la figura 2.10, que el AI ofrece 2 pines para conexin externa de un
potencimetro el cual permite ajustar la ganancia, estos pines marcados en el esquemtico como G1 y G2
pueden adems utilizarse para formar un circuito sumador a travs de las resistencias R7 y R8 (posicin H3
en el esquemtico general).

Fig. 2.10 Esquemtico del A.I. (Amplificador de Instrumentacin).

Arvalo, Vctor Roberti, Martn

30 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

La figura 2.11 muestra el circuito de realimentacin de pierna derecha.

Fig. 2.11 Circuito de realimentacin de modo comn o de pierna derecha.

El terminal no inversor de IC4A, constituye el punto suma, como en el terminal G1 tenemos el modo comn
mas una fraccin del modo diferencial y en el terminal G2 tenemos el modo comn mas la misma fraccin
del modo diferencial invertido en signo, en el punto suma se anula el modo diferencial y solo nos queda el
modo comn.

2.2.5 FILTRADO
La etapa de filtrado en el ECG principalmente est compuesta por un filtro pasa altos, un filtro pasa bajos y
un filtro NOTCH o tambin llamado tipo muesca. Veamos en detalle cada uno de ellos.

2.2.5.1 FILTRO PASA ALTOS


Es del tipo de primer orden formado por el capacitor C4 y R13, el circuito completo est ubicado alrededor
de las posiciones B3 y B4 del esquemtico general. La figura 2.12 muestra esta parte del esquemtico.

Arvalo, Vctor Roberti, Martn

31 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.12 Filtro pasa altos y pasa bajos.

La frecuencia de corte del filtro se obtiene resolviendo:

(EC. 2.6)

La bibliografa sobre el tema recomienda una frecuencia de corte de 0,5Hz, el valor obtenido es ms que
satisfactorio.
Una aclaracin importante es que existen momentos en los cuales R13 es puenteada a masa por la llave
analgica X del circuito integrado IC3. Veremos el porqu de esto en el punto 2.2.6 cuyo ttulo es circuito
INSTO.

2.2.5.2 FILTRO PASA BAJOS


Este filtro est constituido por el capacitor C5 y el resistor R18, ver nuevamente la figura 2.12, la frmula 2.6
permite calcular nuevamente la frecuencia de cruce.

Arvalo, Vctor Roberti, Martn

32 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Nuevamente, el valor obtenido es el recomendado en la bibliografa, el cual es alrededor de 105 Hz.

2.2.5.3 FILTRO NOTCH


El filtro NOTCH es conocido tambin como filtro tipo muesca o elimina banda angosta. Se usa para eliminar
una frecuencia en particular, el caso ms comn es usarlo para eliminar la frecuencia de zumbido por acople
a la red elctrica. En nuestro pas, la frecuencia de la red elctrica es 50 Hz, esta frecuencia est contenida
dentro del ancho de banda de inters, por lo tanto es recomendable que el filtro NOTCH est centrado
correctamente en los 50 Hz.
Segn se detall en el punto 1.4.2, el mayor contenido de informacin est en el intervalo de unos pocos
milihertz hasta los 20 Hz aproximadamente, luego para frecuencias mayores a 20 Hz la magnitud de las
componentes cae considerablemente, esto se puede apreciar en la figura 1.10. Por lo tanto un filtro de
orden 2 correspondiente a 40 dB/dcada cumple bien con el objetivo de no alterar demasiado el contenido
de informacin.
La figura 2.13 muestra parte del esquemtico correspondiente al filtro NOTCH, ubicacin B8 y B9 del plano
esquemtico general.
El esquema del circuito NOTCH es conocido como circuito T gemelo, las resistencias R33 y R34 son del
mismo valor, en nuestro caso 470K c/u, la suma de la resistencia R29 + el trimpot R35 debe ser justo la
mitad de 470K, por otro lado los capacitores C15, C16, C17 y C18 son del mismo valor, en nuestro caso
6,8nF, la frecuencia de atenuacin viene dada por la ecuacin 2.7.

(E.C. 2.7)

Vemos una pequea diferencia respecto a la frecuencia deseada de 50 Hz, haciendo uso del trimpot R35
podemos corregir el desplazamiento.

Arvalo, Vctor Roberti, Martn

33 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.13 Filtro NOTCH de 2 orden.

2.2.6 CIRCUITO INSTO


Siempre que se produce una transicin entre la seal de calibracin y la seal de ECG, la diferencia entre las
magnitudes de tensin de la lnea base de cada seal provoca transiciones en la salida del filtro pasa altos
tales como las que muestra la figura 2.14.
Por lo general, la seal de ECG es la que posee una lnea base diferente de cero, casi siempre viene montada
sobre una pequea componente de tensin continua producto de la interface electrodo-piel, esta tensin
tambin es amplificada por el amplificador de instrumentacin, por lo tanto en el momento de la transicin,
el capacitor C4 tarda un tiempo considerable en acomodar su carga debido al escaln de tensin DC
obtenido a la salida del AI, esta demora es precisamente causada por la alta constante de tiempo del filtro
pasa altos que es del orden de 3,3 segundos, la constante de tiempo se obtiene por medio de la ecuacin
2.8.

Fig. 2.14 Efecto de un transiente en la salida y del tiempo de acomodamiento.

Arvalo, Vctor Roberti, Martn

34 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

(EC. 2.8)

Para evitar este inconveniente, se dise el circuito INSTO, figura 2.15, bsicamente el mismo est en torno
al circuito integrado IC3, una llave analgica del tipo 4053 ubicado en la posicin C4 del plano esquemtico
general.

Fig. 2.15 Esquemtico del circuito INSTO o de cambio de constante de tiempo.

La funcin del circuito INSTO es eliminar en el momento de la transicin la resistencia R13


cortocircuitndola a masa por medio de la llave X de IC3, de esta manera la constante de tiempo queda
prcticamente limitada a un valor muy bajo, la resistencia elctrica ahora es del orden de los 100
correspondiente a la resistencia intrnseca de la llave analgica en estado ON.
La constante de tiempo se reduce efectivamente a 100 microsegundos en el momento de la transicin, el
tiempo de acomodamiento ahora ser de 5 = 500 microsegundos, por lo tanto haciendo que la seal
SEAL_INSTO dure 1 milisegundo, tenemos tiempo sobrado para que se acomode la transicin.

Arvalo, Vctor Roberti, Martn

35 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

2.3 AISLACIN GALVNICA


La aislacin galvnica es necesaria por 2 motivos:

Brinda una barrera de aislacin del orden de los KV (kilovoltios)

Asla masas

El primer punto se exige para la seguridad elctrica del paciente, de esta manera toda la bioinstrumentacin necesaria conectada al paciente queda aislada elctricamente del resto del equipo
minimizando los riesgos de choque elctrico.
El segundo punto aumenta la inmunidad al ruido debido a la separacin de masas, ya que el bioamplificador tiene como referencia una masa flotante y el resto del equipo tiene como masa la tierra
convencional (Tercera lnea del toma de alimentacin, cable verde y amarillo). Por otro lado el paciente est
ms fuertemente acoplado a tierra que a masa flotante.
Son tres los dispositivos de aislacin que usamos en nuestro proyecto para obtener un bio-amplificador
correctamente aislado, ellos son:

Amplificador de Aislacin

Optoacopladores

Conversor DC-DC aislado

pasaremos a explicar brevemente cada uno de ellos.

2.3.1 AMPLIFICADOR DE AISLACIN


Este dispositivo es necesario para aislar galvnicamente la seal de ECG. Comercialmente utilizamos el
amplificador de aislacin AD210 de la firma Analog Devices.
Los amplificadores de aislacin son construidos en base a tres tecnologas ampliamente difundidas a saber:
1. acoplamiento magntico
2. acoplamiento ptico
3. acoplamiento capacitivo
El AD210 utiliza el tipo de acoplamiento magntico. La figura 2.14 muestra un diagrama en bloques
funcional interno del dispositivo.

Arvalo, Vctor Roberti, Martn

36 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.14 Diagrama de bloques funcionales del AD210.

Observando la figura 2.14 vemos al transformador T1 utilizado como dispositivo de acoplamiento


magntico para la seal de ECG. El AD210 es un amplificador de aislacin de 3 puertos: input, output y
power, una fuente DC se conecta a los terminales 29 y 30, luego, internamente se obtienen 2 fuentes extras
de alimentacin aisladas galvnicamente a travs de los acoplamientos magnticos brindados por T2 y T3,
esto permite tener aislacin galvnica tanto para la entrada como para la salida respecto de la fuente de
alimentacin cuando sea requerido.
Otra observacin que podemos hacer es que se dispone externamente de los 3 pines del amplificador
operacional de entrada, esto es pines 16, 17 y 19, por lo tanto podemos utilizar este operacional segn
convenga, en nuestro caso aprovechamos esa disponibilidad para obtener una etapa de ganancia extra
configurada como no inversora. El dispositivo se encuentra ubicado en la posicin B7 del plano esquemtico
general, adems en la figura 2.15 apreciamos esa seccin.

Fig. 2.15 Conexionado del AD210.

Arvalo, Vctor Roberti, Martn

37 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Como ya comentamos, el amplificador de entrada est configurado como no inversor cuya ganancia es
ajustada por medio del trimpot R44, cabe aclarar que se puede obtener una ganancia mxima de 100 V/V.
Los terminales 29 y 30 estn conectados a una bornera para conexin externa de la fuente de alimentacin
que en nuestro caso es independiente de la usada para alimentar a la etapa no aislada, es decir con
transformador, rectificador y filtro propio.
Como datos importantes, el AD210 nos brinda una tensin de aislamiento de 2500 voltios RMS aplicados
continuamente y picos de 3500 voltios DC, una RRMC de 120 dB a Gv = 100V/V, una impedancia de
entrada en modo diferencial de 1 T y una impedancia de entrada de modo comn de 5 G.

2.3.2 OPTOACOPLADORES
Adems de la seal de ECG, es necesario aislar galvnicamente algunas seales digitales que son usadas
como seales de control. Las seales de control de nuestro diseo son:
1. CAL_o_ECG
2. SEAL_CALIBRACION
3. SEAL_INSTO
CAL_o_ECG es una seal que nos permite conmutar a la entrada del amplificador entre la seal de ECG y la
seal de calibracin.
SEAL_CALIBRACION es justamente un tren de pulsos generado desde el PIC y luego optoacoplado que es
usado para comandar un switch analgico para formar un tren de pulsos de valor pico 50 mV y valle igual a
masa aislada, es decir 0 Voltios. Este tema ya fue desarrollado en el punto 2.2.3.
SEAL_INSTO es una seal de control que permite cambiar la constante de tiempo del filtro pasa altos, ya
hemos explicado en el punto 2.2.6 la necesidad de esta implementacin.
El optoacoplador usado para aislar estas 3 seales de control fue el CNY17-2, configurado como muestra la
figura 2.16 correspondiente al esquema de la seal de control CAL_o_ECG, por otro lado los 3
optoacopladores se encuentran ubicados en las posiciones D7, E7 y G7 del plano esquemtico general.

Arvalo, Vctor Roberti, Martn

38 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 2.16 Conexionado de los optoacopladores.

El optoacoplador CNY17-2 es del tipo diodo emisor de luz infrarroja del tipo arseniuro de galio y
fototransistor NPN como receptor. La tensin de aislamiento es del orden de los 5300 voltios y la resistencia
de aislacin del orden de los 100 G.
La figura 2.17 muestra el esquema interno de este dispositivo.

Fig. 2.17 Esquema interno del optoacoplador.

Arvalo, Vctor Roberti, Martn

39 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

2.3.3 FUENTE AISLADA


La etapa aislada necesita energa para funcionar, hemos dicho que el amplificador de aislacin proporciona
una fuente aislada para la entrada como para la salida, sin embargo la capacidad de corriente es muy baja
del orden de los 15 mA. Nuestro diseo requiere por lo menos 70 mA para toda la etapa aislada, por lo cual
nos vemos obligados a utilizar un suministro de energa extra que cumpla adems con la aislacin galvnica
requerida, es importante aclarar tambin que la fuente debe ser del tipo partida.
Existen comercialmente soluciones para este requisito, se los conoce como DC-DC isolated converter o
conversores DC a DC aislados. Hemos utilizado en nuestro diseo el conversor DC-DC TEL_2-1222 de la
firma Suiza Traco Power, cuyas caractersticas distintivas son:

tensin de aislacin = 1500 voltios

Resistencia de aislacin mayor a 1 G

Salida regulada

Bajo ruido y ripple

Proteccin contra corto-circuitos

Voltaje de entrada entre 9 y 18 Voltios DC, recomendado 12 voltios DC

Salida aislada partida de 12 Voltios con 85 mA

encapsulado compactible tipo DIP16 de 400 mils de pulgada

La figura 2.18 muestra el conexionado del conversor DC-DC en nuestro proyecto, 2 LED hacen de indicador
de tensin disponible en la etapa aislada. El conversor DC-DC se encuentra en la posicin H7 del plano
esquemtico general.

Fig. 2.18 Esquema del conversor DC-DC aislado.

Arvalo, Vctor Roberti, Martn

40 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

2.4 SEALES DE CONTROL


Hemos nombrado en el punto 2.2.3 las seales de control pero no hemos dicho nada de como trabajan
sincronizadas en el tiempo.

Fig. 2.19 Secuencia temporal de las seales de control.

Cada vez que se pasa de ECG a CALIBRACN o viceversa, es necesario que acte la seal INSTO para cargar o
descargar rpidamente el capacitor C4 por diferencia en los niveles de tensin de las lneas base.
Por otro lado, la seal que forma los pulsos de calibracin siempre se est generando, aunque sta solo es
ingresada al amplificador de instrumentacin cuando la seal CAL_o_ECG est en alto.
La figura 2.19, visualiza lo comentado recientemente.

Arvalo, Vctor Roberti, Martn

41 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

III
Transmisin Inalmbrica

Arvalo, Vctor Roberti, Martn

42 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3 TRANSMISIN INALMBRICA
3.1 INTRODUCCIN
La etapa digital consiste bsicamente en la digitalizacin de la seal cardaca, visualizacin en un display
grfico y transmisin inalmbrica por Internet a travs de la red de telefona celular.
Los componentes fundamentales en este desarrollo son:

G20 Datamodem de Motorola.

Display grfico 128x64 de AZ Displays.

Software de adquisicin y visualizacin de seales en PC.

PIC 16F877A de Microchip.

Dada la gran cobertura de telefona celular y su creciente mejora en la transmisin de datos resulta evidente
la ventaja en el uso de esta tecnologa para fines mdicos.
La tecnologa GPRS (General Packet Radio System), o generacin 2.5, representa un paso ms hacia los
sistemas inalmbricos de Tercera Generacin.
A pesar de la evolucin de los dispositivos mviles hacia 3G, la forma de comandarlos se mantiene
conceptualmente igual, es decir, por medio de comandos AT.
Inicialmente los comandos AT fueron desarrollados para la comunicacin con los mdems, pero la telefona
mvil tambin ha adoptado ese estndar para comunicarse con los terminales.
Por este motivo, el presente desarrollo se puede adaptar fcilmente a otro terminal de generacin ms
avanzada o de diferente fabricante.

3.2 CONCEPTO GENERAL DE LA COMUNICACIN


El PIC se comunica al modulo GPRS por una interfase serie a travs de la cual le enva comandos AT para
transmitir por TCP/IP las muestras de la seal digitalizada a un servidor en Internet.
Los comandos para controlar el g20 estn almacenados en la memoria del PIC y son llamados por la lgica
del programa.
El modulo GPRS usa una tarjeta SIM de cualquier compaa de telefona celular.
Una vez registrado en la red de telefona celular, se inicia una sesin GPRS y el APN de la compaa le alquila
un IP al modulo.
El servidor dispone de un IP pblico y esttico. En l, se ejecuta un programa en Visual Basic que pone un
puerto determinado en modo de escucha.

Arvalo, Vctor Roberti, Martn

43 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 3.1 - GPRS concepto general.

El PIC ejecuta los comandos necesarios para establecer un enlace por sockets entre el modulo GPRS y el
servidor. Una vez establecido el enlace, se puede comenzar la transmisin de la seal que ser graficada en
tiempo real en el servidor.
Cuando haya finalizado la transmisin, la seal se guardar en formato de archivo de texto, lo que implica
que puede ser leda directamente por cualquier otro software.

3.3 G20 DATAMODEM


El g20 DataModem integra un mdulo g20 de Motorola con el cual se pueden transmitir paquetes GPRS.
La eleccin se bas principalmente en la disponibilidad del stack TCP/IP, una interfase RS232 y en la
completa documentacin.
Precio: U$D 223
Para ver el esquema de conexin referirse al Anexo IV Cable de interconexin del mdem

Fig. 3.2 - G20 Data MODEM.

Arvalo, Vctor Roberti, Martn

44 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3.3.1 CARACTERSTICAS TCNICAS


ALIMENTACIN (DC IN):
Tensin: 9 30 V CC
Corriente: 500mA MAX.
Polaridad: Positivo al centro
Rango de temperatura ( - 20C + 70C )

INTERFAZ SERIE:
Conector: RJ45 8/8
Niveles: RS232 @10V
Velocidad mxima: 115.200 b/s

ANTENA:
Conector: SMA hembra.
Impedancia: 50 ohm
Frecuencia: 850 1900 MHz 900 1800 MHz.

SIM:
Con bandeja de sujecin interna.

GPRS:
Terminal Clase B (voz y datos simultneos)
Multi Slot Clase 8 (1 slot uplink, 4 slots downlink)
Stack PPP interno (protocolos TCP y UDP)

Como tiene solamente 1 timeslot para subida de datos la mxima velocidad terica es de 20 kilobits por
segundo.

Arvalo, Vctor Roberti, Martn

45 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3.4 ANLISIS DE COSTO DE TRANSMISIN


La comunicacin no se tarifa por tiempo, sino por KB transferido.
Por minuto transmitimos 256bytes/seg * 60seg = 15Kb. Por hora equivale a 900Kb. Si el equipo se usara
durante 8 horas ininterrumpidas por da estaramos transmitiendo 7200Kb. Si el equipo se usara los 7 das a
la semana, al mes tendramos un consumo de 211Mb.
Si a esto le agregamos la transmisin de datos propios del protocolo TCP/IP y tenemos en cuenta la
retransmisin de paquetes en caso de errores, podemos suponer un 20% ms, con lo cual el consumo total
mensual se aproxima a 250Mb.
Las compaas de telefona celular estn ofreciendo planes de 500Mb a $69.
En conclusin, la inversin para usar el equipo mensualmente no superara los $69

3.5 ESQUEMA DE COMUNICACIN


Para comunicar los datos en forma inalmbrica utilizamos el servicio GPRS sobre redes GSM.
El terminal en nuestro caso es el PIC, que utiliza un conjunto de comando AT para controlar el MODEM. Ver
figura 3.3 Esquema de comunicacin
Podemos saber si estamos registrados en la red con cobertura GPRS cuando llega el resultado:

+CGREG: 001

El Gateway de telefona celular o APN (Access Point Name) le alquila un IP dinmico al g20 previo inicio de
sesin con usuario y contrasea definidos por la prestadora.
A continuacin se muestran los comandos para iniciar sesin en cada APN, donde aparece el usuario y
contrasea de cada uno.

AT+MIPCALL=1, "gprs.personal.com","gprs","gprs"
AT+MIPCALL=1, "internet.gprs.unifon.com.ar","wap","wap"
AT+MIPCALL=1, "internet.ctimovil.com.ar","ctigprs","ctigprs999A"

Si el inicio de sesin es exitoso, el g20 devuelve el ip alquilado.

+MIPCALL: 170.210.54.1

En este momento podemos intentar establecer el enlace por sockets con los siguientes parmetros: puerto
local=6002, ip remoto=170.210.44.8, puerto remoto=5000

Arvalo, Vctor Roberti, Martn

46 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

La eleccin de puertos es arbitraria, pero se recomienda no utilizar los puertos conocidos que pueden ser
usados por otro software.

AT+MIPOPEN= 1, 6002, 170.210.44.8, 5000, 0

Si obtenemos un resultado exitoso.

+MIPOPEN: 1,1

Ahora podemos configurar la cantidad de datos que conformarn el paquete.

AT+MIPSETS= 1, 343

Finalmente podemos enviar los datos.

AT+MIPSEND= 1, "47414449427414"

Arvalo, Vctor Roberti, Martn

47 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 3.3 - Esquema de comunicacin.

3.6 SELECCIN DE LA COMPAA DE TELEFONA CELULAR


La compaa se seleccionar automticamente en funcin de la memoria SIM instalada. La seleccin se
refiere al APN a utilizar.
A continuacin se muestra el comando utilizado para consultar informacin del operador de la red GSM en
la que se registr el modulo seguido de las posibles respuestas.

AT+COPS?

+COPS: 000,000,CTI Movil


+COPS: 000,000,Personal
+COPS: 000,000,UNIFON

Arvalo, Vctor Roberti, Martn

48 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3.7 RECEPCION DE MENSAJES


En la recepcin de mensajes existen dos modos.
El primero consiste en la llegada automtica de un cambio en el estado del modulo (Unsolicited Result
Code), como es el caso de cambio de estado de registracin, cada del enlace TPC/IP, etc.
El segundo modo consiste en ejecutar un comando de consulta.
La diferencia fundamental es que un Unsolicited Result Code es generado cuando ocurre un evento, si
nosotros no procesamos el resultado cuando lleg, no podemos conocer su estado hasta que cambie
nuevamente. Salvo que ejecutemos un comando de consulta cuando precisemos alguna informacin del
mdulo, pero hay casos donde no podemos enviar comandos al modulo porque est procesando otro o
simplemente no queremos cargar al modulo porque estamos transmitiendo datos.
Por esta razn cuando estamos transmitiendo, no consultamos al modulo, solamente procesamos los
resultados para detectar algn cambio en su estado.
Cuando no estamos transmitiendo, adems de procesar los resultados, ejecutamos consultas
peridicamente.

3.8 FLAGS DE ESTADOS


Estos flags son utilizados por el PIC para administrar los procesos relacionados con la comunicacin. Ver
Anexo III Diagramas de flujo.

REGISTRADO
Indica que est registrado en la red GPRS, si no est registrado, hay que esperar.
COPS
Luego de registrarse consulta con que EMPRESA est registrado.
Este flag indica que ya se dispone de esa informacin.

IPASIGNADO
Para alquilar un IP debe estar previamente REGISTRADO y con la EMPRESA identificada.
En caso de no estar IPASIGNADO se enviar el comando MIPCALL para alquilar IP.

PUERTOABIERTO
Para abrir el puerto debe estar previamente REGISTRADO y con IPASIGNADO.
En caso de no estar PUERTOABIERTO se enviar el comando MIPOPEN para abrir el puerto.
Luego de abrir el puerto hay que configurar la cantidad de datos por paquete.

Arvalo, Vctor Roberti, Martn

49 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

WATERMARK
Este flag indica que ya se configur la cantidad de datos por paquete.
Los datos que se envan con MIPSEND quedan almacenados en un buffer de entrada del mdulo. Cuando la
cantidad de datos llega al valor determinado por el comando MIPSETS, son movidos al buffer del stack TCP
para ser transmitidos.
El valor de WATERMARK es lo que determina el tamao del segmento de datos. Ver seccin 3.9 Seleccin
del MSS

HABILITARTX
Cuando estn dadas todas las condiciones para transmitir y se pulsa el botn de transmisin, este flag se
pone en TRUE. Entonces cada vez que hay una conversin se enva el dato al buffer con MIPSEND se envan
80 caracteres ( 160 en formato codificado, esto es un requisito del comando. Ver 5.8.2 CONVERT). Un
CONTADOR determina cuando enviar la cabecera y la cola. Ver seccin 5.8 Subrutinas principales.
Si se pone a FALSE debe esperar a que CONTADOR llegue a cero para que enve la cola y luego parar la
Transmisin.

3.9 SELECCIN DEL MSS


Para abordar este tema primero vamos a introducir el concepto de MTU (Maximum Transmission Unit) que
es el tamao mximo de paquete que puede ser transmitido por la red. El mximo tamao permitido por
Ethernet en la capa de red es 1500 bytes.
Si un paquete pasa por un enrutador con un MTU menor al tamao del paquete, este lo va a fragmentar.
La fragmentacin afecta negativamente al rendimiento de TCP y produce congestin en la red.
Todo dispositivo de red debe ser capaz de procesar un datagrama de por lo menos 576 bytes.
MSS (Maximum Segment Size) es el tamao mximo de la carga til, es decir de los datos propiamente
dichos, sin el agregado de los encabezados del protocolo, en nuestro caso MSS = MTU - 40 (20 bytes TCP y
20 bytes IP) = 536
Se aconseja un MSS grande para mejorar la eficiencia de una red, pero para redes con prdidas, como es el
caso del enlace de radio, es til un MSS de menor tamao ya que tiempos ms cortos de transmisin
exponen a los paquetes a menos eventos que causen errores de transmisin. Por lo tanto, a mayor tamao
del segmento, mayor probabilidad de error y de retransmisin. Adems retransmitir un paquete mayor
toma ms tiempo.
Teniendo en cuenta lo anterior elegimos un valor de MSS que sea divisor del buffer de transmisin y menor
a 536, es decir, 343.

Arvalo, Vctor Roberti, Martn

50 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3.10 SOFTWARE DE RECEPCIN EN PC


El software corre en una PC con IP pblico y esttico. Para usar el g20 es necesario direccionar el equipo
remoto con un IP fijo. Otros modelos permiten utilizar un nombre de host por lo que se puede usar un ip
dinmico para la PC.
Para implementar la comunicacin por sockets en Visual Basic usamos el control WinSock.
Este control pone un puerto seleccionable en modo Listenning, cuando le llega un pedido de conexin lo
acepta, recibe los datos que se van guardando en memoria y los grafica en un PictureBox.
Al presionar el botn Guardar se toman los datos de memoria y se almacenan en un archivo con el
nombre que el usuario elija.
Pasados 5 minutos de recepcin se guardan automticamente los datos en un archivo cuyo nombre se
forma con ECG seguido de la fecha y hora (ECG_23_09_2010_10-05-13 p-m-.txt) De esta forma se evita el
desbordamiento del vector de datos en memoria. Lo mismo sucede luego de 1 minuto de no recibir datos,
pero esto esta apuntado a marcar una separacin entre dos estudios distintos en caso de querer trabajar en
modo desatendido.
Al conocer la tasa de muestreo (256m/s) y el rango de amplitud (0-255) la seal se puede reconstruir sin
problemas.
Esta aplicacin fue creada solamente a efectos de adquirir la seal, almacenarla y hacer una visualizacin
bsica. Con un software ms elaborado se pueden leer los archivos de seales para analizarlas con mayor
comodidad e imprimirlas si fuera necesario.

Fig. 3.4 - Imagen Software de adquisicin

Arvalo, Vctor Roberti, Martn

51 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

3.11 BOTONES DE COMANDOS


Cada cierto tiempo, determinado por unos contadores, se muestrean los botones, esta es una manera de
evitar los rebotes sin ralentizar la ejecucin del programa con retardos para filtrar las seales.

Pausa
Congela la imagen graficada en el display.

Velocidad
Dos velocidades de graficacin, 64 o 128 pixels por segundo.
Por costumbre y tambin por ser valores aproximados se indica como 25mm/s o 50 mm/s Ver seccin 4.8
Escalado.

Envo de seales
Al presionar este botn estando el puerto abierto se comienza a transmitir la seal.
Al comenzar la transmisin, se enva primero un tren de pulsos como prueba de calibracin.

Calibracin
Alterna entre seal de calibracin o ECG

3.12 INDICACIONES EN DISPLAY


Pausa
Se indica en el display el smbolo de pausa

Arvalo, Vctor Roberti, Martn

52 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Velocidad
Se indica en el display la velocidad seleccionada

Red
Se indica en el display con un smbolo similar a una antena cuando el mdulo est registrado en la red
GPRS.

Enlace
Se indica en el display con este smbolo cuando el puerto est abierto.

Transmisin
Se indica en el display con este smbolo que se est realizando una transmisin.

Arvalo, Vctor Roberti, Martn

53 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

IV
DISPLAY LCD

Arvalo, Vctor Roberti, Martn

54 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4 DISPLAY LCD
4.1 INTRODUCCIN
Para la seleccin del display nos basamos en la premisa de que sea un display grfico estndar, tambin
tuvimos en cuenta la cantidad de columnas y filas, que se pueda manejar por lneas de datos y de control, el
tiempo del ciclo de escritura, que tenga backlight, una hoja de datos clara y completa.
Al momento de comprarlo no lo pudimos conseguir en Argentina por falta de stock debido a la crisis,
entonces nos vimos obligados a encargrselo al fabricante en Estados Unidos con un costo de envo 4 veces
superior al valor del producto. Hoy en da se consiguen en nuestro pas modelos equivalentes a un precio
similar.
La interfase de control consiste en 8 lneas de datos, una lnea de seleccin de datos/instruccin, una lnea
de seleccin de escritura/lectura, una seal de Enable y dos de Chip Select para direccionar cada mitad del
display.

4.2 CARACTERSTICAS TCNICAS

Display grfico de 128x64.

Transflectivo con backlight.

Rango de Temp. (-20~70C)

Controlador: KS0108B

8 lneas de datos y 5 de control

Alimentacin: 5V

Tiempo de ciclo de escritura: 1us

Precio: u$d 25

Arvalo, Vctor Roberti, Martn

55 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.3 DIAGRAMA EN BLOQUES

Fig. 4.1 - Diagrama en Bloques.

Arvalo, Vctor Roberti, Martn

56 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.4 DIAGRAMA TEMPORAL

Fig. 4.2 - Diagrama temporal.

Arvalo, Vctor Roberti, Martn

57 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.5 ARQUITECTURA DEL DISPLAY

Fig. 4.3 - Arquitectura del Display.

Arvalo, Vctor Roberti, Martn

58 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.6 INSTRUCCIONES DE CONTROL

Tabla 4.1 - Instrucciones de Control.

4.7 FUNCIONAMIENTO
El display est dividido verticalmente en 8 pginas que agrupan 8 pixels cada una. Ver figura 4.3
Arquitectura del Display.
Para graficar un pxel hay que direccionar una columna, una pgina y enviar al bus de datos un valor binario
de 8 bits cuyos unos activarn los pixels correspondientes.
La pgina va a ser determinada por el cociente de la divisin de la muestra con 32 (256/8) y el pxel dentro
de la pgina se calcular en funcin del resto de esa divisin.
Por una propiedad de los nmeros binarios, al cociente se obtiene directamente de los 3 bits ms
significativos de la muestra y al resto de los 5 menos significativos.
Luego tenemos q dividir por 4 (32/8) al resto para hacerle corresponder uno de los 8 pixels de la pgina. A
esto lo logramos desplazando 2 lugares a la derecha, descartando los 2 bits menos significativos.

Arvalo, Vctor Roberti, Martn

59 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Ahora tenemos que activar un solo pxel del display, no podemos enviar al bus directamente el nmero
binario resultante. Se debe hacer una transformacin.

PIXEL

BINARIO AL BUS

DECIMAL

00000001

00000010

00000100

00001000

00010000

16

00100000

32

01000000

64

10000000

128

La transformacin sigue esta ley: 2^(pxel-1)


Esto se puede implementar desplazando un 1 desde el acarreo a la izquierda tantas veces como sea el valor
de pxel.
Finalmente enviamos ese valor al bus del display para la pgina en cuestin y cero para las dems.

Ejemplo:
Muestra: 77
77 / 32
01001101 (77)
Cociente: 010 (2)
Resto: 01101 (13)
Pgina: 2
Desplazando el resto a la derecha 2 lugares:
Pxel: 011 (3)

Y segn la ley de transformacin 2^(3-1) hay que enviar un 4 (00000100) a la tercer pgina.

Arvalo, Vctor Roberti, Martn

60 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.8 ESCALADO
Para poder mostrar un rango de valores de 0 a 255 en un display de 64 de alto hay que bajar la resolucin
256/64=4 veces para hacer corresponder una muestra a un pxel dentro de una pgina.

Las muestras entre 1 y 4 activaran el pxel 1 de la pgina 1


Las muestras entre 5 y 8 activaran el pxel 2 de la pgina 1
nicamente con el 0 no se graficar nada en el display.

DEC BIN

PIX

Pag1
4

xxxxx100

00000001

xxxx1000

00000010

12

xxxx1100

00000100

16

xxx10000

00001000

20

xxx10100

00010000

24

28

32

xx100000

10000000

x1000000

10000000

Pag 8
64

Si se muestrea a 256Hz, al reducir la amplitud en 4 veces, para mantener la forma de la onda, se necesita
reducir la escala temporal en la misma proporcin. Esto se puede hacer graficando cada 4 muestras, lo que
implica mostrar 256/4=64 muestras por seg. Como el display es de 128, se tiene un barrido de 2 segundos.
Como generalmente hay entre 1 y 2 pulsacin por segundo, estaramos graficando de 2 a 4 pulsaciones por
barrido.
Como el Dot Pitch es de 0.52mm y cada muestra corresponde a un pxel, 64 muestras por segundo equivale
a 64x0.52= 33.28mm/seg.
En la velocidad alta, donde se grafican 128 muestras por segundo tenemos 66.56mm/seg.
En el display indicamos como 25mm/s y 50mm/s porque son las velocidades estndar a la hora de imprimir
en papel y la gente est acostumbrada a esos valores, pero esto es solo a modo indicativo de velocidad baja
y alta.

Arvalo, Vctor Roberti, Martn

61 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Las seales transmitidas podrn ser impresas a la velocidad deseada haciendo el siguiente escalado:

Temporal:
256 muestras equivalen a 1 segundo.
Para imprimir a 25mm/s hay que ubicar 256 muestras en 25mm
Para imprimir a 50mm/s hay que ubicar 256 muestras en 50mm

Amplitud:
64 muestras equivalen a 10mm.
Ver seccin 5.5 Generador de seal de calibracin

Fig. 4.4 - Medidas de una Seal.

Arvalo, Vctor Roberti, Martn

62 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

4.9 INTERPOLACIN
La interpolacin es necesaria para la reconstruccin de la seal a partir de sus muestras.
La interpolacin que nosotros planteamos consiste en rellenar los pixels verticalmente desde la muestra
actual hasta la anterior.
En este ejemplo se ven las muestras en negro y los pixels rellenados en rojo Ver figura 4.5 Interpolacin.
Entonces al avanzar a una nueva columna, se pasa por todas las pginas, si una pgina contiene la muestra
actual o la anterior o si se encuentra entre la muestra actual y la anterior se rellenan sus pixels de tal forma
que parezcan unidas las dos muestras. Las dems pginas se borran.
Por ejemplo, si tenemos la muestra actual PIXEL_1 mayor que la anterior PIXEL_0 en la misma pgina.
Pretendo graficar una lnea entre los dos pixels, pero sin el pxel a la altura del anterior para que parezca
ms suave. Esto se logra mediante estas operaciones:

PIXEL_1 = 01000000 -> rotando izquierda y restando 1 -> 01111111


PIXEL_0 = 00000001 -> rotando izquierda y restando 1 -> 00000001
PIXEL_1 - PIXEL_0 = 01111110

Fig. 4.5 - Interpolacin.

Arvalo, Vctor Roberti, Martn

63 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

V
MICROCONTROLADOR

Arvalo, Vctor Roberti, Martn

64 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

5 MICROCONTROLADOR
5.1 INTRODUCCIN
El microcontrolador utilizado, PIC16F877A de Microchip, es un dispositivo muy usado, de bajo costo que
dispone principalmente de un conversor A/D; una interfaz RS232 para comandar el modulo g20; la cantidad
de puertos necesarios para controlar el display; la memoria y velocidad de procesamiento necesarias para
esta aplicacin.

5.2 CARACTERSTICAS TCNICAS


Se nombran las caractersticas ms importantes para este proyecto.

Procesador RISC de 35 instrucciones.

Ciclo de instruccin de 200ns con cristal de 20Mhz

8K x 14 words Memory de Programa

368 x 8 bytes Memoria de Datos (RAM)

256 x 8 bytes Memoria EEPROM

Timer0: 8-bit timer/counter con preescalador de 8-bits

Timer1: 16-bit timer/counter con preescalador de 2-bits.

Converter (A/D) de 10 bits

In-Circuit Debugger (ICD) va dos pines

USART ( Utilizamos el modo asncrono con un baudrate de 19200 baudios, 8 bits de datos, sin
paridad)

Precio: U$S 18

5.3 CONVERSIN A/D


Usamos los 8 bits menos significativos para la conversin con una referencia de 5V. Por lo que ajustamos la
ganancia de la seal para que trabaje en el rango de 0-1.25V.

5.3.1 TIEMPO MNIMO DE ADQUISICIN


Para que el conversor cumpla con la precisin especificada (1/2 LSb), el capacitor de muestreo y retencin
debe cargarse completamente al valor de la entrada analgica. Ver figura 5.1 Modelo de entrada

Arvalo, Vctor Roberti, Martn

65 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Fig. 5.1 Modelo de entrada

TACQ

=Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient


=TAMP + TC + TCOFF
=2us + TC + [(Temperature 25C)(0.05 us/C)]

TC

=CHOLD (RIC + RSS + RS) In(1/2047)


=- 120 pF (1 kohm + 7 kohm + 10 kohm) In(0.0004885)
=16.47 us

TACQ

=2us + 16.47 us + [(50C 25C)(0.05 us/C)


=19.72 us

Nota
1: La tensin de referencia (VREF) no tiene efecto en la ecuacin porque se cancela en ambos miembros.
2: El capacitor de muestreo y retencin (CHOLD) no se descarga luego de cada conversin.
3: La mxima impedancia recomendada de la fuente de alimentacin, Rs, es de 2.5Kohm.
Esto es necesario para cumplir con la especificacin de corriente de fuga del pin (ILEAKAGE 500nA) segn el
modelo de entrada analgica.

Arvalo, Vctor Roberti, Martn

66 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

El tiempo de conversin por bit se define como TAD y se requieren 12TAD por cada muestra.
Para un correcto funcionamiento el TAD se debe seleccionar de forma tal que sea como mnimo 1.6us.
Por lo que seleccionamos el clock del conversor como 64TOSC (ADCS2:ADCS1:ADCS0 110), segn la tabla
11-1 del manual del PIC. Entonces 1TAD=3.2us, por lo tanto 12TAD= 38.4us es lo que tarda el conversor en
lograr cada muestra.
Finalmente sumndole el tiempo de adquisicin 19.72us queda 58.12us, aproximadamente 60us como
lmite mnimo de tiempo necesario entre muestra y muestra.
Nosotros trabajamos con una tasa de muestreo de 256Hz es decir 3.9ms entre muestras.
Vemos que el tiempo entre muestras es muy superior al tiempo que se necesita para convertir cada
muestra.
Entonces podemos decir que trabajamos en la conversin con un error de cuantificacin menor a * LSB =
* (1.25V/256) = 2.5mV.

5.3.2 CONFIGURACIN DE LA TASA DE MUESTREO


La tasa de muestreo de 256 m/seg se genera en funcin de la frecuencia de oscilacin, un temporizador
(TMR0) y un pre-escalador para dividir en mltiplos de 2 la frecuencia del cristal.
Para lograr frecuencias intermedias se puede inicializar el acumulador de tiempo a algn valor distinto de 0.
Cada ciclo de instruccin es de 0.2us.
El Timer0 es de 8 bits, entonces va a generar una interrupcin cuando haga 256 cuentas. Para esto tarda 0.2
us x 256 = 51.2us
Estamos buscando 256muestras/seg esto significa 1muestra cada 3906.25us
3906.25us / 51.2us = 76.29
Tenemos que retrasar el overflow en 76.29 veces. Para esto usamos el prescaler en 1:128 e inicializamos el
valor del contador al 59.60% (76.29/128) equivalente al valor 153 (256*0.5960)
Recalculando, se tiene 0.2us x 128 = 25.6us esto es lo que va a tardar 1 cuenta del timer pasando por un
prescaler de 1:128.
Estamos buscando 256muestra/seg esto significa 1muestra cada 3906.25us
Para lograr esto necesito 3906.25us / 25.60us = 152.59 cuentas
Redondeando a 153, se produce un error en el muestreo de 153 x 25.6us = 3916.8 us -> 255.31
muestras/seg -> 256-255.31 = 0.689 muestras/seg
Es decir, un error absoluto de 0.69 Hz, o relativo de 0.69 / 256 x 100 = 0.2%
Finalmente, necesitamos inicializar el timer a 256-153 = 103 cada vez que se genera el overflow para
conseguir la tasa de muestreo necesaria.

Arvalo, Vctor Roberti, Martn

67 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

5.4 EL PROGRAMA
El programa est escrito en Assembler, desarrollado con MPLAB IDE V8.30
Tiene creado un vector de interrupciones para recibir los datos del puerto serie y procesarlos, para procesar
el resultado del conversor A/D, para determinar la tasa de muestreo en funcin del temporizador TIMER0,
para generar la seal de calibracin con TIMER1 y para mostrar los datos en el display.
Luego tiene un bucle principal donde se ejecutan lgicas con distinta periodicidad.

1. Se envan los datos del buffer transmisin.


2. Se actualizan los flags de estados del g20.
3. Se muestrea el estado de los botones.
4. Se comanda al g20.

Ver Anexo VI Programa PIC

5.5 GENERADOR DE SEAL DE CALIBRACIN


Para calibrar el equipo es necesario fabricar una seal de calibracin de parmetros conocidos que es
ingresada al amplificador, esta seal no es ms que un tren de pulsos con un ciclo activo de 40ms y perodo
de 120ms.
Para lograr esto el PIC genera la seal de control que comanda un switch analgico encargado de conmutar
entre un nivel de tensin alto y masa, para ms detalle leer el punto 2.2.3 Etapa de calibracin del
captulo II.
La seal de control la fabricamos usando el Timer1, un timer de 16 bits, ste se incrementa en 1 por cada
ciclo de instruccin (FOSC/4) siempre y cuando no se use el preescalador. Si trabajamos con 20Mhz vamos a
tener un incremento cada 0.2us, pero usando un presacaler de 8 van a ser 1.6 s.
Con 20Mhz para lograr 40ms el timer debe hacer 25000 cuentas 0X61A8 y el ciclo de reposo multiplicando
por 2 = 0XC350.
El total de cuentas en el timer es 2^16 = 65536 por lo tanto cuando se genere la interrupcin por overflow
del timer lo inicializamos a 65536 - 0X61A8 = 0x9E58 (55536) o a 65536 -0XC350= 0x3CB0 (25536) segn
corresponda.
En nuestro diseo usamos los 8 bits menos significativos de los 10 bits del conversor AD y una referencia de
5V por eso el rango de la seal de entrada debe ser de 0 a 1.25V. Recordemos que quitar 1 bit significativo
equivale a dividir por 2, quitar el siguiente nuevamente divide por 2, de aqu el valor de 1.25 Voltios.
La lnea base se ajusta a la mitad de ese rango, es decir 625mV y una variacin de 1mV a la entrada deber
corresponderse con 312.5mV a la entrada del conversor, equivalente a 64 cuentas.
En el display se grafican la referencia de lnea base y el pico de 1mV con lneas horizontales de puntos que
sirven como referencias o guas.

Arvalo, Vctor Roberti, Martn

68 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

5.6 CALCULO DE TIEMPOS DE INTERRUPCIONES


El Timer1 se incrementa en cada ciclo de instruccin (Fosc/4).
Muestreando a 256Hz tenemos una interrupcin cada 3.9 ms.
Con 19200 baudios tenemos 1.92 bytes/ms esto significa que tarda 0.52ms por cada byte de comunicacin.
Por cada muestra transmito 2 bytes (formato codificado), esto tarda 1ms, significa que los tiempos son muy
justos.
Si utilizara 57600 baudios transmitira 3 veces ms rpido, pero tambin tendra que atender ms rpido la
recepcin de datos, lo que puede ocasionar perdida de informacin en caso de que se est atendiendo otra
interrupcin. Por esta razn se eligi la siguiente velocidad estndar inferior, 19200 baudios.
El problema de transmitir los datos en la llamada a la interrupcin de conversin es que para transmitir la
cabecera de MIPSEND hay que transmitir 15 bytes ( at+mipsend="11 0x0D ) y a esto lo debera hacer antes
de la prxima conversin.
Con 19200 se tarda 8ms, es decir, se perderan 2 muestras. Para evitar esto existe un buffer de transmisin y
la subrutina de Tx est en el bucle principal, para que pueda ser interrumpida y guardar un nuevo dato de la
conversin. Luego entre muestra y muestra se van enviando los datos y vaciando el buffer. Otra razn para
la existencia de un buffer de Tx es que al enviar la cola del comando MIPSEND hay que esperar un tiempo
antes de volver a enviar datos al g20 porque sino aborta el comando anterior.

5.7 BUFFERS DE TRANSMISIN Y RECEPCIN


El buffer de recepcin va desde 0xA0 a 0xEF (80 bytes) de la memoria del PIC.
Es un buffer circular. Se utiliza para almacenar los caracteres que van llegando hasta que formen un mensaje
para ser procesado.
Se detecta el comienzo y fin de un mensaje por la presencia de los caracteres Retorno de Carro (0x0D) y
Nueva lnea (0x0A) en ese orden.
Una vez detectado un mensaje, se compara con una lista de mensajes en la memoria FLASH del PIC y se
procesa.
El buffer de transmisin va desde 0x45 a 0x6F (43 bytes) de la memoria del PIC. Es til a la hora de enviar la
cabecera de MIPSEND y tambin para generar un retardo entre el envo de un comando MIPSEND y otro ya
que si se enva un nuevo comando muy rpido aborta el anterior.
Recordamos que MIPSEND es el comando con el que se envan las muestras de la seal y se pueden
empaquetar hasta 80 caracteres (160 en formato codificado) por vez.
Luego de enviar el fin del comando MIPSEND, se activa un flag HOLDTX para que no enve datos al mdulo y
solamente los almacene en el buffer. Cuando el buffer est casi lleno se habilita nuevamente la transmisin.
Experimentalmente determinamos que es necesario un buffer como mnimo de 32bytes para un baud rate
de 19200 para asegurar la aceptacin del comando.
Por qu lo hacemos as en lugar de procesar la respuesta?
Porque procesar la respuesta tarda ms tiempo. Habra que esperar que lleguen todos los caracteres para

Arvalo, Vctor Roberti, Martn

69 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

empezar a comparar el string. En cambio, retardando el envo x cantidad bytes logramos


experimentalmente un valor mnimo con el que no se aborta el envo anterior.

5.8 SUBRUTINAS PRINCIPALES


Aqu se explica, sin entrar en detalles de la programacin Assembler, los principales bloques lgicos
responsables del funcionamiento del sistema.

5.8.1 DISPLAY
Esta subrutina es la encargada de controlar el display y ejecutar todas las acciones explicadas en la seccin
4.7 Funcionamiento.

5.8.2 CONVERT
Cuando se obtiene una conversin, el dato no se puede enviar en forma directa al modem, en cambio, se
debe codificar. Es decir, digamos que se obtiene 6F (recordemos que el mximo que usamos es FF),
entonces se deben enviar al modem los ASCIIs 6 y F. Para eso se usa el cdigo que se encuentra en esta
subrutina.

5.8.3 SENDCHAR
Almacena un carcter en el buffer de salida, pero la transmisin se realiza con SENDDATA en el bucle
principal.
SENDCHAR recibe el dato en 0x45 y lo almacena a partir de 0x46 segn el puntero STOREINDEX.

5.8.4 SENDSTR
Los comandos AT estn hardcodeados en la memoria de programa en determinadas posiciones definidas en
un archivo header de modo que para enviar un comando se cargan los registros de direccin con las
directivas DEFINES correspondientes y se llama a esta subrutina que escribe en el buffer de salida.

5.8.5 SENDDATA
Es la rutina encargada de tomar los datos del buffer y enviarlos.
SENDDIF es la diferencia entre el puntero de almacenamiento de nuevos datos STOREINDEX y el de ltimo
dato enviado SENDINDEX.
Se encuentra en el bucle principal para que pueda ser interrumpida en caso de recepcin de datos.
Ejemplo de envo de datos con el comando MIPSEND:
at+mipsend=1,"806C7073708A727060AA6EA2AA6D70707C766080A5A270A8747A7A7B8B7170867CAC6084
AB6E80A2AAAA8088708B8372707D7EAB8D6F608F7D8F857760AA848170AA8E7870A270A68

Arvalo, Vctor Roberti, Martn

70 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Cabecera:

at+mipsend=1,"

Cuerpo:

Muestras codificadas

Cola:

"

5.8.6 RXCHARS_G20
Recibe los datos del puerto serie, los almacena en el buffer de entrada, detecta si lleg un string completo,
compara con la lista de respuestas y actualiza los flags de estados Ver seccin 3.8 Flags de Estados.

5.8.7 STRCMP
Esta funcin compara los datos recibidos con las posibles respuestas del mdem.

Arvalo, Vctor Roberti, Martn

71 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

VI
GUA DE USO

Arvalo, Vctor Roberti, Martn

72 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

6 GUIA DE USO
Al encender el equipo, comienza a graficar al mismo tiempo que intenta registrarse en la red de telefona
celular y establecer el enlace con el servidor de Internet.
El usuario puede visualizar el estado del equipo en el display.
Tambin puede visualizar una seal de calibracin para tener como referencia.
Puede cambiar la VELOCIDAD (25 o 50mm/seg) o pulsar el botn de PAUSA para tener una mejor
visualizacin de la seal de ECG.
Cuando est todo en orden el usuario puede verificar que los smbolos de registro y enlace estn activos
para comenzar la transmisin pulsando el botn correspondiente.
En ese momento comienza a transmitirse los datos al servidor y se indica con un smbolo, pero antes de
enviar las seales ECG se enva automticamente un tren de pulsos de calibracin para usar como patrn en
la seal recibida.
El envo de datos se detiene pulsando nuevamente el botn de TRANSMISIN.
En cualquier momento del lado del servidor se pueden guardar las seales en un archivo cuyo nombre
describir el estudio realizado.
En caso de trabajar en forma desatendida, las seales se guardan en forma automtica con fecha y hora un
minuto despus de haber finalizado la transmisin o a los 5 minutos de transmisin continua.
En todo caso la persona que est realizando el estudio debe tomar nota de la fecha y hora de cada estudio
para contrastar con los archivos generados.
Si el equipo no indica enlace con el servidor lo primero que hay que revisar es que la lnea disponga de
crdito.

Arvalo, Vctor Roberti, Martn

73 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

VII
CONCLUSIONES

Arvalo, Vctor Roberti, Martn

74 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

7 CONCLUSIONES
La etapa de proteccin del bioamplificador cumple con los requisitos actuales de proteccin del equipo.
El amplificador de instrumentacin mostr un ptimo comportamiento, ajustando la etapa con una baja
ganancia se obtuvo igualmente un alto RRMC
La referencia de tensin utilizada para la calibracin mostr una alta estabilidad de 1ppm/C tal como lo
asegura la hoja de datos.
El comportamiento de los filtros pasa alto y pasa bajos fue ms que satisfactorio no siendo necesario
incrementar el orden de los mismos ms all de un primer orden. El filtro muesca (Notch) mostr un ptimo
comportamiento sin utilizar un orden mayor a 2 ni componentes costosos.
La etapa de realimentacin de modo comn es imprescindible en este tipo de bioamplificadores,
observndose un alto desempeo con una ganancia alrededor de -40 V/V.
El amplificador de aislacin mostr un desempeo muy satisfactorio en lo que se refiere a linealidad y
distorsin adems de proporcionar un RRMC elevado en la ganancia de trabajo. Sin embargo, la fuente de
alimentacin flotante no alcanz para alimentar el bioamplificador aislado de tierra, por lo tanto, fue
necesario utilizar un conversor DC-DC aislado de 2W.
Con el display no se apunta a visualizar seales con mucha precisin, en cambio, sirve para tener una buena
idea del estado de la seal antes de comenzar la transmisin. Otra ventaja del uso del display es la
posibilidad de mostrar indicaciones amigables, prescindiendo del uso de LEDs y teniendo mayor cantidad de
pines disponibles en el microcontrolador.
El PIC16F877A fue suficiente para este desarrollo, pero hay que aclarar que hubo que optimizar la
programacin en relacin a la velocidad de procesamiento para lograr resultados exitosos.
Realizamos pruebas de transmisin desde el laboratorio del GADIB (Grupo de Anlisis e Investigaciones
Biomdicas) donde la seal de celular es dbil o eventualmente nula dependiendo de la empresa. En estas
condiciones, gracias a la retransmisin de paquetes del stack TCP/IP, pudimos transmitir correctamente las
seales, salvo en los peores casos donde se indic falta de cobertura. Los mejores resultados los obtuvimos
con Movistar, seguido por Personal.

Arvalo, Vctor Roberti, Martn

75 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

VIII
BIBLIOGRAFA

Arvalo, Vctor Roberti, Martn

76 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

8 BIBLIOGRAFA

PIC16F87XA Data Sheet, Microchip.


http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf

Specifications for Liquid Crystal Display AGM 1264F, AZ DISPLAYS.


http://www.azdisplays.com/PDF/agm1264f.pdf

Motorola G20 AT Commands Developers Guide.


http://www.motorola.com/governmentandenterprise/contentdir/he_IL/Files/G20_HW_book.pdf

Nota de Aplicacin Modulo Motorola G20, Eduardo Zuccala.


http://www.electrocomponentes.com/Ingenieria/Modulos%20Celular%20Motorola/Notas%20de%
20Aplicacion/APN_G20_001.pdf

GSM, GPRS and EDGE Performance. Evolution Towards 3G/UMTS. Timo Halonen, Javier Romero and
Juan Melero; John Wiley & Sons.

Internetworking with TCP-IP,Vol-I Principles, Protocols and Architecture 4Ed, Douglas E. Comer;
Prentice Hall.

RFC: 791 - INTERNET PROTOCOL DARPA INTERNET PROGRAM PROTOCOL SPECIFICATION.


http://tools.ietf.org/html/rfc791

RFC 3481 - TCP over Second (2.5G) and Third (3G) Generation Wireless Networks.
http://www.rfc-archive.org/getrfc.php?rfc=3481

Optimizing the End-to-End Performance of Reliable Flows over Wireless Links. Reiner Ludwig,
Ericsson Research. Almudena Konrad, Anthony D. Joseph, Computer Science Division, University of
California at Berkeley

Optimal Frame Payload Size for Mobile Communications over Wireless Links of Cellular Networks.
GOO-YEON LEE, CHOONG-KYO JEONG, HWA-JONG KIM AND YONG LEE.
http://onlinelibrary.wiley.com/doi/10.1002/wcm.563/abstract

Parmetros de configuracin de TCP/IP y NBT para Windows XP.


http://support.microsoft.com/kb/314053

Arvalo, Vctor Roberti, Martn

77 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXOS

Arvalo, Vctor Roberti, Martn

78 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO I
DESCRIPCIN DE PINES DEL PIC

Arvalo, Vctor Roberti, Martn

79 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO II
DESCRIPCIN DE PINES DEL DISPLAY

Arvalo, Vctor Roberti, Martn

80 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO III
DIAGRAMAS DE FLUJO

BUCLE PRINCIPAL

ESTABLECIMIENTO DEL ENLACE

RECEPCION

TRANSMISION

Arvalo, Vctor Roberti, Martn

81 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

BUCLE PRINCIPAL

Arvalo, Vctor Roberti, Martn

82 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ESTABLECIMIENTO DEL ENLACE

Arvalo, Vctor Roberti, Martn

83 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

RECEPCION

Arvalo, Vctor Roberti, Martn

84 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

TRANSMISION

Arvalo, Vctor Roberti, Martn

85 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO IV
CABLE DE INTERCONEXIN DEL MODEM
El cable est preparado para poder conectar el MODEM a una PC o a la interfase serie del PIC que utiliza
solamente las seales Tx y Rx en una configuracin sin control de flujo.

INTERFAZ SERIE G20:

Conector: RJ45 8/8


Niveles: RS232 10V
Velocidad mxima: 115.200 b/s

ASIGNACION RJ45 LADO MODEM (DCE):

PIN 1:

DSR

(OUT)

PIN 2:

DCD

(OUT)

PIN 3:

DTR

(IN)

PIN 4:

GND

PIN 5:

RXD

(OUT)

PIN 6:

TXD

(IN)

PIN 7:

CTS

(OUT)

PIN 8:

RTS

(IN)

Arvalo, Vctor Roberti, Martn

86 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ASIGNACION DB9 MACHO LADO PC (DTE):

PIN 1:

DCD

(IN)

PIN 2:

RXD

(IN)

PIN 3:

TXD

(OUT)

PIN 4:

DTR

(OUT)

PIN 5:

GND

PIN 6:

DSR

(IN)

PIN 7:

RTS

(OUT)

PIN 8:

CTS

(IN)

CABLE DE INTERCONEXIN CON CONTROL DE FLUJO

SEAL

RJ45 MODEM

DB9 HEMBRA PC

DSR

DCD

DTR

GND

RXD

TXD

CTS

RTS

Arvalo, Vctor Roberti, Martn

OBSERVACIONES

87 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

CABLE DE INTERCONEXIN SIN CONTROL DE FLUJO

SEAL

RJ45 MODEM

DSR

DCD

DTR

GND

RXD

TXD

CTS

UNIR CON RTS

RTS

UNIR CON CTS

Arvalo, Vctor Roberti, Martn

DB9 HEMBRA PC

OBSERVACIONES
UNIR CON DTR

UNIR CON DSR

88 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO V
PROGRAMA PC
El programa est escrito en Visual Basic 6.0
Para la comunicacin por sockets utiliza el control Winsock.
El puerto local es configurable.
Al detectar que est desconectado pasa automticamente a modo Listening.
Se muestra la informacin en los TextBox de IP local junto con el IP y puerto remoto al establecerse el
vnculo.
Los datos que llegan se grafican en un PictureBox.
Con el botn Borrar se limpia la pantalla y se vaca el vector de datos recibidos.
Con el botn Guardar aparece el popup de Windows (control CommonDialog) para almacenar los datos
que llegaron hasta el momento en un archivo.
Un Timer actualiza el estado del socket cada 1 seg y el watchdog para guardar las seales al no llegar datos
por ms de 1 minuto.
Otro Timer toma los datos recibidos, los grafica y si se tiene una cantidad de muestras equivalentes a 5
minutos las guarda en un archivo evitando as el desbordamiento del vector de datos.

Arvalo, Vctor Roberti, Martn

89 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Dim muestras(153600) As Byte


Dim n, watchdog As Integer
Dim total As Integer
Dim datos As Variant
Dim hay As Boolean

Sub UpdateState()

Select Case Sck.State


Case 0

Arvalo, Vctor Roberti, Martn

90 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
lblState.Caption = "0 - sckClosed"
btnDisconnect.Enabled = False
'Configura localport para listening
Sck.LocalPort = txtLocalPort
'En caso de error de configuracion devuelve el valor actual
txtLocalPort.Text = Sck.LocalPort
'Entra en estado listening
Sck.Listen
Case 1
lblState.Caption = "1 - sckOpen"
Case 2
lblState.Caption = "2 - sckListening"
Case 3
lblState.Caption = "3 - sckConnectionPending"
Case 4
lblState.Caption = "4 - sckResolvingHost"
Case 5
lblState.Caption = "5 - sckHostResolved"
Case 6
lblState.Caption = "6 - sckConnecting"
Case 7
lblState.Caption = "7 - sckConnected"
txtLocalIP.Text = Sck.LocalIP
txtHostIP.Text = Sck.RemoteHostIP
txtHostPort.Text = Sck.RemotePort
btnDisconnect.Enabled = True
Case 8
lblState.Caption = "8 - sckClosing"
Sck.Close
Case 9
lblState.Caption = "9 - sckError"
Sck.Close
End Select

End Sub

Arvalo, Vctor Roberti, Martn

91 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
Private Sub btnSave_Click()

Filenum = FreeFile

CommonDialog1.DialogTitle = "Guarda seales en archivo"


' Establecer CancelError a True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' Establecer los indicadores
' CommonDialog1.Flags = cdlOFNHideReadOnly
' Establecer los filtros
CommonDialog1.Filter = "Todos los archivos (*.*)|*.*|Archivos de texto (*.txt)|*.txt |
Archivos binarios (*.bin)|*.bin"
' Especificar el filtro predeterminado
CommonDialog1.FilterIndex = 2
' Presentar el cuadro de dilogo Abrir
CommonDialog1.ShowSave
' Presentar el nombre del archivo seleccionado
' MsgBox "El archivo se guard en: " & CommonDialog1.FileName

Open CommonDialog1.FileName For Output As #Filenum

For i = 0 To n - 1
Write #Filenum, muestras(i)
Next i

Close #Filenum

txtin.Text = ""
Picture1.Cls
n = 0

Exit Sub

ErrHandler:
MsgBox "Error: no se pudo guardar el archivo de datos del paciente" & vbCrLf &
Err.Description

End Sub

Arvalo, Vctor Roberti, Martn

92 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Private Sub btnDisconnect_Click()

Sck.Close
UpdateState

End Sub

Private Sub btnClear_Click()

txtin.Text = ""
Picture1.Cls
n = 0

End Sub

Private Sub Form_Load()

Picture1.ScaleWidth = 1372
Picture1.ScaleHeight = 256
txtLocalIP = Sck.LocalIP

End Sub

Private Sub txtLocalPort_Change()

Sck.Close
If Not IsNumeric(txtLocalPort.Text) Then txtLocalPort.Text = 5000

End Sub

Private Sub sck_ConnectionRequest(ByVal requestID As Long)

Arvalo, Vctor Roberti, Martn

93 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

If Sck.State <> sckClosed Then Sck.Close


Sck.Accept requestID

End Sub

Private Sub Sck_DataArrival(ByVal BytesTotal As Long)

Static x As Integer
Dim vec As Variant

total = BytesTotal
Sck.GetData vec, vbArray + vbByte

' get data

datos = vec
x = x + 1
txtin.Text = txtin.Text & "." & BytesTotal
hay = True
watchdog = 0

End Sub

Private Sub Timer1_Timer()


Dim i As Integer
Static x, punt As Integer

If hay Then

hay = False

If x > Picture1.ScaleWidth + 1 Then


x = 0
Picture1.Cls
Picture1.PSet (0, punt)
End If

Arvalo, Vctor Roberti, Martn

94 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
For i = 0 To total - 1
muestras(n) = datos(i)
n = n + 1
punt = datos(i)
Picture1.Line -(x, Picture1.ScaleHeight - punt), vbGreen
x = x + 1
Next i

'5 min
If n >= 76800 Then Call guardar

End If

End Sub

Private Sub tmrUpdate_Timer()

UpdateState

If n > 0 Then watchdog = watchdog + 1

If watchdog > 60 Then


Call guardar
watchdog = 0
End If

End Sub

Private Sub guardar()

Dim var As Byte


Dim i As Long
Dim archivo As String
Dim s1 As String
Dim s2 As String

Arvalo, Vctor Roberti, Martn

95 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
Filenum = FreeFile

On Error GoTo ErrHandler

s1 = Date

For i = 1 To Len(s1)
If Mid(s1, i, 1) = "/" Then
Mid(s1, i, 1) = "_"
End If
Next i

s2 = Time
For i = 1 To Len(s2)
If Mid(s2, i, 1) = ":" Or Mid(s2, i, 1) = "." Then
Mid(s2, i, 1) = "-"
End If
Next i

archivo_txt = "ECG_" & s1 & "_" & s2 & ".txt"


camino_archivo_txt = "c:\archivosECG\" & archivo_txt

Open camino_archivo_txt For Output As #Filenum

For i = 0 To n - 1
Write #Filenum, muestras(i)
Next i

Close #1

ErrHandler:
txtin.Text = ""
n = 0

End Sub

Arvalo, Vctor Roberti, Martn

96 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ANEXO VI
Programa Microcontrolador PIC

Arvalo, Vctor Roberti, Martn

97 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

title "Telemetra ECG"

;
;
#include <p16F877A.inc>
#include <gprs.inc>
LIST p=16F877
errorlevel -302

;Registers
__CONFIG _CP_OFF & _WDT_OFF & _HS_OSC & _PWRTE_ON & _LVP_OFF

;DECLARACION DE VARIABLES
;************************

;MEMORIA COMPARTIDA PARA PIC16F877 70h-FFh


;*****************************************
Temp_W
EQU
0x70
Temp_Stat EQU
0x71
Temp_FSR EQU
0x72
SENDDIF
EQU
0x73
PCLATH_TEMP
EQU
0x74
ADDRL
EQU
0x75
ADDRH
EQU
0x76
DATAL
EQU
0x77
DATAH
EQU
0x78
GENAUX
EQU
0x79
REPLY_G20 EQU
0x7A
MUESTRA
EQU
0x7B
BUFFERINDEX
EQU
0x7C
G20STATUS EQU
0x7D
G20STATUS2
EQU
0x7E
MUESTRATX EQU
0x7F
;*****************************************

BUFFSIZE

EQU

0x20

CBLOCK

BUFFSIZE + 1
VD1
VD2
VD3
RCREG_COPIA
BARRIDO
CONTADOR
AUXCOD
INDEX
AUX
YADDRESS
PAGINA
PIXEL
PAGINA_ANTERIOR
PIXEL_ANTERIOR
PAGINA_ACTUAL
PIXEL_ACTUAL
PAGINA_0
PIXEL_0
PAGINA_1
PIXEL_1
STRLEN
MIPCALL_EMPRESA_H
MIPCALL_EMPRESA_L

Arvalo, Vctor Roberti, Martn

98 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
CONTGAIN
CRONO1
CRONO2
CRONO3
CRONO33
CRONO4
BUFFDATA
STOREINDEX
SENDINDEX
SENDSTR_CONT
CALIBRATE
CALIB_TIME
DELAY_PUSH
SPARE3
SPARE4
SPARE5
SPARE6
SPARE7
SPARE8
SPARE9
SPARE10
SPARE11
SPARE12
ENDC
;0x4E)

;**** BITS DE REPLY_G20 *********


CR
STR_COMMING
EQU
STR_READY
EQU
2
;****************************
;**** BITS DE G20STATUS *********
REGISTRADO
EQU
IPASIGNADO
EQU
PUERTOABIERTO
EQU
2
HABILITARTX
EQU
OKEY
EQU
ERRO
EQU 5
WATERMARK
EQU 6
COPS
EQU 7
;****************************

;**** BITS DE G20STATUS2 *********


CTI
EQU
PERSONAL EQU
1
MOVISTAR EQU
2
ECHOOFF
EQU
3
CABEZASENT
EQU
4
COLASENT EQU
5
CLOSEPORT EQU
6
MIPPUSH
EQU
7
;****************************

EQU
1

0
1
3
4

;**** BITS DE GENAUX ****


BUFFERREADY
EQU
0
PAUSA
EQU
1
VELOCIDAD EQU 2
TRANSMITIR
EQU 3
CALIB
EQU 4
CALIB0
EQU 5
DISPMSG
EQU 6
HOLDTX
EQU 7
;*************X****************

;**** CALIBRATE *****


HABILITARTX_TON
EQU 0
;********************

Arvalo, Vctor Roberti, Martn

99 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;DISPLAY PORTS
;***************************
DISPLAY_CTRL
EQU
DISPLAY_DATA
EQU
;************X**************

PORTB
PORTD

;DISPLAY BITS DE CONTROL


;***************************
DATA_NEGINSTR
EQU
0
READ_NEGWRITE
EQU
1
ENABLE
EQU
CS1
CS2
RST
;*************X****************

;**** BITS DE PORTA *********


SPARE
EQU
CALIBRAR EQU
4
TRANSMIT EQU 5
;***************************

;CONTROL PORT, RB0


;CONTROL PORT, RB1
2
;CONTROL PORT, RB2
EQU
3
;CONTROL PORT, RB3
EQU
4
;CONTROL PORT, RB4
EQU
5
;CONTROL PORT, RB5

;**** BITS DE PORTE *********


GANANCIA EQU
0
PAUSA
EQU 1
VELOCIDAD EQU 2
;***************************

;**** BITS DE PORTC *********


SELGAIN0
EQU
SELGAIN1
EQU
CALIBPULSOS
CALIBSEL
EQU 3
INSTO
CALIBINH
EQU 5
;***************************

0
1
EQU 2
EQU 4

PAGE

da

da

ORG 0x1800
"AT"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1810
"OK"
db 0x06, 0x8A
db 0x00, 0x00

;CR codificado + 0x00

;CR + LF

ORG 0x1820
da "+MIPCALL: 0"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1830
da "+MIPRTCP:"
db 0x00, 0x00
ORG 0x1840
da " AT+MIPCALL?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1850
da "+MIPCALL: 1"

Arvalo, Vctor Roberti, Martn

100 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
db 0x06, 0x8A
db 0x00, 0x00

da

da

da

da

da

da

da

da

da

da

ORG 0x1860
" AT+MIPOPEN?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1900
"AT+CGREG=1"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1920
" AT+CGREG?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1930
"+CGREG: 001,002"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1950
"+CGREG: 001,001"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1970
"NO CARRIER"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1980
"ATE0"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1988
"ATE?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1990
"E:1"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1A00
"ERROR"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1A10
da " victorarevalo@hotmail.com"
db 0x06, 0x80
db 0x00, 0x00
;Me conecto al puerto 5000 del server
ORG 0x1A5A
da " at+mipopen=1,6002,\"170.210.44.8\",5000,0"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x01B00
da " at+mipsend=1,\"4741444942\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1B20
da "AT+MIPPUSH=1"
db 0x06, 0x80
db 0x00, 0x00

Arvalo, Vctor Roberti, Martn

101 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

ORG 0x1B30
da " at+mipclose=1"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1B42
da "at+mipcall=0"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1B52
da " at+mipsend=1,\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1B70
da "\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1B76
;da "
AT+MIPSEND=1,\"FF814449424741444942474144494247414449424741444942474144494247414449424741444942474144494247414449424741444942474144494247
41444942474144494247414449424741444942\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1C26
da " at+CMEE=1"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1C30
da " at+CEER=0"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1C3A
da "at+MIPSETS=1,343"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1C48
da " at+MIPFLUSH=1"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1C5C
da "+CGREG: 001"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1C6C
da "+CGREG: 002"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1C7C
da "at+mipcall=1,\"gprs.personal.com\",\"gprs\",\"gprs\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1CB0
da "at+mipcall=1,\"internet.gprs.unifon.com.ar\",\"wap\",\"wap\""
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1CF0
da " at+mipcall=1,\"internet.ctimovil.com.ar\",\"ctigprs\",\"ctigprs999A\""
db 0x06, 0x80
db 0x00, 0x00

Arvalo, Vctor Roberti, Martn

102 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
ORG 0x1D40
da "+MIPSTAT: 1,1"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1D54
da "+MIPOPEN: 1,1"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1D68
da "+MIPCALL: "
db 0x00, 0x00
ORG 0x1D78
da "AT+COPS?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1D88
da "+COPS: 000,000,\"CTI Movil\""
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1DA6
da "+COPS: 000,000,\"Personal\""
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1DC6
da "+COPS: 000,000,\"UNIFON\""
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1DE4
da "at+mipclose?"
db 0x06, 0x80
db 0x00, 0x00
ORG 0x1DF4
da "+MIPCLOSE: 0"
db 0x06, 0x8A
db 0x00, 0x00
ORG 0x1E04
da "+MIPCLOSE: 1"
db 0x06, 0x8A
db 0x00, 0x00

ORG
GOTO

0
MAIN

ORG
GOTO

4
INTERRUPT

;INTERRUPT SERVICE ROUTINE


;*****************************************
INTERRUPT

PUSH
MOVWF
SWAPF
CLRF
MOVWF
MOVF
MOVWF

Temp_W
;Copy W to TEMP register
STATUS, W ;Swap status to be saved into W
STATUS
;bank 0, regardless of current bank, Clears IRP,RP1,RP0
Temp_Stat ;Save status to bank zero STATUS_TEMP register
PCLATH, W ;Only required if using pages 1, 2 and/or 3
PCLATH_TEMP
;Save PCLATH into W

Arvalo, Vctor Roberti, Martn

103 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
CLRF
MOVF
MOVWF

PCLATH
FSR, W
Temp_FSR

;Page zero, regardless of current page

;;;When an interrupt is responded to, the GIE bit is


;;;cleared to disable any further interrupt.
;;;The return from interrupt instruction, RETFIE, exits
;;;the interrupt routine, as well as sets the GIE bit, which
;;;re-enables interrupts.
MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

BTFSC
GOTO

PIR1, RCIF ;interrupcin por recepcin de un dato en el UART


RECEPCION

BTFSC
GOTO

PIR1, ADIF ;interrupcin por fin de conversin del modulo A/D


CONVERCION

BTFSC
GOTO

INTCON, TMR0IF
TIMER

;interrupcin por overflow de TMR0 (el TIMER)

BTFSC
GOTO

PIR1, TMR1IF
TIMER1

;Interrupcion por overflow de TMR1

MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

GOTO

POP

TIMER
BCF
BSF
CALL
GOTO

INTCON, TMR0IF
ADCON0, 2 ; GO/!DONE
TIMERSUB
POP

BCF
CALL
GOTO

PIR1, RCIF
RXCHARS_G20
POP

RECEPCION
; // Clear flag

CONVERCION
CALL
BCF
CALL
INCF
GOTO

CONVERT

BCF
CALL
GOTO

PIR1, TMR1IF
TIMER1_SUB
POP

MOVF
MOVWF
MOVF
MOVWF
SWAPF
MOVWF
SWAPF
SWAPF

Temp_FSR, W
FSR
PCLATH_TEMP, W
;Restore PCLATH
PCLATH
;Move W into PCLATH
Temp_Stat, W
;Swap STATUS_TEMP register into W
STATUS
;Move W into STATUS register
Temp_W, F ;Swap W_TEMP
Temp_W, W ;Swap W_TEMP into W

PIR1, ADIF
DISPLAY
BARRIDO, F
POP

TIMER1

POP

RETFIE

Arvalo, Vctor Roberti, Martn

104 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;************X***************************

;****************************************
;* setup PIC options, ports, interrupts *
;****************************************
SETUP
CLRF

INTCON

BSF

INTCON, PEIE

BSF

STATUS, RP0

CLRF
BSF

PIE1

MOVLW
MOVWF

0x86
OPTION_REG

PIE1, TMR1IE

BSF
MOVLW
MOVWF

OPTION_REG, INTEDG
0x3F
TRISA

;DISPLAY PORTS CONFIG


;************
MOVLW
0x00
MOVWF
TRISB

;Salidas

MOVLW
0x00
MOVWF
TRISD
;************
MOVLW
MOVWF

0x80
TRISC

MOVLW
MOVWF

0x07
TRISE

BCF
CLRF

;Enables all unmasked peripheral interrupts

;Salidas

;RC7=INPUT (Rx)

STATUS, RP0
PIR1

;This register contains the individual flag bits for the peripheral interrupts

;*** Inicializa lo relacionado con la conversin ***/


BCF
STATUS, RP1
BSF
STATUS, RP0
MOVLW
0xAE
MOVWF
ADCON1
BCF
STATUS, RP0
MOVLW
MOVWF

0x80
ADCON0

BSF

ADCON0, ADON

; Enciendo el conversor

;--- limpia el flag y habilita interrupcin del CAD --BCF


PIR1, ADIF
BSF
STATUS, RP0
BSF
PIE1, ADIE
BCF
STATUS, RP0
;------------------------------------------------------

;The TMR1 interrupt, if enabled,


;is generated on overflow which is latched in interrupt
;flag bit, TMR1IF (PIR1<0>). This interrupt can be

Arvalo, Vctor Roberti, Martn

105 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
;;enabled/disabled by setting/clearing TMR1 interrupt
;enable bit, TMR1IE (PIE1<0>).
BCF
T1CON, TMR1CS
;T1CKPS1:T1CKPS0: Timer1 Input Clock Prescale Select bits
;11 = 1:8 prescale value
;10 = 1:4 prescale value
;01 = 1:2 prescale value
;00 = 1:1 prescale value T1CKPS0 T1CKPS1
;cambie el prescaler a 1:8 para 20Mhz
BSF
T1CON, T1CKPS0
BSF
T1CON, T1CKPS1
BCF
T1CON, TMR1CS
BCF
T1CON, T1OSCEN
BSF
T1CON, T1CKPS0
BSF
T1CON, TMR1ON
BCF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF
CLRF

GENAUX, BUFFERREADY ;/* Clear the buffer ready flag */


STRLEN
GENAUX
G20STATUS
G20STATUS2
REPLY_G20
BUFFERINDEX
CONTADOR
DISPLAY_CTRL
DISPLAY_DATA
STOREINDEX
SENDINDEX
SENDDIF

RETURN
;**************************************

;*******************************************************/
;* Configure USART for communications
*/
;*******************************************************/
CONFIGURECOMMS
BCF
BCF

STATUS, RP0
STATUS, RP1

BSF
BCF

RCSTA, SPEN
RCSTA, RX9

;Enable Serial port


;8 bit receive mode

BCF

PIR1, RCIF

;Clear Receive Interrupt flag

BSF

STATUS, RP0

BCF

TXSTA, TX9

;8 bit transmit mode

MOVLW
MOVWF

D'64'
SPBRG

;con D'129'-> 9.600 ; con 64-> 19.200; con 21-> 57.600

BSF

TXSTA, BRGH

BCF

TXSTA, SYNC

;Asyncronous mode

BSF

TXSTA, TXEN

;Enable transmitter

BSF

PIE1, RCIE

;Enable Receive Interrupt

BCF

STATUS, RP0

BSF

RCSTA, CREN

;High speed mode

;Enable continuous receive

Arvalo, Vctor Roberti, Martn

106 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BCF
BCF

PIR1, TXIF
PIE1, TXIE

;Clear TRANSMIT Interrupt flag AGREGADO


;Disable transmit interrupt

RETURN
;***********************************************************

;*****************************************************/
;*
Almacena el dato en el buffer de salida */
;*
*/
;*****************************************************/
SENDCHAR ;void( BUFFERINDEX)
BCF
BCF

STATUS, RP0
STATUS, RP1

;*** Register page 0 ***


;*** Register page 0 ***

STOREDATA
;Almaceno el dato en la cola de salida
MOVLW
0X45
MOVWF
FSR
MOVF
MOVWF

INDF, W
BUFFDATA

MOVLW
SUBWF
BTFSC
CLRF

0x24
STOREINDEX, W
STATUS, C
STOREINDEX

INCF

STOREINDEX, F

MOVLW
ADDWF
MOVWF

0X45
STOREINDEX, W
FSR

MOVF
MOVWF

BUFFDATA, W
INDF

INCF

SENDDIF, F

MOVLW
SUBWF
BTFSC
CLRF

0X24
SENDDIF, W
STATUS, C
SENDDIF

RETURN
;******************************************************

;*****************************************************/
;*
Envia los datos del buffer de salida
*/
;*
*/
;*****************************************************/
SENDDATA
BCF

STATUS, RP0

CLRF

SENDSTR_CONT

MOVLW
SUBWF
BTFSC
NOP

0X24
SENDDIF, W
STATUS, C

;*** Register page 0 ***

;Si SENDDIF es mayor o igual a 0x1E vuelve a transmitir


;Si SENDDIF-W >=0 Carry en 1

Arvalo, Vctor Roberti, Martn

107 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVLW
SUBWF
BTFSC
BCF

0X1E
SENDDIF, W
STATUS, C
GENAUX, HOLDTX

;La decision para transmitir es la siguiente:


;Si HOLDTX es FALSE y
;Si STOREINDEX != SENDINDEX hay q transmitir
BTFSC
GOTO

GENAUX, HOLDTX
FIN_SENDDATA

MOVF
BTFSC
GOTO

SENDDIF, W
STATUS, Z
FIN_SENDDATA

MOVLW
SUBWF
BTFSC
CLRF

0X24
SENDINDEX, W
STATUS, C
SENDINDEX

BSF
BTFSS
GOTO
BCF

STATUS, RP0
TXSTA, TRMT
$-1
STATUS, RP0

INCF

SENDINDEX, F

MOVLW
ADDWF
MOVWF

0X45
SENDINDEX, W
FSR

MOVF
BTFSC
MOVLW
MOVWF

INDF, W
STATUS, Z
0X30
TXREG

DECF

SENDDIF, F

GOTO
FIN_SENDDATA
BCF

;*** Register page 1 ***


;Wait for TX Empty
;*** Register page 0 ***

;Load the TXREG & Start transmition

SENDDATA
STATUS, RP0

RETURN
;******************************************************

;*****************************************************/
;*
Recepcin de datos
;*****************************************************/

*/

RXCHARS_G20
MOVLW
ANDWF
BTFSS
GOTO

0x06
; if ( ( RCSTA & 6 ) == 0 ) { Then if no errors,
RCSTA, W ; Process received character
STATUS, Z
ELSE1_G20
;si hubo un error GOTO ELSE1

MOVF
MOVWF

RCREG, W ;Leo el dato recibido


RCREG_COPIA

MOVF
BTFSC
GOTO
MOVLW
SUBWF
BTFSS
GOTO

BUFFERINDEX, W
STATUS, Z
NO_GUARDAR
0x01
BUFFERINDEX, W
STATUS, Z
NO_GUARDAR_FIN

Arvalo, Vctor Roberti, Martn

108 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
NO_GUARDAR
MOVLW
SUBWF
BTFSC
GOTO
MOVLW
SUBWF
BTFSC
GOTO
NO_GUARDAR_FIN

0x0D
RCREG_COPIA, W
STATUS, Z
ENDELSE1_G20
0x0A
RCREG_COPIA, W
STATUS, Z
ENDELSE1_G20

;----------------------------------------------------------------; RxFifo[ BufferIndex++] = RCREG; // Save the data


MOVLW
0xA0
ADDWF
BUFFERINDEX, W
MOVWF
FSR
; FSR = inicio del buffer + BUFFERINDEX
MOVF
MOVWF

RCREG_COPIA, W
INDF

; Guardo el dato q le al principio

INCF

BUFFERINDEX, F

; BufferIndex++

MOVF
BUFFERINDEX, W
SUBWF
BUFFSIZE, W
BTFSS
STATUS, Z
GOTO
ENDELSE1_G20
;SI SE LLENO EL BUFFER, CONTINUO
;-----------------------------------------------------------------;-----------------------------------------------------------------; En caso de buffer lleno
BSF
GENAUX, BUFFERREADY ; /* Set a flag to indicate line received */
CLRF
BUFFERINDEX
GOTO
ENDELSE1_G20
;-----------------------------------------------------------------ELSE1_G20 ; else {
BTFSS
GOTO
MOVF

en caso de error
RCSTA, FERR
OERRLABEL_G20
RCREG, W ;Leo el dato para refrescar FERR

OERRLABEL_G20
BTFSC

RCSTA, OERR

BCF
BSF

RCSTA, CREN
RCSTA, CREN

;// Clear any errors


;// Enable receiver.

;Si hay algn error, reinicializo los flags identificatorios de respuestas g20
CLRF
BUFFERINDEX
BCF
REPLY_G20, STR_READY
BCF
REPLY_G20, STR_COMMING
BCF
REPLY_G20, CR
;}
;Esta rutina me dice si la cadena esta llegando
;o esta lista a travs de los flags de REPLY_G20,
;STR_COMING y STR_READY
ENDELSE1_G20
BTFSS
REPLY_G20, CR
GOTO
VER_SI_ES_CR
;LF (Line Feed)
MOVLW
0x0A
SUBWF
RCREG_COPIA, W
BTFSS
STATUS, Z
GOTO
VER_SI_ES_CR
BTFSS
REPLY_G20, STR_COMMING
GOTO
$+4
;set STR_COMING =1
BCF
REPLY_G20, STR_COMMING
BSF
REPLY_G20, STR_READY
GOTO
VER_SI_ES_CR

Arvalo, Vctor Roberti, Martn

109 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BCF
REPLY_G20, STR_READY
BSF
REPLY_G20, STR_COMMING
CLRF
BUFFERINDEX
;Cuando llega un nuevo string pongo en cero el puntero
VER_SI_ES_CR
;CR (Carriage Return)
BCF
REPLY_G20, CR
MOVLW
0x0D
SUBWF
RCREG_COPIA, W
BTFSC
STATUS, Z
BSF
REPLY_G20, CR
BTFSS
GOTO

REPLY_G20, STR_READY
ENDRXCHARS_G20

BCF
BCF

G20STATUS, OKEY
G20STATUS, ERRO

;OK
MOVLW
MOVWF
MOVLW
MOVWF

RSP_OK_H
ADDRH
RSP_OK_L
ADDRL

CALL

STRCMP

SUBLW
BTFSC
GOTO
BSF
BCF
BCF
GOTO

0x01
STATUS, Z
$+5
G20STATUS, OKEY
REPLY_G20, STR_READY
GENAUX, HOLDTX
ENDRXCHARS_G20

;IP ASIGNADO
MOVLW
RSP_MIPCALL0_H
MOVWF
ADDRH
MOVLW
RSP_MIPCALL0_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
BSF
GOTO

0x01
STATUS, Z
$+5
REPLY_G20, STR_READY
G20STATUS, IPASIGNADO
G20STATUS, ERRO
ENDRXCHARS_G20

;IP ASIGNADO
MOVLW
RSP_MIPCALL_H
MOVWF
ADDRH
MOVLW
RSP_MIPCALL_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BSF
BCF
GOTO

0x01
STATUS, Z
$+5

;ERROR
MOVLW
MOVWF

REPLY_G20, STR_READY
G20STATUS, IPASIGNADO
G20STATUS, ERRO
ENDRXCHARS_G20

RSP_ERROR_H
ADDRH

Arvalo, Vctor Roberti, Martn

110 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVLW
MOVWF

RSP_ERROR_L
ADDRL

CALL

STRCMP

SUBLW
BTFSC
GOTO
BSF
BCF
GOTO

0x01
STATUS, Z
$+4
G20STATUS, ERRO
REPLY_G20, STR_READY
ENDRXCHARS_G20

;ERROR
MOVLW
MOVWF
MOVLW
MOVWF

RSP_E1_H
ADDRH
RSP_E1_L
ADDRL

CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
GOTO

0x01
STATUS, Z
$+4
G20STATUS, ECHOOFF
REPLY_G20, STR_READY
ENDRXCHARS_G20

;ESTA REGISTRADO
MOVLW
RSP_CGREG1_H
MOVWF
ADDRH
MOVLW
RSP_CGREG1_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BSF
BCF
GOTO

0x01
STATUS, Z
$+4
G20STATUS, REGISTRADO
REPLY_G20, STR_READY
ENDRXCHARS_G20

;NO ESTA REGISTRADO


MOVLW
RSP_CGREG2_H
MOVWF
ADDRH
MOVLW
RSP_CGREG2_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
GOTO
NOP

0x01
STATUS, Z
$+4
REPLY_G20, STR_READY
G20STATUS, REGISTRADO
ENDRXCHARS_G20

;ESTA REGISTRADO
MOVLW
RSP_REGISTRADO_H
MOVWF
ADDRH
MOVLW
RSP_REGISTRADO_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO

0x01
STATUS, Z
$+4

Arvalo, Vctor Roberti, Martn

111 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF
BCF
GOTO

G20STATUS, REGISTRADO
REPLY_G20, STR_READY
ENDRXCHARS_G20

;SIN REGISTRAR
MOVLW
RSP_SIN_REGISTRAR_H
MOVWF
ADDRH
MOVLW
RSP_SIN_REGISTRAR_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
GOTO

0x01
STATUS, Z
$+4
G20STATUS, REGISTRADO
REPLY_G20, STR_READY
ENDRXCHARS_G20

;NO ESTA REGISTRADO


MOVLW
RSP_CTI_H
MOVWF
ADDRH
MOVLW
RSP_CTI_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
GOTO
NOP

0x01
STATUS, Z
$+9
REPLY_G20, STR_READY
G20STATUS2, CTI
CMD_MIPCALL_CLARO_H
MIPCALL_EMPRESA_H
CMD_MIPCALL_CLARO_L
MIPCALL_EMPRESA_L
G20STATUS, COPS
ENDRXCHARS_G20

;NO ESTA REGISTRADO


MOVLW
RSP_PERSONAL_H
MOVWF
ADDRH
MOVLW
RSP_PERSONAL_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
GOTO
NOP

0x01
STATUS, Z
$+9
REPLY_G20, STR_READY
G20STATUS2, PERSONAL
CMD_MIPCALL_PERSO_H
MIPCALL_EMPRESA_H
CMD_MIPCALL_PERSO_L
MIPCALL_EMPRESA_L
G20STATUS, COPS
ENDRXCHARS_G20

;NO ESTA REGISTRADO


MOVLW
RSP_MOVISTAR_H
MOVWF
ADDRH
MOVLW
RSP_MOVISTAR_L
MOVWF
ADDRL
CALL

STRCMP

Arvalo, Vctor Roberti, Martn

112 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
SUBLW
BTFSC
GOTO
BCF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
GOTO
NOP

0x01
STATUS, Z
$+9
REPLY_G20, STR_READY
G20STATUS2, MOVISTAR
CMD_MIPCALL_MOVIS_H
MIPCALL_EMPRESA_H
CMD_MIPCALL_MOVIS_L
MIPCALL_EMPRESA_L
G20STATUS, COPS
ENDRXCHARS_G20

;PUERTO ABIERTO
MOVLW
RSP_MIPOPEN_H
MOVWF
ADDRH
MOVLW
RSP_MIPOPEN_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BSF
GOTO

0x01
STATUS, Z
$+4
REPLY_G20, STR_READY
G20STATUS, PUERTOABIERTO
ENDRXCHARS_G20

;PUERTO CERRADO
MOVLW
RSP_MIPCLOSE0_H
MOVWF
ADDRH
MOVLW
RSP_MIPCLOSE0_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
BCF
GOTO

0x01
STATUS, Z
$+5
REPLY_G20, STR_READY
G20STATUS, PUERTOABIERTO
G20STATUS2, CLOSEPORT
ENDRXCHARS_G20

;FALLO EN EL PUERTO
MOVLW
RSP_MIPSTAT_H
MOVWF
ADDRH
MOVLW
RSP_MIPSTAT_L
MOVWF
ADDRL
CALL

STRCMP

SUBLW
BTFSC
GOTO
BCF
BCF
BCF
BCF
GOTO

0x01
STATUS, Z
$+6
REPLY_G20, STR_READY
G20STATUS, PUERTOABIERTO
G20STATUS, WATERMARK
G20STATUS2, CLOSEPORT
ENDRXCHARS_G20

ENDRXCHARS_G20
RETURN
;}

;---------------------------------------------------------------------

Arvalo, Vctor Roberti, Martn

113 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
TIMERSUB

;Inicializo el TIMER para lograr


MOVLW
MOVWF

0x67
TMR0

;una tasa de muestreo distinta a la que puedo


;obtener configurando solamente el prescalador

RETURN
;---------------------------------------------------------------------

;--------------------------------------------------------------------TIMER1_SUB
;Con esto consigo un tren de pulsos de perodo 120ms y ciclo activo 40ms
BCF

STATUS, RP0

BTFSC
PORTC, CALIBPULSOS
GOTO
$+7
BSF
PORTC, CALIBPULSOS
MOVLW
0x9E
MOVWF
TMR1H
MOVLW
0x58
MOVWF
TMR1L
GOTO
$+6
BCF
PORTC, CALIBPULSOS
MOVLW
0x3C
MOVWF
TMR1H
MOVLW
0xB0
MOVWF
TMR1L
NOP
;Si no lo vuelvo a configurar al prescaler aca, no anda !!!
;The prescaler counter is cleared on writes to the
;TMR1H or TMR1L registers. DS39582B-page 60
;Cambie el prescaler a 1:8 para 20Mhz
BSF
T1CON, T1CKPS0
BSF
T1CON, T1CKPS1
RETURN
;---------------------------------------------------------------------

;--------------------------------------------------------------------CONVERT
; Leo el resultado de la conversin y lo pongo en el puerto de datos.
; Direcciono el registro de datos y escribo el valor.
; Decremento el contador y si es 0 deshabilito el TIMER
BCF

STATUS, RP0

;*** Register page 0 ***

MOVLW
MOVF

0xFF
ADRESH, F

; Si supera ADRESL supera 255 se transmite 255

BTFSC
GOTO

STATUS, Z ; Si ADRESH es distinto de cero salto


MENOR255

MOVLW
MOVWF

0xFF
MUESTRA

GOTO

END255

BSF
MOVF
BCF

STATUS, RP0
ADRESL, W
STATUS, RP0

MOVWF

MUESTRA

MOVF
MOVWF

MUESTRA, W
MUESTRATX

; Si supera ADRESL supera 255 se transmite 255

MENOR255

END255

Arvalo, Vctor Roberti, Martn

114 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;Si contador es 0 verifica si esta habilitada la Tx


MOVF
CONTADOR, F
BTFSS
STATUS, Z
GOTO
$+3
BTFSS
G20STATUS, HABILITARTX
GOTO
FIN_CONVERT
MOVF
BTFSC
CALL

CONTADOR, F
STATUS, Z
ENVIA_CABECERA_MIPSEND

MOVLW
MOVWF

0X45
FSR

MOVLW
ANDWF
SWAPF

0xF0
MUESTRA, F
MUESTRA,F

MOVLW
SUBWF

0x09
MUESTRA,W

BTFSC
GOTO
GOTO

STATUS,C
MAYOR9a
MENOR9a

MOVLW
GOTO

0x30
DESPUES9a

MOVWF

MUESTRA

BTFSC
INCF

STATUS, Z
MUESTRA, F

MOVLW

0x40

ADDWF

MUESTRA, W

BTFSC
MOVLW

STATUS, Z
0X23

MOVWF

INDF

CALL

SENDCHAR

BSF
MOVF
BCF

STATUS, RP0
ADRESL, W
STATUS, RP0

MOVWF

MUESTRA

MOVLW
MOVWF

0X45
FSR

MOVLW
ANDWF

0x0F
MUESTRA, F

MOVLW
SUBWF

0x09
MUESTRA,W

BTFSC
GOTO
GOTO

STATUS,C
MAYOR9
MENOR9

MOVLW
GOTO

0x30
DESPUES9

MENOR9a

MAYOR9a

DESPUES9a

MENOR9

MAYOR9

Arvalo, Vctor Roberti, Martn

115 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVWF

MUESTRA

BTFSC
INCF

STATUS, Z
MUESTRA, F

MOVLW

0x40

ADDWF

MUESTRA, W

BTFSC
MOVLW

STATUS, Z
0X23

MOVWF

INDF

CALL

SENDCHAR

DECF

CONTADOR, F

BCF
MOVF
BTFSC
CALL

STATUS, RP0
CONTADOR, F
STATUS, Z
ENVIA_COLA_MIPSEND

DESPUES9

FIN_CONVERT
RETURN
;---------------------------------------------------------------------

; void main( void) {


MAIN
CALL

SETUP

;/* Setup the PIC */

CALL

CONFIGURECOMMS

BCF

PIR1, ADIF

BSF
BCF
BCF
BCF

STATUS, RP0
PIE1, TMR1IE
PIE1, ADIE
STATUS, RP0

BCF

T1CON, TMR1ON

MOVLW
MOVWF

D'80'
BUFFSIZE

CALL

DISPLAY_INI

;------ Habilita interrupcin general ------------BSF


INTCON, GIE
;-------------------------------------------------CALL

MAIN_MAIN

BUCLE
BCF
BCF

STATUS, RP0
STATUS, RP1

;En caso de Overrun


BTFSS
RCSTA, OERR
GOTO
$+3
BCF
RCSTA, CREN
BSF
RCSTA, CREN

;// Clear any errors


;// Enable receiver.

Arvalo, Vctor Roberti, Martn

116 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;Temporizador Botones
INCFSZ
CRONO1, F
GOTO
$+2
INCF
CRONO2, F
NOP
;Temporizador para estados g20
INCFSZ
CRONO3, F
GOTO
$+2
INCFSZ
CRONO33, F
GOTO
$+2
INCF
CRONO4, F
NOP
CALL

SENDDATA

BTFSS
GOTO
BTFSS
GOTO

CRONO2, 7
FIN_BOTONES
CRONO2, 4
FIN_BOTONES

CLRF

CRONO2

; ************* INICIO BOTONES ***********

;Si HABILITARTX=1 y HABILITARTX_TON=0 significa que hay un flanco ascendente


;Entonces cambio a calibracin
BTFSS
G20STATUS, HABILITARTX
GOTO
$+5
BTFSC
CALIBRATE, HABILITARTX_TON
GOTO
$+3
BSF
GENAUX, CALIB
BSF
CALIB_TIME, 4
;Lo inicializo a un valor
;Igualo
BTFSS
BCF
BTFSC
BSF

G20STATUS, HABILITARTX
CALIBRATE, HABILITARTX_TON
G20STATUS, HABILITARTX
CALIBRATE, HABILITARTX_TON

;Con esto logro que resetear GENAUX, CALIB solo con una transicion a cero de CALIB_TIME
;que previamente fue iniicalizado a un valor cuando comenz la trasnmision
MOVF
CALIB_TIME, F
BTFSC
STATUS, Z
GOTO
$+4
DECFSZ
CALIB_TIME, F
GOTO
$+2
BCF
GENAUX, CALIB

;*** botn de CALIBRACION ***


BTFSS
PORTA, CALIBRAR
GOTO
$+7
BTFSC
GENAUX, CALIB
GOTO
$+2
GOTO
$+3
BCF
GENAUX, CALIB
GOTO
$+2
BSF
GENAUX, CALIB
NOP

; --- GENERACION DE LA SEAL DE INHIBICION y de INSTO--; CUANDO HAY UN CAMBIO EN LA SELECCIN


;-----------------------------------------------------;Aca pregunto si cambi CALIB
BTFSS
GENAUX, CALIB
GOTO
$+7
BTFSS
GENAUX, CALIB0

Arvalo, Vctor Roberti, Martn

117 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
GOTO
GOTO
GOTO
BSF

$+3
FIN_CALIB
$+2
PORTC, CALIBINH

;Aca pregunto si cambi CALIB


BTFSC
GENAUX, CALIB
GOTO
$+7
BTFSC
GENAUX, CALIB0
GOTO
$+3
GOTO
FIN_CALIB
GOTO
$+2
BSF
PORTC, CALIBINH

;CALIB0 es CALIB retardado.


;Si arriba son diferentes indica q hubo un cambio en CALIB
;Si hay un cambio tengo q inhibir, despues cambiar a cal o ecg
;deshinibir y generar un pulso de INSTO
BTFSS
GENAUX, CALIB
BCF
GENAUX, CALIB0
BTFSC
GENAUX, CALIB
BSF
GENAUX, CALIB0
NOP
NOP
NOP
NOP
NOP
;Actualizo la seal de calibracin
BTFSS
GENAUX, CALIB
BCF
PORTC, CALIBSEL
BTFSC
GENAUX, CALIB
BSF
PORTC, CALIBSEL
;Hasta aca 1uS desde la inhibicion hasta cambio de seleccion
NOP
NOP
NOP
NOP
BCF
BSF
;Hasta aca 1uS

PORTC, CALIBINH
PORTC, INSTO

BCF
;Hasta aca 1uS

PORTC, INSTO

FIN_CALIB
; --------------------------------------------

;*** botn de GANANCIA ***


BTFSC
PORTE, GANANCIA
INCF
CONTGAIN, F
;Pone en 1 las salidas de ganancias
BTFSC
CONTGAIN, 0
BSF
PORTC, SELGAIN0
BTFSC
CONTGAIN, 1
BSF
PORTC, SELGAIN1
;Pone en 0 las salidas de ganancias
BTFSS
CONTGAIN, 0
BCF
PORTC, SELGAIN0
BTFSS
CONTGAIN, 1
BCF
PORTC, SELGAIN1

Arvalo, Vctor Roberti, Martn

118 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
;*** Boton de PAUSA ***
BTFSS
PORTE, PAUSA
GOTO
$+7
BTFSC
GENAUX, PAUSA
GOTO
$+2
GOTO
$+3
BCF
GENAUX, PAUSA
GOTO
$+2
BSF
GENAUX, PAUSA
NOP

;*** Boton de VELOCIDAD ***


BTFSS
PORTE, VELOCIDAD
GOTO
$+7
BTFSC
GENAUX, VELOCIDAD
GOTO
$+2
GOTO
$+3
BCF
GENAUX, VELOCIDAD
GOTO
$+2
BSF
GENAUX, VELOCIDAD
NOP

;*** botn de TRANSMISION ***


BTFSS
PORTA, TRANSMIT
GOTO
$+8
BTFSC
GENAUX, TRANSMITIR
GOTO
$+2
GOTO
$+4
BCF
GENAUX, TRANSMITIR
BSF
G20STATUS2, MIPPUSH
GOTO
$+2
BSF
GENAUX, TRANSMITIR

FIN_BOTONES

;Condiciones para setear G20STATUS, HABILITARTX


BTFSS
GENAUX, TRANSMITIR
GOTO
$+8
BTFSS
G20STATUS, REGISTRADO
GOTO
$+6
BTFSS
G20STATUS, PUERTOABIERTO
GOTO
$+4
BTFSS
G20STATUS, WATERMARK
GOTO
$+2
BSF
G20STATUS, HABILITARTX

;Condiciones para resetear G20STATUS, HABILITARTX


BTFSS
G20STATUS, REGISTRADO
BCF
GENAUX, TRANSMITIR
BTFSS
G20STATUS, PUERTOABIERTO
BCF
GENAUX, TRANSMITIR
BTFSS
GENAUX, TRANSMITIR
BCF
G20STATUS, HABILITARTX
BTFSS
GOTO
BTFSC
GOTO
MOVF
BTFSC
BSF

G20STATUS, PUERTOABIERTO
$+6
G20STATUS, REGISTRADO
$+4
CONTADOR, F
STATUS, Z
G20STATUS2, CLOSEPORT

BTFSC
GOTO
BCF
BCF
BCF

G20STATUS, REGISTRADO
$+6
G20STATUS, COPS
G20STATUS2, CTI
G20STATUS2, PERSONAL

Arvalo, Vctor Roberti, Martn

119 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BCF
BCF

G20STATUS2, MOVISTAR
G20STATUS, IPASIGNADO

;---------------> CRONO4
BTFSS
CRONO4, 2
GOTO
FIN_ESTADOS_RED
BTFSS
CRONO4, 1
GOTO
FIN_ESTADOS_RED

CLRF

CRONO4

;Si no est transmitiendo y ya termin de enviar el ultimo MIPSEND (CONTADOR==0)


BTFSC
G20STATUS, HABILITARTX
GOTO
FIN_ESTADOS_RED
MOVF
CONTADOR, F
BTFSS
STATUS, Z
GOTO
FIN_ESTADOS_RED
CALL

SENDDATA

CLRF

DELAY_PUSH

DECFSZ
GOTO

DELAY_PUSH
$-1

MOVLW
MOVWF

0xFF
DELAY_PUSH

DECFSZ
GOTO

DELAY_PUSH
$-1

CALL

SENDDATA

DECFSZ
GOTO

DELAY_PUSH
$-1

BTFSS
GOTO

G20STATUS2, MIPPUSH
FIN_MIPPUSH

DECFSZ
GOTO

DELAY_PUSH
$-1

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPFLUSH_H
ADDRH
CMD_MIPFLUSH_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

BCF

G20STATUS2, MIPPUSH

MOVLW
MOVWF

0xFF
DELAY_PUSH

DECFSZ
GOTO

DELAY_PUSH
$-1

DECFSZ
GOTO

DELAY_PUSH
$-1

CALL

SENDDATA

DECFSZ
GOTO

DELAY_PUSH
$-1

CALL

SENDDATA

DECFSZ
GOTO

DELAY_PUSH
$-1

Arvalo, Vctor Roberti, Martn

120 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
DECFSZ
GOTO

DELAY_PUSH
$-1

FIN_MIPPUSH

BTFSS
GOTO
BTFSS
GOTO

G20STATUS2, CLOSEPORT
FIN_CLOSEPORT
G20STATUS, IPASIGNADO
FIN_CLOSEPORT

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPCLOSE_H
ADDRH
CMD_MIPCLOSE_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

FIN_CLOSEPORT

BSF

G20STATUS2, ECHOOFF

MOVLW
MOVWF
MOVLW
MOVWF

CMD_SIN_ECO_H
ADDRH
CMD_SIN_ECO_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

CMD_REGISTRO_H
ADDRH
CMD_REGISTRO_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

CMD_REGISTRADO?_H
ADDRH
CMD_REGISTRADO?_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

BTFSC
GOTO
BTFSS
GOTO

G20STATUS, COPS
FIN_CMD_COPS
G20STATUS, REGISTRADO
FIN_CMD_COPS

MOVLW
MOVWF
MOVLW
MOVWF

CMD_COPS?_H
ADDRH
CMD_COPS?_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

FIN_CMD_COPS

BTFSS
GOTO

G20STATUS, REGISTRADO
FIN_MIPCALL?

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPCALL?_H
ADDRH
CMD_MIPCALL?_L
ADDRL

Arvalo, Vctor Roberti, Martn

121 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

CALL
CALL

SENDSTR
SENDDATA

FIN_MIPCALL?

BTFSS
GOTO
BTFSC
GOTO
BTFSS
GOTO

G20STATUS, REGISTRADO
FIN_CMD_MIPCALL
G20STATUS, IPASIGNADO
FIN_CMD_MIPCALL
G20STATUS, COPS
FIN_CMD_MIPCALL

MOVF
MOVWF
MOVF
MOVWF

MIPCALL_EMPRESA_H, W
ADDRH
MIPCALL_EMPRESA_L, W
ADDRL

CALL
CALL

SENDSTR
SENDDATA

FIN_CMD_MIPCALL

BTFSS
GOTO

G20STATUS, IPASIGNADO
FIN_CMD_MIPCLOSE

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPCLOSE?_H
ADDRH
CMD_MIPCLOSE?_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

FIN_CMD_MIPCLOSE

BTFSS
GOTO
BTFSS
GOTO
BTFSC
GOTO

G20STATUS, REGISTRADO
FIN_CMD_MIPOPEN
G20STATUS, IPASIGNADO
FIN_CMD_MIPOPEN
G20STATUS, PUERTOABIERTO
FIN_CMD_MIPOPEN

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPOPEN_H
ADDRH
CMD_MIPOPEN_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

FIN_CMD_MIPOPEN
BTFSS
BCF

G20STATUS, PUERTOABIERTO
G20STATUS, WATERMARK

BTFSC
GOTO
BTFSS
GOTO

G20STATUS, WATERMARK
FIN_CMD_MIPSETS
G20STATUS, PUERTOABIERTO
FIN_CMD_MIPSETS

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPSETS_H
ADDRH
CMD_MIPSETS_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

BSF

G20STATUS, WATERMARK

Arvalo, Vctor Roberti, Martn

122 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

FIN_CMD_MIPSETS

FIN_ESTADOS_RED
;---------------> CRONO4 END
GOTO

BUCLE

ENVIA_CABECERA_MIPSEND
MOVLW
MOVWF

0x50
CONTADOR

MOVF

CONTADOR, F

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPSEND_HEAD_H
ADDRH
CMD_MIPSEND_HEAD_L
ADDRL

CALL

SENDSTR

RETURN

ENVIA_COLA_MIPSEND
MOVLW
MOVWF

0X45
FSR

MOVLW
MOVWF

0x22
INDF

CALL

SENDCHAR

MOVLW
MOVWF

0X45
FSR

MOVLW
MOVWF

0x0D
INDF

CALL
CALL

SENDCHAR
SENDDATA

BSF

GENAUX, HOLDTX

RETURN

;/******* Lee Program Memory ******/


LEER_PROG_MEM
;Si quiero que lea N caracteres, debo inicializar STRLEN a N y cuando
;LEER_PROG_MEM devuelva en el W el valor 0, significa q ley todos.
;En esta aplicacin no uso esta opcin, pero est bueno.
DECF
STRLEN, F
BSF STATUS, RP1 ;
BCF STATUS, RP0 ;Bank 2
MOVF ADDRL, W ;Write the
MOVWF EEADR ;address bytes
MOVF ADDRH,W ;for the desired
MOVWF EEADRH ;address to read
;MOVWF FSR
;

<-------

Arvalo, Vctor Roberti, Martn

123 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF STATUS, RP0 ;Bank 3
BSF EECON1, EEPGD ;Point to Program memory
BSF EECON1, RD ;Start read operation
NOP ;Required two NOPs
NOP ;
NOP
NOP
BCF STATUS, RP0 ;Bank 2
ADDLW

0x00

;Esto es para limpiar el CARRY q puede afectar a RLF DATAH, F

MOVF EEDATH,W ;DATAH = EEDATH


MOVWF DATAH ;
RLF DATAH, F
MOVF EEDATA, W ;DATAL = EEDATA
MOVWF DATAL ;
RLF

DATAL, F

BTFSC STATUS, C
INCF DATAH, F
RRF

DATAL, F

BSF STATUS, RP1


BCF STATUS, RP0
MOVLW 0x0F
MOVWF EEADR
MOVLW 0x04
MOVWF EEADRH
BSF STATUS, RP0
BSF EECON1, EEPGD
BSF EECON1, RD
NOP
NOP
NOP
BCF STATUS, RP0 ;Bank 2
MOVF
SUBLW

EEDATH,W
0x17

BTFSC
GOTO

STATUS, Z
$+9

MOVLW
MOVWF

0X01
PCL

MOVF
SUBLW

EEDATA,W
0x8C

BTFSC
GOTO

STATUS, Z
$+3

MOVLW
MOVWF

0X02
PCL

MOVLW

0x7F

ANDWF

DATAL, F

INCF

ADDRL, F

;Esto lo puse por si ADDRL pasa de FF


BTFSC STATUS, Z
INCF
ADDRH, F
;Valor de retorno, si STRLEN==0,
;se termino de leer la cantidad de caracteres
;especificados.
MOVF STRLEN, W

Arvalo, Vctor Roberti, Martn

124 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

BCF STATUS, RP1

;Bank 0

RETURN

SENDSTR
;/*****
;( direccion, cantidad )

SendStr()

*******/

; Previamente cargar direccion y cantidad como se muestra abajo !!!


; Si cantidad=0 no tiene en cuenta este parametro
; y se toma como fin de la cadena cuando encuentra DATAH=0x00
; Si cantidad !=0 termina con la primer condicion que se de

BCF
BCF

STATUS, RP0
STATUS, RP1

HOY_1
;Devuelve en W el nuevo valor de STRLEN
;y en DATAH y DATAL los caracteres
CALL

LEER_PROG_MEM

;Cuando encuentre 0 termina


MOVF DATAH, W
BTFSC STATUS, Z
RETURN
MOVLW
MOVWF

0X45
FSR

MOVLW
SUBWF
BTFSC
NOP

0X24
SENDDIF, W
STATUS, C

;Inicio del buffer

;transmisin normal (comandos)


MOVF
DATAH, W
MOVWF
INDF
CALL
SENDCHAR
MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

MOVLW
SUBWF
BTFSC
CALL

0X1E
SENDDIF, W
STATUS, C
SENDDATA

MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

MOVLW
SUBWF
BTFSC
NOP

0X24
SENDDIF, W
STATUS, C

;Cuando encuentre 0 termina


MOVF
DATAL, W
BTFSC
STATUS, Z
RETURN
;SENDCHAR DATAL
;-------MOVLW
0X45

;Inicio del buffer

Arvalo, Vctor Roberti, Martn

125 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVWF

FSR

;Transmision normal (comandos)


MOVF
DATAL, W
MOVWF
INDF
CALL
SENDCHAR
MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

MOVLW
SUBWF
BTFSC
NOP

0X24
SENDDIF, W
STATUS, C

MOVLW
SUBWF
BTFSC
CALL

0X1E
SENDDIF, W
STATUS, C
SENDDATA

MOVF
BTFSC
MOVF

INDF, W
STATUS, Z
INDF, W

MOVLW
SUBWF
BTFSC
NOP

0X24
SENDDIF, W
STATUS, C

GOTO
HOY_1
;---------------------------------

STRCMP
;Debo pasarle la direccion de Program Memory
;donde esta el string que tengo q comparar
;con los datos que llegaron
CLRF
INDEX
DECF
INDEX, F
CONTINUAR
INCF

INDEX, F

MOVLW 0xA0
ADDWF INDEX, W
MOVWF FSR
CALL

;Inicio del Buffer

LEER_PROG_MEM

;Cuando llega a 0x00 son iguales


;MOVLW
0x00
MOVF
DATAH, W
BTFSC
STATUS, Z
GOTO
IGUALES
;Comparo los 2 primeros caracteres
MOVF
DATAH, W
SUBWF
INDF, W
BTFSS
STATUS, Z
GOTO
DISTINTOS
MOVF
BTFSC
GOTO

DATAL, W
STATUS, Z
CONTINUAR

INCF

INDEX, F

MOVLW 0xA0
ADDWF INDEX, W
MOVWF FSR

;Inicio del Buffer

Arvalo, Vctor Roberti, Martn

126 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVF
SUBWF
BTFSS
GOTO

DATAL, W
INDF, W
STATUS, Z
DISTINTOS

GOTO

CONTINUAR

RETLW

0x00

RETLW

0x01

IGUALES
DISTINTOS

MAIN_MAIN

ATCMD
;------ Envio "AT" ------;Cargo la direccion donde comienzan los datos guardados
;en la memoria de programa
MOVLW
MOVWF
MOVLW
MOVWF

CMD_AT_H
ADDRH
CMD_AT_L
ADDRL

CLRF
CLRF

BUFFERINDEX
REPLY_G20

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

0x1A
ADDRH
0x10
ADDRL

CLRF
CLRF

BUFFERINDEX
REPLY_G20

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

CMD_AT_H
ADDRH
CMD_AT_L
ADDRL

CLRF
CLRF

BUFFERINDEX
REPLY_G20

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

CMD_CMEE_H
ADDRH
CMD_CMEE_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

MOVLW
MOVWF
MOVLW
MOVWF

CMD_MIPCLOSE_H
ADDRH
CMD_MIPCLOSE_L
ADDRL

CALL
CALL

SENDSTR
SENDDATA

Arvalo, Vctor Roberti, Martn

127 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

BSF STATUS, RP1


BCF STATUS, RP0
MOVLW 0x1A
MOVWF EEADR
MOVLW 0x12
MOVWF EEADRH
BSF STATUS, RP0
BSF EECON1, EEPGD
BSF EECON1, RD
NOP
NOP
NOP
BCF STATUS, RP0 ;Bank 2
MOVF
SUBLW

EEDATH,W
0x3F

BTFSC
GOTO

STATUS, Z
$+9

MOVLW
MOVWF

0X01
PCL

MOVF
SUBLW

EEDATA,W
0xFF

BTFSC
GOTO

STATUS, Z
$+3

MOVLW
MOVWF

0X02
PCL

MOVLW

0x7F

;Importante: debo poner el contador de muestras a enviar por MIPSEND en cero


;Antes de habilitar el conversor
CLRF
CONTADOR

BSF
BSF
BSF
BCF
BSF

STATUS, RP0
PIE1, TMR1IE
PIE1, ADIE
STATUS, RP0
T1CON, TMR1ON

BSF
BSF

INTCON, TMR0IE
INTCON, GIE

RETURN

;RUTINA DE RETARDO
;**********************
WAIT_DISPLAY
MOVLW
0x01
MOVWF
VD1
SIGA1111 MOVLW
0x01
MOVWF
VD2
SIGA2222 MOVLW
0x01
MOVWF
VD3
SIGA3333 DECFSZ
VD3, F
GOTO
SIGA3333
DECFSZ
VD2, F
GOTO
SIGA2222
DECFSZ
VD1, F

Arvalo, Vctor Roberti, Martn

128 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
GOTO
SIGA1111
RETURN
;***********************

;------------------------------------ DISPLAY_INI DISPLAY_INI DISPLAY_INI --------------------------------DISPLAY_INI


;Controls the display on or off.
;Display RAM data and internal
;status is not affected.
;0: OFF. 1:ON
BSF
CALL
CALL
CALL
BCF
CALL
CALL
CALL
BSF
CALL
CALL

DISPLAY_CTRL, RST
WAIT_DISPLAY
WAIT_DISPLAY
WAIT_DISPLAY
DISPLAY_CTRL, RST
WAIT_DISPLAY
WAIT_DISPLAY
WAIT_DISPLAY
DISPLAY_CTRL, RST
WAIT_DISPLAY
WAIT_DISPLAY

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

BCF
BSF

DISPLAY_CTRL, CS1
DISPLAY_CTRL, CS2

MOVLW
MOVWF

0x3F
DISPLAY_DATA

BSF
CALL
BCF
CALL

DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY

BCF
BSF

DISPLAY_CTRL, CS2
DISPLAY_CTRL, CS1

MOVLW
MOVWF

0x3F
DISPLAY_DATA

BSF
CALL
BCF
CALL

DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY

;Indicates the display data RAM


;displayed at the top of the
;screen.
MOVLW
0xC0
MOVWF
DISPLAY_DATA
BCF
BCF
BSF
CALL
BCF
CALL

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY

BSF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

CLRF

YADDRESS

CALL

CLEAR

Arvalo, Vctor Roberti, Martn

129 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

CLRF

YADDRESS

RETURN
;------------------------------------ DISPLAY_INI DISPLAY_INI DISPLAY_INI ---------------------------------

;------------------------------------------- DISPLAY DISPLAY DISPLAY ---------------------------DISPLAY


BTFSC
GOTO

GENAUX, PAUSA
FIN_TRANSFORMACION_DISPLAY

BTFSS
GOTO
BTFSS
RETURN
BTFSS
RETURN

GENAUX, VELOCIDAD
$+3
BARRIDO, 1

MOVF
SUBLW
MOVWF

MUESTRATX, W
0XFF
MUESTRATX

MOVF
MOVWF

MUESTRATX, W
PAGINA_ACTUAL

BARRIDO, 0

RRF
RRF
RRF
RRF
RRF
MOVLW
ANDWF

PAGINA_ACTUAL, F
PAGINA_ACTUAL, F
PAGINA_ACTUAL, F
PAGINA_ACTUAL, F
PAGINA_ACTUAL, F
0X07
PAGINA_ACTUAL, F

;Obtengo el resto de la divisin de MUESTRATX con 32 y lo guardo en MUESTRATX


MOVLW
0x1F
;00011111
ANDWF
MUESTRATX, F
MOVLW
ADDWF

0x04
MUESTRATX, F

;Divido por 4 para ajustarme al rango 32 / 8 pixels = 4, recordar q 32 viene de 256 / 8 paginas
RRF
MUESTRATX, F
RRF
MUESTRATX, F
MOVLW
0x0F
;00001111 por si hay acarreo
ANDWF
MUESTRATX, F
;Comienzo transformacion
MOVLW
MOVWF
MOVLW
ADDWF

0x01
PIXEL_ACTUAL
0xFF
PIXEL_ACTUAL, F

;PIXEL se pone en cero y el bit de Carry en 1

TRANSFORMACION_DISPLAY
MOVF
MUESTRATX, F
BTFSC
STATUS, Z
GOTO
FIN_TRANSFORMACION_DISPLAY
DECF
RLF
GOTO

MUESTRATX, F
PIXEL_ACTUAL, F
TRANSFORMACION_DISPLAY

FIN_TRANSFORMACION_DISPLAY

;Para graficar 2 segndos por pantalla a 256 MUESTRATXs por seg, como tengo 128 pixels horizontales, tengo
;q enviar una MUESTRATX cada 4

Arvalo, Vctor Roberti, Martn

130 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;--->
CALL
;--->

CLEAR_COL

MOVF
MOVWF

PAGINA_ACTUAL, W
PAGINA_ANTERIOR

MOVF
MOVWF

PIXEL_ACTUAL, W
PIXEL_ANTERIOR

INCF

YADDRESS, F

MOVLW
SUBWF
BTFSC
CALL

0x40
;64
YADDRESS, W
STATUS, Z
CAMBIAR_PAGINA

MOVF
MOVWF

YADDRESS, W
DISPLAY_DATA

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

BCF
BSF

DISPLAY_DATA, 7
DISPLAY_DATA, 6

CALL
BSF
CALL
BCF

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

RETURN
;------------------------------------------------------

CLEAR
MOVLW
MOVWF

0X08
PAGINA

CLRF

YADDRESS

BCF
BSF

DISPLAY_CTRL, CS2
DISPLAY_CTRL, CS1

CLEAR_BUCLE
MOVF
MOVWF

YADDRESS, W
DISPLAY_DATA

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

BCF
BSF

DISPLAY_DATA, 7
DISPLAY_DATA, 6

CALL
BSF
CALL
BCF

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

DECF

PAGINA, F

MOVF
MOVWF

PAGINA, W
DISPLAY_DATA

Arvalo, Vctor Roberti, Martn

131 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF
BCF
BSF
BSF
BSF

DISPLAY_DATA, 7
DISPLAY_DATA, 6
DISPLAY_DATA, 5
DISPLAY_DATA, 4
DISPLAY_DATA, 3

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

CALL
BSF
CALL
BCF

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

MOVLW
MOVWF

0X00
PIXEL

MOVF
MOVWF

PIXEL, W
DISPLAY_DATA

BSF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

CALL
BSF
CALL
BCF

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

MOVF
BTFSS
GOTO
INCF
MOVLW
MOVWF

PAGINA, W
STATUS, Z
CLEAR_BUCLE
YADDRESS, F
0X08
PAGINA

CALL

WAIT_DISPLAY

MOVLW
SUBWF
BTFSS
GOTO
CLRF
CALL
BTFSS
GOTO

0x40
;64
YADDRESS, W
STATUS, Z
CLEAR_BUCLE
YADDRESS
CAMBIAR_PAGINA
DISPLAY_CTRL, CS1
CLEAR_BUCLE

RETURN

CLEAR_COL
MOVLW
MOVWF

0X08
PAGINA

CLEAR_COL_BUCLE
;Cargo las variables
MOVF
PAGINA_ANTERIOR, W
MOVWF
PAGINA_0
MOVF
MOVWF

PAGINA_ACTUAL, W
PAGINA_1

MOVF
MOVWF

PIXEL_ANTERIOR, W
PIXEL_0

MOVF
MOVWF

PIXEL_ACTUAL, W
PIXEL_1

MOVF
MOVWF

YADDRESS, W
DISPLAY_DATA

Arvalo, Vctor Roberti, Martn

132 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

BCF
BSF

DISPLAY_DATA, 7
DISPLAY_DATA, 6

CALL
BSF
CALL
BCF

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

DECF

PAGINA, F

MOVF

PAGINA, W

MOVWF

DISPLAY_DATA

BSF
BCF
BSF
BSF
BSF

DISPLAY_DATA, 7
DISPLAY_DATA, 6
DISPLAY_DATA, 5
DISPLAY_DATA, 4
DISPLAY_DATA, 3

BCF
BCF

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE

CALL
BSF
CALL
BCF
NOP

WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

;******** INTERPOL *********


;Veo si esta pagina q estoy procesando es igual a la de la MUESTRATX actual
MOVF
PAGINA, W
SUBWF
PAGINA_1, W
BTFSC
STATUS, Z
GOTO
INTERPOL_PAG_1
;Veo si esta pagina q estoy procesando es igual a la de la MUESTRATX anterior
MOVF
PAGINA, W
SUBWF
PAGINA_0, W
BTFSC
STATUS, Z
GOTO
INTERPOL_PAG_0
;Veo si esta pagina q estoy procesando es mayor a la de la MUESTRATX anterior
;y menor a la actual
MOVF
PAGINA, W
SUBWF
PAGINA_0, W
BTFSC
STATUS, C
GOTO
PAGINA_ES_MENOR_QUE_PAGINA_0
MOVF
SUBWF
BTFSC
GOTO

PAGINA_1, W
PAGINA, W
STATUS, C
INTERPOL_PAG_2_END

MOVLW
MOVWF

0xFF
PIXEL_1

GOTO

INTERPOL_PAG_1_END

PAGINA_ES_MENOR_QUE_PAGINA_0
;Veo si esta pagina q estoy procesando es menor a la de la MUESTRATX anterior
;y mayor a la actual
MOVF
PAGINA, W
SUBWF
PAGINA_1, W

Arvalo, Vctor Roberti, Martn

133 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BTFSC
GOTO

STATUS, C
INTERPOL_PAG_2_END

MOVLW
MOVWF

0xFF
PIXEL_1

GOTO

INTERPOL_PAG_1_END

;La pagina q estoy procesando es igual a la de la MUESTRATX actual


INTERPOL_PAG_1
MOVF
PAGINA_0, W
SUBWF
PAGINA_1, W
BTFSC
STATUS, Z
GOTO
PAG_1_IGUAL_PAG_0
BTFSS
STATUS, C
GOTO
PAG_1_MENOR_PAG_0
GOTO
PAG_1_MAYOR_PAG_0
PAG_1_MAYOR_PAG_0
CLRF
ADDLW
RLF
MOVLW
SUBWF
GOTO

W
0x00
PIXEL_1, F
0X01
PIXEL_1, F
INTERPOL_PAG_1_END

PAG_1_MENOR_PAG_0
MOVLW
SUBWF
COMF
GOTO

0X01
PIXEL_1, F
PIXEL_1, F
INTERPOL_PAG_1_END

PAG_1_IGUAL_PAG_0
MOVF
SUBWF
BTFSC
GOTO
BTFSS
GOTO
GOTO

PIXEL_0, W
PIXEL_1, W
STATUS, Z
PIX_1_IGUAL_PIX_0
STATUS, C
PIX_1_MENOR_PIX_0
PIX_1_MAYOR_PIX_0

PIX_1_MAYOR_PIX_0
;Pretendo graficar una lnea entre los dos pixels, pero
;sin el pxel a la altura del anterior para que parezca ms suave
;Esto se logra reemplazando los ceros por unos en los 2 pixels y restando entre si
;PIXEL_1 = 10000 -> rotando izquierda y restando 1 -> 11111
;PIXEL_0 = 00010 -> rotando izquierda y restando 1 -> 00011
;Restando queda 11100
CLRF
W
ADDLW
0x00
RLF
PIXEL_1, F
MOVLW
0X01
SUBWF
PIXEL_1, F
CLRF
ADDLW
RLF
MOVLW
SUBWF

W
0x00

MOVF
SUBWF
GOTO

PIXEL_0, W
PIXEL_1, F
INTERPOL_PAG_1_END

PIXEL_0, F
0X01
PIXEL_0, F

PIX_1_MENOR_PIX_0
;Pretendo graficar una lnea entre los dos pixels, pero
;sin el pxel a la altura del anterior para que parezca ms suave
;Esto se logra restando los 2 valores
;es decir, PIXEL_0 - PIXEL_1 = Valor_A_Graficar
;si PIXEL_0 = 1000 y PIXEL_1 = 0010 quiero graficar 0110

Arvalo, Vctor Roberti, Martn

134 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
;restando entre los dos: 1000 - 0010 = 0110
MOVF
PIXEL_1, W
SUBWF
PIXEL_0, W
MOVWF
PIXEL_1
GOTO
INTERPOL_PAG_1_END

INTERPOL_PAG_0
NOP
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MOVF
PAGINA_0, W
SUBWF
PAGINA_1, W
BTFSS
STATUS, C
GOTO
B_PAG_1_MENOR_PAG_0
GOTO
B_PAG_1_MAYOR_PAG_0
B_PAG_1_MAYOR_PAG_0
CLRF
W
ADDLW
0x00
RLF
PIXEL_0, F
MOVLW
0X01
SUBWF
PIXEL_0, F
COMF
PIXEL_0, F
GOTO
INTERPOL_PAG_0_END
B_PAG_1_MENOR_PAG_0
;CLRF
W
;ADDLW
0x00
;RLF
PIXEL_0, F
MOVLW
0X01
SUBWF
PIXEL_0, F
GOTO
INTERPOL_PAG_0_END
INTERPOL_PAG_0_END
MOVF
PIXEL_0, W
MOVWF
PIXEL_1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PIX_1_IGUAL_PIX_0
NOP
INTERPOL_PAG_1_END
goto
$+3
INTERPOL_PAG_2_END
CLRF
PIXEL_1
NOP
NOP
;******** INTERPOL END *********

;Esto hace los puntitos cada 8 pixels


;-----------------------------------MOVLW
SUBWF
BTFSS
GOTO
MOVLW

0X03
PAGINA, W
STATUS, Z
SIG_GRILLA
0X07

ANDWF
BTFSC
GOTO
MOVLW
GOTO
BSF

YADDRESS, W
STATUS, Z
$+3
0X00
$+2
PIXEL_1, 7

GOTO

FIN_GRILLA

SIG_GRILLA

Arvalo, Vctor Roberti, Martn

135 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVLW
SUBWF
BTFSS
GOTO

0X01
PAGINA, W
STATUS, Z
FIN_GRILLA

MOVLW
ANDWF
BTFSC
GOTO
MOVLW
GOTO
BSF

0X07
YADDRESS, W
STATUS, Z
$+3
0X00
$+2
PIXEL_1, 7

FIN_GRILLA

;Indicaciones de estado en el display


;-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- DDD
BCF

GENAUX, DISPMSG

BTFSS
GOTO

DISPLAY_CTRL, CS1
FIN_MENSAJES

BTFSC
CLRF

GENAUX, PAUSA
PIXEL_1

MOVLW
SUBWF
BTFSS
GOTO

0X07
PAGINA, W
STATUS, Z
FIN_MENSAJES

MOVLW
MOVWF

0x00
PIXEL_1

BTFSS
GOTO

GENAUX, VELOCIDAD
VELOCIDAD_50

;2
;MOVLW
MOVF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X00
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xE8
PIXEL_1

;2
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X01
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

;2
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X02
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO

0X03
YADDRESS, W
STATUS, Z
$+4

;-------

Arvalo, Vctor Roberti, Martn

136 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF
MOVLW
MOVWF

0x00
PIXEL_1

GENAUX, DISPMSG

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X04
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X05
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X06
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xE8
PIXEL_1

GOTO

FIN_VELOCIDAD_50

VELOCIDAD_50
;5
;MOVLW
MOVF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X00
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X01
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X02
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xE8
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X03
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;0
MOVLW

0X04

Arvalo, Vctor Roberti, Martn

137 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

;0
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X05
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x88
PIXEL_1

;0
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X06
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

FIN_VELOCIDAD_50

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X07
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X08
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF0
PIXEL_1

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X09
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x20
PIXEL_1

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF0
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

Arvalo, Vctor Roberti, Martn

138 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0C
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF0
PIXEL_1

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0D
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x20
PIXEL_1

;M
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0E
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF0
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X0F
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;-------

;------- PAUSA PAUSA


BTFSS
GOTO

GENAUX, PAUSA
FIN_PAUSA

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X10
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X11
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X12
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

Arvalo, Vctor Roberti, Martn

139 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

;PAUSA
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X13
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xFC
PIXEL_1

;PAUSA
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X14
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xFC
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X15
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;PAUSA
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X16
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xFC
PIXEL_1

;PAUSA
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X17
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xFC
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X18
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X19
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

BTFSS
GOTO

G20STATUS, REGISTRADO
FIN_REGISTRADO

FIN_PAUSA
;-------

Arvalo, Vctor Roberti, Martn

140 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x08
PIXEL_1

;
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1C
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x18
PIXEL_1

;
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1D
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

;
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1E
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x18
PIXEL_1

;
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X1F
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x08
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X20
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

FIN_REGISTRADO

BTFSS
GOTO

G20STATUS, PUERTOABIERTO
FIN_PUERTOABIERTO

; ESPACIO
MOVLW
SUBWF

0X21
YADDRESS, W

Arvalo, Vctor Roberti, Martn

141 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BTFSS
GOTO
BSF
MOVLW
MOVWF

STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X22
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X23
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

; IP
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X24
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x70
PIXEL_1

; IP
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X25
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xD8
PIXEL_1

; IP
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X26
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x70
PIXEL_1

; IP
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X27
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X28
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

FIN_PUERTOABIERTO
BTFSS

G20STATUS, HABILITARTX

Arvalo, Vctor Roberti, Martn

142 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
GOTO

FIN_TRANSMITIENDO

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X29
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X2A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; Transmitiendo
MOVLW
0X2B
SUBWF
YADDRESS, W
BTFSS
STATUS, Z
GOTO
$+4
BSF
GENAUX, DISPMSG
MOVLW
0xA0
MOVWF
PIXEL_1
; Transmitiendo
MOVLW
0X2C
SUBWF
YADDRESS, W
BTFSS
STATUS, Z
GOTO
$+4
BSF
GENAUX, DISPMSG
MOVLW
0xD0
MOVWF
PIXEL_1
; Transmitiendo
MOVLW
0X2D
SUBWF
YADDRESS, W
BTFSS
STATUS, Z
GOTO
$+4
BSF
GENAUX, DISPMSG
MOVLW
0xE0
MOVWF
PIXEL_1
; Transmitiendo
MOVLW
0X2E
SUBWF
YADDRESS, W
BTFSS
STATUS, Z
GOTO
$+4
BSF
GENAUX, DISPMSG
MOVLW
0xD0
MOVWF
PIXEL_1
; Transmitiendo
MOVLW
0X2F
SUBWF
YADDRESS, W
BTFSS
STATUS, Z
GOTO
$+4
BSF
GENAUX, DISPMSG
MOVLW
0xA0
MOVWF
PIXEL_1

FIN_TRANSMITIENDO

; ESPACIO
MOVLW
SUBWF
BTFSS

0X30
YADDRESS, W
STATUS, Z

Arvalo, Vctor Roberti, Martn

143 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
GOTO
BSF
MOVLW
MOVWF

$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X31
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X32
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X33
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X34
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x00
PIXEL_1

;x
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X35
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA0
PIXEL_1

;x
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X36
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x40
PIXEL_1

;x
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X37
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA0
PIXEL_1

; ESPACIO
MOVLW
SUBWF
BTFSS
GOTO

0X38
YADDRESS, W
STATUS, Z
$+4

Arvalo, Vctor Roberti, Martn

144 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF
MOVLW
MOVWF

GENAUX, DISPMSG
0x00
PIXEL_1

;X0.5
;-------------------------------BTFSC
CONTGAIN, 0
GOTO
FIN_X0.5
BTFSC
CONTGAIN, 1
GOTO
FIN_X0.5
;0
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X39
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

;0
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x88
PIXEL_1

;0
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

; PUNTO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3C
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x80
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3D
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3E
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF

0X3F
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG

Arvalo, Vctor Roberti, Martn

145 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVLW
MOVWF

0xE8
PIXEL_1

GOTO

FIN_X2

FIN_X0.5

;X1
;-------------------------------BTFSS
CONTGAIN, 0
GOTO
FIN_X1
BTFSC
CONTGAIN, 1
GOTO
FIN_X1

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X39
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x88
PIXEL_1

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8
PIXEL_1

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x80
PIXEL_1

GOTO

FIN_X2

FIN_X1

;X1.5
;-------------------------------BTFSC
CONTGAIN, 0
GOTO
FIN_X1.5
BTFSS
CONTGAIN, 1
GOTO
FIN_X1.5

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X39
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x88
PIXEL_1

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW

0X3A
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xF8

Arvalo, Vctor Roberti, Martn

146 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
MOVWF

PIXEL_1

;1
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x80
PIXEL_1

; PUNTO
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3C
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0x80
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3D
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3E
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xA8
PIXEL_1

;5
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3F
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xE8
PIXEL_1

GOTO

FIN_X2

FIN_X1.5
;X2
;-------------------------------BTFSS
CONTGAIN, 0
GOTO
FIN_X2
BTFSS
CONTGAIN, 1
GOTO
FIN_X2

;2
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X39
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xE8
PIXEL_1

;2
MOVLW
SUBWF
BTFSS
GOTO

0X3A
YADDRESS, W
STATUS, Z
$+4

Arvalo, Vctor Roberti, Martn

147 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG
BSF
MOVLW
MOVWF

0xA8
PIXEL_1

GENAUX, DISPMSG

;2
MOVLW
SUBWF
BTFSS
GOTO
BSF
MOVLW
MOVWF

0X3B
YADDRESS, W
STATUS, Z
$+4
GENAUX, DISPMSG
0xB8
PIXEL_1

FIN_X2
FIN_MENSAJES
;-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

;Aca PIXEL_1 no es necesariamente un solo pxel, pueden ser varios


;segun las operaciones anteriores
;----- DDD
;BCF

GENAUX, DISPMSG

BTFSS
GOTO
BTFSS
GOTO
;--------

GENAUX, PAUSA
$+3
GENAUX, DISPMSG
SALTO_PAUSA

MOVF
MOVWF

PIXEL_1, W
DISPLAY_DATA

BSF
BCF
CALL
BSF
CALL
BCF
NOP

DISPLAY_CTRL, DATA_NEGINSTR
DISPLAY_CTRL, READ_NEGWRITE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE
WAIT_DISPLAY
DISPLAY_CTRL, ENABLE

SALTO_PAUSA
MOVF
BTFSS
GOTO

PAGINA, W
STATUS, Z
CLEAR_COL_BUCLE

RETURN

CAMBIAR_PAGINA
;Esto Intercambia los bits CS1 con CS2
BTFSS
DISPLAY_CTRL, CS1
BSF
DISPLAY_CTRL, CS1
BTFSS
DISPLAY_CTRL, CS2
BCF
DISPLAY_CTRL, CS1
BCF
BTFSS
BSF

DISPLAY_CTRL, CS2
DISPLAY_CTRL, CS1
DISPLAY_CTRL, CS2

CLRF
RETURN

YADDRESS

;------------------------------------------- DISPLAY DISPLAY DISPLAY ---------------------------END


;

************************* FIN PROGRAMA ASM ***********************************

Arvalo, Vctor Roberti, Martn

148 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Anexo VII
Recursos

Arvalo, Vctor Roberti, Martn

149 - 151

UNIVERSIDAD TECNOLGICA NACIONAL


FACULTAD REGIONAL SAN NICOLS
Proyecto Final Ingeniera Electrnica
Telemetra ECG

Anexo VIII
Esquema electrnico completo

Arvalo, Vctor Roberti, Martn

150 - 151

Você também pode gostar