You are on page 1of 148

Facultad de Ingeniera Elctrica

Especialidad de Ingeniera en Telecomunicaciones


y Electrnica

Trabajo de Diploma
Diseo de una sonda de nivel con
compensacin de la presin atmosfrica
Autor:
Alimed Celecia Ramos
Tutor:
Ing. Arturo Hernndez Gonzlez
Cotutores:
Dr.C Jorge Ramrez Beltrn
Ing. Luis Ernesto Farah Fernndez
2013

Pgina |i

Agradecimientos
En tan poco espacio es imposible mencionar a todas las personas que de
alguna forma u otra influyeron en mi formacin como profesional y como
persona. Sean extensivos estos agradecimientos a quienes no se encuentren
en estas letras y sin embargo hayan sido importantes para m.

A mi padre, ejemplo para m en todos los aspectos.


A mi abuelo, por inculcarme las ansias de conocimiento desde pequeo.
A mi familia, comenzando por mi mam, mis abuelas, mi hermano, tos y
primos por su constante preocupacin y esfuerzo para que yo llegara a donde
estoy hoy.
Al MsC. Daniel Vega, por su desinteresada ayuda y compartir sus
conocimientos que tan importantes fueron.
A Patricia, por estar al lado mo en los momentos buenos y en los no tan
buenos.
A mi amigo Dariel, que nadie lo olvida.
A mi amigo Amado, que me acompa a travs de incontables vicisitudes y
aport su apoyo en todo momento.
A mis amigos Amores, Orrio, Tagle y Mandy, que aunque no hayan
terminado son triunfadores en la vida.
A todos mis compaeros de la casa de estudio: Sydney, Yasmany, Camilo,
Mejas. Nos reuniremos de nuevo pero no para quemarnos las pestaas.
A mis compaeros de estudio del 51: Waldo, Claudia, Chuco, Tony, Juan
Carlos, Karel, en fin, por tantos aos juntos.
Al piquete del Vedado, por ayudarme a relajar todos los fines de semana.
A mi tutor Arturo y los cotutores Luis Ernesto y Jorge, por guiarme y por todo
el tiempo que les rob para mi provecho.
Al Ing Pedro I. Brugus, Ing Javier M. Valds e Ing. Daniel Campillo, por su
colaboracin en esta tesis.

P g i n a | ii

A mi padre

P g i n a | iii

Declaracin de autora
Declaro que soy el nico autor de este trabajo, del cual entrego copia al
Departamento de Telecomunicaciones y Telemtica de la Facultad de
Ingeniera Elctrica del Instituto Superior Politcnico Jos Antonio Echeverra,
para que pueda ser utilizado en el desarrollo de otros trabajos.
Y para que haga constar se firma el presente documento:

__________________
Alimed Celecia Ramos

Soy estudiante de 5to ao de Ingeniera en Telecomunicaciones y


Electrnica, y aspirante al ttulo universitario.

P g i n a | iv

Resumen
El Instituto Nacional de Recursos Hidrulicos (INRH) se encuentra
desarrollando varios proyectos en nuestro pas que tienen como objetivo
automatizar

las

mediciones

de

las

principales

cuencas

hidrogrficas

nacionales. Para lograr este fin es necesario utilizar una gran variedad de
instrumentos de medicin. Mediante las sondas de nivel se puede obtener el
nivel lquido de pozos, cisternas o cualquier contenedor en el cual se encuentre
almacenado algn lquido.
Las sondas de nivel que actualmente son utilizadas en el pas son
importadas a muy altos precios ya que en nuestro pas no se fabrican. Adems,
cuando se daa alguna de stas que se importa no es posible repararla porque
no estn disponibles los detalles de su diseo. Debido a esto el Grupo de
Instrumentacin Electrnica y Sensores Inteligentes (IESI) del Centro de
Investigaciones Hidrulicas (CIH) decidi desarrollar una sonda de nivel similar
a las existentes en el mercado.
Este trabajo trata acerca de las sondas de nivel que emplean el principio
hidrosttico. Se analizan los aspectos tericos relacionados con estos
dispositivos y se caracterizan algunas sondas de nivel comerciales.
Utilizando los conocimientos adquiridos durante el transcurso de la carrera,
se dise una sonda de nivel con compensacin de la presin atmosfrica. En
este trabajo se exponen las caractersticas y el funcionamiento de cada bloque
funcional del diseo y el procesamiento de las seales para realizar la
compensacin. Tambin se explica el funcionamiento del dispositivo en el
modo normal de operacin y el diseo e implementacin de los firmwares que
lo definen.
Utilizando varios software de simulacin como IAR, PSPICE y Proteus se
realizaron las simulaciones de las partes esenciales del dispositivo,
comprobando el correcto funcionamiento tanto del hardware como el firmware
desarrollados. Tambin se realiz con la ayuda del Instituto de Central de
Investigacin Digital (ICID) una prueba para comprobar la validez de la
comunicacin digital. En el captulo final se exponen los resultados obtenidos.

Pgina |v

Abstract
The Instituto Nacional de Recursos Hidrulicos (INRH) is developing several
projects in our country that have as objective to automate the measurements of
major national watersheds. By level probes can get the fluid level of wells,
cisterns or any container in which is stored any liquid.
Level probes that are currently used in the country are imported at high prices
because in our country no longer manufactured. Furthermore, when some of
this imported ones are damaged is not possible fixit because the details of the
design are not available. Because of this the Grupo de Instrumentacin
Electrnica y Sensores Inteligentes (IESI) of Centro de Investigaciones
Hidrulicas (CIH) decided to develop a level probe similar to those existing in
the market.
This work is about level probes that employs the hydrostatic principle. We
analyze the theoretical aspects of these devices and are characterized some
commercial level probes.
Using the knowledge acquired during the course of the degree, we designed
a level probe with atmospheric pressure compensation. In this paper we
describe the characteristics and operation of each functional block of the design
and signal processing for compensation. It also explains the operation of the
device in the normal mode of operation and the design and implementation of
the firmwares that define it.
Using various simulation softwares such as IAR, PSPICE and Proteus were
performed simulations of the essential parts of the device, checking the correct
operation of the hardware and the firmware developed. Also was performed
with the help of the Instituto Central de Investigacin Digital (ICID) a test to
check the validity of the digital communication. In the final chapter the obtained
results are exposed.

P g i n a | vi

ndice
INTRODUCCIN ................................................................................................................................. 1
CAPTULO 1 ESTUDIO TERICO DE LAS SONDAS DE NIVEL ................................................................. 6
1.1 INTRODUCCIN .................................................................................................................................. 6
1.2 MEDICIN DE NIVEL ............................................................................................................................ 6
1.2.1 Principio capacitivo ................................................................................................................ 6
1.2.2 Principio resistivo ................................................................................................................... 7
1.2.3 Principio ultrasnico ............................................................................................................... 7
1.2.4 Principio de radar ................................................................................................................... 8
1.2.5 Principio de lser .................................................................................................................... 8
1.2.6 Principio de los flotadores ...................................................................................................... 8
1.2.7 Principio hidrosttico.............................................................................................................. 8
1.3 SENSORES PIEZORRESISTIVOS ................................................................................................................. 9
1.3.1 Puente de Wheatstone ......................................................................................................... 10
1.4 CLASIFICACIN DE LOS SENSORES DE PRESIN PIEZORRESISTIVOS ................................................................ 11
1.5 CARACTERSTICAS NO DESEADAS DE LOS SENSORES DE PRESIN PIEZORRESISTIVOS Y SUS MTODOS DE
COMPENSACIN .......................................................................................................................................... 12
1.6 TECNOLOGA CHIP IN OIL.................................................................................................................... 13
1.7 CLASIFICACIN DE MEDIDORES DE NIVEL ................................................................................................ 13
1.8PROBLEMAS DE LAS SONDAS DE NIVEL SUMERGIBLES Y SU CORRECCIN ........................................................ 17
1.9 SALIDAS DE LAS SONDAS DE NIVEL ........................................................................................................ 18
1.9.1 Salidas analgicas ................................................................................................................ 18
1.9.2 Salidas digitales .................................................................................................................... 18
1.10 ANLISIS DE SONDAS DE NIVEL EXISTES EN EL MERCADO .......................................................................... 19
1.10.1 Medidor de nivel de radar VEGAPULS WL61 de VEGA ....................................................... 19
1.10.2 Medidor de nivel capacitivo Liquicap T FMI21 de Endress + Hauser .................................. 20
1.10.3 Sonda de nivel sumergible con sensor de presin PS3417 de IFM ..................................... 20
1.10.4 Sonda de nivel sumergible con salida digital SDI-12 OTT PLS de OTT ................................ 21
1.10.5 Sonda de nivel sumergible con sensor de presin DCX-22 AA de Keller ............................. 21
1.11 CARACTERSTICAS DE LA SONDA DE NIVEL A DISEAR .............................................................................. 22
1.12 CONCLUSIONES .............................................................................................................................. 23
CAPTULO 2 HARDWARE DE LA SONDA DE NIVEL ............................................................................ 24
2.1 INTRODUCCIN ................................................................................................................................ 24
2.2 DIAGRAMA EN BLOQUES DE LA SONDA DE NIVEL ...................................................................................... 24
2.3 SELECCIN DEL SENSOR DE PRESIN ...................................................................................................... 25
2.4 SELECCIN DEL PDS .......................................................................................................................... 26
2.5 DISEO DE LA FUENTE DE ALIMENTACIN .............................................................................................. 29
2.6 DISEO DEL LAZO DE SALIDA 4-20 MA .................................................................................................. 30
2.6.1 Seleccin del amplificador operacional ................................................................................ 31
2.6.2 Ecuaciones del lazo de corriente 4-20 mA ............................................................................ 32
2.6.3 Clculo de las resistencias Rof y Rg ...................................................................................... 33
2.6.4 Seleccin del transistor ......................................................................................................... 34
2.6.5 Clculo de las resistencias Rb y Rc ........................................................................................ 34
2.7 DISEO DE LA INTERFAZ DE SALIDA DIGITAL ............................................................................................ 35
2.7.1 Seleccin del driver RS232 .................................................................................................... 35
2.7.2 Seleccin del driver RS485 .................................................................................................... 36
2.7.3 Compatibilidad electromagntica de la interfaz digital ....................................................... 36
2.8 ESQUEMTICO DE LA SONDA DE NIVEL................................................................................................... 36
2.9 CONCLUSIONES ................................................................................................................................ 40
CAPTULO 3 FIRMWARES DE LA SONDA DE NIVEL ........................................................................... 41
3.1 INTRODUCCIN ................................................................................................................................ 41
3.2 OPERACIN EN TIEMPO REAL DE LA SONDA DE NIVEL ................................................................................ 41
3.3 COMUNICACIN CON LOS SENSORES KELLER 9LD .................................................................................... 42

P g i n a | vii
2

3.3.1 Protocolo de comunicacin digital I C .................................................................................. 42


3.3.2 Protocolo de comunicacin de los sensores Keller 9LD ........................................................ 45
3.3.2.1 Deteccin del fin de adquisicin y procesamiento ....................................................................... 46
3.3.2.2 Conversin de los datos digitales enviados por el sensor............................................................. 46
3.3.2.3 Cambio de direccin de un esclavo .............................................................................................. 47

3.3.3 Desarrollo del firmware de comunicacin con los sensores ................................................. 48


3.4 FIRMWARE QUE CONTROLA LA SALIDA ANALGICA DEL SISTEMA ................................................................. 49
3.4.1 Conversor digital-analgico perteneciente al MSP430F6638 .............................................. 49
3.4.2 Modo shutdown del amplificador operacional MAX9911 .................................................... 50
3.4.3 Desarrollo del firmware que maneja la salida analgica ..................................................... 51
3.5 FIRMWARE PARA LA COMUNICACIN ENTRE EL MSP Y UNA COMPUTADORA ................................................. 51
3.5.1 Protocolo de comunicacin SDI-12 ....................................................................................... 51
3.5.1.1 Interfaz elctrica ........................................................................................................................... 52
3.5.1.2 Protocolo de comunicacin .......................................................................................................... 52
3.5.1.3 Chequeo de redundancia cclica ................................................................................................... 55
3.5.1.4 Comandos extendidos .................................................................................................................. 55

3.5.2 Desarrollo del firmware para la comunicacin digital del sistema ...................................... 55
3.5.2.1 Configuracin de las salidas del dispositivo .................................................................................. 56
3.5.2.2 Configuracin de la unidad de ingeniera ..................................................................................... 56
3.5.2.3 Obtencin de los datos de los sensores y procesamiento ............................................................ 57
3.5.2.4 Envo de los datos al amo ............................................................................................................. 58
3.5.2.5 Respuestas con CRC ...................................................................................................................... 59

3.6 CONCLUSIONES ................................................................................................................................ 61


CAPTULO 4 RESULTADOS Y ANLISIS ECONMICO......................................................................... 62
4.1 INTRODUCCIN ................................................................................................................................ 62
4.2 RESULTADOS DE LAS SIMULACIONES...................................................................................................... 62
4.2.1 Simulacin de la comunicacin con los sensores .................................................................. 62
4.2.2 Simulacin de la comunicacin digital mediante el protocolo SDI-12 .................................. 66
4.2.3 Simulacin del lazo de corriente 4-20mA ............................................................................. 69
4.3 RESULTADOS PRCTICOS..................................................................................................................... 74
4.4 ANLISIS ECONMICO........................................................................................................................ 78
4.4.1 Estimacin de los costos ....................................................................................................... 78
4.4.2 Impacto econmico .............................................................................................................. 80
4.5 CONCLUSIONES ................................................................................................................................ 81
CONCLUSIONES FINALES .................................................................................................................. 82
RECOMENDACIONES ....................................................................................................................... 83
REFERENCIAS BIBLIOGRFICAS ........................................................................................................ 84
BIBLIOGRAFA .................................................................................................................................. 86
ANEXOS ........................................................................................................................................... 89
ANEXO 1. PROGRAMA DESARROLLADO PARA EL FUNCIONAMIENTO DEL DISPOSITIVO EN BIBLIOTECAS .C Y .H............. 89
ANEXO 2. ANLISIS DESDE LA DEFENSA ..................................................................................................... 140

Introduccin

Pgina |1

Introduccin
El nivel es la altura que alcanza una sustancia lquida. En la actualidad las
industrias se encuentran en constante perfeccionamiento de los instrumentos
de control y herramientas con el objetivo de aumentar la calidad del proceso
productivo. La obtencin de nivel de sustancias lquidas es necesaria en
numerosos procesos industriales y para la gestin de recursos hidrulicos.
Existen diversas maneras de medir el nivel basndose en diferentes principios
fsicos, estas pueden enumerarse como: capacitivos, resistivos, hidrostticos,
ultrasnicos, de radar, lser, seguimiento de la superficie, flotadores, entre
otros (1), (2). Una de las formas de medir nivel de manera continua es la
utilizacin de sondas de nivel sumergibles, permitiendo proporcionar los datos
de nivel de manera permanente mediante una seal elctrica a su salida (1).
La mayora de las sondas de nivel sumergibles se basan en el principio
hidrosttico para la obtencin del nivel (2). Dicho principio proporciona el nivel a
partir de la presin ejercida por un bloque lquido sobre una superficie. Esta
presin ejercida por la columna lquida est compuesta por la presin ejercida
por el bloque y la presin ejercida por encima del lquido (presin en la
superficie libre del lquido).
Los sensores de presin son dispositivos encargados de detectar los
cambios de esta magnitud y transformarlos en seales elctricas. Uno de los
principios fsicos mayormente empleados en la medicin de la presin y el nivel
es el piezorresistivo (3). ste se basa en la descripcin de los cambios
ocurridos en la resistencia elctrica de un material debido a la aplicacin de
tensiones mecnicas. Estos sensores han logrado una gran popularidad en
diversas aplicaciones debido a las propiedades elsticas del silicio, su
utilizacin en la construccin de los circuitos integrados y los grandes avances
en la elaboracin de los Sistemas Micro-Electro-Mecnicos (MEMS). Una de
las configuraciones ms utilizada con piezorresistores para las mediciones es
la del puente de Wheatstone (4).
La seal de salida de estos sensores es altamente dependiente de la
temperatura (5), por lo cual se hace necesaria su compensacin para obtener
un mnimo de precisin en la medicin. La compensacin puede realizarse
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Introduccin

Pgina |2

mediante diversos mtodos los cuales varan en complejidad y eficiencia (6).


Pueden mencionarse las tcnicas analgicas, que se basan en componentes
analgicos como diodos, amplificadores, transistores, entre otros. Adems, el
procesamiento digital de la seal en el dominio analgico utilizando
convertidores digital analgicos (DAC), memorias EEPROM, amplificadores de
ganancia programable. Tambin la utilizacin ms novedosa lo constituyen los
procesadores de seales digitales (DSSP, por sus siglas en ingls), los cuales
se encargan de digitalizar la seal mediante convertidores analgico digitales
(ADC), la acondicionan y despus la llevan al dominio analgico mediante DAC
si fuese necesario, pudindose brindar tambin como seal digital.
Para facilitar el proceso de compensacin en la obtencin de nivel se utiliza
un cable ventilado o un barmetro (1). Debido a los inconvenientes que pueden
presentarse al utilizar estas tcnicas surge una forma novedosa: son utilizados
dos sensores de presin. El primero mide la presin de la columna de lquido y
el segundo la presin atmosfrica (baromtrico). Mediante un procesamiento
posterior puede obtenerse el nivel al compensar el efecto de la presin
atmosfrica.
La salida de la sonda de nivel puede ser tanto analgica como digital. La
salida analgica ms empleada es la de 4-20mA. Para implementar la salida
digital se utiliza comnmente algn protocolo de comunicacin como HART,
SDI-12, Profibus o Foundation Fieldbus.
El INRH se encuentra desarrollando varios proyectos de gran importancia
con el objetivo de lograr la automatizacin de las principales cuencas
hidrulicas nacionales. En stas se torna imprescindible la utilizacin de
instrumentacin para conseguir el logro de este objetivo. Las sondas de nivel
son un instrumento de medicin de mucha importancia para estos proyectos.
Permiten la obtencin del nivel lquido de pozos, cisternas o cualquier
contenedor en el cual se encuentre almacenado algn lquido.
Las sondas de nivel que actualmente son utilizadas en el pas son
importadas a muy altos precios ya que en nuestro pas no se fabrican. Adems,
estas sondas de nivel obtenidas en el mercado extranjero no se adaptan a las
condiciones de alta humedad que posee el clima tropical de nuestro pas. Es
muy importante la superacin de estos inconvenientes propios de nuestro
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Introduccin

Pgina |3

ambiente y lograr la sustitucin de parte de las importaciones que realiza el


INRH.
Problema a resolver:
Cmo reducir las importaciones de sondas de nivel y adaptarlas a las
condiciones del clima en nuestro pas?
Objeto de estudio:
Instrumentacin electrnica, procesamiento digital de seales de sensores y
algunos principios hidrulicos.
Campo de accin:
Sondas de nivel que utilizan sensores de presin piezorresistivos y
microcontroladores.
Objetivo:
Disear y simular una sonda de nivel con compensacin de la presin
atmosfrica para aplicaciones hidrulicas.
Tareas:
Buscar y estudiar informacin acerca de las sondas de nivel y su
diseo.
Escoger la solucin adecuada para las condiciones de nuestro pas y
requerimientos del diseo.
Estudiar y determinar los dispositivos que se utilizarn como
componentes en el hardware del dispositivo.
Desarrollar, simular y poner a punto los firmwares necesarios para el
funcionamiento del dispositivo utilizando herramientas de simulacin
como: Proteus, MathCAD, IAR, Altium.
Validar el firmware que define el funcionamiento del dispositivo
mediante una prueba prctica.

Hiptesis:
A partir del diseo y la simulacin de una sonda de nivel con compensacin
de la presin atmosfrica es posible obtener un primer prototipo de transmisor
de nivel con la finalidad de reducir las importaciones de sondas de nivel y
adaptarlas a las condiciones del clima en nuestro pas.
Los mtodos de investigacin que fueron empleados son:
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Introduccin

1.

Pgina |4

Mtodo sistmico con el objetivo de comprender y solucionar el

problema a partir del objeto de estudio y desarrollar la sonda de nivel a partir


del diseo de los bloques funcionales que lo componen.
2.

Mtodo histrico - lgico para analizar el estado del arte de las sondas

de presin, as como las principales caractersticas de los componentes a


utilizar en el diseo que hoy se encuentran en el mercado.
3.

Mtodo terico - prctico en el estudio terico de los sensores de

presin, los circuitos de acondicionamiento de seal, los protocolos de


comunicacin y en la comprobacin experimental de la sonda de nivel.
El contenido de esta tesis se encuentra estructurado en 4 captulos. En el
primer captulo, Estudio Terico de las Sondas de Nivel, se abordarn los
principales temas relacionados con el clculo de nivel y especialmente las
sondas de nivel sumergibles. Tambin se describen los sensores de presin
piezorresistivos, los problemas asociados a estos sensores y los circuitos de
acondicionamiento que permiten minimizar estas deficiencias. Finaliza el
captulo con una descripcin de la sonda de nivel que ser diseada. Estos
aspectos servirn como base para los prximos captulos.
En el segundo captulo, Hardware de la sonda de nivel, se presentan los
bloques funcionales que conforman el dispositivo. A partir de este diagrama se
relacionan los componentes que se encargarn de cumplir las funciones
requeridas tomando en cuenta el consumo de corriente de cada componente.
Se describe el diseo del lazo de salida 4-20mA y el de la interfaz digital de la
sonda de nivel.
En el tercer captulo, Firmwares de la sonda de nivel, se tratan los
aspectos asociados al desarrollo de los firmwares que controlan el
funcionamiento de la sonda de nivel. Se describe el firmware que se ejecuta en
el microcontrolador profundizando en los temas relacionados con la
comunicacin con los sensores, el procesamiento de las muestras y la
comunicacin digital. Se explican tambin las caractersticas, funciones e
implementacin del protocolo de comunicacin digital serie SDI-12.
En el cuarto captulo, Resultados y Anlisis Econmico, se describen las
simulaciones y la prueba prctica realizada a los diferentes bloques funcionales
de la sonda de nivel. Son analizados los resultados y se valida el firmware
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Introduccin

Pgina |5

diseado. Por ltimo se realiza un anlisis de los costos del proyecto y el


impacto econmico que generara la sonda de nivel a nuestro pas.
Para finalizar en las Conclusiones Finales se verifica el cumplimiento de los
objetivos propuestos y se resumen los resultados obtenidos. En las
Recomendaciones se plantean los aspectos en que se pudieran continuar
trabajando en un futuro para complementar el proyecto.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 1 Estudio Terico de las Sondas de Nivel

Pgina |6

Captulo 1 Estudio Terico de las Sondas de Nivel


1.1 Introduccin
En este captulo se tratarn los temas relacionados con el clculo de nivel y
especialmente las sondas de nivel sumergibles. Tambin se profundiza en los
sensores de presin piezorresistivos, los problemas asociados a estos
sensores y los circuitos de acondicionamiento que permiten minimizar estas
deficiencias. Adems, se procede a realizar un estudio del estado del arte de
las sondas de nivel existentes en el mercado mundial y sus principales
caractersticas. Finaliza el captulo con una descripcin de la sonda de nivel
que ser diseada. Estos aspectos servirn como base para los prximos
captulos.

1.2 Medicin de nivel


La medicin de nivel se basa principalmente en varios principios fsicos
mediante los cuales se puede obtener dicha variable. Estos principios pueden
ofrecer el nivel de sustancias tan diversas como lquidos, compuestos acuosos,
materiales granulares, y en polvos. La sustancia a medir puede presentarse en
estado natural (ros, lagos) o en algn contenedor. Entre los principios fsicos
utilizados para aplicaciones hidrulicas se pueden citar el capacitivo, el
resistivo, el hidrosttico, el ultrasnico, el de radar, el de lser, flotadores
(utilizando la gravedad) y el detector vibratorio (1), (2).

1.2.1 Principio capacitivo


El mtodo capacitivo se basa en la medicin del cambio de la capacitancia
de un capacitor con la variacin de nivel. Para implementar este principio se
considera que la mayora de los fluidos poseen constantes dielctricas muy
distintas a la del aire (la cual se aproxima a 1). Este capacitor se compone por
dos electrodos ligeramente separados entre los cuales se encuentra un
material dielctrico. Uno de los electrodos constituye el de medicin y el otro es
utilizado como referencia (1).
Se considera importante aclarar que la capacitancia debe variar de forma
proporcional al nivel del lquido (2). Este principio puede utilizarse tanto en
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 1 Estudio Terico de las Sondas de Nivel

Pgina |7

sustancias slidas como lquidas, siendo conductoras o no conductoras. Para


obtener la capacitancia total se utiliza la expresin 1.1.
(

(1.1)

Donde
: Capacitancia en Farad
: Constante de proporcionalidad
: Constante dielctrica
: rea efectiva de los conductores
: Distancia entre electrodos

1.2.2 Principio resistivo


El principio resistivo para la medicin de nivel tiene como base la variacin
en la resistencia entre dos electrodos que poseen un lquido conductor entre
ellos. Al cambiar el nivel de dicho lquido se origina una variacin de la
resistencia. Cuando el nivel del lquido es alto el valor de la resistencia ser
menor que cuando el nivel sea bajo (1). La resistencia entre los dos electrodos
depende del nivel de lquido, pero tambin de la resistividad de este.

1.2.3 Principio ultrasnico


Este mtodo se basa en la medicin de la distancia recorrida por un pulso
ultrasnico mediante el clculo de tiempo. Un sensor transmite un pulso
ultrasnico hacia la superficie del lquido donde es reflejado y regresa
nuevamente al sensor. El tiempo que demora este proceso es proporcional a la
distancia entre el sensor y la superficie del lquido (2). Para obtener el nivel
utiliza las siguientes ecuaciones:
(1.2)
(1.3)
Donde:
: Distancia entre el sensor y la superficie del lquido
: Velocidad del sonido en el aire
: Tiempo de trnsito
: Nivel
: Altura del sensor al nivel mnimo
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 1 Estudio Terico de las Sondas de Nivel

Pgina |8

Al utilizar estas ecuaciones debe tenerse en cuenta que la velocidad del


sonido depende de la composicin del medio y de la temperatura (1).

1.2.4 Principio de radar


Este mtodo es similar al anterior, cambiando el sensor de transmisin por
una antena. sta se encarga de transmitir un pulso de microondas, siendo
reflejado por el lquido de vuelta a la antena. Las ecuaciones para calcular la
distancia y el nivel son simulares a 1.2 y 1.3, pero se debe sustituir la velocidad
del sonido par la velocidad de la luz. Este mtodo ofrece la ventaja de ser
independiente de la temperatura y la presin (1).

1.2.5 Principio de lser


Este principio se asemeja mucho a los dos anteriormente expuestos. Utiliza
un emisor que dispara un pulso corto de luz hacia el lquido, siendo ste
devuelto al emisor mediante la reflexin. Puede ser utilizado tanto en slidos
como lquidos y se aplica a altos valores de temperatura y presin (2).

1.2.6 Principio de los flotadores


Este mtodo es el ms simple que se puede utilizar. Emplea algn objeto
flotante con una gravedad intermedia entre la del lquido y el vapor o aire
encima de este. Entonces mediante la utilizacin de algn instrumento
mecnico se determina su posicin (2).

1.2.7 Principio hidrosttico


La medicin de nivel mediante el principio de presin hidrosttico se
fundamenta en la obtencin de la presin ejercida por una columna lquida
sobre una superficie que se encuentre sumergida debajo de ella. La presin
hidrosttica ejercida por la columna lquida se calcula mediante la expresin
1.4.
(1.4)
Donde
: Presin hidrosttica
: Altura de la columna de lquido
: Densidad
: Aceleracin de la gravedad
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 1 Estudio Terico de las Sondas de Nivel

Pgina |9

Al realizar un despeje puede obtenerse el nivel:


(1.5)

La presin que ejerce la columna de un lquido es la presin del lquido ms


la presin en la superficie libre del lquido. Esta situacin debe ser compensada
para el correcto clculo del nivel mediante este principio (1).

1.3 Sensores piezorresistivos


Los sensores de presin piezorresistivos son de una amplia aplicacin en los
sectores automovilstico, industrial y biomdico. Se pueden mencionar algunas
aplicaciones como dispositivos implantables para realizar la medicin de la
presin sangunea, ocular o sangunea, sensores de presin en lneas de
combustible, mltiples de los motores, o monitorizacin de procesos
industriales (3).
Los sensores de presin piezorresistivos estn compuestos por dos
componentes fundamentales: la lmina (membrana) de un rea determinada y
un detector que responda a alguna fuerza aplicada. Los componentes que
conforman los sensores piezorresistivos son: un soporte estructural, un chip de
silicio sensible a la presin, un encapsulado de acero inoxidable, aceite de
silicona y un delgado diafragma de acero inoxidable. Se puede observar el
esquema de estos componentes estructurales en la figura 1.1 (5).

Figura 1.1 Estructura de un sensor piezorresistivo

Resulta muy ventajoso utilizar el silicio como material estructural en los


sensores piezorresistivos. El silicio posee un coeficiente piezorresistivo grande,
caractersticas elsticas superiores, entre otras caractersticas aprovechables.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 10

El aceite de silicona se encuentra dentro de una cmara formada por el


diafragma de acero inoxidable, el encapsulado del mismo material y el soporte
estructural. A este se encuentra unido el chip de silicio, el cual est conectado
a los terminales de conexin mediante hilos de oro.
Cuando el sensor se encuentra en funcionamiento la presin que se ejerce
sobre el diafragma es transferida a travs del aceite de silicona al chip de
silicio. Esta presin produce un cambio en el valor hmico de los resistores,
debido a los coeficientes piezorresistivos rompe el equilibrio del puente de
Wheatstone, como se explicar en el prximo epgrafe dando como resultado
seales de tensin proporcionales a las presiones aplicadas.

1.3.1 Puente de Wheatstone


Los sensores resistivos pueden encontrarse tpicamente conectados en
configuracin de puente de Wheatstone. stos brindan una gran sensibilidad y
reproducen de manera confiable la seal a medir (4), (7). Esta configuracin se
utiliza para realizar mediciones de temperatura, presin o estrs utilizando
elementos resistivos mediante la deteccin de pequeos cambios dichos
elementos (8). La configuracin tpica del puente de Wheatstone puede
observarse en la figura 1.2.

Figura 1.2 Configuracin tpica en puente de Wheatstone

La tensin a su salida

es obtenida de manera diferencial entre las salidas

de los dos divisores de tensin en las dos ramas opuestas. La desviacin de


las resistencias de un valor nominal preestablecido es interpretada como algn
cambio en la variable fsica que se mide, siendo la tensin de salida del puente
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 11

el que indique dicho cambio. Esta tensin se puede determinar mediante la


siguiente ecuacin:
[

Se puede considerar el puente como balanceado si

(1.6)
es 0, es decir,

. De esta condicin se infiere que la tensin de salida ser nulo

independientemente de la manera de excitacin.


Los puentes pueden tener uno, dos o cuatro piezorresistores y pueden
alimentarse tanto con corriente como con tensin, aunque esta ltima es la
forma ms popular. En la configuracin de puente de Wheatstone se manifiesta
una marcada relacin entre la resolucin de la seal de salida y el consumo de
potencia. A mayor resistencia equivalente aumenta el umbral de ruido, mientras
que a un menor valor de resistencia existe un mayor valor en la corriente que
circula por el puente. Igualmente la seal de salida es proporcional a la tensin
de alimentacin, trayendo como consecuencia un elevado consumo de
potencia para una gran resolucin (9).

1.4 Clasificacin de los sensores de presin piezorresistivos


Los sensores piezorresistivos tienen diferentes clasificaciones segn sus
usos y aplicaciones. De maneara general, todos los sensores de presin
pizorresistivos pueden considerarse diferenciales por su principio bsico de
funcionamiento. Esto puede definirse debido a que la salida est relacionada
con la diferencia de presin entre los dos lados de la membrana. La diferencia
entre un sensor relativo y uno diferencial es que el relativo slo posee una
membrana mecnica conectada al proceso, mientras que el diferencial posee
dos membranas. La forma de conexin de dichos lados de la membrana
constituye una de las principales maneras de clasificar estos sensores.
Utilizando este principio, los sensores de presin pueden clasificarse en
manomtricos ventilados, manomtricos sellados, absolutos, diferenciales,
baromtricos y vacumetros.
Los manomtricos ventilados son aquellos que poseen un lado de la
membrana conectado al proceso, estando el otro lado conectado a la presin
atmosfrica del lugar mediante un conducto. La diferencia de los manomtricos
sellados con este ltimo es que el lado no conectado al proceso se encuentra
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 12

sellado, manteniendo la presin atmosfrica a la cual fue fabricado. De modo


similar los sensores absolutos mantienen en un lado una presin lo ms
aproximada posible al cero absoluto, necesitando compensacin ya que
alcanzar el cero absoluto es imposible. Los vacumetros son similares a los
manomticos, siendo empleados para medir presiones inferiores que la presin
atmosfrica. Por ltimo los sensores baromtricos son un tipo de sensores
absolutos, los cuales se utilizan para la medicin de las variaciones de la
presin atmosfrica con respecto al cero absoluto.

1.5 Caractersticas no deseadas de los sensores de presin


piezorresistivos y sus mtodos de compensacin
Los principales problemas que se asocian a los sensores de presin
piezorresistivos estn relacionados a la no linealidad, la dependencia de la
temperatura y los errores de histresis. La dependencia de mayor efecto
negativo causa es la sensibilidad con la temperatura (5). Como consecuencia
es evidente un decrecimiento en la precisin del sensor, siendo necesaria la
compensacin de estos problemas en aras de obtener sensores de una alta
precisin. Es importante tambin el control sobre el proceso de fabricacin ya
que cualquier alteracin produce importantes cambios en la dependencia
trmica del sensor (6).
Para realizar la calibracin y compensacin de la seal proveniente del
sensor son utilizados circuitos de acondicionamiento con el objetivo de
minimizar los problemas mencionados anteriormente. Entre las diversas formas
de realizar dicho acondicionamiento podemos citar los mtodos analgicos, la
utilizacin de un microcontrolador de seales en el dominio analgico (ASSP,
por sus siglas en ingls) o la utilizacin de un microcontrolador de seales
digitales (DSSP, por sus siglas en ingls).
Las soluciones puramente analgicas como su nombre lo indica son basadas
en elementos analgicos (dgase amplificadores operacionales, diodos,
transistores, entre otros). Existen innumerables mtodos para aplicar esta
tcnica, pudindose citar particularmente la utilizacin de resistores externos
(10) y la utilizacin de caractersticas de componentes como capacitores (11).
La utilizacin de ASSP se basa en la compensacin y calibracin de la seal
desde el dominio digital pero manteniendo esta seal en el formato analgico.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 13

Para su funcionamiento se utilizan memorias EEPROM, convertidores digital


analgicos (D/A), y amplificadores de ganancia programable. stos realizan
una compensacin de las no linealidades del sensor y la componente
cuadrtica del coeficiente trmico de la sensibilidad. Los factores de correccin
son obtenidos segn el proceso automatizado de calibracin, siendo
almacenados en las memorias EEPROM (6).
Entre las formas ms novedosas de realizar la compensacin y calibracin
de la seal proveniente de un sensor se encuentra la utilizacin de un DSSP.
Este sistema primeramente digitaliza la seal mediante un convertidor
analgico-digital (A/D) para posteriormente realizar su procesamiento en un
microcontrolador, devolvindola posteriormente a formato analgico mediante
un convertidor digital-analgico (D/A) para su salida o pudindola ofrecer
tambin en formato digital. Entre las ventajas que pueden citarse al utilizar este
mtodo estn la posibilidad de ajustar el rango de trabajo del transmisor,
adems de las muchas opciones que brinda la compensacin digital. Tambin
se puede argumentar la posibilidad de brindar una salida con comunicacin
digital utilizando buses de campo y protocolos de comunicacin (6).

1.6 Tecnologa Chip in Oil


La tecnologa Chip in Oil constituye una moderna forma de fabricacin de los
dispositivos creada por Keller para la fabricacin de sensores de presin. En su
aplicacin incluye dentro del propio sensor de presin un Circuito Integrado
para Aplicaciones Especficas (ASIC), el cual se encarga de la compensacin y
calibracin de la seal del sensor, permitiendo un diseo estructural bastante
compacto (12).
Utiliza cables sinterizados de cristal resistentes a la presin para la salida y
cables cortos y ligeros en su interior excluyendo totalmente la presencia de aire
en el aceite. stos en conjunto con la configuracin de encapsulado de acero
de alto grado logran simular una jaula de Faraday, brindando una gran
resistencia a la interferencia de campos elctricos externos.

1.7 Clasificacin de medidores de nivel


Los medidores de nivel se pueden clasificar primeramente basndose en el
tipo de medicin que realizan: continua o discreta. Los medidores continuos
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 14

brindan una salida continua, mientras que los detectores ofrecen una salida
que indica la presencia o no de fluido en algn punto. Estos ltimos no generan
informacin exacta del lugar en el cual se encuentra el lquido. Adems pueden
ser clasificadas por el principio fsico que utilizan para monitorear la variable.
Los medidores de nivel capacitivos pueden emplearse en tanques con
paredes conductoras que pueden ser utilizadas como electrodos de referencia
o tanques con paredes no conductoras que necesitan un electrodo de
referencia adicional. Cuando el lquido es conductor, la sonda que se inserta en
el mismo debe ser recubierta con un material aislante (2). Debido al valor de la
constante dielctrica de los lquidos, el valor de la capacitancia del sistema va a
ser mayor cuando la sonda est completamente cubierta que cuando est
parcialmente o completamente descubierta. Los cambios de capacidad con el
nivel son convertidos en variaciones de la seal de salida mediante circuitos de
procesamiento (1). Estos medidores de nivel capacitivos pueden observarse en
la figura 1.3

Figura 1.3 Sensores de nivel capacitivo

Los medidores de nivel resistivos utilizan tambin las paredes del tanque
como electrodo, pero en este caso las paredes del tanque deben ser
conductoras. Comnmente se utiliza una sonda de dos electrodos, eliminando
la necesidad de utilizar tanques metlicos aterrados. Para compensar los
efectos de la variacin de la resistividad del lquido o fluido se utilizan
electrodos de compensacin. Normalmente se fabrican de acero inoxidable,
aunque tambin pueden fabricarse de tantalio y hastelloy. Se instalan en
posicin vertical para evitar la generacin de corrientes parsitas causadas por
la formacin de pelculas de lquido.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 15

Los medidores de nivel ultrasnicos utilizan un circuito de procesamiento el


cual se basa en microcontroladores para transformar el tiempo de trnsito de
una seal ultrasnica emitida en la salida de nivel. El sensor es una membrana
conectada a uno o varios cristales piezoelctricos para transmitir y recibir la
seal de sonido. Entre los mtodos de compensacin pueden mencionarse: la
utilizacin de un obstculo a una distancia constante o la medicin de la
temperatura del medio. El primero origina una trayectoria de compensacin,
brindndole al circuito de procesamiento la posibilidad de eliminar la influencia
de la variacin de la velocidad del sonido en el medio. Estos medidores de nivel
poseen una distancia mnima de utilizacin (2) y pueden observarse en la figura
1.4.

Figura 1.4 Sonda de nivel ultrasnica


Los medidores de nivel por radar son muy parecidos a los anteriores, el
circuito de procesamiento utiliza la misma operacin para obtener el nivel. Esta
sonda trabaja con energa electromagntica, la cual se refleja por la
impedancia (constante dielctrica del medio). Esta constante dielctrica del
fluido tiene un valor mnimo para el correcto funcionamiento del dispositivo.
El sensor de nivel lser est diseado para su utilizacin en tanques con
numerosas obstrucciones y a largas distancias. Su funcionamiento es similar a
los anteriores, aunque resulta costoso para aplicaciones simples como la
medicin de agua (1).
El medidor de nivel basado en flotadores acopla al flotador la generacin de
una seal elctrica la cual puede ser producida por la utilizacin de
codificadores pticos asociados a un sistema flotador cinta contrapeso o
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 16

mediante el uso de micro interruptores magnticos. El primer caso consiste


en cintas con perforaciones equidistantes, las cuales al pasar por un par ptico
equidistante se cuenta las veces que la luz es interrumpida al paso de dichas
perforaciones. El circuito de procesamiento se encarga de determinar la
variacin del nivel a partir del movimiento de la cinta. En el segundo caso el
flotante se desplaza a lo largo de una varilla en la cual se sitan los micro
interruptores magnticos, estando asociado al flotante un imn que genera la
apertura de los interruptores. El circuito de procesamiento determina la posicin
del flotante(1).
Las sondas de nivel hidrostticas pueden clasificarse en tres grupos, las que
utilizan el mtodo de burbujeo, las que utilizan el principio de Arqumedes y las
que utilizan sensores de presin para medir directamente la presin ejercida
por el bloque lquido. El mtodo de burbujeo o desplazadores son aplicados
cuando el sensor no puede estar en contacto directo con el fluido.
Para la implementacin del principio de medicin por burbujeo se introduce
un tubo o manguera en el lquido por la cual se hace circular un gas
(tpicamente aire, o algn gas inerte) originando un burbujeo. Al determinase
que este se mantiene de forma continua, la presin en la manguera alcanz el
mismo valor que la presin hidrosttica ejercida por la columna lquida. Esta
presin es monitorizada por un transductor de presin conectado al tubo (2). La
implementacin de este principio puede observarse en la figura 1.5.

Figura 1.5 Sensor de nivel hidrosttico mediante burbujeo

El otro mtodo mencionado como alternativa al de burbujeo son los


desplazadores, los cuales se basan en el principio de Arqumedes. ste es la
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 17

suspensin de un objeto en el recipiente que contiene el lquido que posea un


peso mayor que el de este. Adems el objeto debe poseer rea constante y al
tener el peso del mismo se relaciona con el nivel. Cuando el nivel del lquido
disminuye provoca una disminucin en el volumen del cuerpo por lo que la
fuerza de empuje disminuye.
La utilizacin de sensores de presin directamente es la forma ms comn
de aplicar el principio hidrosttico para aplicaciones que puedan establecer
contacto directo entre el lquido y el sensor. Para eliminar el efecto de la
presin sobre el lquido se utiliza un sensor de presin diferencial con la
segunda toma conectada a la presin de la superficie. En el caso de un tanque
puede situarse en la parte inferior y por fuera o en la parte superior con una
sonda sumergible (1).
Las sondas sumergibles tienen una gran aplicacin en lugares donde no se
puedan conectar el sensor por fuera como los pozos embalses. Las sondas de
nivel estn constituidas por un sensor de presin encapsulado especialmente
para que el lquido no penetre y dae el equipamiento. Para obtener la
referencia de la presin en la superficie del lquido se hace necesario encontrar
alguna solucin que puede definirse en la utilizacin de un cable ventilado o un
barmetro en dicha superficie.
Un cable ventilado es una pequea manguera situada en el cable por el cual
se comunica el sensor. Esta manguera brinda la referencia de la presin en la
superficie del lquido necesaria para el transductor. La otra forma de
compensar el efecto de la presin atmosfrica es utilizar un sensor baromtrico
en la superficie del lquido. Este sensor se encarga de obtener la presin
atmosfrica. Despus de obtener el valor de presin brindado por el sensor
encapsulado y obteniendo el valor de la presin atmosfrica se puede realizar
un proceso de compensacin que permita la obtencin del valor real de nivel.

1.8Problemas de las sondas de nivel sumergibles y su correccin


El mtodo del cable ventilado constituye una gran ventaja pero al estar el
cable expuesto a la interaccin con el ambiente puede llegarse a conformar
una columna lquida en el interior de cable ventilado. Esta situacin se produce
como efecto de la humedad y de los cambios de temperatura producto de la
condensacin. Esta condicin trae como consecuencia la inexactitud en las
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 18

mediciones. Para eliminar esta situacin debe descartarse el cable ventilado,


pero sin embargo se debe mantener una referencia de la presin en la
superficie del lquido para la correcta medicin. Una forma novedosa es la
utilizacin de otro sensor de presin que se encargue de medir la presin en la
superficie, para posteriormente utilizando un circuito de procesamiento realizar
la compensacin.

1.9 Salidas de las sondas de nivel


Las sondas de nivel poseen una gran variedad de formatos de salida. La
seleccin de cada una de ellas depende de las exigencias del lugar en que se
van a emplear y del circuito de acondicionamiento que se utilice. Las salidas
pueden clasificarse en dos grupos: las salidas analgicas y las salidas digitales.

1.9.1 Salidas analgicas


La salida analgica 4-20mA a dos hilos es una de las ms utilizadas
industrialmente por las ventajas que proporciona. sta puede utilizarse a
grandes distancias, ya que la informacin til se representa por el consumo del
transmisor. Esta salida puede implementarse sobre dos hilos de funcin doble:
alimentador del transmisor y transmisin del resultado.
Otra formato de salida analgico utilizado es el de 0-10V. La salida en
tensin es dependiente de la longitud del cable ya que la resistencia de este
afecta la seal, trayendo consigo una afectacin en la calidad de la medicin.
Otro tipo de salida es la nombrada Pulse Width Modulation (PWM). En sta la
informacin de la seal de control es representada en el ciclo til de los pulsos
de salida. La informacin es susceptible a interferencias generadas por
radiofrecuencia.

1.9.2 Salidas digitales


Las salidas digitales utilizan drivers para estandarizar los niveles de tensin a
sus salidas. Sobre estas interfaces pueden implementarse diferentes tipos de
protocolos de comunicacin. Algunos de los protocolos ms utilizados en
aplicaciones industriales son: MODBUS, Profibus, HART, SDI-12, entre otros.
Mediante esta comunicacin se pueden obtener los datos de la medicin y
configurar algunos parmetros del dispositivo. La comunicacin digital es ms
confiable y econmica, posibilitan una mayor cantidad de opciones de
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 19

configuracin y funcionamiento, adems de permitir en muchos casos la


utilizacin de buses de campo.

1.10 Anlisis de sondas de nivel existes en el mercado


El mercado internacional de sondas de nivel se encuentra saturado de
fabricantes que ofrecen soluciones actuales y eficientes. Como ejemplos de
fabricantes podemos citar Keller, Endress + Hauser, VEGA, ABS, IFM, Druck,
TecFluid, entre otros. Las sondas existentes en el mercado utilizan diferentes
principios para realizar el clculo y diferentes salidas para obtener la variable. A
continuacin se exponen las caractersticas de algunas de las sondas de nivel
estudiadas.

1.10.1 Medidor de nivel de radar VEGAPULS WL61 de VEGA


Estos sensores de nivel poseen salida analgica 4-20mA, HART (las
comunicaciones digitales y analgicas se realizan sobre los mismos hilos) o
digital mediante PROFIBUS o Foundation Fieldbus. Brindan adems un rango
de medicin de hasta 15m, y una precisin a la salida de

2mm. Trabaja para

una presin de proceso de -1+2 bar (-100+200kPa)(13).


Es un sensor ideal para las aplicaciones en el sector de la hidrulica y las
aguas residuales. Ofrece resultados exactos de medicin independientemente
de las condiciones del proceso y ambientales. Este sensor se puede observar
en la figura 1.6.

Figura 1.6 Medidor de nivel VEGAPULS WL61

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 20

1.10.2 Medidor de nivel capacitivo Liquicap T FMI21 de Endress +


Hauser
Este sensor de nivel es utilizado en lquidos conductivos (mayor de 30S/cm)
para medicin continua y no requieren de calibracin (14). El rango de
medicin se encuentra entre 150 y 2500mm en dependencia del rango que se
solicite. Puede ajustarse a una capacidad inicial desde 0 a 2000pF, permitiendo
una variacin de 25 a 2000pF.
Posee salida analgica de 4 20mA brindando un mximo de error en la
medicin 1% del valor de escala completa. Trabaja en procesos que se
encuentren a presiones entre -1 y 10 bar. Adems se caracteriza por una
repetibilidad de un 0.25% del valor de escala total. Puede observarse en la
figura 1.7.

Figura 1.7 Medidor de nivel Liquicap T FMI21

1.10.3 Sonda de nivel sumergible con sensor de presin PS3417 de


IFM
Esta sonda de nivel de medicin continua utiliza un sensor de presin para
obtener la presin que ejerce la columna lquida y un cable ventilado para
determinar la presin de la superficie del lquido para la compensacin. Utiliza
una salida analgica de 4-20mA y proteccin contra cortocircuitos y como
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 21

rango de alimentacin de 10 a 30V en corriente directa. Posee una cubierta de


acero inoxidable para su proteccin(15).
El rango de medicin es de 0 a 1bar con una exactitud en la seal analgica
de 0.5% incluyendo errores de linealidad, del punto cero y del margen
(configuracin del valor lmite). El error de repetibilidad es menor que un 1% y
la estabilidad a largo plazo de 0.2% del margen por ao. Trabaja en fluidos
lquidos que se encuentren a una temperatura entre -10 y 50C. Puede
observarse en la figura 1.8.

Figura 1.8 Sonda de nivel sumergible PS3417

1.10.4 Sonda de nivel sumergible con salida digital SDI-12 OTT PLS
de OTT
Esta sonda de nivel est formada por una clula de medicin de presin
capacitiva de cermica y un controlador integrado que se encarga de calcular el
nivel del agua. Emplea un cable ventilado para determinar la presin de la
superficie del lquido. Puede suministrarse con salida analgica de 4-20mA o
las salidas digitales SDI-12 o RS485. El rango de alimentacin es de 9.6 a 28V
(16).
Brinda un rango de medicin desde de 0 a 4m hasta de 0 a 40m con un error
del 0.05% del valor final del margen de medicin. Puede trabajar en
temperaturas desde -25 hasta 70 C. La desviacin anual mxima es de solo
0.1% del valor final del margen de medicin.

1.10.5 Sonda de nivel sumergible con sensor de presin DCX-22 AA


de Keller
Las sondas de nivel DCX-22 AA son diseadas para ambientes de alta
humedad ya que no utilizan el cable ventilado. Para medir la presin
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 22

baromtrica utiliza un sensor de presin de aire a prueba de agua que est


situado en el encapsulamiento de acero inoxidable que protege la electrnica.
Los valores medidos son compensados matemticamente para los errores
originados por la no linealidad y los coeficientes de temperatura.
Mide desde 800 hasta 2300 mbar absolutos para sistemas de 10m de largo.
Como alimentacin utiliza una batera de 3.6V que tiene un tiempo de vida
estimado de 10 aos si se realiza una medicin por hora (17). Posee una salida
digital RS485 y una opcin inalmbrica utilizando un mdulo de transmisin de
datos GSM-1 (Global System for Mobile) que puede enviar los datos medidos a
un mvil como SMS (Short Message System).
Su linealidad es de 0.02% a escala mxima, brinda una banda de error tpica
de 0.05% de escala mxima para el sensor de presin y 0.1% de escala
mxima para el sensor baromtrico. Trabaja en fluidos a temperaturas de -10 a
40C y con una resolucin mxima de 0,0025% de escala mxima. Puede
observarse en la figura 1.9.

Figura 1.9 Sonda de nivel sumergible DCX-22 AA

1.11 Caractersticas de la sonda de nivel a disear


Despus de realizar un anlisis, se establecieron las condiciones de
funcionamiento en nuestro pas y se deciden las especificaciones de la sonda
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

C a p t u l o 1 E s t u d i o T e r i c o d e l a s S o n d a s d e N i v e l P g i n a | 23

de nivel a disear. Primeramente se decidi utilizar sensores piezorresistivos


con puente de Wheatstone debido a que han sido utilizados en el grupo con
excelentes resultados. Tambin se decidi sustituir el cable ventilado por el
sensor de presin baromtrico.
Con el objetivo de diversificar las aplicaciones de la sonda de nivel se
utilizarn dos salidas, una analgica con un lazo de corriente de 4-20mA y una
digital que ofrece la posibilidad de controlar aspectos del funcionamiento del
dispositivo y brinda la salida de presin mediante el protocolo de comunicacin
SDI-12.

1.12 Conclusiones
1. El empleo las sondas de nivel sumergibles que emplean el principio
hidrosttico para realizar el clculo de nivel brinda grandes ventajas
que diversifican su campo de aplicacin.
2. Las sondas de nivel sumergibles necesitan realizar la compensacin
de la presin atmosfrica y para ello puede utilizase otro sensor en la
superficie del lquido.
3. Debido

las

caractersticas

no

deseadas

de

los

sensores

piezorresistivos deben emplearse circuitos de acondicionamiento de la


seal para lograr obtener un valor preciso en la medicin.
4. La salida analgica de 4-20mA a dos hilos es ampliamente utilizada en
aplicaciones hidrulicas e industriales.
5. Las sondas de nivel con salida digital ofrecen grandes ventajas como
la medicin de ms de una variable y la configuracin de parmetros
del dispositivo.
6. Existen diversidad de protocolos estndar para la comunicacin
utilizables en la comunicacin digital, ofreciendo confiabilidad y
simplificando la labor del usuario.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 24

Captulo 2 Hardware de la sonda de nivel


2.1 Introduccin
En este captulo se describen las temticas relacionadas al diseo del
hardware de la sonda de nivel y las consideraciones que fueron tomadas en
cuenta en dicho diseo. Primeramente se presenta un diagrama en bloques
general del dispositivo. A partir de este diagrama sern seleccionadas las
componentes electrnicas que se encargarn de cumplir las funciones
asociadas a cada bloque. Esta seleccin estar condicionada principalmente
por el consumo de corriente de cada elemento. Esto se debe a que para lograr
la implementacin de una salida analgica 4-20mA a dos hilos es necesario
que el consumo general del dispositivo no supere los 4mA. Para finalizar se
describe y presenta el esquemtico final de la sonda de nivel resultante del
diseo del hardware.

2.2 Diagrama en bloques de la sonda de nivel


En la figura 2.1 se puede observar el diagrama en bloques funcional de la
sonda de nivel que ser diseada.

Figura 2.1 Diagrama en bloques de la sonda de nivel

Se comenzar a explicar la funcin de cada bloque de izquierda a derecha.


El sensor de presin es el encargado de proporcionar la presin ejercida por el
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 25

bloque lquido. El sensor baromtrico se encarga de brindar la presin a la cual


se encontrar la superficie del lquido. Seguidamente se representa el bloque
formado por el procesador digital de seales (PDS), elemento inteligente
central del sistema ya que se encargar de obtener los valores de los sensores
anteriormente descritos y a partir de esa informacin realizar la compensacin
necesaria.
El diseo prosigue con un conversor voltaje corriente mediante el cual se
implementar una salida analgica 4-20mA a dos hilos a partir de una seal de
tensin obtenida del PDS. El PDS tambin ser el encargado de interpretar y
ejecutar los comandos digitales que reciba a travs de una interfaz serie. No
puede olvidarse tambin la fuente de alimentacin que se encargar de
alimentar a todos los componentes del circuito diseado. Se debe emplear un
bloque de compatibilidad electromagntica que garantice la proteccin de todo
el diseo. Todos los bloques anteriormente descritos son la base del diseo
realizado. Se profundizar en las particularidades de cada uno de ellos con
especial detenimiento y responsabilidad al tener en cuenta todos los aspectos
necesarios para su correcto funcionamiento.

2.3 Seleccin del sensor de presin


Para realizar la seleccin del sensor de presin piezorresistivo que ser
utilizado en el diseo primeramente se debe analizar el consumo de corriente
del mismo y lograr que este sea lo menor posible. Adems debe tenerse en
cuenta la exactitud que garantice el sensor. Fueron seleccionados los sensores
Keller de la serie LD. Estos sensores basan su funcionamiento en la tecnologa
Chip

in

Oil,

integrando

dentro

del

propio

sensor

el

circuito

de

acondicionamiento que garantiza una medicin eficiente. La comunicacin con


este sensor es digital mediante el estndar I2C (Inter- Integrated Circuit) y la
alimentacin es mediante tensin entre 1.8 y 3.6V. Presentan un consumo
tpico de 1,5mA cuando realizan la conversin y 100nA en estado pasivo,
presentando

ptimas

caractersticas

para

su

utilizacin

en

sistemas

alimentados por batera (18). Garantizan un TEB (Total Error Band) de un 0,5%
del intervalo de medida dentro de un rango de temperatura de 0 a 50C. El
rango de medicin que se puede llegar a obtener es de 1 a 200 bar de manera

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 26

absoluta o 1 a 30 bar de manera relativa. Este sensor puede observarse en la


figura 2.2 junto a su estructura interna.

Figura 2.2 Sensor de presin Keller de la serie 9LD

2.4 Seleccin del PDS


La tarea que ser descrita a continuacin puede definirse como de primordial
importancia debido al impacto que posee el PDS en el diseo. Se debe tomar
especial cuidado en el consumo de corriente del PDS. Tambin debe integrar la
mayor cantidad de componentes utilizadas en el diseo en aras de disminuir el
espacio ocupado por la placa y la utilizacin de componentes externas.
Despus de realizar un amplio anlisis y un profundo estudio de diversas
familias de dispositivos fueron seleccionados como ms adecuados para la
aplicacin el ZSC31050 de la ZMDi (19), (20), el CY8C38 de la familia de los
PSOC de la Cypress Semiconductor (21), y los dsPIC33FJ64XXXXX y
dsPICFJ128XXXXX de la Microchip (22), (23) y el MSP430F6638 de la Texas
Instrument (24), (25). Los dsPIC fueron descartados debido a que el consumo
tpico es de 19mA, no presenta amplificadores operacionales integrados que
puedan ser utilizados en el diseo del lazo de salida 4-20mA y el DAC est
especialmente diseado para aplicaciones de audio, brindando dos canales de
salida (Izquierdo y Derecho).
El CY8C38 presenta un DAC de slo 8 bits, siendo posible mediante diversos
mtodos ampliar la resolucin hasta 12 bits, pero con un considerable aumento
de los problemas de linealidad (26). El consumo tpico de corriente que
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 27

presenta es de 2,3mA trabajando a una frecuencia de 6MHz, pero este


consumo puede aumentar en dependencia de los perifricos que se encuentren
en funcionamiento, lo cual descarta a esta familia.
El ZSC31050 necesita de la inclusin de amplificadores externos y un
microcontrolador para manejar la interfaz digital con salida RS232 o RS485.
Tambin se encuentra limitado en cuanto cantidad de registros e instrucciones
a utilizar con l, presentando slo 7 palabras de configuracin. El DAC que
ofrece es de 11 bits y el consumo tpico trabajando a 2,25MHz es de 2,5mA.
El MSP430F6638 presenta un consumo tpico de 270A/MHz hasta 8MHz, lo
cual resulta realmente bajo considerando que en nuestro diseo trabajaremos a
1MHz. Brinda un DAC de 12 bits, necesitando slo la utilizacin de un
amplificador operacional externo para implementar el lazo de salida analgico,
lo cual no representa una gran dificultad. Por estas razones fue elegido para
ser utilizado en el diseo. En la figura 2.3 se observa el MSP430F6638 y sus
componentes internos.
La familia MSP430 de microcontroladores de baja potencia est compuesta
por diferentes mdulos integrados. Esto ofrece la posibilidad de utilizar
diferentes perifricos que proporcionan gran variedad de aplicaciones. Las
aplicaciones tpicas incluyen sistemas de sensores tanto analgicos como
digitales,

control

digital

de

motores,

control

remoto,

termostatos,

temporizadores digitales, entre otras.


Para realizar el trabajo requerido el dispositivo posee una CPU RISC de 16
bits, una memoria FLASH de 256 KB para almacenar el programa de
funcionamiento y 16 KB de SRAM. Tambin brinda dos bloques de interfaces
de comunicacin serie universal las cuales son compatibles con UART
(Universal

Asynchronous

Receiver-Transmitter),

SPI

(Serial

Peripheral

Interface) , I2C, entre otros, los cuales sern utilizados para la comunicacin
con los sensores y para la interfaz de salida digital RS232 y RS485.
Adicionalmente posee 5 modos de trabajo a bajo consumo lo cual logra
extender la vida de la batera en aplicaciones portables. Cuenta con dos
osciladores internos brindando la posibilidad de no utilizar un cristal externo.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 28

Figura 2.3 Diagrama en bloques funcionales del MSP430F6638


Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 29

2.5 Diseo de la fuente de alimentacin


La fuente de alimentacin del sistema se encargar de proporcionar la
tensin de alimentacin necesaria a cada componente. Para el diseo de este
bloque se decidi utilizar una referencia de tensin. En la seleccin de dicho
dispositivo se debe tener en cuenta como imprescindibles caractersticas o
parmetros propios de especial observacin que la tensin proporcionada debe
ser de 3V, valor que optimiza la aplicacin para ser alimentada por batera.
Tambin el consumo de corriente de la misma. El rango de tensin de entrada
que es permitido, el cual debe encontrarse entre 0 y 30V, rango de tensin que
cubre la mayora de las opciones que se brindan en los diferentes dispositivos
comerciales. Se debe tener en cuenta tambin la corriente que sta puede
proporcionar a su salida ya que adems de brindar la tensin de alimentacin
sta ofrece la corriente necesaria para el funcionamiento de todo el sistema
incluyendo la situacin ms exigente. Esta ltima se describe como la
programacin de la memoria FLASH interna del MSP430F6638 donde el
consumo aumenta hasta los 3mA tpicamente, pudiendo llegar como valor
mximo hasta los 5mA. En el proceso de seleccin puede tenerse en cuenta
que existe una configuracin utilizando un JFET a la entrada de la fuente de
referencia que disminuye la tensin que entra en la fuente, no siendo de
estricta importancia que sta soporte la tensin mxima definida como la
mxima de alimentacin.
El estudio realizado de las referencias existentes en el mercado que podran
cumplir los requisitos determinados anteriormente incluy la MAX6029 (27), la
MAX6035 (28), la MAX6037 (29), y la MAX6139 (30). Las MAX6029 y
MAX6129 permiten a su entrada un rango de tensiones desde 3.2 a 12.6V. No
cumplen la condicin ideal pero sta puede ser manejada mediante la
configuracin del JFET. La MAX6037 slo permite un rango de 3.2 a 5.5V,
valor que la elimina del anlisis ya que el mnimo de tensin que se puede
mantener con la configuracin antes mencionada es de 10V. La nica que
realmente cumple con el rango de tensin especificado es la MAX6035, la cual
permite una variacin de tensin de alimentacin entre 4.9 y 33V.
Los consumos de corriente de esas fuentes se mantienen en niveles
bastante bajos, necesitando la MAX6035 73A y las MAX6029 y MAX6129
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 30

6,75A. El aspecto ms determinante en la seleccin pasa a ser entonces la


corriente que estas pueden ofrecer a su salida, quedndose estas ltimas por
debajo del lmite recomendable al proporcionar slo 4mA a su salida. La
MAX6035 brinda 10mA, y al cumplir con las condiciones necesarias en el
diseo es escogida como la fuente de referencia a utilizar. En la tabla 2.1
pueden observarse los parmetros antes expuestos para facilitar una
comparacin.
Tabla 2.1 Referencias de tensin
Vout (V)
Max

Vin (V)

Min

Typ

MAX6029_30

2,9955

3,0045 3,2 12,6

MAX6035_AUR30

2,994

3,006

4,9

33

MAX6037_30

2,994

3,006

3,2

MAX6129_30

2,988

3,012

3,2 12,6

Iin (A) Shutdown

Source
Current
(mA)

Min Max Typ Max


6,75

No

95

No

10

5,5 210 275

No

73

6,75

2.6 Diseo del lazo de salida 4-20 mA


Para disear el lazo de corriente de 4-20mA fue tomada como referencia una
configuracin encontrada en la documentacin estudiada. sta mediante
componentes analgicos activos y pasivos permite una implementacin
eficiente del convertidor de voltaje a corriente (31). Esta configuracin puede
ser observada en la figura 2.4.

Figura 2.4 Lazo de corriente 4-20 mA a dos hilos


Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 31

El circuito que se representa en la figura anterior es un convertidor de voltaje


a corriente. El capacitor Cd tiene como objetivo filtrar la seal de salida de la
referencia de tensin para minimizar las afectaciones que puedan generarse en
el sistema por algn tipo de ruido. La salida que se obtiene del MSP430F6638
mediante su DAC de 12 bits es el valor exacto de la variable ya compensada
obtenida de la seal de los sensores que son utilizados por el sistema. La
resistencia Rof se encarga de fijar la corriente mnima que generar el lazo
cuando la salida de tensin se site en su lmite inferior. La resistencia Rg es
responsable de la ganancia que poseer el lazo de corriente.
El amplificador operacional, conjuntamente al transistor y a las resistencias
sern los encargados de generar el lazo de corriente. El operacional
proporciona la realimentacin para al ajuste de la corriente del lazo. El
transistor constituye una especie de driver para poder manejar la corriente del
lazo y siendo imprescindible para la linealidad del convertidor V-I. El capacitor
Cc se acopla al operacional para garantizar la compensacin de este y la
disminucin de la ganancia de corriente alterna. En el caso de la resistencia Rb
esta limita la corriente de base del transistor, principalmente durante la puesta
en marcha y largos transitorios. Tambin permite ajustar la tensin de salida
del amplificador operacional para que se mantenga trabajando en el rango
lineal de salida y no introduzca alinealidades en la salida. La resistencia Rc
contribuye a la proteccin del transistor en caso de trabajo a altas
temperaturas. sta lo protege de largos transitorios de corriente durante el
encendido y durante transitorios de tensin, manteniendo en una regin segura
la temperatura de cruce del transistor.

2.6.1 Seleccin del amplificador operacional


Debido a que el MSP430F6638 no presenta amplificadores operacionales
internos

debe

seleccionarse

un

amplificador

operacional

para

lograr

implementar el diseo anteriormente explicado. Para realizar la seleccin de


dicho componente se debe tomar en cuenta el consumo de corriente del mismo
y la ganancia de tensin que puedan proporcionar.
Fueron estudiados varios amplificadores entre los que se destacan MAX4076
(32), el MAX9617 (33), el MAX9911 (34) y el MAX44264 (35). De estos fue
seleccionado el MAX9911 debido a que presenta excepcionales valores de
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 32

consumo de corriente (4A) y correctos valores de ganancia de tensin para


nuestra aplicacin. Posee un modo de autoapagado en el cual se mantiene
consumiendo 0,1nA. En la tabla 2.2 pueden observarse los valores utilizados
en la comparacin. Los espacios en blanco en la tabla se deben a que el
fabricante no proporcionaba la informacin.
Tabla 2.2 Principales amplificadores operacionales analizados

MAX4076
MAX9617
MAX9911
MAX44264

Icc
(A)
Typ Max
40 55
59 78
4
5
0.75 1.2

Input Offset Voltage


Drift (V/C)
Typ
Max
1.5
0.005
0.120
5
8

Avol
(dB)
Min Typ
80 117
120 160
95 120
90 120

GBW
(kHz)
Typ
230
1500
200
9

Shutdown

0.1nA - 0.5A max

2.6.2 Ecuaciones del lazo de corriente 4-20 mA


Con el objetivo de proporcionar las herramientas necesarias para una mejor
comprensin del origen de las ecuaciones del lazo de corriente puede decirse
que la corriente de salida est relacionada principalmente por tres flujos de
corrientes: Icc, Ioffset, Isx que pueden observarse en la figura 2.4. Icc es el
valor de corriente que es consumido por todas las componentes del sistema y
que siempre debe ser menor que 4mA. Ioffset es la corriente que debe
adicionarse a Icc para garantizar que el valor de la corriente se mantenga en
4mA cuando el valor de la variable medida sea el mnimo. La Isx constituye la
corriente que representa la diferencia del valor real de la variable y el valor
mnimo medible, es decir, es el valor entre 4 y 20mA que representa el valor de
la variable monitoreada.
Para realizar el anlisis se debe tener en cuenta que la corriente a la salida
del sistema es el resultado de la suma de las corrientes que fluyen por las
resistencias Rf y Rs. La relacin entre estas resistencias debe ser tal que la
mayor parte de la corriente de salida circule por Rs. Al escoger el valor de Rf
mucho mayor que Rs se simplifican las ecuaciones y permite discriminar la
pequea corriente que pueda pasar por Rf. La corriente que fluye por Rd puede
despreciarse, siendo entonces la corriente que fluye por Rf el resultado de la
adicin de las corrientes que pasan por Rg y Rof. Estas resistencias son de
gran importancia ya que Rg se encarga de manejar el valor de la corriente Isx y
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 33

Rof realiza el ajuste de Ioffset. Aplicando el principio de superposicin se


obtienen las ecuaciones 2.1 y 2.2.
(2.1)
(2.2)

2.6.3 Clculo de las resistencias Rof y Rg


Para realizar el clculo de las resistencias Rof y Rg se debe definir
primeramente que la variacin de tensin en la salida del DAC del
MSP430F6638 es de 0,3 a 2,7V. La variacin de la salida de dicho DAC dentro
del anterior rango debe representarse mediante Isx sobre un rango de corriente
de 4 a 20mA. Como resultado el circuito que representa el lazo de corriente
debe lograr una variacin de 16mA a la salida con esta variacin de 2,4V. Para
obtener las expresiones que permiten calcular las resistencias Rof y Rg se
realiza un despeje de las ecuaciones 2.1 y 2.2 respectivamente, resultando:
(2.3)
(2.4)
Conociendo

ya

estas

relaciones

es

necesario

establecer

valores

predeterminados para las resistencias Rs y Rf. Debe tenerse en cuenta que se


haba definido como criterio que el valor de Rf debe ser mucho mayor que el de
Rs. Tomando Rs de 50 garantizamos que la cada de tensin en el resistor
sea de 1V para la corriente mxima que seran 20mA. Si se toma entonces Rf
igual a 100K se puede afirmar que el error al no tener en cuenta el efecto de
Rf sera de 0,05%, sin embargo este error es puramente terico ya que la
ganancia y la corriente de offset son ajustadas por el propio MSP430F6638.
Mediante las ecuaciones 2.3 y 2.4 pueden calcularse los valores de Rof y Rg
al introducirse los valores de Vdd, Rs y Rf. Para realizar el clculo de Rof se
determin que el consumo terico total que podra alcanzar el circuito sera de
3,27mA, debido a esto Ioffset debe ser de 0,73mA. Al aplicar las ecuaciones, el
valor obtenido de Rof es de 8,2M y el de Rg de 300K. Estos valores no son
definitivos ya que pueden cambiar en dependencia del proceso de puesta a
punto del sistema y variaciones en el consumo real del sistema.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 34

2.6.4 Seleccin del transistor


Como parte del diseo del lazo de corriente debe seleccionarse el transistor.
Debe tenerse en cuenta que el transistor debe ser NPN y su comportamiento
debe ser lo ms lineal posible. Tambin se debe analizar la disminucin de la
disipacin de potencia con el aumento de la temperatura, ya que se trabajar
en el rango de 0 a 80C. Como datos especficos del componente se debe
garantizar que la potencia mxima disipada del transistor sea de 600mW a la
temperatura ambiente. Esto puede explicarse a partir del mximo valor del
rango de tensin que debe soportar el transistor. Este valor ser de 30V y la
corriente mxima que circular por l ser de 20mA, aunque en la prctica ser
menor ya que Ia corriente Icc no circular por este.
Tomando como requisitos estas particularidades fue seleccionado el
transistor 2DD2679 (36). Este presenta un encapsulado SMD, el cual se
adecua perfectamente a la aplicacin. Este dispositivo disipa 900mW a
temperatura ambiente (25C), brindando una variacin de 7.2mW/C al trabajar
por encima de los 25C. En el caso lmite de diseo (a una temperatura de
80C) la potencia mxima que podr disipar ser de 504mW, a pesar de no ser
este el valor ideal para el diseo puede ser disminuido el efecto de la
temperatura mediante la utilizacin de la resistencia Rc.

2.6.5 Clculo de las resistencias Rb y Rc


Para realizar el clculo del valor necesario para la resistencia Rc se toma el
valor para la corriente que circula por ella de 20mA. Realmente esta corriente
ser un poco menor debido a que parte de los 20mA circula solamente por Rs.
En Rc se debe disipar la diferencia entre la potencia mxima en el diseo
terico y la que lograr disipar el transistor. Mediante la ecuacin siguiente
puede calcularse el valor mnimo de Rc:
(2.5)
El valor calculado es de 240, por lo cual cualquier valor que se seleccione
debe ser mayor que este valor terico calculado. Mientras mayor sea el valor
escogido mayor ser el valor mnimo de alimentacin de tensin que se
necesitar para el transmisor. Esto no es conveniente. Por tanto se debe
seleccionar el valor final de Rc teniendo en cuenta esta relacin.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 35

Es recomendable tomar el valor de la resistencia Rb como 5K o 10K, esto


tiene como objetivo que sta pueda realizar su funcin de limitar la corriente de
base del transistor y ajustar la tensin de salida del amplificador operacional
para que se mantenga trabajando en el rango lineal de salida y no introduzca
alinealidades en la salida. El valor ser de 10K.

2.7 Diseo de la interfaz de salida digital


El diseo de la interfaz digital es de gran importancia ya que permitir la
configuracin remota de la sonda de nivel. Mediante esta interfaz se podrn
realizar diversas funciones como la configuracin de la sonda de nivel, el
formato de su salida, entre otras.
El MSP430F6638 presenta dos mdulos para comunicaciones digitales
llamados USCI_A (Universal Series Communication Interfaces A) y USCI_B los
cuales se utilizan para comunicacin serie (20). Cada uno se puede encargar
de manejar comunicaciones mediante SPI utilizando 3 o 4 hilos. USCI_A puede
manejar protocolos sobre las interfaces SPI, UART, IrDA (Infrared Data
Association). USCI_B se concentra en protocolos sobre la interfaz I2C. Para la
interfaz digital con los dos modos de comunicacin RS232 y RS485 sern
utilizados los mdulos USCI_A1 y USCI_A2 que manejarn los drivers
necesarios para la comunicacin digital serie mediante la interfaz UART.
En la comunicacin serie slo son utilizados dos pines, uno para transmisin
y el otro para recepcin. Simplemente el mdulo transmite o recibe caracteres
a una razn de bits asincrnica. La frecuencia de baudio para la transmisin de
cada caracter es seleccionado en el USCI, siendo la misma para transmitir o
recibir.

2.7.1 Seleccin del driver RS232


Para realizar la seleccin del driver RS232 se tom en cuenta principalmente
el bajo consumo que este deba presentar. Fueron estudiados una gama de
dispositivos dentro de los que se destacan el MAX3222E (37), el MAX3322E
(38), el MAX3230E (39), y el MAX13234 (40). En este caso se seleccion el
MAX3230 debido a su bajo consumo, presentando un modo de autoshutdown y
uno de shutdown por hardware. En la tabla 2.3 se muestran las caractersticas
de los principales dispositivos estudiados.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 36

Tabla 2.3 Drivers RS232

Typ

Max

Typ

Max

Maximum
Data Rate
(kbps)
Min

MAX3222E

0.3

10

250

MAX3322E
MAX3230E
MAX13234E

1
0.3
0.3

1
1

1
1
1

10
10
10

250
250
250

Supply Current (mA)

Shutdown Supply
Current (A)

2.7.2 Seleccin del driver RS485


Con el objetivo de seleccionar el driver RS485 se tomaron en cuenta los
mismos parmetros que fueron observados para el RS232. Despus de un
exhaustivo anlisis entre algunas de las familias existentes fue seleccionado el
MAX3471(41). Este dispositivo est diseado para aplicaciones alimentadas
por batera, siendo su consumo tpico de 1,6A para una alimentacin de 3,6V
con el driver deshabilitado. El consumo del dispositivo ser menor en el diseo
final ya que todo el sistema se alimentar con 3V. El consumo habitual del
dispositivo en completo funcionamiento es tpicamente de 50A.

2.7.3 Compatibilidad electromagntica de la interfaz digital


Para garantizar la proteccin necesaria contra los picos de tensin que
podran surgir y tener efectos indeseados en los componentes relacionados
con la comunicacin digital es utilizado un supresor bidireccional de transitorios
de tensin. Fueron escogidos los SMBJ5.0CA, los cuales poseen una tensin
de stand off de 5V (42). Estos dispositivos son colocados entre tierra y cada
una de las lneas de comunicacin del transmisor con el dispositivo a
comunicar.

2.8 Esquemtico de la sonda de nivel


Al concluir la seleccin de los principales componentes del hardware se
elabor el circuito esquemtico de la sonda de nivel diseada. En la figura 2.5
puede observarse la parte del circuito que est relacionada con el
microcontrolador y el lazo de corriente de la salida 4-20mA.
Los conectores JP1 y JP2 se encargan de garantizar la comunicacin
mediante el protocolo I2C entre el MSP430F6638 y los dos sensores que sern
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 37

empleados en el diseo (el sensor introducido en el lquido y el sensor


baromtrico respectivamente). Tambin puede observarse la conexin
caracterstica de un cristal de 4MHz que se utilizar en el dispositivo como
fuente de reloj y la utilizacin del diodo D1 para la proteccin del circuito contra
la inversin de polaridad de alimentacin.
En la figura 2.6 pueden observarse la conexin de los dos drivers de
comunicacin digital utilizados. La utilizacin de los capacitores CP1-CP8 entre
Vcc y Tierra permite proteger de ruidos externos al MSP430. Tambin son una
proteccin de los efectos parsitos no deseados y lazos aterrados que puedan
ocasionar inexactitud en las conversiones o tensiones de offset no deseados.
Adems, en dicha figura puede observarse el conector JTAG que permite la
programacin del microprocesador y realizar la puesta a punto del programa
durante el funcionamiento del dispositivo.
El hardware diseado permite que la sonda diseada tenga salida digital
sobre la interfaz RS232 o RS485 no de forma simultnea. En el momento de
realizar el montaje de los componentes en la placa se debe seleccionar solo
uno de los driver que ser utilizado para la comunicacin digital. Si se decide
emplear la interfaz RS232 el dispositivo brinda la posibilidad de ser alimentado
desde el mismo puerto serie de la PC sin necesidad de otra alimentacin
adicional si solo se quiere salida digital. En este caso el transmisor toma la
alimentacin de los pines DTR y RTS del puerto serie, para ellos se utiliza el
conector JPO1 y BAT54C.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 38

Figura 2.5 Esquemtico del MSP430F6638 con salida analgica


Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 39

Figura 2.6 Esquemtico de la interfaz digital de comunicacin serie y


componentes del diseo
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 2 Hardware de la sonda de nivel

P g i n a | 40

2.9 Conclusiones
1. La alimentacin se realiza a 3V para lograr que el consumo de toda la
sonda sea lo menor posible.
2. La utilizacin del MSP430F6638 en el diseo ofrece grandes ventajas,
ya que disminuye la cantidad de componentes externos que se
necesitan y posee un muy bajo consumo de corriente.
3. Se dise el hardware de la sonda de nivel a partir de un diagrama en
bloques general y tomando en consideracin los requisitos a cumplir
que fueron expresados en el captulo anterior.
4. Se dise un conversor de voltaje-corriente para garantizar el lazo de
corriente 4-20mA.
5. Se garantiz un consumo general del dispositivo menor que 4mA
mediante los dispositivos seleccionados.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 41

Captulo 3 Firmwares de la sonda de nivel


3.1 Introduccin
En este captulo se describen los aspectos asociados al desarrollo de los
firmwares que controlan el funcionamiento del dispositivo. Como primer tema
se profundiza en la operacin caracterstica que debe realizar la sonda de nivel.
Tambin se especifican las caractersticas de la comunicacin I2C con los
sensores de presin Keller de la familia LD. Adems se describen las
particularidades del firmware que maneja la salida analgica incluyendo el
conversor digital-analgico. Por ltimo, se explican las caractersticas,
funciones e implementacin del protocolo de comunicacin digital SDI-12, as
como el firmware que describe el procesamiento de las muestras.

3.2 Operacin en tiempo real de la sonda de nivel


Mediante el dispositivo diseado es posible obtener la presin ejercida por
una columna lquida para con este dato obtener el nivel. Mediante comandos
de configuracin debe escogerse la salida del dispositivo que se desee activar,
siendo obligatorio escoger uno de los drivers para la salida digital (RS232 o
RS485) y opcionalmente activar la salida analgica de 4 a 20mA.
En la figura 3.1 puede observarse el diagrama en bloques que sigue el
funcionamiento de la sonda para brindar el valor de la muestra. El MSP se
mantiene en un estado de bajo consumo de potencia en espera de un comando
que es enviado por una computadora que acta como amo. Este comando
recibido por el MSP pasa por una primera etapa de identificacin mediante un
proceso de comparacin. Posteriormente el MSP obtiene las muestras de los
sensores y las resta siguiendo el principio de compensacin atmosfrica
descrito en el epgrafe 1.8. Por ltimo enva los datos adquiridos de manera
digital y/o analgica.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 42

Figura 3. 1 Diagrama en bloques sobre el procesamiento y envo de las


muestras

Debido a este anlisis sobre la operacin de la sonda de nivel se puede


constatar la necesidad de desarrollar diversos firmwares para garantizar las
funcionalidades

del

dispositivo.

Pueden

definirse

tres

funcionalidades

fundamentales: la comunicacin del MSP con los sensores, el control de la


salida analgica y la comunicacin de una PC y el MSP. Estos aspectos sern
presentados en los epgrafes que siguen.

3.3 Comunicacin con los sensores Keller 9LD


Con el objetivo de lograr el correcto funcionamiento de los sensores de
presin empleados en el diseo debe ser garantizada la comunicacin
mediante el protocolo digital I2C utilizado por los mismos. La correcta
implementacin del protocolo de comunicacin puede clasificarse como de vital
importancia ya que garantiza el funcionamiento efectivo de nuestro sistema.

3.3.1 Protocolo de comunicacin digital I2C


El protocolo I2C fue definido originalmente por el fabricante Philips y
proporciona una manera muy simple de comunicacin entre circuitos
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 43

integrados mediante la utilizacin de una mnima cantidad de pines. Ha llegado


a convertirse en un estndar industrial adoptado por una gran cantidad de
fabricantes

de

circuitos

integrados.

Dicho

protocolo

presenta

varias

caractersticas ventajosas que lo distinguen (43):

Slo se requiere un bus compuesto de dos lneas: una lnea de datos


serie (SDA) y una lnea de reloj serie (SCL).

Cada dispositivo que se encuentre conectado al bus puede ser


direccionado mediante una nica direccin y una relacin simple
definida como amo/esclavo, siendo el dispositivo amo capaz de ser
amo transmisor o amo receptor.

Constituye un bus con la capacidad de ser multi-amo, incluyendo


deteccin de colisiones y mediacin con el objetivo de prevenir errores
en los datos si dos o ms amos comienzan a transmitir
simultneamente.

Es posible realizar transferencias de 8 bits mediante puerto serie a


velocidades de 100kbit/s en el modo estndar, 400kbit/s en el modo
rpido o hasta 3,4Mbit/s en el modo de alta velocidad.

El tiempo de subida es determinado entre el 30% y el 70% de la


tensin de alimentacin.

La cantidad de circuitos integrados que pueden ser conectados al


mismo segmento de bus se encuentra limitado slo por la mxima
carga capacitiva del bus que es de 400pF.

Dentro del proceso de comunicacin que se establece por el I2C se deben


definir dos condiciones particulares que poseen una gran importancia para
dicha comunicacin: la condicin de START y de STOP (44). La condicin de
START constituye una transicin de nivel alto a nivel bajo en la lnea SDA
mientras que la lnea SCL se encuentre en nivel alto como se observa en la
figura 3.2. La condicin de STOP se encuentra definida por una transicin de
nivel bajo a nivel alto en la lnea SDA mientras que SCL se encuentra en nivel
alto, tambin puede observarse en la figura 3.2. Estas condiciones siempre son
generadas por el amo para ocupar o liberar el bus. Existe otra condicin la cual
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 44

se define como START repetido, la cual, si es generada, contina ocupando el


bus para el amo, el funcionamiento es similar al de la condicin de START.

Figura 3.2 Condiciones de START y STOP

El proceso de comunicacin se puede dividir para su mejor entendimiento en


varios pasos consecutivos que realizar el amo:
1. Espera hasta que observa que el bus est libre, estando SDA y SCL
en nivel alto.
2. Genera la condicin de START indicando que el bus se encuentra
ocupado, comenzando los otros dispositivos conectados al bus a
escuchar para identificar cul de ellos va a ser el direccionado.
3. Provee en la lnea SCL una seal de reloj que ser utilizada por todos
los dispositivos conectados al bus como referencia para reconocer la
validez de cada bit transmitido en la lnea SDA. Los datos en SDA
deben ser vlidos al momento en que SCL cambia de nivel bajo a nivel
alto.
4. Enva en forma serie la direccin binaria nica del dispositivo con el
cual desea comunicarse.
5. Pone un mensaje en el bus que indica si se desea enviar o recibir
informacin del otro dispositivo mediante un bit.
6. Pregunta al otro dispositivo si reconoci su direccin y est listo para
la comunicacin mediante un bit de ACKNOWLEDGE.
7. Despus de que el otro dispositivo reconozca que todo se encuentra
listo los datos pueden ser transferidos.
8. Enva o recibe tantas palabras de 8 bits de datos como requiere.
Despus de cada palabra el transmisor espera que el receptor
reconozca que la transmisin se realiz de manera correcta.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 45

9. Cuando todos los datos terminan libera el bus mediante la condicin


de STOP.
Al establecer la comunicacin se intercambian bytes, siendo cada uno
reconocidos por un noveno bit generado por el receptor, hasta que la
transferencia es completa. El direccionado puede realizarse mediante 7 o 10
bits. En el caso en que dos amos intenten establecer comunicacin al mismo
tiempo, se realiza un proceso de mediacin, en el cual se determina que amo
se apropia del control del bus.

3.3.2 Protocolo de comunicacin de los sensores Keller 9LD


El protocolo de comunicacin que utilizan los sensores Keller de la serie LD
se basa en la transmisin serie mediante I2C. La velocidad permisible por la
comunicacin de los sensores de la serie 9LD vara entre los 100kbit/s del
modo estndar hasta los 3,4Mbit/s del modo de alta velocidad, siendo incluidos
los 400kbit/s del modo rpido y 1Mbit/s del modo rpido plus (18).
El direccionamiento se realiza mediante 7 bits, lo cual permite 112 nodos en
el bus, debido a que 16 direcciones se encuentran reservadas. La direccin por
defecto del sensor 0x40h (45). Los sensores slo respondern a la direccin
que se encuentra almacenada en su memoria.
El

esclavo

debe

confirmar

siempre

los

bytes

mediante

un

ACK

(Acknowledge). En el caso de que no responda con un nivel bajo despus del


octavo bit el amo detecta una excepcin. sta puede estar causada por estar
solicitando el dato a la direccin de esclavo incorrecta. En la figura 3.3 se
muestra la composicin de los datos enviados y recibidos utilizando I2C para
comunicarse con los sensores, el comando enviado para lograrlo debe ser
0xACh.

Figura 3.3 Estructura de la trama enviada y recibida por los sensores Keller
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 46

En la figura anterior se puede observar que el sensor responde primeramente


con un byte de STATUS (puede observarse su composicin en la figura 3.4), el
cual posee varios campos como Busy? Este campo en correspondencia de si
se encuentra en 1 o 0 indica si el sensor est ocupado en la adquisicin y
procesamiento de la seal o si se encuentra listo para enviar datos. Tambin se
puede observar el campo Mode, el cual puede encontrarse en modo normal
(00) o en modo comando (01). En el caso del modo Memory error? este
declara si su valor es 0 que no existe error en la suma de chequeo
(checksum), y si su valor es 1 es que hubo un error al comprobar los datos.

Figura 3.4 Byte de STATUS

Los registros de datos de los sensores tienen siempre 16 bits de extensin.


Existen tres posibilidades de obtener datos tiles: leer 1, 3 o 5 bytes(18). En un
byte se obtendra la informacin del registro STATUS, en 3 bytes se podra
obtener la informacin de presin o un registro de 16 bits desde la memoria,
adems del STATUS, y en el caso de 5 bytes se obtendran tanto la
informacin de STATUS, la de presin y la de temperatura.

3.3.2.1 Deteccin del fin de adquisicin y procesamiento


Cuando finaliza el proceso de adquisicin y procesamiento de la muestra el
sensor debe indicarle al amo que est listo para transmitirla. Para reconocer el
final de una conversin existen tres maneras. La primera forma de realizar esta
operacin es esperar 4ms despus de enviar el comando 0xACh a que finalice
la conversin y el acondicionamiento de los valores de presin y temperatura.
La segunda manera es la solucin de handshake, la cual se basa en la
utilizacin de una interrupcin externa que despierte al amo cuando suba el
nivel del pin EOC (End of Convertion). La ltima opcin es encuestar
continuamente la bandera Busy? del registro STATUS, la cual ser nula
cuando se termine la conversin como fue explicado en el epgrafe anterior.

3.3.2.2 Conversin de los datos digitales enviados por el sensor


Para obtener un valor digital de presin igual a la presin a la que se
encuentra sometido el sensor debe realizarse un proceso de conversin de los
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 47

valores enviados por el mismo. Este proceso se realizar dentro del CPU
(unidad procesadora central) del MSP. Este escalamiento o conversin se logra
mediante la utilizacin de una funcin lineal determinada por dos puntos, los
cuales van a ser los valores mximo y mnimo que sern sensados por el
sensor en particular. Estos valores son almacenados en memoria por el sensor
y equivalen a 16384 y 49152. La expresin que permite obtener la presin real
se describe como:

(3.1)

Donde:
[

]: Dato de presin en bar

]: Dato obtenido del sensor


: Lmite superior del rango de presin que brinda el sensor
: Lmite inferior del rango de presin que brinda el sensor

Tambin se debe realizar un proceso de conversin si se desea obtener el


valor digital de la temperatura. Similarmente a la presin se utiliza una funcin
lineal, pero en este caso los lmites en el rango de medicin estn dados por el
fabricante del sensor. La expresin correspondiente puede observarse en la
ecuacin 3.2. Ntese que el dato obtenido del sensor de traslada 4 bits a la
derecha antes de realizar cualquier operacin.
[ ]

(3.2)

Donde:
[ ]: Dato de temperatura en
[

]: Dato obtenido del sensor

3.3.2.3 Cambio de direccin de un esclavo


En el caso que se decida combinar varios sensores de presin en un mismo
bus

debe garantizarse una direccin de esclavo nica para cada uno. Para

lograrlo el contenido de memoria de cada sensor debe ser sobrescrito. Al ser


esta memoria basada en tecnologa de una sola programacin slo es posible
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 48

aadir algunos 1 quemando clulas de bits adicionales. Despus de aadir


seis 1al registro de direccin del esclavo la oportunidad de cambiar es
mediante una limpieza del contenido de memoria por incremento del contador
de pginas. Esto indica que no puede cambiarse la direccin del esclavo
infinitas veces, por lo que se recomienda un planeamiento meticuloso en todo
el sistema para cambiar dicha direccin una o dos veces como mximo.

3.3.3 Desarrollo del firmware de comunicacin con los sensores


El proceso de comunicacin con los sensores se realiza en el dispositivo
mediante la utilizacin del mdulo de I2C presente en la interfaz de
comunicacin serie universal (USCI) del MSP430F6638. Para realizar una
efectiva configuracin de dicho mdulo primeramente se debe proceder a la
correcta configuracin de los puertos de los cuales hace uso este componente.
Con este objetivo se utiliza la funcin que maneja los puertos mapeables,
dando a los puertos P2.1 y P2.2 (pines 18 y 19 respectivamente) la
funcionalidad de salidas de SDA y SCL del microcontrolador a los sensores
respectivamente. Posteriormente se configuran ambos puertos mediante el
registro P2SEL a las anteriores salidas.
Para realizar el proceso de configuracin que garantiza el funcionamiento
esperado de la comunicacin I2C se debe en primer lugar resetear el USCI
mediante

la

activacin

del

bit

UCSWRST

del

registro

UCB0CTL1.

Mantenindolo en este estado se define el funcionamiento del USCI como I2C


amo y comunicacin sincrnica.
La configuracin de la fuente de reloj que ser empleada tambin debe
tenerse en cuenta. El MSP430F6638 define tres seales de reloj disponibles: el
reloj auxiliar, el reloj amo y el reloj del subsistema del amo. Todas cuentan con
sus respectivos divisores que pueden fraccionar la seal en los valores de 1, 2,
4, 8, 16 o 32. La seal de reloj escogida es la del subsistema del amo.
En el sistema la velocidad de comunicacin se decidi fuera de 400kHz. Para
lograr que se genere sta se calcul el valor necesario en el prescaler del
mdulo (obtenindose el valor de 10 para la configuracin), siendo el cristal
utilizado de 4MHz. En este punto se considera inicializado el mdulo I2C y se
limpia el bit UCSWRST.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 49

Para realizar la comunicacin del amo son empleadas las interrupciones de


transmisin y de recepcin que posee el componente utilizado. En el caso de la
transmisin se debe generar un solo byte con el valor 0xACh, de lo cual se
encarga una funcin nombrada TX_BYTE. En la recepcin se deben recibir tres
bytes (status, MSB de presin y LSB de presin), hacindolo mediante un
arreglo definido que es manejado por la funcin RX_BYTE. Estas funciones
pueden ser observadas en el Anexo 1.

3.4 Firmware que controla la salida analgica del sistema


El diseo presentado posee tres salidas: dos digitales y una analgica. El
control de la salida analgica mediante el firmware se concentra en habilitar la
conversin de los datos mediante el conversor D/A de 12 bits que se encuentra
embebido en el MSP430F6638 y la habilitacin del amplificador operacional
MAX9911 para manejar el consumo de esta parte del circuito integrado.

3.4.1 Conversor digital-analgico perteneciente al MSP430F6638


El

conversor

digital-analgico

que

se

encuentra

embebido

en

el

MSP430F6638 puede configurarse en dos modos: de 8 o de 12 bits de


resolucin, proporcionando una salida lineal. Tambin es posible utilizarlo en
conjunto con el controlador de DMA (Direct Memory Access). La salida de
mxima escala es programable para multiplicar por 1, 2, o 3 la referencia de
tensin escogida, la cual puede ser seleccionada entre una fuente interna de
1.5V, 2.0V o 2.5V y la fuente externa que garantice el diseador de todo el
sistema (25).
El registro de datos del DAC puede enviarse directamente a la conversin o
puede ser doblemente buffereado. El DAC soporta dos formatos de datos:
complemento a dos y binario en orden. La tensin de offset del amplificador de
salida del DAC puede ser tanto positiva como negativa. Cuando es negativo el
amplificador de salida intenta manejar la tensin negativa, pero al ser esto
imposible la tensin de salida se mantiene en cero hasta que en la entrada
digital del DAC produzca una tensin lo suficientemente positivo para
sobrepasar el offset negativo de tensin. La situacin puede observarse en la
figura 3.5. En el caso en que el offset es positivo una entrada de cero digital no
resulta en una salida de tensin nula, se infiere entonces que la tensin de
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 50

salida del DAC alcanza el valor mximo de tensin antes de que la palabra
digital de entrada sea la mxima posible como se observa en la figura 3.6.
El mdulo de DAC tiene la capacidad de calibrar la tensin de offset del
amplificador de salida. Cuando esta opcin se encuentra activa se inicia el
proceso de calibracin, el cual debe finalizar antes de que sea utilizado el DAC.

Figura 3.5 Offset Negativo en la salida del DAC

Figura 3.6 Offset positivo en la salida del DAC

La bandera de interrupcin del DAC se activa cuando un dato es enlazado


desde registro de datos al data latch. El significado de la activacin de esta
bandera es que el DAC est listo para recibir nuevos datos.

3.4.2 Modo shutdown del amplificador operacional MAX9911


En el diseo del lazo de salida de 4-20 mA se utiliza como uno de los
componentes el amplificador operacional MAX9911. Un objetivo de nuestro
diseo es generar el menor consumo de potencia posible, por lo cual se hace
imprescindible manejar mediante el firmware el shutdown que posee este
amplificador. El modo shutdown se activa cuando su entrada posee un nivel
bajo. Tpicamente posee una demora al entrar en el modo shutdown de 2s y al
salir de 30s. Mientras el amplificador se encuentre en este modo sus salidas
estarn en alta impedancia.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 51

3.4.3 Desarrollo del firmware que maneja la salida analgica


Con el objetivo de controlar la salida analgica del dispositivo mediante
software se controla la habilitacin y el funcionamiento del mdulo DAC
embebido en el MSP430F6638. Para esto se configura el mdulo teniendo
como referencia de tensin de alimentacin del MSP. Tambin se activa la
calibracin automtica y se mantiene la salida de escala mxima (del orden de
la referencia de tensin).
Para controlar la habilitacin del mdulo se utiliza la funcin desarrollada en
este trabajo DAC_CONV que activa el mdulo y permite la conversin del dato,
habilitando tambin al amplificador operacional. Cuando se finaliza la
conversin se activa la interrupcin del canal 0 del DAC y se desactiva el
mdulo para contribuir al bajo consumo del dispositivo. Tambin se desactiva la
salida del puerto P1.3 (pin 37) empleada para habilitar o deshabilitar el
shutdown del amplificador. Estas funciones pueden ser observadas en el
Anexo 1.

3.5 Firmware para la comunicacin entre el MSP y una computadora


Para la comunicacin con la computadora se escogi el protocolo de
comunicacin SDI-12. Mediante las interfaces digitales que se ofrecen, el
usuario puede manejar todo el funcionamiento del sensor inteligente desde una
computadora u otro dispositivo de adquisicin de datos que funcione como amo
y que sea compatible con protocolo antes mencionado (46). En el caso de
utilizarse un PC como amo se puede emplear como interfaz una aplicacin de
LabView llamada LabVIEW SDI-12 API que permite crear un sistema de
comunicacin SDI-12 manejado por software (47).

3.5.1 Protocolo de comunicacin SDI-12


Este protocolo de comunicacin fue diseado para la adquisicin de datos
ambientales a mitad de los aos 80 debido a las inquietudes de un grupo de
expertos sobre la poca confianza que brindaban los sensores analgicos de
baja potencia y la complejidad de la interfaz entre estos y los registradores (48).
La utilizacin de este protocolo presenta como ventajas la posibilidad
complejos algoritmos de auto-calibracin en el sensor, el intercambio de
sensores sin necesidad de reprogramar el amo, pueden utilizarse varios
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 52

sensores o registradores en el bus, el diseo de los registradores puede


realizarse independientemente de los sensores a utilizar, entre otras.

3.5.1.1 Interfaz elctrica


El bus SDI-12 se encuentra compuesto por tres conductores: tierra, datos
serie y lnea de 12V (49). Este bus permite tener conectados 10 esclavos a l,
brindando un tamao de cable de 60 metros para cada uno. Si se reduce la
cantidad de sensores puede aumentarse esta distancia. La lnea de datos es
bidireccional y utiliza lgica negativa para la transmisin. Los niveles de tensin
lgicos utilizados en la comunicacin se definen como: marcado, que simboliza
el estado binario 1 y se encuentra en el rango de tensin de -0.5V a 1.0V,
espaciado, el cual corresponde al estado binario 0 y oscila entre los 3.5V y
5.5V, y la transicin que se define entre 1V y 3.5V.
La lnea de tierra se debe conectar a la tierra del circuito y al plano tierra del
amo. El conductor empleado debe ser de gran tamao para mantener la cada
de tensin entre el amo y todos los esclavos menor que 0.5V durante el mayor
consumo de corriente combinado de estos ltimos. La lnea de 12V se alimenta
del amo o de la fuente de alimentacin externa, el cual ofrece entre 9.6V o 16V
con respecto a tierra.

3.5.1.2 Protocolo de comunicacin


La comunicacin mediante el protocolo SDI-12 se realiza a travs del
intercambio de comandos en formato ASCII. La velocidad es de 1200 baudios y
la trama de un byte se encuentra conformada por un bit de start, 7 bits de datos
(comenzando por el menos significativo), un bit de paridad, siendo esta par y
un bit de stop (49).
El intercambio debe comenzar con un espaciamiento continuo en la lnea de
datos que indica a los esclavos en el bus que estn siendo despertados. El
amo entonces debe enviar un comando el cual comienza con una direccin
(entre 0 y 9 en cdigo ASCII) que indica al esclavo que se dirige. Este devuelve
automticamente la respuesta correspondiente (comenzando tambin con su
direccin) mientras que los otros esclavos presentes en el bus vuelven al
estado de bajo consumo. Todos los caracteres que son transmitidos deben ser
caracteres ASCII imprimibles. En la tabla 3.1 se observan los comandos
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 53

propios del protocolo. Es importante resaltar que para que un esclavo o amo
sea considerado compatible con la versin 1.3 del protocolo deben soportar
cada comando presente en dicha tabla.
El ltimo componente de cada comando es el caracter !. Este caracter slo
puede ser enviado como el final del comando. Los ltimos dos bytes de cada
respuesta son un retorno de transmisin y de una alimentacin de lnea
(<CR><LF>).
El comando aI! se encarga solicitar informacin al esclavo (49). Entre las
informaciones con las cuales se debe responder se encuentra el nivel de
compatibilidad, el nmero del modelo y un nmero de versin del firmware,
entre otros. El comando ?! solicita al esclavo que responda con su direccin.
Se debe tener en cuenta que si se encuentran conectados varios esclavos al
bus estos respondern al mismo tiempo a la solicitud, causando colisin en el
bus.
El comando aM! le indica al esclavo que comience la medicin. Sin
embargo la respuesta a este comando no es el dato medido, sino el tiempo y el
nmero de muestras que obtendr en dicho tiempo conformados en el
siguiente formato atttn<CR><LF>. Si el esclavo retorna 000 como tiempo de
demora es que la muestra se encuentra lista inmediatamente para ser enviada
y el amo debe enviar el comando aD0! para obtener la muestra. En caso
contrario el amo espera a que transcurra el tiempo especificado, seguidamente
transmite un espaciamiento continuo en la lnea de datos durante 12ms y
solicita la muestra con aD0!, en el caso en que los datos se encuentren listos
en el esclavo antes del tiempo indicado le enva al amo una solicitud de
servicio, la cual sugiere al amo detener el conteo del tiempo y solicitar dichos
datos. La respuesta de tiempo dada por el esclavo debe ser mayor que el que
realmente le tomar realizar la medicin para permitir tolerancias en los
tiempos de transferencia. La nombrada solicitud de servicio es una respuesta
con el formato a<CR><LF>.
El comando aC! le ordena al esclavo tomar una medicin concurrente. Esto
significa que la medicin se realizar mientras otros esclavos estn midiendo
tambin. La respuesta es similar a la proporcionada a aM!, la diferencia en
este caso es que el esclavo no enva una solicitud de servicio al amo, sino que
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 54

Tabla 3. 1 Comandos del protocolo SDI-12 y sus respectivas respuestas

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 55

este debe esperar a que se termine el tiempo indicado y mediante aD0!


solicitar los datos.
La respuesta al comando aD0! se define de la siguiente forma:
apd.d<CR><LF>. La p indica la polaridad (+ o -), y la d son los dgitos
numricos de la muestra, indicando . el punto decimal. La mayor cantidad de
dgitos que puede tener un dato es 7, sin incluir el punto decimal.

3.5.1.3 Chequeo de redundancia cclica


El protocolo SDI-12 posee una forma de aumentar la capacidad de detectar
errores mediante una variacin de los comandos anteriormente expuestos que
obligan al esclavo a aadirle al dato un chequeo de redundancia cclica (CRC)
de 16 bits. El comportamiento del esclavo debe ser el mismo al comando con
solicitud de redundancia cclica que sin esta solicitud, dando como respuesta la
misma cantidad de muestras.

3.5.1.4 Comandos extendidos


Los comandos extendidos son la manera de ofrecer al usuario opcin de
control sobre el funcionamiento del esclavo. Estos comandos ofrecen la
posibilidad de indicar al esclavo la realizacin de una operacin no precisada
por los comandos tradicionales. Estos comandos extendidos son definidos y
documentados por cada fabricante. Los comandos extendidos comienzan por
la direccin del esclavo, seguida por una X y tres caracteres definidos por el
usuario, sin ser obligatorio definir los tres, terminando en !.

3.5.2 Desarrollo del firmware para la comunicacin digital del


sistema
El funcionamiento del sistema se encuentra regido por las rdenes recibidas
en forma de comandos mediante el protocolo SDI-12. A partir de la recepcin
de los diferentes comandos se ejecutan las acciones necesarias para generar
las respuestas adecuadas. El protocolo de comunicacin le facilita al usuario en
su labor de amo controlar mediante comandos las salidas que funcionarn en
el dispositivo, las unidades de ingeniera de la variable, la obtencin de
mediciones, es decir, todo el funcionamiento del sistema.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 56

3.5.2.1 Configuracin de las salidas del dispositivo


El primer paso que debe realizar el usuario es configurar el funcionamiento
del dispositivo. Para esto se definieron varios comandos extendidos que se
muestran en la tabla 3.2. El objetivo de estos comandos es definir el tipo de
salidas que se utilizarn, aspecto de vital importancia en el consumo del
dispositivo. La salida analgica activa llama a la funcin Analog_out que
deshabilita el modo shutdown del amplificador y activa la bandera Flag_analog
que indica en el proceso de envo del dato al amo que se debe utilizar la salida
analgica.
Tabla 3.2 Comandos extendidos para controlar las salidas del sistema

Comando

Descripcin

aXL!

Salida analgica activa

aX0!

Salida analgica inactiva

aX2!

Salida digital RS232 activa

aX4!

Salida digital RS485 activa

El comando salida digital RS232 activa se encarga de utilizar a la funcin


RS232_out para habilitar el driver RS232 y deshabilitar el RS485. El comando
salida digital RS485 activa realiza lo contrario: deshabilita el driver RS232 y
habilita el RS485. Estos dos ltimos comandos se definieron con esas
funciones debido a que estas salidas digitales son mutuamente exclusivas.

3.5.2.2 Configuracin de la unidad de ingeniera


El dato enviado mediante la salida digital es obtenido de la compensacin de
las muestras proporcionadas por los sensores de presin. La unidad definida
por defecto para esta muestra es el bar. Sin embargo, el usuario posee la
capacidad de mediante los comandos extendidos mostrados en la tabla 3.3
modificar la unidad de ingeniera con la que se muestra la variable. Estos
comandos modifican la variable Unit_out para que en el proceso de transmisin
se tenga en cuenta la conversin necesaria. La unidad de ingeniera puede ser
modificada en cualquier momento.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 57

Tabla 3.3 Comandos extendidos para cambiar las unidades de ingeniera

Comando

Unidad de ingeniera

Unit_out

aXB!

bar

aXmB!

mbar

aXC!

mH2O

aXmC!

mmH2O

aXkP!

kPa

aXMP!

MPa

aXK!

Kg/cm2

3.5.2.3 Obtencin de los datos de los sensores y procesamiento


Cuando el MSP430F6638 recibe por parte del usuario el comando aM! se
pasa a adquirir y procesar las muestras que brindan los sensores de presin
mediante la funcin Start_med. sta genera la respuesta correcta a dicho
comando y utiliza otra funcin llamada Measure_Start para el proceso de
comunicacin con los sensores y procesamiento de los datos. Debido a la
ausencia de pruebas fsicas para determinar el tiempo de demora del sistema
en la respuesta dada a este comando se declara un tiempo estimado para una
sola muestra en cada caso.
Lo primero que se realiza es establecer los parmetros para comunicarse
correctamente con el primer sensor. Se utilizan las funciones del mdulo I2C
para obtener las muestras de los sensores de manera que la del sensor de
presin sumergido se almacena en la variable Sensor1 y la del sensor
baromtrico en la variable Sensor2. Despus de obtener las muestras se
prosigue a procesarlas como se describe en el epgrafe 3.3.2.2 para obtener el
valor real en bar.
Como forma ms rpida para el procesamiento se obtuvo mediante
sustitucin y simplificacin la expresin 3.3. Esta expresin permite sustituir los
valores de cada sensor, realizar la resta y obtener el valor compensado de
presin. Este valor real se almacena en la variable Pressure para su posterior
empleo.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 58

3.3

3.5.2.4 Envo de los datos al amo


Como se explica en el epgrafe 3.5.1.3 al recibir el comando aD0! se debe
enviar el dato al amo. Pero se debe tener en cuenta el formato impuesto: el
valor de la muestra debe comenzar primeramente con el signo y proseguir con
como mximo 7 dgitos que representan el valor de la muestra. Esta cantidad
no incluye el punto decimal que es opcional.
La recepcin del comando emplea la funcin Send_Data para conformar el
mensaje. A su vez sta llama a la funcin Data_Out la cual es la real
organizadora del procesamiento de la muestra (almacenada en la variable
Pressure) y el ordenamiento para su correcta transmisin. La explicacin de
dicha funcin podra ser engorrosa, por lo que se expondrn slo elementos
claves para la confeccin del algoritmo y su entendimiento, presentndose un
diagrama en bloques de dicho algoritmo (para cuando se enva la presin en
unidades de bar) en la figura 3.7 para una mejor comprensin. Estas funciones
y variables se pueden observar en el Anexo 1.
Fueron tomados en cuenta inicialmente el valor de la variable Unit_out, para
confeccionar diferentes procesos de conversin de los datos en cada caso.
Tambin fue importante decidir en funcin de los 7 dgitos que componen la
muestra a enviar la cantidad de cifras significativas que seran posibles incluir.
Debido a esto se decidi mantener los 7 dgitos de resolucin, siendo afectada
la posicin del punto decimal en cada caso por la conversin de cada unidad
de ingeniera diferente. Por ltimo no se debe dejar a un lado el signo de la
muestra, ya que este es uno de los factores presentes en la transmisin del
resultado final.
En general se compara Unit_out con cada valor, para as en cada caso
establecer una transmisin similar pero con sus propios valores de conversin
y orden del punto decimal. En el proceso antes expuesto tambin se tiene en
cuenta si la salida analgica se encuentra activa para ofrecer el dato al DAC.
En la tabla 3.4 pueden observarse los factores de conversin entre las
unidades de ingeniera definidas para el sistema. Estos se utilizan en el
comienzo de cada subrutina para cambiar el valor de la muestra obtenida.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 59

Tabla 3.4 Factor de conversin en unidades ingenieriles

Unidad

Factor de conversin con


respecto a 1bar

mbar

1000

mH2O

10.2

mmH2O

10200

kPa

100

MPa

0.1

Kg/cm2

102

3.5.2.5 Respuestas con CRC


En el caso de que solicite en algn comando que a la respuesta se le aada
CRC a su llegada se activar la bandera CRC_ask. Esta bandera indica que en
el proceso de envo de la muestra se debe calcular y enviar el CRC de 16 bits.
Para realizar el clculo se utiliz un algoritmo brindado por la Texas Instrument.
Este algoritmo se encuentra en la nota de aplicacin Implementacin de
CRC con los MSP430 (50). Tambin se le aade un cdigo para su
implementacin. Para el envo de los valores calculados se hace uso del
algoritmo facilitado en el protocolo SDI-12 (49).

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 60

Figura 3.7 Diagrama en bloques de la transmisin de la muestra en bar


(Unit_out = 0)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 3 Firmwares de la sonda de nivel

P g i n a | 61

3.6 Conclusiones
1. En el modo de operacin en tiempo real el firmware utiliza las
muestras

obtenidas

de

los

sensores

para

calcular

el

nivel

compensando el efecto de la presin atmosfrica.


2. Se desarroll el firmware que controla la comunicacin con los
sensores y la obtencin de las muestras.
3. Se logr desarrollar un firmware para configurar y habilitar la salida
analgica de corriente del sistema.
4. Se realiz un algoritmo para procesar las muestras, garantizar el
proceso de compensacin y brindarlas al usuario de la manera
requerida.
5. Se implement una salida digital para sonda de nivel utilizando el
protocolo de comunicacin SDI-12 para lograr la comunicacin digital
entre el dispositivo y el usuario.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 62

Captulo 4 Resultados y Anlisis Econmico


4.1 Introduccin
En este captulo se muestran los resultados de las simulaciones de cada
bloque funcional del dispositivo en los programas PSPICE y Proteus. Tambin
se describen las pruebas realizadas para validar el firmware desarrollado para
el MSP430F6638, principalmente el procesamiento de los datos ledos de los
sensores y la obtencin del nivel. Adems se comprob la correcta
implementacin del protocolo SDI-12 para la comunicacin digital. Para finalizar
se realiza un anlisis econmico compuesto por el anlisis de costo y el
impacto econmico que presenta la sonda de nivel.

4.2 Resultados de las simulaciones


Para validar el funcionamiento del dispositivo fueron utilizados dos software
de simulacin de diseos electrnicos. Uno de ellos es el Proteus 7
Professional de Labcenter Electronics y el otro es el OrCAD 16.0 de Cadence
Design Systems. Estos programas facilitaron la simulacin de las componentes
principales de nuestro diseo por separado: el lazo de corriente de 4 a 20mA,
la comunicacin mediante el protocolo digital SDI-12 y la comunicacin con los
sensores mediante I2C.

4.2.1 Simulacin de la comunicacin con los sensores


Para simular la comunicacin mediante I2C con los sensores Keller se utiliz
el Proteus 7 Professional. En las bibliotecas de dicho software no se encuentra
el MSP430F6638 que fue utilizado en el diseo. Por este motivo se decidi
utilizar otro microcontrolador de la familia de los MSP con caractersticas
similares en cuanto a los mdulos que brinda el MSP430F6638. Fue
seleccionado el MSP430F2272 (51), (52).
Los sensores Keller de la familia LD tampoco se encuentran en las
bibliotecas de Proteus. Con el objetivo de realizar una simulacin sobre la
comunicacin lo ms fiel posible al comportamiento real del sensor se decidi
simular su funcionamiento mediante otro microcontrolador, el MSP430F2272.
Este se encargar de ser el esclavo en la comunicacin, esperando que el amo
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 63

le enve el comando correcto para brindarle el dato de presin de la misma


forma que lo brindara el sensor, exceptuando el fin de adquisicin y
procesamiento.
En la figura 4.1 puede observarse el esquema utilizado para la simulacin. A
la izquierda se encuentran los dos sensores representados por dos
MSP430F2272. Para monitorear la transmisin en el bus I2C se utiliz el I2C
Debugger. Los LEDs que pueden observarse se utilizaron en el proceso de
puesta a punto del programa, ya que en Proteus no es posible realizar la
ejecucin del firmware paso a paso utilizando los microcontroladores de la
familia MSP.
Para el proceso de simulacin primeramente se procede a realizar la
inicializacin de los tres microcontroladores. Las direcciones dadas a cada uno
(necesarias para la comunicacin mediante I2C) fueron 0x00h al amo, 0x40h al
primer esclavo (Sensor 1) y 0x42h al segundo esclavo (Sensor 2). Las
direcciones de los esclavos estn definidas por la especificacin sobre la
comunicacin con los sensores tratada en el epgrafe 3.3.2. La comunicacin
se configur a 400kHz de frecuencia.
En la simulacin se procede a enviar el comando 0xACh. Cuando este
comando es enviado a los sensores estos responden con el valor de las
presiones que estn siendo aplicadas sobre ellos. En este caso los valores de
presin enviados son

datos almacenados en

las memorias de los

microcontroladores utilizados para simular a los sensores.


En la figura 4.2 puede observarse la simulacin. En la esquina superior
derecha se encuentra la ventana del I2C Debugger. Para una mejor
observacin se incluy la misma pantalla en la esquina inferior derecha en
posicin horizontal donde se encuentran enmarcadas las respuestas de los
sensores. Ambas dan como respuesta el nmero mximo que brindan los
sensores: 49152 (0xC000h). Estos valores de presin son almacenados por el
amo en las variables Sensor1 y Sensor2.
Como resultado de esta simulacin se demuestra que se puede obtener
satisfactoriamente los datos de los sensores de presin. Tambin se puede
aadir que se pudo comprobar que estos datos obtenidos se recibieran de
manera correcta para su posterior procesamiento. Por ltimo destacar que fue
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 64

validado el firmware diseado para controlar la comunicacin con los sensores


de presin.

Figura 4.1 Esquema de los sensores con el microcontrolador

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 65

Figura 4.2 Simulacin de la comunicacin con los sensores

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 66

4.2.2 Simulacin de la comunicacin digital mediante el protocolo


SDI-12
Con el objetivo de validar el funcionamiento del sistema y el protocolo de
comunicacin digital SDI-12 se realiz la simulacin de la comunicacin digital
con el usuario. Esta simulacin se realiz en el software Proteus 7
Professional. Fue empleado un microcontrolador MSP430F2272 para simular el
funcionamiento del MSP430F6638 utilizado en el diseo. Tambin se utiliz
una terminal virtual que permite enviar comandos al microcontrolador como el
amo manejado por el usuario y visualizar las respuestas del microcontrolador a
cada comando.
En este caso se realiz la comunicacin mediante el mdulo USCI del MSP
configurado en UART. La comunicacin serie debe realizarse a una velocidad
de 1200 baudios y con la conformacin de la trama como define el protocolo
SDI-12. En la figura 4.3 puede observarse el esquemtico empleado para la
simulacin.

Figura 4.3 Esquema para la simulacin de la comunicacin digital

En la simulacin el esclavo se encuentra en espera de comandos para a


partir de estos generar las respuestas adecuadas. Fue dispuesta una serie de
comandos para enviar y observar si el esclavo funcionaba correctamente. En la
tabla 4.1 se muestran el orden de envo de dichos comandos. En la figura 4.4
pueden observarse los resultados de la simulacin.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 67

Tabla 4.1 Orden y significado de los comandos utilizados

Comando

Significado

a!

Reconocimiento activo

aI!

Informacin

aM!

Comenzar medicin

aD2!

Enviar muestra

aXC!

Cambiar unidad a mH2O

aD2!

Enviar muestra

aMC!

Comenzar medicin y aadir CRC

aD2!

Enviar muestra

Figura 4.4 Simulacin de la comunicacin digital

En la prueba de simulacin primeramente se enva el comando a!, siendo la


respuesta efectiva a ste la direccin del esclavo, en este caso 0x00h. La
respuesta que se debe brindar al segundo comando es la informacin. La
estructura en la que se brinda la informacin es: primeramente la direccin,
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 68

seguida por versin del protocolo que se emplea (1.3), el nombre del fabricante
(CIH) y la versin del dispositivo (1.0).
Al comando de comenzar medicin le sigue el de enviar datos, a lo cual se
responde con un valor en pantalla. Este valor es el resultado del procesamiento
de dos valores escogidos como muestras para la simulacin. Se puede
observar la estructura de la respuesta y comprobar que es similar a la expuesta
en el epgrafe 3.5.1.3. La simulacin prosigue con un cambio de unidad
ingenieril y la posterior visualizacin de la misma muestra pero en la nueva
unidad configurada. Por ltimo se realiza una peticin del dato pero
aadindosele el CRC, que son 3 bits.
Para comprobar que todas las unidades ingenieriles funcionan correctamente
se simula el mismo procedimiento pero configurando diferentes unidades a la
salida. En cada caso se cambia en orden de unidad de ingeniera (en el orden
presentado en la tabla 3.3) y se enva la misma muestra pero convertida a la
unidad solicitada. Esto puede observarse en la figura 4.5.

Figura 4.5 Simulacin de la conversin de unidades de ingeniera

Esta simulacin fue muy importante en el proceso de depuracin y puesta a


punto del firmware desarrollado para comprobar la comunicacin digital y el
funcionamiento del dispositivo. Como resultado de esta simulacin puede
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 69

plantearse que fue validado a nivel de simulacin el firmware que controla la


comunicacin digital y que define el funcionamiento del dispositivo. Es
importante aclarar que en firmware se incluye todo el procesamiento de los
datos obtenidos de los sensores, la recepcin de los comandos enviados por el
amo y la conversin de la muestra a las unidades ingenieriles que puede
solicitar el usuario. Tambin se incluye la implementacin eficiente de las
respuestas a cada comando en el formato requerido.

4.2.3 Simulacin del lazo de corriente 4-20mA


La simulacin del lazo de corriente 4-20mA persigue dos objetivos. El
primero es demostrar que para variaciones de 0,3 a 2,7V en la tensin de
salida del DAC del MSP430F6638 realmente se obtiene una variacin de 4 a
20mA en el lazo de corriente. El segundo objetivo es demostrar que
independientemente del consumo de todo el circuito la salida se mantiene
dentro de los lmites esperados siempre que el consumo general de la sonda
sea menor que 4mA.
Para realizar la simulacin fue utilizado el esquema mostrado en la figura 4.6.
Las componentes del lazo de corriente simulado no son exactamente las
definidas en el diseo del hardware. Esto se debe a que en la biblioteca del
ORCAD no se encontraban y fueron sustituidas por otras con un
funcionamiento equivalente.
Como se explica en el epgrafe 2.6, la resistencia Rg es la que se encarga de
ajustar la ganancia necesaria para lograr que para una variacin de 2,4V (2,7 0,3) en la salida del DAC se obtenga una variacin de 16mA (20 - 4) en el lazo
de corriente. La resistencia Rof realiza el ajuste de Ioffset que es la corriente
que debe adicionarse a la corriente consumida por el circuito para garantizar
que el valor de la corriente se mantenga en 4mA cuando el valor cuando la
tensin de salida del DAC sea el mnimo posible. Como los valores ms
notables de salida del lazo son determinados por las resistencias antes
expuestas, entonces los cambios hechos en el esquema para la simulacin no
son de gran importancia para los objetivos que se persiguen.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 70

Figura 4.6 Lazo de 4-20mA utilizado en la simulacin

En el esquema puede observarse primeramente la fuente de tensin Vloop


que constituye una sustitucin de la tensin de alimentacin del lazo. Como se
manifest en el epgrafe 2.6 este es de 30V. La referencia de tensin de 3V
seleccionada en el diseo original fue sustituida por la REF198. Las otras
sustituciones realizadas fueron el amplificador operacional y el transistor debido
a las razones antes expuestas.
Primeramente se utilizaron los valores de las resistencias calculadas para el
diseo del hardware. La salida del DAC del MSP430F6638 se sustituye por una
fuente de tensin (VMAX) para variar su valor entre los valores 0.3 y 2.7V que
brindara el DAC a su salida. El consumo del circuito es simulado por la fuente
de corriente I1, pudindose realizar variacin en su valor. Estas dos
componentes son de vital importancia en la simulacin.
En la primera simulacin se plantea la variacin de la fuente de tensin
VMAX entre 0.3 y 2.7V para observar la variacin lineal en la salida del lazo.
Tambin deben observarse los lmites del valor de la corriente a la salida ya
que deben mantenerse entre 4 y 20mA. El resultado final de dicha simulacin
puede observarse en la figura 4.7.
Las primeras simulaciones realizadas permitieron comprobar los errores
presentes en la salida. Estos significaban que se deberan realizar cambios a
los valores de las resistencias Rof y Rg para lograr una salida satisfactoria.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 71

Estos valores son: para Rof 4.9M y para Rg 300K. Se deben obtener de
alguna forma estos valores a partir de los valores de resistencias comerciales.
La figura 4.7 es el resultado de varias iteraciones realizadas para lograr el
correcto funcionamiento del conversor voltaje corriente.

Figura 4.7 Grfica de la salida del lazo de corriente vs VMAX

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 72

La segunda simulacin se realiz para comprobar que a pesar de las


variaciones en el consumo del circuito, la salida se mantiene en el rango
requerido. Para esto se realiza una variacin en la corriente I1 entre 0.5mA y
4.0mA, para observar el comportamiento de la salida del lazo. La corriente I1
es equivalente al consumo de corriente de todos los componentes utilizados en
el diseo de la sonda. Son evaluados los valores lmites de 0.3V y 2.7V en
VMAX. Los resultados de estas simulaciones se pueden observar en la figura
4.8 y 4.9.

Figura 4.8 Grfica de salida mnima contra consumo de corriente


Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 73

Figura 4.9 Grfica de salida mxima contra consumo de corriente

Como se puede apreciar en la figura 4.8 a partir de que el consumo aumenta


por encima de los 3.4mA comienza a variar la linealidad de la salida para el
valor mnimo de 0.3V. Esto indica que el consumo del circuito debe encontrarse
por debajo de este valor. La figura 4.9 demuestra que el consumo del circuito

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 74

no tiene gran influencia en la salida cuando esta se encuentra en su valor


mximo (2.7V).
Con estas simulaciones se logr observar el comportamiento de la salida del
lazo ante las variaciones de la salida del DAC y del consumo del circuito. Como
resultados se destaca que se logr poner a punto los valores de las
resistencias Rof y Rg para lograr la variacin lineal adecuada en el lazo de
corriente. stos fueron modificados a los valores de 4.9M y 300K
respectivamente. Adems, se debe resaltar que el consumo del circuito no
debe pasar de 3.4mA ya que el comportamiento de la salida cuando la
corriente es mnima se ver alterado.

4.3 Resultados prcticos


Despus de realizarse las simulaciones antes descritas se procedi a disear
y realizar una prueba prctica con el objetivo de comprobar el correcto
funcionamiento de la comunicacin digital y el procesamiento de datos. La
prueba consiste en comprobar la comunicacin real entre el microcontrolador y
una computadora mediante la interfaz RS232.
Para realizar el experimento se dispona de la placa HiperMax Plus facilitada
por el ICID. El componente importante de esta placa utilizado fue un
MSP430F1611(53), (54). A pesar de no ser el microcontrolador empleado en el
diseo ni en las simulaciones este presenta los mdulos necesarios para
realizar la comunicacin serie con los parmetros requeridos.
Para lograr la comunicacin se utiliz un driver RS485 especficamente el
MAX485 (55). El microcontrolador empleado deba ser alimentado por 3.3V,
mientras que el MAX485 necesita 5V. Debido a estas diferencias en las
tensiones de alimentacin resultaba imposible conectar directamente esos
dispositivos. Para eliminar este inconveniente se implement una solucin
reportada en una nota de aplicacin sobre la comunicacin entre los MSP y
circuitos de diferente alimentacin (56). La configuracin utilizada puede
observarse en la figura 4.10. El voltaje Vi(sys) corresponde a una entrada
digital de tensin conectada al MSP. Esta configuracin es un divisor de
tensin, y su implementacin se basa en las expresiones 4.1, 4.2 y 4.3. Las dos
primeras aseguran que la entrada de tensin del MSP se encuentre por encima
(cuando Vi(sys) est en nivel alto) o por debajo (cuando Vi(sys) est en nivel
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 75

bajo) de las tensiones de entrada requeridos. La tercera expresin se encarga


de que las corrientes de escape de la entrada no influyan en la tensin de
entrada del MSP.
(4.1)

(4.2)

(4.3)
Donde:
: Nivel alto de tensin desde el sistema externo
: Nivel bajo de tensin desde el sistema externo
: Umbral del mximo nivel alto de tensin para un MSP430
: Umbral del mnimo nivel bajo de tensin para un MSP430
: tolerancia de los resistores
: Tensin de alimentacin del MSP430
: Corriente de escape de una entrada de un MSP430
Los resultados obtenidos al aplicar dichas expresiones fueron:
,

Figura 4.10 Configuracin para convertir de 5V a 3V

El microcontrolador fue programado a travs del MSP-FETU430IF facilitado


por el ICID. Adems de hacer funcin de programador ste tambin es un
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 76

instrumento que permite observar el comportamiento del programa mientras


trabaja el sistema. Este dispositivo puede observarse en la figura 4.11.

Figura 4.11 MSP-FETU430IF

Para culminar la fabricacin de la interfaz de comunicacin con la


computadora se utiliz un conversor de RS485 a RS232. Este componente
tiene como objetivo convertir los niveles lgicos del estndar RS485 a los del
RS232 que son compatibles con el puerto serie de la computadora. El resultado
del diseo puede observarse en la figura 4.12.

Figura 4.12 Hardware para la comunicacin digital

Para comprobar la comunicacin entre el usuario y el sistema se utiliz el


software Portutil. En este se pueden enviar comandos y visualizar los datos
recibidos del MSP430F1611. En la prueba se enviaron una sucesin de
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 77

comandos para determinar si las respuestas enviadas por el MSP eran


correctas. Adems, se analizaron los datos recibidos para comprobar si el
procesamiento de las muestras se realizaba de manera satisfactoria. En la
figura 4.13 puede observarse parte de la interfaz del software con los
comandos recibidos como resultado de la comunicacin realizada en parte de
la prueba.

Figura 4.13 Resultado de la comunicacin digital mediante SDI-12

El primer comando es la respuesta a una solicitud de medicin. Los


caracteres se observan en cdigo ASCII, siendo este: 01201. El segundo
constituye la respuesta a una solicitud de envo de la muestra. Este resultara
representar 0-0.4437325. Despus se pasa a solicitar el envo de otra
muestra, siendo la respuesta 0+2.5. Posteriormente se realiza una peticin de
direccin, a lo que se responde con 0. Le sigue una solicitud de verificacin,
la respuesta definida para este caso fue 01201. Para finalizar con esta parte
de la prueba se realiz un cambio de unidad de ingeniera y se solicit la
muestra. La respuesta dada a esta solicitud es 0-04.52600. Como se puede
distinguir se comprobaron varios comandos, recibindose en todo momento la
respuesta correcta. Adems de los resultados presentados la prueba se
extendi a todos los diferentes comandos que componen el protocolo de
comunicacin y que se emplean en nuestro diseo.
Con esta prueba se pudo verificar la validez tanto de la comunicacin digital
mediante el protocolo SDI-12 como el procesamiento de las muestras
obtenidas de los sensores (en este casos valores almacenados en memoria).
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 78

Tambin se comprob que fueran reconocidos los comandos enviados por el


usuario al MSP y se pudo validar la conversin de unidades de ingeniera.

4.4 Anlisis econmico


4.4.1 Estimacin de los costos
Realizar un anlisis econmico brinda la posibilidad de establecer un control
de los gastos en que se incurren. Tambin constituye una pauta para comparar
en prximos proyectos. Analizarlos costos permite disminuir el derroche de
capital invertido en instrumentacin o materia prima que no se consideran
necesarias en el proyecto.
El clculo del costo total (CT) tiene como objetivo estimar el costo real que se
obtendr una vez terminado el proyecto. En este clculo intervienen el costo
directo (CD) y el costo indirecto (CI). En la expresin 4.4 se observa esta
relacin.

(4.4)

Como costos indirectos se incluyen gastos de administracin, gastos de


electricidad consumida, entre otros. Este costo se calcula la multiplicacin del
salario bsico devengando en la investigacin por el coeficiente de costo
utilizado para un departamento docente (0.84), dando como resultado la
expresin 4.5.

(4.5)

Los gastos por salario bsico se calculan a partir del estipendio apercibido
por los estudiantes y los salarios del tutor y cotutores segn el tiempo de
laborable empleado en el proyecto. Esto se observa en la expresin 4.6

(4.6)

Donde:
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 79

: horas dedicadas a la investigacin por cada participante


: salario/hora de cada participante
: total de participantes
Para realizar los clculos se toma el estipendio para estudiantes de 125
CUP, 24 das laborables en el mes y el empleo de cinco meses de trabajo,
dedicando como promedio ocho horas al trabajo de diploma cada da laborable.
En este caso participan el autor, el tutor y dos cotutores. Realizando el clculo
mediante la expresin 4.6 el estudiante tiene un salario bsico de 625 CUP, el
tutor 122.4 CUP y los cotutores uno 122.4 y otro 208.33. En total el salario
bsico es de 1078.13 CUP. Aplicando entonces la expresin 4.5 resulta un
costo indirecto de 905.63 CUP
Para calcular el costo directo se emplea la expresin 4.7.

(4.7)

Donde:
: Salario bsico
: Seguridad social
: Salario complementario
: Medios o materiales directos
: Dieta, pasajes
: Otros gastos
El salario complementario es el 9.09% del salario bsico, este se utiliza para
pagar las vacaciones. En el caso del tutor la estimacin representa 11.13 CUP,
lo mismo para uno de los cotutores y el del otro cotutor es 18.94 CUP.
El valor de la seguridad social equivale al 10% de la suma del salario bsico
y el salario complementario. El tutor consume por seguridad social 13.35 CUP,
similar al de un cotutor. El otro genera un gasto de 22.73 CUP.
Los gastos en dieta y pasajes son nulos. Los medios directos son tambin
cero ya que en este caso no fue utilizado ningn componente para la
fabricacin del dispositivo (no estaba dentro de los objetivos). En otros gastos
pueden incluirse los gastos por concepto de tiempo de mquina. Este se tarifica

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico

P g i n a | 80

como 10.00 CUP por hora. Si asumimos que se utilizaron cerca de 700 horas
de mquina entonces el resultado son 7000 CUP.
Empleando entonces la expresin 4.7 el costo directo es de 8168.76 CUP.
Mediante la expresin 4.4 se obtiene de costo total de 9074.39 CUP.

4.4.2 Impacto econmico


Uno de los objetivos que se perseguan con este proyecto era la disminucin
del nivel de importaciones del pas con la realizacin de una sonda de nivel.
Aunque no se logr concretar la fabricacin del dispositivo el anlisis siguiente
genera una idea sobre el costo que supondra su fabricacin. Este puede
compararse con el precio de una sonda de nivel en el mercado internacional, el
cual estara sobre los 800 CUC. En la tabla 4.2 pueden observarse el precio de
cada uno de los componentes del hardware diseado.
Tabla 4.2 Precios de los componentes del esquemtico

Componente

Precio (CUC)

Cantidad

MSP430F6638

13.06

Keller 9LD

59.85

Keller 9FLD

63.45

XTAL ABLS-4.000MHZ-B2-T

0.74

MAX9911

1.40

2DD2679

0.43

MAX3471

4.78

MAX3230

5.07

MAX6035

2.30

Conector 5 vas

0.42

Conector 3 vas

0.35

Conector 2 vas

0.28

Diodo Schottky

0.23

Conector JTAG

1.95

Diodo Zener

0.32

Capacitor 0.1uF

0.10

13

Capacitor 22pF

0.10

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Captulo 4 Resultados y Anlisis Econmico


Capacitor 2.2uF

0.10

Capacitor 470nF

0.12

Capacitor 10uF

0.10

Capacitor 100uF

0.12

Resistencia 1K

0.10

Resistencia 10K

0.10

Resistencia 100K

0.10

Resistencia 150K

0.10

Total

158.66

P g i n a | 81

4.5 Conclusiones
1. Se comprob mediante la simulacin en Proteus la validez de la
comunicacin entre el microcontrolador y los sensores de presin.
2. Mediante la simulacin en PSPICE se comprob que la salida del lazo
de corriente es correcta y que no depende del consumo del circuito
siempre y cuando este se mantenga por debajo de 3.4mA.
3. Se comprob mediante la simulacin en Proteus y posteriormente de
forma

prctica

el

correcto

funcionamiento

del

protocolo

de

comunicacin SDI-12 entre un microcontrolador y una computadora.


4. Fue validado el algoritmo matemtico para procesar las muestras,
compensarlas y tenerlas a punto para su envo.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Conclusiones Finales

P g i n a | 82

Conclusiones Finales
En correspondencia con los objetivos de esta tesis se obtuvieron los
resultados enumerados a continuacin:
1. Se realiz un profundo estudio del estado del arte de las sondas de
nivel y sus principales caractersticas.
2. Se dise una sonda de nivel con compensacin de la presin
atmosfrica cumpliendo los requerimientos planteados en el diseo.
3. Se dise un algoritmo para compensar las muestras obtenidas de los
sensores de presin y procesarlas para obtener el dato de nivel y
garantizar su envo de manera satisfactoria.
4. Se comprob el funcionamiento del diseo realizado utilizando
programas de simulacin que permitieron realizar la puesta a punto
del dispositivo.
5. Se realiz un experimento prctico que permiti validar el firmware
desarrollado para el microcontrolador y el protocolo de comunicacin
SDI-12.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Recomendaciones

P g i n a | 83

Recomendaciones
Es importante como trabajo futuro comprobar la exactitud de los sensores
Keller 9LD para determinar la necesidad de algn algoritmo de compensacin.
Se debe continuar trabajando en el diseo de la placa impresa para lograr la
fabricacin del dispositivo diseado. Al final se debe realizar las pruebas
adecuadas con el dispositivo fsico sobre los tiempos de comunicacin y los
errores que pueden presentarse. Tambin debe crearse un programa de
usuario con interfaz grfica para visualizar las respuestas recibidas a los
comandos definidos por el protocolo de comunicacin.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Referencias Bibliogrficas

P g i n a | 84

Referencias Bibliogrficas
1.
Ramrez J, Villar Y. Fundamentos de la medicin de presin, nivel y caudal en los
sistemas hidrulicos. 2011. p. 107.
2.
Hambrice K, Hopper H. A Dozen Ways to Measure Fluid Level and How They
Work2004. Disponible en: http://www.sensorsmag.com/list/sensors/leak-level-46.
3.
Gad-el-Hak M. The MEMS handbook. 1ra ed. Kreith F, editor. Washington, D.C.: CRC
Press LLC; 2002.
4.
Kularatna N. Electronic circuit design: from concept to implementation. Boca Raton:
CRC Press; 2008.
5.
Chuan Y, Chen L. The Intelligent Pressure Sensor System Based on DSP. 2010 3rd
International Conference on Advanced Computer Theory and Engineering (ICACTE)2010.
6.
Hernndez A. Diseo de un transmisor de presin con salida digital RS232 y salida
analgica 4-20mA. Habana: CUJAE; 2011.
7.
Philip C. J, Abhay J, Pramod S, Ajayakumar PD, Natarajan K. Signal Conditioner for
MEMS based Piezoresistive sensor. 2010 5th International Conference on Industrial and
Information Systems, ICIIS 2010,; Jul 29 - Aug 01, 2010,; India2010.
8.
Thanachayanont A, Sangtong S. Low-Voltage Current-Sensing CMOS Interface Circuit
for Piezo-Resistive Pressure Sensor. ETRI Journal. 2007;29(1):70-8.
9.
Boujamaa EM, Alandry B, Hacine S, Latorre L, Mailly F, Nouet P. A Low Power Interface
Circuit for Resistive Sensors with Digital Offset Compensation. 2010 IEEE International
Symposium on Circuits and Systems (ISCAS); May 30 2010-June 2 2010 Paris2010.
10.
Sifuentes E, Casas O, Reverter F, Palls-Areny R. Direct interface circuit to linearise
resistive sensor bridges. Sensors and Actuators A: Physical. 2008;147(1):210-5.
11.
Jordana J, Palls-Areny R. A simple, efficient interface circuit for piezoresistive pressure
sensors. Sensors and Actuators A: Physical. 2006;127(1):69-73.
12.
Hofer D, Vetterli B. OEM-TRANSMITTERS: ALL-INCLUSIVE2012.
13.
Vega. Radar VEGAPULS. 2011.
14.
Endress+Hauser. Technical Information Liquicap T FMI21. 2007.
15.
IFM. PS3417. SUBMERSIBLE 1BAR 15M CABLE. 2012.
16.
OTT. OTT PLS Pressure Level Sensor. 2009.
17.
Keller. DCX-22 AA. Data Collector for Water Levels 100% waterproof, air pressure
compensated. 2006.
18.
Keller. Piezoresistive OEM Pressure Transmitters Series 4 LD9 LD. 2013. p. 2.
19.
ZMDI. ZSC31050. Advanced Differential Sensor Signal Conditioner. 2010. p. 28.
20.
ZMDI. ZSC31050. Advanced Differential Sensor Signal Conditioner Functional
Description. 2010. p. 50.
21.
Cypress. PSoC 3: CY8C38 Family Data Sheet. 2012. p. 137.
22.
Microchip.
dsPIC33FJ32GP302/304,
dsPIC33FJ64GPX02/X04,
and
dsPIC33FJ128GPX02/X04 Data Sheet. 2008. p. 378.
23.
Microchip.
dsPIC33FJ32MC302/304,
dsPIC33FJ64MCX02/X04,
and
dsPIC33FJ128MCX02/X04 Data Sheet. 2008. p. 398.
24.
Texas Instrument. MSP430F663x Mixed Signal Microcontroller. 2012. p. 116.
25.
Texas Instrument. MSP430x5xx and MSP430x6xx Family User's Guide. 2013. p. 1148.
26.
Cypress. PSoC 3 and PSoC 5 Getting More Resolution from 8-Bit DACs. 2012. p. 15.
27.
Maxim. MAX6029. Ultra-Low-Power Precision Series Voltage Reference. 2006. p. 16.
28.
Maxim. MAX6035. High-Supply-Voltage, Precision Voltage Reference in SOT23. 2006.
p. 15.
29.
Maxim. MAX6037. Low-Power, Fixed and Adjustable Reference with Shutdown in
SOT23. 2007. p. 18.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Referencias Bibliogrficas

P g i n a | 85

30.
Maxim. MAX6129. Ultra-Low-Power Series Voltage Reference. 2005. p. 16.
31.
Maxim. Application Note 1064. Designing a 4-20mA Current Loop Using the MAX1459
Sensor Signal Conditioner. 2002.
32.
Maxim. MAX4074MAX4078. Micropower, SOT23, Rail-to-Rail, Fixed-Gain,
GainAmp/Open-Loop Op Amps. 1999. p. 20.
33.
Maxim. MAX9617MAX9620. Single/Dual SC70, Zero-Drift, High-Efficiency, 1.5MHz Op
Amps with RRIO. 2012. p. 9.
34.
Maxim. MAX9910MAX9913. 200kHz, 4A, Rail-to-Rail I/O Op Amps with Shutdown.
2010. p. 17.
35.
Maxim. MAX44264. Ultra-Low Power Op Amp in a Tiny 6-Bump WLP. 2010. p. 10.
36.
Diodes Incorporated. 2DD2679. LOW VCE(SAT) NPN SURFACE MOUNT TRANSISTOR.
2008. p. 4.
37.
Maxim. MAX3222E/MAX3232E/MAX3237E/MAX3241E/MAX3246E. 15kV ESDProtected, Down to 10nA, 3.0V to 5.5V, Up to 1Mbps, True RS-232 Transceivers. 2010. p. 22.
38.
Maxim. MAX3322E/MAX3323E. 15kV ESD-Protected, RS-232 Transceivers for
Multidrop Applications. 2003. p. 13.
39.
Maxim. MAX3230E/MAX3230AE/MAX3231E/MAX3231AE. 15kV ESD-Protected +2.5V
to +5.5V RS-232 Transceivers in UCSP and WLP. 2008. p. 16.
40.
Maxim. MAX13234EMAX13237E. 3Mbps RS-232 Transceivers with Low-Voltage
Interface. 2008. p. 16.
41.
Maxim. MAX3471. 1.6A, RS-485/RS-422, Half-Duplex, Differential Transceiver for
Battery-Powered Systems. 1998. p. 8.
42.
Multicomp. SMBJ / SMCJ Series Surface Mount Voltage Suppressors. 2005.
43.
Philips Semiconductors. Application Note AN10216-01 I2C MANUAL. 2003.
44.
Philips Semiconductors. THE I 2C-BUS SPECIFICATION. 2000.
45.
Hofer D. Description of the Communication Protocol for Series 4 LD ... 9LD OEM
pressure transmitter from KELLER2013.
46.
SDI-12 Support Group. SDI-12. 2012; Available from: http://www.sdi-12.org.
47.
National Instrument. Building an Environmental Monitoring System for SDI-12
Devices2012.
Disponible
en:
http://sine.ni.com/nipdfgenerator/nipdfgenerator?pageURL=http://www.ni.com/whitepaper/7706/en&clientAppName=dz&dotsPerPixel=&dotsPerPoint=.
48.
Campbell Scientific. Serial Data Interface SDI-12 Information. 2006.
49.
SDI-12 Support Group. SDI-12 A Serial-Digital Interface Standard for MicroprocessorBased Sensors. 2013.
50.
Texas Instrument. Application Report SLAA221 CRC Implementation With MSP430.
2004.
51.
Texas Instrument. MSP430x22x2, MSP430x22x4 Mixed Signal Microcontroller. 2007.
52.
Texas Instrument. MSP430x2xx Family User's Guide. 2012.
53.
Texas Instrument. MSP430x15x, MSP430x16x, MSP430x161x Mixed Signal
Microcontoller. 2006.
54.
Texas Instrument. MSP430x1xx Family User's Guide. 2003.
55.
Maxim. MAX481/MAX483/MAX485/MAX487MAX491/MAX1487. Low-Power, SlewRate-Limited RS-485/RS-422 Transceivers. 2009.
56.
Texas Instrument. Application Report SLAA148 Interfacing the 3-V MSP430 to 5-V
Circuits. 2002.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Bibliogrfa

P g i n a | 86

Bibliografa
1. Altium Designer. Module 1: Getting Started With Altium Designer. 2009.
2. Altium Designer. Module 2: Help and DXP system menu. 2009.
3. Altium Designer. Module 3: Schematic Editor Basics. 2009.
4. Bierl L. MSP430 Family Mixed-Signal Microcontroller Application Reports. 2000.
5. Boujamaa EM, Alandry B, Hacine S, Latorre L, Mailly F, Nouet P. A Low Power Interface
Circuit for Resistive Sensors with Digital Offset Compensation. 2010 IEEE International
Symposium on Circuits and Systems (ISCAS); May 30 2010-June 2 2010 Paris2010.
6. Campbell Scientific. Serial Data Interface SDI-12 Information. 2006.
7. Chuan Y, Chen L. The Intelligent Pressure Sensor System Based on DSP. 2010 3rd
International Conference on Advanced Computer Theory and Engineering (ICACTE)2010.
8. Cypress. PSoC 3: CY8C38 Family Data Sheet. 2012. p. 137.
9. Cypress. PSoC 3 and PSoC 5 Getting More Resolution from 8-Bit DACs. 2012. p. 15.
10. Davies J. MSP430 Microcontroller Basics: Elsevier Ltd; 2008.
11. Diodes Incorporated. 2DD2679. LOW VCE(SAT) NPN SURFACE MOUNT TRANSISTOR.
2008. p. 4.
12. EduDevices DdId. Soluciones para aplicaciones de 3V2007.
13. Endress+Hauser. Technical Information Liquicap T FMI21. 2007.
14. Gad-el-Hak M. The MEMS handbook. 1ra ed. Kreith F, editor. Washington, D.C.: CRC
Press LLC; 2002.
15. Garca J, Rodrguez JI, Goi R, Brzalez A, Funes P, Rodrguez R. Aprenda lenguaje ANSI
C como si estuviera en primero 1998.
16. Hambrice K, Hopper H. A Dozen Ways to Measure Fluid Level and How They
Work2004.
17. Hernndez A. Diseo de un transmisor de presin con salida digital RS232 y salida
analgica 4-20mA. Habana: CUJAE; 2011.
18. Hofer D. Description of the Communication Protocol for Series 4 LD ... 9LD OEM
pressure transmitter from KELLER2013.
19. Hofer D, Vetterli B. OEM-TRANSMITTERS: ALL-INCLUSIVE2012. Available from:
www.keller.com.
20. IAR Systems. MSP430 IAR EMBEDDED WORKBENCH Tutorials. 2000.
21. IFM. PS3417. SUBMERSIBLE 1BAR 15M CABLE. 2012.
22. Jones BL, Aitken P. Sams Teach Yourself C in 21 Days. 6ta ed: Sams Publishing; 2003.
23. Jordana J, Palls-Areny R. A simple, efficient interface circuit for piezoresistive pressure
sensors. Sensors and Actuators A: Physical. 2006;127(1):69-73.
24. Keller. DCX-22 AA. Data Collector for Water Levels 100% waterproof, air pressure
compensated. 2006.
25. Keller. Piezoresistive OEM Pressure Transmitters Series 4 LD9 LD. 2013. p. 2.
26. Kularatna N. Electronic circuit design: from concept to implementation. Boca Raton:
CRC Press; 2008.
27. Maxim. MAX3471. 1.6A, RS-485/RS-422, Half-Duplex, Differential Transceiver for
Battery-Powered Systems. 1998. p. 8.
28. Maxim. MAX4074MAX4078. Micropower, SOT23, Rail-to-Rail, Fixed-Gain,
GainAmp/Open-Loop Op Amps. 1999. p. 20.
29. Maxim. Application Note 1064. Designing a 4-20mA Current Loop Using the MAX1459
Sensor Signal Conditioner. 2002.
30. Maxim. MAX3322E/MAX3323E. 15kV ESD-Protected, RS-232 Transceivers for
Multidrop Applications. 2003. p. 13.
31. Maxim. MAX6129. Ultra-Low-Power Series Voltage Reference. 2005. p. 16.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Bibliogrfa

P g i n a | 87

32. Maxim. MAX6029. Ultra-Low-Power Precision Series Voltage Reference. 2006. p. 16.
33. Maxim. MAX6035. High-Supply-Voltage, Precision Voltage Reference in SOT23. 2006.
p. 15.
34. Maxim. MAX6037. Low-Power, Fixed and Adjustable Reference with Shutdown in
SOT23. 2007. p. 18.
35. Maxim. MAX3230E/MAX3230AE/MAX3231E/MAX3231AE. 15kV ESD-Protected +2.5V
to +5.5V RS-232 Transceivers in UCSP and WLP. 2008. p. 16.
36. Maxim. MAX13234EMAX13237E. 3Mbps RS-232 Transceivers with Low-Voltage
Interface. 2008. p. 16.
37. Maxim. MAX481/MAX483/MAX485/MAX487MAX491/MAX1487. Low-Power, SlewRate-Limited RS-485/RS-422 Transceivers. 2009.
38. Maxim. MAX9910MAX9913. 200kHz, 4A, Rail-to-Rail I/O Op Amps with Shutdown.
2010. p. 17.
39. Maxim. MAX44264. Ultra-Low Power Op Amp in a Tiny 6-Bump WLP. 2010. p. 10.
40. Maxim. MAX3222E/MAX3232E/MAX3237E/MAX3241E/MAX3246E. 15kV ESDProtected, Down to 10nA, 3.0V to 5.5V, Up to 1Mbps, True RS-232 Transceivers. 2010. p. 22.
41. Maxim. MAX9617MAX9620. Single/Dual SC70, Zero-Drift, High-Efficiency, 1.5MHz Op
Amps with RRIO. 2012. p. 9.
42. Microchip.
dsPIC33FJ32GP302/304,
dsPIC33FJ64GPX02/X04,
and
dsPIC33FJ128GPX02/X04 Data Sheet. 2008. p. 378.
43. Microchip.
dsPIC33FJ32MC302/304,
dsPIC33FJ64MCX02/X04,
and
dsPIC33FJ128MCX02/X04 Data Sheet. 2008. p. 398.
44. Multicomp. SMBJ / SMCJ Series Surface Mount Voltage Suppressors. 2005.
45. National Instrument. Building an Environmental Monitoring System for SDI-12
Devices2012. Available from: http://ni.com.
46. OTT. OTT PLS Pressure Level Sensor. 2009.
47. Philip C. J, Abhay J, Pramod S, Ajayakumar PD, Natarajan K. Signal Conditioner for
MEMS based Piezoresistive sensor. 2010 5th International Conference on Industrial and
Information Systems, ICIIS 2010,; Jul 29 - Aug 01, 2010,; India2010.
48. Philips Semiconductors. THE I 2C-BUS SPECIFICATION. 2000.
49. Philips Semiconductors. Application Note AN10216-01 I2C MANUAL. 2003.
50. Ramrez J, Villar Y. Fundamentos de la medicin de presin, nivel y caudal en los
sistemas hidrulicos. 2011. p. 107.
51. SDI-12 Support Group. SDI-12. 2012; Available from: http://www.sdi-12.org.
52. SDI-12 Support Group. SDI-12 A Serial-Digital Interface Standard for MicroprocessorBased Sensors. 2013.
53. Sifuentes E, Casas O, Reverter F, Palls-Areny R. Direct interface circuit to linearise
resistive sensor bridges. Sensors and Actuators A: Physical. 2008;147(1):210-5.
54. Texas Instrument. Application Report SLAA148 Interfacing the 3-V MSP430 to 5-V
Circuits. 2002.
55. Texas Instrument. MSP430x1xx Family User's Guide. 2003.
56. Texas Instrument. Application Report SLAA221 CRC Implementation With MSP430.
2004.
57. Texas Instrument. Application Report SLAA207. Choosing An Ultralow-Power MCU
2004.
58. Texas Instrument. MSP430x15x, MSP430x16x, MSP430x161x Mixed Signal
Microcontoller. 2006.
59. Texas Instrument. MSP430x22x2, MSP430x22x4 Mixed Signal Microcontroller. 2007.
60. Texas Instrument. MSP430F663x Mixed Signal Microcontroller. 2012. p. 116.
61. Texas Instrument. MSP430x2xx Family User's Guide. 2012.
62. Texas Instrument. MSP430x5xx and MSP430x6xx Family User's Guide. 2013. p. 1148.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Bibliogrfa

P g i n a | 88

63. Thanachayanont A, Sangtong S. Low-Voltage Current-Sensing CMOS Interface Circuit


for Piezo-Resistive Pressure Sensor. ETRI Journal. 2007;29(1):70-8.
64. Vega. Radar VEGAPULS. 2011.
65. ZMDI. ZSC31050. Advanced Differential Sensor Signal Conditioner. 2010. p. 28.
66. ZMDI. ZSC31050. Advanced Differential Sensor Signal Conditioner Functional
Description. 2010. p. 50.

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Anexos
Anexo 1. Programa desarrollado para el funcionamiento del
dispositivo en bibliotecas .c y .h.
I2C.h
#include "intrinsics.h"
#include "msp430f6638.h"
void INIT_I2C(void);
void TX_BYTE(unsigned char buffer_TX);
void RX_BYTE(void);
extern unsigned char TXByteCtr;
extern unsigned char TXData;
extern unsigned char *PRxData;
extern unsigned char RXByteCtr;
extern volatile unsigned char RxBuffer[3];
I2C.c
#include "intrinsics.h"
#include "msp430f6638.h"
#include "I2C.h"
void INIT_I2C(void)
{
Port_Mapping();
P2SEL |= 0x36;

// Asignar I2C a los pines del puerto

UCB0CTL1 |= UCSWRST;

// Reset activado

UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master sincrnico


UCB0CTL1 = UCSSEL_2 + UCSWRST;
UCB0BR0 = 10;

// SMCLK

// Prescaler a 10 fSCL ~400kHz

UCB0BR1 = 0;
UCB0I2CSA = 0x20;
UCB0CTL1 &= ~UCSWRST;
UCB0IE |= UCTXIE;

// Habilitar la interrupcin del TX

UCB0IE |= UCRXIE;

// Habilitar la interrupcin del RX

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

}
void TX_BYTE(unsigned char buffer_TX)
{
TXByteCtr = 1;
TXData = buffer_TX;
while (1)
{
while (UCB0CTL1 & UCTXSTP);

// Asegurar la condicin de STOP

UCB0CTL1 |= UCTR + UCTXSTT; // Condicin de START y habilitacin


del modo TX
}
}
void RX_BYTE(void)
{
UCB0CTL1 &= ~UCTR;

// Habilitacin del modo RX

while (1)
{
PRxData = (unsigned char *)RxBuffer;
RXByteCtr = 3;

// Inicio de RX buffer

// Cargar contador de bytes

while (UCB0CTL1 & UCTXSTP);


UCB0CTL1 |= UCTXSTT;

// Asegurar la condicin de STOP


// Condicin de START

__no_operation();
}
}
#pragma vector = USCI_B0_VECTOR
__interrupt void USCI_B0_ISR(void)
{
switch(__even_in_range(UCB0IV,12))
{
case 0: break;

// Vector 0: No interrupts

case 2: break;

// Vector 2: ALIFG

case 4: break;

// Vector 4: NACKIFG

case 6: break;

// Vector 6: STTIFG

case 8: break;

// Vector 8: STPIFG

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

case 10:
RXByteCtr--;

// Vector 10: RXIFG


// Decrementar contador de bytes

if (RXByteCtr)
{
*PRxData++ = UCB0RXBUF; // Mover data a la direccin PRxData
if (RXByteCtr == 1)

// Solo un byte?

UCB0CTL1 |= UCTXSTP;

// Generar condicin de STOP

}
else
{
*PRxData = UCB0RXBUF;

// Mover final data a PRxData

}
break;
case 12:
if (TXByteCtr)

// Vector 12: TXIFG


// Check TX byte counter

{
UCB0TXBUF = TXData;

// Load TX buffer

TXByteCtr--;

// Decrement TX byte counter

}
else
{
UCB0CTL1 |= UCTXSTP;

// I2C stop condition

UCB0IFG &= ~UCTXIFG;

// Clear USCI_B0 TX int flag

}
break;
default: break;
}
}

DAC.h
#include "intrinsics.h"
#include "msp430f6638.h"
void INIT_DAC12(void);
void DAC_CONV(unsigned char Pressure_Data);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

extern unsigned char DAC12_DAT;

DAC.c
#include "intrinsics.h"
#include "msp430f6638.h"
#include "DAC.h"
void INIT_DAC12(void)
{
P6SEL |= 0x20;

//Asignar la salida del DCO al pin P6.6

DAC12_0CTL0 = DAC12SREF_1 + DAC12LSEL_1 + DAC12CALON +


DAC12IR + DAC12AMP_5 + DAC12IE;

//Config

}
void DAC_CONV(unsigned char Pressure_Data)
{
DAC12_DAT = Pressure_Data;

//Paso el dato

DAC12_0CTL0 |= DAC12ENC;

//Activo la conversion

P1OUT = 0x08;

// Habilito el amplificador

}
#pragma vector = DAC12_VECTOR
__interrupt void DAC12_ISR(void)
{
switch(__even_in_range(DAC12_IV,14))
{
case 0: break;
case 2:
DAC12_0CTL0 &= ~DAC12ENC;
P1OUT = 0;
break;
case 4: break;
case 6: break;
case 8: break;
case 10: break;
case 12: break;
case 14: break;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

default: break;
}
}

UART.h
#include "intrinsics.h"
#include "msp430f6638.h"
void INIT_UART(void);
unsigned long ORG_COM(unsigned long total1, unsigned long total2,
unsigned long total3, unsigned long total4);
extern unsigned long RXUART;
extern unsigned char TXUART;
unsigned long total;
unsigned long command;
unsigned long command1;
unsigned long command2;
unsigned long command3;
char hasReceived;

// Lets the program know when a byte is received

UART.c
#include "intrinsics.h"
#include "msp430f6638.h"
#include "UART.h"
#include "SDI-12.h"
void INIT_UART(void)
{
Port_Mapping();
UCA0CTL1 |= UCSWRST;

// Reset activado

UCA0CTL0 = UCPEN + UCPAR + UC7BIT;

//

Activar

Paridad

par,

caracteres de 7 bits de datos


UCA0CTL1 = UCSSEL_2;

// CLK = SMCLK

UCA0BR0 = 0x41;

// 1MHz/1200=833.33

UCA0BR1 = 0x03;

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

UCA0MCTL = UCBRS_3+UCBRF_0;

//

Modulation

UCBRSx=3,

UCBRFx=0
UCA0CTL1 &= ~UCSWRST;
UCA0IE |= UCTXIE;

// Habilitar la interrupcin del TX

UCA0IE |= UCRXIE;

// Habilitar la interrupcin del RX

hasReceived = 0;
Unit_out = 0;
__no_operation();
}
unsigned long ORG_COM(unsigned long total1, unsigned long total2,
unsigned long total3, unsigned long total4)
{
total = total1;
total = total + (total2 << 8);
total = total + (total3 << 16);
total = total + (total4 << 24);
return total;
}
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{
switch(__even_in_range(UCA0IV,4))
{
case 0:break;

// Vector 0 - no interrupt

case 2:

// Vector 2 - RXIFG

while (!(UCA0IFG&UCRXIFG));

// RX buffer listo?

RXUART = UCA0RXBUF;
hasReceived++;
if (hasReceived==1)
{
command = RXUART;
__delay_cycles (50);
}
else if(hasReceived==2)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
command1 = RXUART;
if (command1 == 0x21)
{
total = ORG_COM(command, command1, command2, command3);
REC_COM(total);
total = 0;
command = 0;
command1 = 0;
command2 = 0;
command3 = 0;
}
__delay_cycles (50);
}
else if(hasReceived==3)
{
command2 = RXUART;
if (command2 == 0x21)
{
total = ORG_COM(command, command1, command2, command3);
REC_COM(total);
total = 0;
command = 0;
command1 = 0;
command2 = 0;
command3 = 0;
}
__delay_cycles (50);
}
else if (hasReceived==4)
{
command3 = RXUART;
__delay_cycles (50);
total = ORG_COM(command, command1, command2, command3);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

REC_COM(total);
total = 0;
command = 0;
command1 = 0;
command2 = 0;
command3 = 0;
}
case 4:

// Vector 4 - TXIFG

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

UCA0TXBUF = TXUART;
break;
default: break;
}
}

SDI-12.h
#include "intrinsics.h"
#include "msp430f6638.h"
#include "stdlib.h"
#define CRC_MSG_MAXSIZE
#define CRC_TEST_SEQ

20
"123456789"

void REC_COM(unsigned long command_RX);


void Analog_out(void);
void Analog_off(void);
void RS485_out(void);
void RS232_out(void);
void Ack_active(void);
void Send_ID(void);
void Addr_query(void);
void Start_med(void);
void Med_CRC(void);
void Send_Data(void);
void Start_ver(void);
void Start_Cmed(void);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

void Start_Cmed_CRC(void);
void Cont_med(void);
void Cont_med_CRC(void);
void default_aswer(void);
double Measure_Start(void);
void Data_Out(void);
void Send(void);
void Send_2(void);
void Send_3(void);
unsigned short crc16MakeBitwise2(unsigned short crc, unsigned short poly,
unsigned char *pmsg, unsigned int
msg_size);
void CRC_out(void);
void DAC_CONV(unsigned char Pressure_Data);
double Pressure;
long Pressure2;
double Real_Pressure;
double Analog_pres;
int Pres_analog;
extern short Unit_out;
unsigned int CRC_ask;
unsigned int Flag_analog;
unsigned int buffer_TX;
unsigned int Sensor1_Status;
unsigned int Sensor2_Status;
long Sensor1;
long Sensor2;
long z;
unsigned int First_char;
unsigned int Sec_char;
unsigned int Third_char;
unsigned short crc16;
unsigned char msg[CRC_MSG_MAXSIZE] = CRC_TEST_SEQ "5555";
void CRC_out(void);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

unsigned int length;

SDI-12.c
#include "intrinsics.h"
#include "msp430f6638.h"
#include "stdlib.h"
#include "CRC.h"
#include "I2C.h"
#include "UART.h"
#include "SDI-12.h"
void REC_COM(unsigned long command_RX)
{
if(command_RX == 0x30584C21)

// aXL!

{
Analog_out();
}
else if (command_RX == 0x30584F21)

// aXO!

{
Analog_off();
}
else if (command_RX == 0x30583221)

// aX2!

{
RS232_out();
}
else if (command_RX == 0x30583421)

// aX4!

{
RS485_out();
}
else if (command_RX == 0x30584221)

// aXB!

{
Unit_out = 0;
}
else if (command_RX == 0x30586D42)

// aXmB

{
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Unit_out = 1;
}
else if (command_RX == 0x30584321)

// aXC!

{
Unit_out = 2;
}
else if (command_RX == 0x30586D43)

// aXmC

{
Unit_out = 3;
}
else if (command_RX == 0x30586B50)

// aXkP

{
Unit_out = 4;
}
else if (command_RX == 0x30584D50)

// aXMP

{
Unit_out = 5;
}
else if (command_RX == 0x30584B21)

// aXK!

{
Unit_out = 6;
}
else if (command_RX == 0x00003021)

// a!

{
Ack_active();
}
else if (command_RX == 0x00304921)

// aI!

{
Send_ID();
}
else if (command_RX == 0x00003F21)

// ?!

{
Addr_query();
}
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

else if (command_RX == 0x00304D21)

// aM!

{
Start_med();
}
else if (command_RX == 0x304D4321)

// aMC!

{
Med_CRC();
}
else if (command_RX == 0x30443021)

// aD0!

{
Send_Data();
}
else if (command_RX == 0x00305621)

// aV!

{
CRC_ask = 1;
Send_Data();
}
else if (command_RX == 0x00304321)

// aC!

{
Start_med();
}
else if (command_RX == 0x30434321)

// aCC!

{
Med_CRC();
}
else if (command_RX == 0x30523021)

// aR0!

{
Cont_med();
}
else if (command_RX == 0x30524330)

// aRC0

{
Cont_med_CRC();
}
else
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
default_aswer();
}
}
void Analog_out(void)
{
P1OUT |= BIT3;
Flag_analog = 1;
}
void Analog_off(void)
{
P1OUT &= ~BIT3;
Flag_analog = 0;
}
void RS485_out(void)
{
P4OUT |= BIT0;
}
void RS232_out(void)
{
P4OUT &= ~BIT0;
}
void Ack_active(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

}
void Send_ID(void)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '1';

// 1

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '3';

// 3

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

}
void Addr_query(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

}
void Start_med(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '1';

// 1

__no_operation();
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '2';

// 2

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '0';

// 0

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '1';

// 1 muestra

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

Pressure = Measure_Start();
}
void Med_CRC(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '1';

// 1

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '2';

// 2

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '0';

// 0

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = '1';

// 1 muestra

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

Pressure = Measure_Start();
CRC_ask = 1;
}
void Send_Data(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
Data_Out();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

}
void Cont_med(void)
{
Pressure = Measure_Start();
Send_Data();
}
void Cont_med_CRC(void)
{
Pressure = Measure_Start();
CRC_ask = 1;
Send_Data();
}
void default_aswer(void)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x30;

// address

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0D;

// <CR>

__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x0A;

// <LF>

}
void CRC_out(void)
{
First_char = 0x40|(crc16 * 4096);
Sec_char = 0x40|((crc16 * 64)&0x3F);
Third_char = 0x40|(crc16&0x3F);
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = First_char;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Sec_char;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = Third_char;
__no_operation();
}
double Measure_Start(void)
{
UCB0I2CSA = 0x20;
buffer_TX = 0xAC;

// Solicitar data al sensor

TX_BYTE(buffer_TX);

// Transmitir comando

while (!(P1IFG&0x00));

// EOC

RX_BYTE();

// Recibir data

PRxData = (unsigned char *)RxBuffer;

// Inicio de RX buffer

Sensor1_Status = *PRxData;

// Salvar valor de Status del sensor

Sensor1 = *PRxData++;

// Salvar MSB de presin

Sensor1 = Sensor1 * 256;


Sensor1 = Sensor1 + *PRxData++;

// Salvar LSB de presin

UCB0I2CSA = 0x22;

// Apuntar al sensor baromtrico

buffer_TX = 0xAC;

// Solicitar data al sensor

TX_BYTE(buffer_TX);

// Transmitir comando

while (!(P1IFG&0x01));

// EOC

RX_BYTE();

// Recibir data

PRxData = (unsigned char *)RxBuffer;

// Inicio de RX buffer

Sensor2_Status = *PRxData;

// Salvar valor de Status del sensor

Sensor2 = *PRxData++;

// Salvar MSB de presin

Sensor2 = Sensor2 * 256;


Sensor2 = Sensor2 + *PRxData++;

// Salvar LSB de presin

Real_Pressure = 3 * Sensor1;
Real_Pressure = Real_Pressure - Sensor2;
Real_Pressure = Real_Pressure - 16384;
Real_Pressure = Real_Pressure / 32768;
return Pressure;
}
void Data_Out(void)
{
switch(Unit_out)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
case 0:
if (Flag_analog)
{
Analog_pres = Pressure * 1000;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 1000000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 1000000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
break;
case 1:
Pressure = Pressure * 1000;
if (Flag_analog)
{
Pres_analog = (int) Pressure;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 1000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 1000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Pressure2 = (long) Pressure;


z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
break;
case 2:
Pressure = Pressure * 10.2;
if (Flag_analog)
{
Analog_pres = Pressure * 100;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 100000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 100000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Pressure = Pressure - (z * 10);


Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
break;
case 3:
Pressure = Pressure * 10200;
if (Flag_analog)
{
Analog_pres = Pressure / 100;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 100;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 100;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Pressure2 = (long) Pressure;


z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
break;
case 4:
Pressure = Pressure * 100;
if (Flag_analog)
{
Analog_pres = Pressure * 10;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 10000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 10000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

break;
case 5:
Pressure = Pressure / 10;
if (Flag_analog)
{
Analog_pres = Pressure * 10000;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 1000000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Pressure2 = (long) Pressure;


z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 10000000;
Pressure2 = (long) Pressure;
z = Pressure2 / 10000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 10000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
}
break;
case 6:
Pressure = Pressure * 102;
if (Flag_analog)
{
Analog_pres = Pressure * 10;
Pres_analog = (int) Analog_pres;
DAC_CONV(Pres_analog);
}
if (Pressure < 0)
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2D;
__no_operation();
Pressure = Pressure * (-1);
Pressure = Pressure * 10000;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Pressure2 = (long) Pressure;


z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
else
{
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x2B;
__no_operation();
Pressure = Pressure * 10000;
Pressure2 = (long) Pressure;
z = Pressure2 / 1000000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100000);
Pressure2 = (long) Pressure;
z = Pressure2 / 10000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

TXUART = z + 0x30;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = 0x2E;
__no_operation();
Pressure = Pressure - (z * 10000);
Pressure2 = (long) Pressure;
z = Pressure2 / 1000;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 1000);
Pressure2 = (long) Pressure;
z = Pressure2 / 100;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 100);
Pressure2 = (long) Pressure;
z = Pressure2 / 10;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = z + 0x30;
__no_operation();
Pressure = Pressure - (z * 10);
Pressure2 = (long) Pressure;
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART = Pressure2 + 0x30;


__no_operation();
}
break;
default: break;
}
if (CRC_ask)
{
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

length = sizeof(CRC_TEST_SEQ)-1;
crc16 = crc16MakeBitwise2(CRC16_INIT_REM, CRC16_POLY, msg,
length);
CRC_out();
CRC_ask = 0;
}
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x0D;
__no_operation();
while (!(UCA0IFG&UCTXIFG));

// TX buffer listo?

TXUART=0x0A;
__no_operation();
}

CRC.h
#include "intrinsics.h"
#include "msp430f6638.h"

/**********************************************************************************
FUNCTION:

CRC definitions

AUTHOR:

Emil Lenchak

DATE:

March, 2004

COPYRIGHT:

Texas Instruments, 2004

TOOLS:

Built with IAR Kickstart V2/MS Visual C++ 6.0

***********************************************************************************/

#ifndef _MSP430_CRC
#define _MSP430_CRC

/************************
CONSTANTS
************************/

#ifdef __ICC430__
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

#define TBL_MEM const


#else
#define TBL_MEM
#endif
//#define CRC_DAT_PATH ".//..//..//dat//"
//#define CRC_DAT_PATH "C:\\Program Files\\IAR Systems\\Embedded
Workbench 3.2\\myProjects\\CRC\\dat\\"
#define CRC_MSG_MAXSIZE

20

#define CRC_TABLE_SIZE

256

#define CRC_TEST_SEQ

"123456789"

#define CRC16_CHECK

0xFEE8

#define CRC16R_CHECK

0xBB3D

#define CRC32_CHECK

0xFC891918

#define CRC32R_CHECK

0xCBF43926

// CRC-16: x16 + x15 + x2 + 1


#define CRC16_POLY

0x8005

#define CRC16_INIT_REM

0x0

#define CRC16_FINAL_XOR
#define CRC16R_POLY

0x0
0xA001

#define CRC16R_INIT_REM
#define CRC16R_FINAL_XOR

0x0
0x0

// CRC-CCITT: x16 + x12 + x5 + 1


//#define CRC16_POLY

0x1021

//#define CRC16_POLY_REF
//#define CRC16_INIT_REM

0x0

//#define CRC16_FINAL_XOR 0x0


// CRC-32: x32 + ... + 1
#define CRC32_POLY

0x04C11DB7

#define CRC32_INIT_REM
#define CRC32_FINAL_XOR
#define CRC32R_POLY

0xFFFFFFFF
0xFFFFFFFF

0xEDB88320

#define CRC32R_INIT_REM
#define CRC32R_FINAL_XOR

0xFFFFFFFF
0xFFFFFFFF

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

#endif // _MSP430_CRC
unsigned short crc16MakeBitwise(unsigned short, unsigned short, unsigned
char*, unsigned int);

CRC.c
#include "intrinsics.h"
#include "msp430f6638.h"
#include "CRC.h"

/**********************************************************************************
FUNCTIONS:

16/32-bit CRC Algorithms, bitwsie and table methods

ARGUMENTS:

"bitwise algorithm function signature"


return: CRC
arg1: CRC init value
arg2: CRC generator polynomial
arg3: pointer to the message
arg4: size of message in bytes

"table-based algorithm function signature"


return: CRC
arg1: CRC init value
arg2:

pointer

to

CRC

table

(specific

to

generator

polynomial)
arg3: pointer to the message
arg4: size of message in bytes
***********************************************************************************/

/**************************************
CRC MEMBERS (FUNCTIONS)
**************************************/

// this is an equivalent C implementation to the assembly implementation


unsigned short crc16MakeBitwise(unsigned short crc, unsigned short poly,
unsigned char *pmsg, unsigned int
msg_size)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
unsigned int i, j, carry;
unsigned char msg;
unsigned short temp;

temp = *pmsg++ << 8;


temp |= *pmsg++;
crc ^= temp;

for(i = 0 ; i < msg_size-2 ; i ++)


{
msg = *pmsg++;

for(j = 0 ; j < 8 ; j++)


{
carry = crc & 0x8000;
crc = (crc << 1) | (msg >> 7);
if(carry) crc ^= poly;
msg <<= 1;
}
}

for(i = 0 ; i < 2 ; i ++)


{
for(j = 0 ; j < 8 ; j++)
{
carry = crc & 0x8000;
crc <<= 1;
if(carry) crc ^= poly;
}
}
return(crc ^ CRC16_FINAL_XOR);
}

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

// this is a C-optimized implementation


unsigned short crc16MakeBitwise2(unsigned short crc, unsigned short poly,
unsigned char *pmsg, unsigned int
msg_size)
{
unsigned int i, j;
unsigned short msg;

for(i = 0 ; i < msg_size ; i ++)


{
msg = (*pmsg++ << 8);

for(j = 0 ; j < 8 ; j++)


{
if((msg ^ crc) >> 15) crc = (crc << 1) ^ poly;
else crc <<= 1;
msg <<= 1;
}
}
return(crc ^ CRC16_FINAL_XOR);
}
// this is an equivalent C implementation to the assembly implementation
unsigned long crc32MakeBitwise(unsigned long crc, unsigned long poly,
unsigned char *pmsg, unsigned int
msg_size)
{
unsigned int i, j, carry;
unsigned char msg;
unsigned long temp;
temp = (unsigned long)(*pmsg++) << 24;
temp |= (unsigned long)(*pmsg++) << 16;
temp |= (unsigned long)(*pmsg++) << 8;
temp |= (unsigned long)(*pmsg++);
crc ^= temp;
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

for(i = 0 ; i < msg_size-4 ; i ++)


{
msg = *pmsg++;
for(j = 0 ; j < 8 ; j++)
{
carry = crc >> 31;
crc = (crc << 1) | (msg >> 7);
if(carry) crc ^= poly;
msg <<= 1;
}
}
for(i = 0 ; i < 4 ; i ++)
{
for(j = 0 ; j < 8 ; j++)
{
carry = crc >> 31;
crc <<= 1;
if(carry) crc ^= poly;
}
}
return(crc ^ CRC32_FINAL_XOR);
}
// this is a C-optimized implementation
unsigned long crc32MakeBitwise2(unsigned long crc, unsigned long poly,
unsigned

char

*pmsg,

unsigned int msg_size)


{
unsigned int i, j;
unsigned long msg;
for(i = 0 ; i < msg_size ; i++)
{
msg = *pmsg++;
msg <<= 24;
for(j = 0 ; j < 8 ; j++)
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

{
if((msg ^ crc) >> 31) crc = (crc << 1) ^ poly;
else crc <<= 1;
msg <<= 1;
}
}
return(crc ^ CRC32_FINAL_XOR);
}
unsigned short crc16MakeTableMethod(unsigned short crc, TBL_MEM
unsigned short *table,
unsigned

char

*pbuffer, unsigned int length)


{
while(length--)
crc = table[((crc >> 8) ^ *pbuffer++)] ^ (crc << 8);

// normal

return(crc ^ CRC16_FINAL_XOR);
}
unsigned short crc16rMakeTableMethod(unsigned short crc, TBL_MEM
unsigned short *table,
unsigned

char

*pbuffer, unsigned int length)


{
while(length--)
crc = table[(crc & 0xFF) ^ *pbuffer++] ^ (crc >> 8);

// reflected

return(crc ^ CRC16R_FINAL_XOR);
}
unsigned

long

crc32MakeTableMethod(unsigned

long

crc,

TBL_MEM

unsigned long *table,


unsigned char *pbuffer,
unsigned int length)
{
while(length--)
crc = table[((crc >> 24) ^ *pbuffer++)] ^ (crc << 8);

// normal

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

return(crc ^ CRC32_FINAL_XOR);
}
unsigned long crc32rMakeTableMethod(unsigned long crc, TBL_MEM
unsigned long *table,
unsigned char *pbuffer,
unsigned int length)
{
while(length--)
crc = table[(crc ^ *pbuffer++) & 0xFFL] ^ (crc >> 8); // reflected

return(crc ^ CRC32R_FINAL_XOR);
}

/************************************
CRC UTILITIES
************************************/

void crc16BuildTable(unsigned short *ptable, unsigned short poly)


{
unsigned int i, j;

for(i = 0; i <= 255; i++)


{
ptable[i] = i << 8;
for(j = 0; j < 8; j++)
ptable[i] = (ptable[i] << 1) ^ (ptable[i] & 0x8000 ? poly : 0);
}
}
void crc32BuildTable(unsigned long *ptable, unsigned long poly)
{
unsigned int i, j;

for(i = 0; i <= 255; i++)


{
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

ptable[i] = (long)i << 24;


for(j = 0; j < 8; j++)
ptable[i] = (ptable[i] << 1) ^ (ptable[i] & 0x80000000 ? poly : 0);
}
}
unsigned long bitReflect(unsigned long data, unsigned int width)
{
unsigned long result = 0;
unsigned int i;
for (i = 1; i < (width + 1); i++)
{
if(data & 1) result |= 0x1L << (width - i);
data >>= 1;
}
return result;
}

Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

Anexos

Anexo 2. Anlisis desde la defensa


El proyecto objeto de estudio es el rediseo de una sonda de nivel con
compensacin de la presin atmosfrica. Para desarrollar este proyecto se
utilizan los conocimientos adquiridos en las asignaturas de Microcontroladores,
Electrnica Analgica, Electrnica Digital y Procesamiento Digital de Seales,
pueden incluirse tambin conocimientos bsicos sobre otras materias
relacionadas con el tema que no se estudien en la carrera.
Este dispositivo puede emplearse en cuencas hidralicas para determinar el
nivel que estas poseen. Esta variable que se mide es importante ya que es
necesario conocer el nivel de los embalses, presas, ros, pozos, entre otras en
la vida diaria y durante la ocurrencia de desastres naturales. Con esta
informacin puede decidirse la necesidad de evacuacin, evitarse las prdidas
econmicas, determinar estrategias econmicas y de racionamiento en la
distribucin de los recursos hidrulicos.
Debido a la amenaza constante del gobierno de los Estados Unidos de
Amrica y su poltica para nuestro pas son adquiridos a muy altos precios las
sondas de nivel en el mercado internacional. Adems, se desconocen las
bases de su funcionamiento, lo que imposibilita su reparacin en caso de
presentar desperfectos.
El inconveniente principal de este dispositivo es la presencia de un cble
ventilado que permite la acumulacin de humedad por encontrarse en contacto
directo con el aire. Debido a esta situacin se decide utilizar un sensor de
presin para medir la presin atmosfrica, la cual se necesita para realizar el
proceso de calibracin.
Entre las acciones enemigas puedan incidir en el funcionamiento del sistema
o en la realizacin del diseo se puede destacar la prohibicin a los
proveedores de componentes necesarios de proveer informacin o su venta.
En cuanto a acciones directas puede decirse que el enemigo puede atacar
fsicamente alguna parte del dispositivo para afectar su funcionamiento.
Para el ejrcito precisamente puede utilizarse en la contabilizacin de las
existencias de cualquier lquido en tanques o pozos. Desde el punto de vista
organizativo, este dispositivo puede emplearse variedad de regiones con
diferentes condiciones climatolgicas ya que no posee impedimentos
fundamentales para su empleo.
Alimed Celecia Ramos | Diseo de una sonda de nivel con compensacin de la presin
atmosfrica

You might also like