tesis now modif.pdf

148
Facultad de Ingeniería Eléctrica Especialidad de Ingeniería en Telecomunicaciones y Electrónica Trabajo de Diploma Diseño de una sonda de nivel con compensación de la presión atmosférica Autor: Alimed Celecia Ramos Tutor: Ing. Arturo Hernández González Cotutores: Dr.C Jorge Ramírez Beltrán Ing. Luis Ernesto Farah Fernández 2013

Upload: alimedceleciaramos

Post on 16-Jan-2016

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tesis Now Modif.pdf

Facultad de Ingeniería Eléctrica

Especialidad de Ingeniería en Telecomunicaciones y Electrónica

Trabajo de Diploma

Diseño de una sonda de nivel con

compensación de la presión atmosférica

Autor:

Alimed Celecia Ramos

Tutor: Ing. Arturo Hernández González

Cotutores:

Dr.C Jorge Ramírez Beltrán Ing. Luis Ernesto Farah Fernández

2013

Page 2: Tesis Now Modif.pdf

P á g i n a | i

Agradecimientos

En tan poco espacio es imposible mencionar a todas las personas que de

alguna forma u otra influyeron en mi formación 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 pequeño.

A mi familia, comenzando por mi mamá, mis abuelas, mi hermano, tíos y

primos por su constante preocupación 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 mío 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 través 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 compañeros de la casa de estudio: Sydney, Yasmany, Camilo,

Mejías. Nos reuniremos de nuevo pero no para quemarnos las pestañas.

A mis compañeros de estudio del 51: Waldo, Claudia, Chuco, Tony, Juan

Carlos, Karel, en fin, por tantos años 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. Brugués, Ing Javier M. Valdés e Ing. Daniel Campillo, por su

colaboración en esta tesis.

Page 3: Tesis Now Modif.pdf

P á g i n a | ii

A mi padre

Page 4: Tesis Now Modif.pdf

P á g i n a | iii

Declaración de autoría

Declaro que soy el único autor de este trabajo, del cual entrego copia al

Departamento de Telecomunicaciones y Telemática de la Facultad de

Ingeniería Eléctrica del Instituto Superior Politécnico José Antonio Echeverría,

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 año de Ingeniería en Telecomunicaciones y

Electrónica, y aspirante al título universitario.

Page 5: Tesis Now Modif.pdf

P á g i n a | iv

Resumen

El Instituto Nacional de Recursos Hidráulicos (INRH) se encuentra

desarrollando varios proyectos en nuestro país que tienen como objetivo

automatizar las mediciones de las principales cuencas hidrográficas

nacionales. Para lograr este fin es necesario utilizar una gran variedad de

instrumentos de medición. Mediante las sondas de nivel se puede obtener el

nivel líquido de pozos, cisternas o cualquier contenedor en el cual se encuentre

almacenado algún líquido.

Las sondas de nivel que actualmente son utilizadas en el país son

importadas a muy altos precios ya que en nuestro país no se fabrican. Además,

cuando se daña alguna de éstas que se importa no es posible repararla porque

no están disponibles los detalles de su diseño. Debido a esto el Grupo de

Instrumentación Electrónica y Sensores Inteligentes (IESI) del Centro de

Investigaciones Hidráulicas (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

hidrostático. Se analizan los aspectos teóricos 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 compensación de la presión atmosférica. En

este trabajo se exponen las características y el funcionamiento de cada bloque

funcional del diseño y el procesamiento de las señales para realizar la

compensación. También se explica el funcionamiento del dispositivo en el

modo normal de operación y el diseño e implementación de los firmwares que

lo definen.

Utilizando varios software de simulación 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. También se realizó con la ayuda del Instituto de Central de

Investigación Digital (ICID) una prueba para comprobar la validez de la

comunicación digital. En el capítulo final se exponen los resultados obtenidos.

Page 6: Tesis Now Modif.pdf

P á g i n a | v

Abstract

The Instituto Nacional de Recursos Hidráulicos (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 Instrumentación

Electrónica y Sensores Inteligentes (IESI) of Centro de Investigaciones

Hidráulicas (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 Investigación Digital (ICID) a test to

check the validity of the digital communication. In the final chapter the obtained

results are exposed.

Page 7: Tesis Now Modif.pdf

P á g i n a | vi

Índice

INTRODUCCIÓN ................................................................................................................................. 1

CAPÍTULO 1 ESTUDIO TEÓRICO DE LAS SONDAS DE NIVEL ................................................................. 6

1.1 INTRODUCCIÓN .................................................................................................................................. 6 1.2 MEDICIÓN DE NIVEL ............................................................................................................................ 6

1.2.1 Principio capacitivo ................................................................................................................ 6 1.2.2 Principio resistivo ................................................................................................................... 7 1.2.3 Principio ultrasónico ............................................................................................................... 7 1.2.4 Principio de radar ................................................................................................................... 8 1.2.5 Principio de láser .................................................................................................................... 8 1.2.6 Principio de los flotadores ...................................................................................................... 8 1.2.7 Principio hidrostático .............................................................................................................. 8

1.3 SENSORES PIEZORRESISTIVOS ................................................................................................................. 9 1.3.1 Puente de Wheatstone ......................................................................................................... 10

1.4 CLASIFICACIÓN DE LOS SENSORES DE PRESIÓN PIEZORRESISTIVOS ................................................................ 11 1.5 CARACTERÍSTICAS NO DESEADAS DE LOS SENSORES DE PRESIÓN PIEZORRESISTIVOS Y SUS MÉTODOS DE

COMPENSACIÓN .......................................................................................................................................... 12 1.6 TECNOLOGÍA CHIP IN OIL.................................................................................................................... 13 1.7 CLASIFICACIÓN DE MEDIDORES DE NIVEL ................................................................................................ 13 1.8PROBLEMAS DE LAS SONDAS DE NIVEL SUMERGIBLES Y SU CORRECCIÓN ........................................................ 17 1.9 SALIDAS DE LAS SONDAS DE NIVEL ........................................................................................................ 18

1.9.1 Salidas analógicas ................................................................................................................ 18 1.9.2 Salidas digitales .................................................................................................................... 18

1.10 ANÁLISIS 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 presión 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 presión DCX-22 AA de Keller ............................. 21

1.11 CARACTERÍSTICAS DE LA SONDA DE NIVEL A DISEÑAR .............................................................................. 22 1.12 CONCLUSIONES .............................................................................................................................. 23

CAPÍTULO 2 HARDWARE DE LA SONDA DE NIVEL ............................................................................ 24

2.1 INTRODUCCIÓN ................................................................................................................................ 24 2.2 DIAGRAMA EN BLOQUES DE LA SONDA DE NIVEL ...................................................................................... 24 2.3 SELECCIÓN DEL SENSOR DE PRESIÓN ...................................................................................................... 25 2.4 SELECCIÓN DEL PDS .......................................................................................................................... 26 2.5 DISEÑO DE LA FUENTE DE ALIMENTACIÓN .............................................................................................. 29 2.6 DISEÑO DEL LAZO DE SALIDA 4-20 MA .................................................................................................. 30

2.6.1 Selección del amplificador operacional ................................................................................ 31 2.6.2 Ecuaciones del lazo de corriente 4-20 mA ............................................................................ 32 2.6.3 Cálculo de las resistencias Rof y Rg ...................................................................................... 33 2.6.4 Selección del transistor ......................................................................................................... 34 2.6.5 Cálculo de las resistencias Rb y Rc ........................................................................................ 34

2.7 DISEÑO DE LA INTERFAZ DE SALIDA DIGITAL ............................................................................................ 35 2.7.1 Selección del driver RS232 .................................................................................................... 35 2.7.2 Selección del driver RS485 .................................................................................................... 36 2.7.3 Compatibilidad electromagnética de la interfaz digital ....................................................... 36

2.8 ESQUEMÁTICO DE LA SONDA DE NIVEL ................................................................................................... 36 2.9 CONCLUSIONES ................................................................................................................................ 40

CAPÍTULO 3 FIRMWARES DE LA SONDA DE NIVEL ........................................................................... 41

3.1 INTRODUCCIÓN ................................................................................................................................ 41 3.2 OPERACIÓN EN TIEMPO REAL DE LA SONDA DE NIVEL ................................................................................ 41 3.3 COMUNICACIÓN CON LOS SENSORES KELLER 9LD .................................................................................... 42

Page 8: Tesis Now Modif.pdf

P á g i n a | vii

3.3.1 Protocolo de comunicación digital I2C .................................................................................. 42

3.3.2 Protocolo de comunicación de los sensores Keller 9LD ........................................................ 45 3.3.2.1 Detección del fin de adquisición y procesamiento ....................................................................... 46 3.3.2.2 Conversión de los datos digitales enviados por el sensor ............................................................. 46 3.3.2.3 Cambio de dirección de un esclavo .............................................................................................. 47

3.3.3 Desarrollo del firmware de comunicación con los sensores ................................................. 48 3.4 FIRMWARE QUE CONTROLA LA SALIDA ANALÓGICA DEL SISTEMA ................................................................. 49

3.4.1 Conversor digital-analógico perteneciente al MSP430F6638 .............................................. 49 3.4.2 Modo shutdown del amplificador operacional MAX9911 .................................................... 50 3.4.3 Desarrollo del firmware que maneja la salida analógica ..................................................... 51

3.5 FIRMWARE PARA LA COMUNICACIÓN ENTRE EL MSP Y UNA COMPUTADORA ................................................. 51 3.5.1 Protocolo de comunicación SDI-12 ....................................................................................... 51

3.5.1.1 Interfaz eléctrica ........................................................................................................................... 52 3.5.1.2 Protocolo de comunicación .......................................................................................................... 52 3.5.1.3 Chequeo de redundancia cíclica ................................................................................................... 55 3.5.1.4 Comandos extendidos .................................................................................................................. 55

3.5.2 Desarrollo del firmware para la comunicación digital del sistema ...................................... 55 3.5.2.1 Configuración de las salidas del dispositivo .................................................................................. 56 3.5.2.2 Configuración de la unidad de ingeniería ..................................................................................... 56 3.5.2.3 Obtención de los datos de los sensores y procesamiento ............................................................ 57 3.5.2.4 Envío de los datos al amo ............................................................................................................. 58 3.5.2.5 Respuestas con CRC ...................................................................................................................... 59

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

CAPÍTULO 4 RESULTADOS Y ANÁLISIS ECONÓMICO......................................................................... 62

4.1 INTRODUCCIÓN ................................................................................................................................ 62 4.2 RESULTADOS DE LAS SIMULACIONES ...................................................................................................... 62

4.2.1 Simulación de la comunicación con los sensores .................................................................. 62 4.2.2 Simulación de la comunicación digital mediante el protocolo SDI-12 .................................. 66 4.2.3 Simulación del lazo de corriente 4-20mA ............................................................................. 69

4.3 RESULTADOS PRÁCTICOS..................................................................................................................... 74 4.4 ANÁLISIS ECONÓMICO ........................................................................................................................ 78

4.4.1 Estimación de los costos ....................................................................................................... 78 4.4.2 Impacto económico .............................................................................................................. 80

4.5 CONCLUSIONES ................................................................................................................................ 81

CONCLUSIONES FINALES .................................................................................................................. 82

RECOMENDACIONES ....................................................................................................................... 83

REFERENCIAS BIBLIOGRÁFICAS ........................................................................................................ 84

BIBLIOGRAFÍA .................................................................................................................................. 86

ANEXOS ........................................................................................................................................... 89

ANEXO 1. PROGRAMA DESARROLLADO PARA EL FUNCIONAMIENTO DEL DISPOSITIVO EN BIBLIOTECAS .C Y .H. ............ 89 ANEXO 2. ANÁLISIS DESDE LA DEFENSA ..................................................................................................... 140

Page 9: Tesis Now Modif.pdf

I n t r o d u c c i ó n P á g i n a | 1

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Introducción

El nivel es la altura que alcanza una sustancia líquida. 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 obtención de nivel de sustancias líquidas es necesaria en

numerosos procesos industriales y para la gestión de recursos hidráulicos.

Existen diversas maneras de medir el nivel basándose en diferentes principios

físicos, estas pueden enumerarse como: capacitivos, resistivos, hidrostáticos,

ultrasónicos, de radar, láser, seguimiento de la superficie, flotadores, entre

otros (1), (2). Una de las formas de medir nivel de manera continua es la

utilización de sondas de nivel sumergibles, permitiendo proporcionar los datos

de nivel de manera permanente mediante una señal eléctrica a su salida (1).

La mayoría de las sondas de nivel sumergibles se basan en el principio

hidrostático para la obtención del nivel (2). Dicho principio proporciona el nivel a

partir de la presión ejercida por un bloque líquido sobre una superficie. Esta

presión ejercida por la columna líquida está compuesta por la presión ejercida

por el bloque y la presión ejercida por encima del líquido (presión en la

superficie libre del líquido).

Los sensores de presión son dispositivos encargados de detectar los

cambios de esta magnitud y transformarlos en señales eléctricas. Uno de los

principios físicos mayormente empleados en la medición de la presión y el nivel

es el piezorresistivo (3). Éste se basa en la descripción de los cambios

ocurridos en la resistencia eléctrica de un material debido a la aplicación de

tensiones mecánicas. Estos sensores han logrado una gran popularidad en

diversas aplicaciones debido a las propiedades elásticas del silicio, su

utilización en la construcción de los circuitos integrados y los grandes avances

en la elaboración de los Sistemas Micro-Electro-Mecánicos (MEMS). Una de

las configuraciones más utilizada con piezorresistores para las mediciones es

la del puente de Wheatstone (4).

La señal de salida de estos sensores es altamente dependiente de la

temperatura (5), por lo cual se hace necesaria su compensación para obtener

un mínimo de precisión en la medición. La compensación puede realizarse

Page 10: Tesis Now Modif.pdf

I n t r o d u c c i ó n P á g i n a | 2

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

mediante diversos métodos los cuales varían en complejidad y eficiencia (6).

Pueden mencionarse las técnicas analógicas, que se basan en componentes

analógicos como diodos, amplificadores, transistores, entre otros. Además, el

procesamiento digital de la señal en el dominio analógico utilizando

convertidores digital analógicos (DAC), memorias EEPROM, amplificadores de

ganancia programable. También la utilización más novedosa lo constituyen los

procesadores de señales digitales (DSSP, por sus siglas en inglés), los cuales

se encargan de digitalizar la señal mediante convertidores analógico digitales

(ADC), la acondicionan y después la llevan al dominio analógico mediante DAC

si fuese necesario, pudiéndose brindar también como señal digital.

Para facilitar el proceso de compensación en la obtención de nivel se utiliza

un cable ventilado o un barómetro (1). Debido a los inconvenientes que pueden

presentarse al utilizar estas técnicas surge una forma novedosa: son utilizados

dos sensores de presión. El primero mide la presión de la columna de líquido y

el segundo la presión atmosférica (barométrico). Mediante un procesamiento

posterior puede obtenerse el nivel al compensar el efecto de la presión

atmosférica.

La salida de la sonda de nivel puede ser tanto analógica como digital. La

salida analógica más empleada es la de 4-20mA. Para implementar la salida

digital se utiliza comúnmente algún protocolo de comunicación como HART,

SDI-12, Profibus o Foundation Fieldbus.

El INRH se encuentra desarrollando varios proyectos de gran importancia

con el objetivo de lograr la automatización de las principales cuencas

hidráulicas nacionales. En éstas se torna imprescindible la utilización de

instrumentación para conseguir el logro de este objetivo. Las sondas de nivel

son un instrumento de medición de mucha importancia para estos proyectos.

Permiten la obtención del nivel líquido de pozos, cisternas o cualquier

contenedor en el cual se encuentre almacenado algún líquido.

Las sondas de nivel que actualmente son utilizadas en el país son

importadas a muy altos precios ya que en nuestro país no se fabrican. Además,

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 país. Es

muy importante la superación de estos inconvenientes propios de nuestro

Page 11: Tesis Now Modif.pdf

I n t r o d u c c i ó n P á g i n a | 3

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

ambiente y lograr la sustitución de parte de las importaciones que realiza el

INRH.

Problema a resolver:

¿Cómo reducir las importaciones de sondas de nivel y adaptarlas a las

condiciones del clima en nuestro país?

Objeto de estudio:

Instrumentación electrónica, procesamiento digital de señales de sensores y

algunos principios hidráulicos.

Campo de acción:

Sondas de nivel que utilizan sensores de presión piezorresistivos y

microcontroladores.

Objetivo:

Diseñar y simular una sonda de nivel con compensación de la presión

atmosférica para aplicaciones hidráulicas.

Tareas:

Buscar y estudiar información acerca de las sondas de nivel y su

diseño.

Escoger la solución adecuada para las condiciones de nuestro país y

requerimientos del diseño.

Estudiar y determinar los dispositivos que se utilizarán como

componentes en el hardware del dispositivo.

Desarrollar, simular y poner a punto los firmwares necesarios para el

funcionamiento del dispositivo utilizando herramientas de simulación

como: Proteus, MathCAD, IAR, Altium.

Validar el firmware que define el funcionamiento del dispositivo

mediante una prueba práctica.

Hipótesis:

A partir del diseño y la simulación de una sonda de nivel con compensación

de la presión atmosférica 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 país.

Los métodos de investigación que fueron empleados son:

Page 12: Tesis Now Modif.pdf

I n t r o d u c c i ó n P á g i n a | 4

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

1. Método sistémico con el objetivo de comprender y solucionar el

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

del diseño de los bloques funcionales que lo componen.

2. Método histórico - lógico para analizar el estado del arte de las sondas

de presión, así como las principales características de los componentes a

utilizar en el diseño que hoy se encuentran en el mercado.

3. Método teórico - práctico en el estudio teórico de los sensores de

presión, los circuitos de acondicionamiento de señal, los protocolos de

comunicación y en la comprobación experimental de la sonda de nivel.

El contenido de esta tesis se encuentra estructurado en 4 capítulos. En el

primer capítulo, Estudio Teórico de las Sondas de Nivel, se abordarán los

principales temas relacionados con el cálculo de nivel y especialmente las

sondas de nivel sumergibles. También se describen los sensores de presión

piezorresistivos, los problemas asociados a estos sensores y los circuitos de

acondicionamiento que permiten minimizar estas deficiencias. Finaliza el

capítulo con una descripción de la sonda de nivel que será diseñada. Estos

aspectos servirán como base para los próximos capítulos.

En el segundo capítulo, 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 encargarán de cumplir las funciones

requeridas tomando en cuenta el consumo de corriente de cada componente.

Se describe el diseño del lazo de salida 4-20mA y el de la interfaz digital de la

sonda de nivel.

En el tercer capítulo, 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

comunicación con los sensores, el procesamiento de las muestras y la

comunicación digital. Se explican también las características, funciones e

implementación del protocolo de comunicación digital serie SDI-12.

En el cuarto capítulo, Resultados y Análisis Económico, se describen las

simulaciones y la prueba práctica realizada a los diferentes bloques funcionales

de la sonda de nivel. Son analizados los resultados y se valida el firmware

Page 13: Tesis Now Modif.pdf

I n t r o d u c c i ó n P á g i n a | 5

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

diseñado. Por último se realiza un análisis de los costos del proyecto y el

impacto económico que generaría la sonda de nivel a nuestro país.

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.

Page 14: Tesis Now Modif.pdf

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 | 6

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Capítulo 1 Estudio Teórico de las Sondas de Nivel

1.1 Introducción

En este capítulo se tratarán los temas relacionados con el cálculo de nivel y

especialmente las sondas de nivel sumergibles. También se profundiza en los

sensores de presión piezorresistivos, los problemas asociados a estos

sensores y los circuitos de acondicionamiento que permiten minimizar estas

deficiencias. Además, se procede a realizar un estudio del estado del arte de

las sondas de nivel existentes en el mercado mundial y sus principales

características. Finaliza el capítulo con una descripción de la sonda de nivel

que será diseñada. Estos aspectos servirán como base para los próximos

capítulos.

1.2 Medición de nivel

La medición de nivel se basa principalmente en varios principios físicos

mediante los cuales se puede obtener dicha variable. Estos principios pueden

ofrecer el nivel de sustancias tan diversas como líquidos, compuestos acuosos,

materiales granulares, y en polvos. La sustancia a medir puede presentarse en

estado natural (ríos, lagos) o en algún contenedor. Entre los principios físicos

utilizados para aplicaciones hidráulicas se pueden citar el capacitivo, el

resistivo, el hidrostático, el ultrasónico, el de radar, el de láser, flotadores

(utilizando la gravedad) y el detector vibratorio (1), (2).

1.2.1 Principio capacitivo

El método capacitivo se basa en la medición del cambio de la capacitancia

de un capacitor con la variación de nivel. Para implementar este principio se

considera que la mayoría de los fluidos poseen constantes dieléctricas 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 dieléctrico. Uno de los electrodos constituye el de medición y el otro es

utilizado como referencia (1).

Se considera importante aclarar que la capacitancia debe variar de forma

proporcional al nivel del líquido (2). Este principio puede utilizarse tanto en

Page 15: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

sustancias sólidas como líquidas, siendo conductoras o no conductoras. Para

obtener la capacitancia total se utiliza la expresión 1.1.

(

) (1.1)

Donde

: Capacitancia en Farad

: Constante de proporcionalidad

: Constante dieléctrica

: Área efectiva de los conductores

: Distancia entre electrodos

1.2.2 Principio resistivo

El principio resistivo para la medición de nivel tiene como base la variación

en la resistencia entre dos electrodos que poseen un líquido conductor entre

ellos. Al cambiar el nivel de dicho líquido se origina una variación de la

resistencia. Cuando el nivel del líquido 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 líquido, pero también de la resistividad de este.

1.2.3 Principio ultrasónico

Este método se basa en la medición de la distancia recorrida por un pulso

ultrasónico mediante el cálculo de tiempo. Un sensor transmite un pulso

ultrasónico hacia la superficie del líquido 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 líquido (2). Para obtener el nivel

utiliza las siguientes ecuaciones:

(1.2)

(1.3)

Donde:

: Distancia entre el sensor y la superficie del líquido

: Velocidad del sonido en el aire

: Tiempo de tránsito

: Nivel

: Altura del sensor al nivel mínimo

Page 16: Tesis Now Modif.pdf

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 | 8

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

sonido depende de la composición del medio y de la temperatura (1).

1.2.4 Principio de radar

Este método es similar al anterior, cambiando el sensor de transmisión por

una antena. Ésta se encarga de transmitir un pulso de microondas, siendo

reflejado por el líquido 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 método ofrece la ventaja de ser

independiente de la temperatura y la presión (1).

1.2.5 Principio de láser

Este principio se asemeja mucho a los dos anteriormente expuestos. Utiliza

un emisor que dispara un pulso corto de luz hacia el líquido, siendo éste

devuelto al emisor mediante la reflexión. Puede ser utilizado tanto en sólidos

como líquidos y se aplica a altos valores de temperatura y presión (2).

1.2.6 Principio de los flotadores

Este método es el más simple que se puede utilizar. Emplea algún objeto

flotante con una gravedad intermedia entre la del líquido y el vapor o aire

encima de este. Entonces mediante la utilización de algún instrumento

mecánico se determina su posición (2).

1.2.7 Principio hidrostático

La medición de nivel mediante el principio de presión hidrostático se

fundamenta en la obtención de la presión ejercida por una columna líquida

sobre una superficie que se encuentre sumergida debajo de ella. La presión

hidrostática ejercida por la columna líquida se calcula mediante la expresión

1.4.

(1.4)

Donde

: Presión hidrostática

: Altura de la columna de líquido

: Densidad

: Aceleración de la gravedad

Page 17: Tesis Now Modif.pdf

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 | 9

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Al realizar un despeje puede obtenerse el nivel:

(1.5)

La presión que ejerce la columna de un líquido es la presión del líquido más

la presión en la superficie libre del líquido. Esta situación debe ser compensada

para el correcto cálculo del nivel mediante este principio (1).

1.3 Sensores piezorresistivos

Los sensores de presión piezorresistivos son de una amplia aplicación en los

sectores automovilístico, industrial y biomédico. Se pueden mencionar algunas

aplicaciones como dispositivos implantables para realizar la medición de la

presión sanguínea, ocular o sanguínea, sensores de presión en líneas de

combustible, múltiples de los motores, o monitorización de procesos

industriales (3).

Los sensores de presión piezorresistivos están compuestos por dos

componentes fundamentales: la lámina (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 presión, 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,

características elásticas superiores, entre otras características aprovechables.

Page 18: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

El aceite de silicona se encuentra dentro de una cámara 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 conexión mediante hilos de oro.

Cuando el sensor se encuentra en funcionamiento la presión que se ejerce

sobre el diafragma es transferida a través del aceite de silicona al chip de

silicio. Esta presión 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 próximo epígrafe dando como resultado

señales de tensión proporcionales a las presiones aplicadas.

1.3.1 Puente de Wheatstone

Los sensores resistivos pueden encontrarse típicamente conectados en

configuración de puente de Wheatstone. Éstos brindan una gran sensibilidad y

reproducen de manera confiable la señal a medir (4), (7). Esta configuración se

utiliza para realizar mediciones de temperatura, presión o estrés utilizando

elementos resistivos mediante la detección de pequeños cambios dichos

elementos (8). La configuración típica del puente de Wheatstone puede

observarse en la figura 1.2.

Figura 1.2 Configuración típica en puente de Wheatstone

La tensión a su salida es obtenida de manera diferencial entre las salidas

de los dos divisores de tensión en las dos ramas opuestas. La desviación de

las resistencias de un valor nominal preestablecido es interpretada como algún

cambio en la variable física que se mide, siendo la tensión de salida del puente

Page 19: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

el que indique dicho cambio. Esta tensión se puede determinar mediante la

siguiente ecuación:

[

] (1.6)

Se puede considerar el puente como balanceado si es 0, es decir,

⁄⁄ . De esta condición se infiere que la tensión de salida será nulo

independientemente de la manera de excitación.

Los puentes pueden tener uno, dos o cuatro piezorresistores y pueden

alimentarse tanto con corriente como con tensión, aunque esta última es la

forma más popular. En la configuración de puente de Wheatstone se manifiesta

una marcada relación entre la resolución de la señal 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 señal de salida es proporcional a la tensión

de alimentación, trayendo como consecuencia un elevado consumo de

potencia para una gran resolución (9).

1.4 Clasificación de los sensores de presión piezorresistivos

Los sensores piezorresistivos tienen diferentes clasificaciones según sus

usos y aplicaciones. De maneara general, todos los sensores de presión

pizorresistivos pueden considerarse diferenciales por su principio básico de

funcionamiento. Esto puede definirse debido a que la salida está relacionada

con la diferencia de presión entre los dos lados de la membrana. La diferencia

entre un sensor relativo y uno diferencial es que el relativo sólo posee una

membrana mecánica conectada al proceso, mientras que el diferencial posee

dos membranas. La forma de conexión de dichos lados de la membrana

constituye una de las principales maneras de clasificar estos sensores.

Utilizando este principio, los sensores de presión pueden clasificarse en

manométricos ventilados, manométricos sellados, absolutos, diferenciales,

barométricos y vacuómetros.

Los manométricos ventilados son aquellos que poseen un lado de la

membrana conectado al proceso, estando el otro lado conectado a la presión

atmosférica del lugar mediante un conducto. La diferencia de los manométricos

sellados con este último es que el lado no conectado al proceso se encuentra

Page 20: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

sellado, manteniendo la presión atmosférica a la cual fue fabricado. De modo

similar los sensores absolutos mantienen en un lado una presión lo más

aproximada posible al cero absoluto, necesitando compensación ya que

alcanzar el cero absoluto es imposible. Los vacuómetros son similares a los

manométicos, siendo empleados para medir presiones inferiores que la presión

atmosférica. Por último los sensores barométricos son un tipo de sensores

absolutos, los cuales se utilizan para la medición de las variaciones de la

presión atmosférica con respecto al cero absoluto.

1.5 Características no deseadas de los sensores de presión

piezorresistivos y sus métodos de compensación

Los principales problemas que se asocian a los sensores de presión

piezorresistivos están relacionados a la no linealidad, la dependencia de la

temperatura y los errores de histéresis. La dependencia de mayor efecto

negativo causa es la sensibilidad con la temperatura (5). Como consecuencia

es evidente un decrecimiento en la precisión del sensor, siendo necesaria la

compensación de estos problemas en aras de obtener sensores de una alta

precisión. Es importante también el control sobre el proceso de fabricación ya

que cualquier alteración produce importantes cambios en la dependencia

térmica del sensor (6).

Para realizar la calibración y compensación de la señal 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 métodos analógicos, la

utilización de un microcontrolador de señales en el dominio analógico (ASSP,

por sus siglas en inglés) o la utilización de un microcontrolador de señales

digitales (DSSP, por sus siglas en inglés).

Las soluciones puramente analógicas como su nombre lo indica son basadas

en elementos analógicos (dígase amplificadores operacionales, diodos,

transistores, entre otros). Existen innumerables métodos para aplicar esta

técnica, pudiéndose citar particularmente la utilización de resistores externos

(10) y la utilización de características de componentes como capacitores (11).

La utilización de ASSP se basa en la compensación y calibración de la señal

desde el dominio digital pero manteniendo esta señal en el formato analógico.

Page 21: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Para su funcionamiento se utilizan memorias EEPROM, convertidores digital

analógicos (D/A), y amplificadores de ganancia programable. Éstos realizan

una compensación de las no linealidades del sensor y la componente

cuadrática del coeficiente térmico de la sensibilidad. Los factores de corrección

son obtenidos según el proceso automatizado de calibración, siendo

almacenados en las memorias EEPROM (6).

Entre las formas más novedosas de realizar la compensación y calibración

de la señal proveniente de un sensor se encuentra la utilización de un DSSP.

Este sistema primeramente digitaliza la señal mediante un convertidor

analógico-digital (A/D) para posteriormente realizar su procesamiento en un

microcontrolador, devolviéndola posteriormente a formato analógico mediante

un convertidor digital-analógico (D/A) para su salida o pudiéndola ofrecer

también en formato digital. Entre las ventajas que pueden citarse al utilizar este

método están la posibilidad de ajustar el rango de trabajo del transmisor,

además de las muchas opciones que brinda la compensación digital. También

se puede argumentar la posibilidad de brindar una salida con comunicación

digital utilizando buses de campo y protocolos de comunicación (6).

1.6 Tecnología Chip in Oil

La tecnología Chip in Oil constituye una moderna forma de fabricación de los

dispositivos creada por Keller para la fabricación de sensores de presión. En su

aplicación incluye dentro del propio sensor de presión un Circuito Integrado

para Aplicaciones Específicas (ASIC), el cual se encarga de la compensación y

calibración de la señal del sensor, permitiendo un diseño estructural bastante

compacto (12).

Utiliza cables sinterizados de cristal resistentes a la presión 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 configuración de encapsulado de acero

de alto grado logran simular una jaula de Faraday, brindando una gran

resistencia a la interferencia de campos eléctricos externos.

1.7 Clasificación de medidores de nivel

Los medidores de nivel se pueden clasificar primeramente basándose en el

tipo de medición que realizan: continua o discreta. Los medidores continuos

Page 22: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

brindan una salida continua, mientras que los detectores ofrecen una salida

que indica la presencia o no de fluido en algún punto. Estos últimos no generan

información exacta del lugar en el cual se encuentra el líquido. Además pueden

ser clasificadas por el principio físico 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 líquido es conductor, la sonda que se inserta en

el mismo debe ser recubierta con un material aislante (2). Debido al valor de la

constante dieléctrica de los líquidos, 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 señal 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 también las paredes del tanque

como electrodo, pero en este caso las paredes del tanque deben ser

conductoras. Comúnmente se utiliza una sonda de dos electrodos, eliminando

la necesidad de utilizar tanques metálicos aterrados. Para compensar los

efectos de la variación de la resistividad del líquido o fluido se utilizan

electrodos de compensación. Normalmente se fabrican de acero inoxidable,

aunque también pueden fabricarse de tantalio y hastelloy. Se instalan en

posición vertical para evitar la generación de corrientes parásitas causadas por

la formación de películas de líquido.

Page 23: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Los medidores de nivel ultrasónicos utilizan un circuito de procesamiento el

cual se basa en microcontroladores para transformar el tiempo de tránsito de

una señal ultrasónica emitida en la salida de nivel. El sensor es una membrana

conectada a uno o varios cristales piezoeléctricos para transmitir y recibir la

señal de sonido. Entre los métodos de compensación pueden mencionarse: la

utilización de un obstáculo a una distancia constante o la medición de la

temperatura del medio. El primero origina una trayectoria de compensación,

brindándole al circuito de procesamiento la posibilidad de eliminar la influencia

de la variación de la velocidad del sonido en el medio. Estos medidores de nivel

poseen una distancia mínima de utilización (2) y pueden observarse en la figura

1.4.

Figura 1.4 Sonda de nivel ultrasónica

Los medidores de nivel por radar son muy parecidos a los anteriores, el

circuito de procesamiento utiliza la misma operación para obtener el nivel. Esta

sonda trabaja con energía electromagnética, la cual se refleja por la

impedancia (constante dieléctrica del medio). Esta constante dieléctrica del

fluido tiene un valor mínimo para el correcto funcionamiento del dispositivo.

El sensor de nivel láser está diseñado para su utilización en tanques con

numerosas obstrucciones y a largas distancias. Su funcionamiento es similar a

los anteriores, aunque resulta costoso para aplicaciones simples como la

medición de agua (1).

El medidor de nivel basado en flotadores acopla al flotador la generación de

una señal eléctrica la cual puede ser producida por la utilización de

codificadores ópticos asociados a un sistema flotador – cinta – contrapeso o

Page 24: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

mediante el uso de micro – interruptores magnéticos. 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

variación 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 sitúan los micro –

interruptores magnéticos, estando asociado al flotante un imán que genera la

apertura de los interruptores. El circuito de procesamiento determina la posición

del flotante(1).

Las sondas de nivel hidrostáticas pueden clasificarse en tres grupos, las que

utilizan el método de burbujeo, las que utilizan el principio de Arquímedes y las

que utilizan sensores de presión para medir directamente la presión ejercida

por el bloque líquido. El método de burbujeo o desplazadores son aplicados

cuando el sensor no puede estar en contacto directo con el fluido.

Para la implementación del principio de medición por burbujeo se introduce

un tubo o manguera en el líquido por la cual se hace circular un gas

(típicamente aire, o algún gas inerte) originando un burbujeo. Al determinase

que este se mantiene de forma continua, la presión en la manguera alcanzó el

mismo valor que la presión hidrostática ejercida por la columna líquida. Esta

presión es monitorizada por un transductor de presión conectado al tubo (2). La

implementación de este principio puede observarse en la figura 1.5.

Figura 1.5 Sensor de nivel hidrostático mediante burbujeo

El otro método mencionado como alternativa al de burbujeo son los

desplazadores, los cuales se basan en el principio de Arquímedes. Éste es la

Page 25: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

suspensión de un objeto en el recipiente que contiene el líquido que posea un

peso mayor que el de este. Además el objeto debe poseer área constante y al

tener el peso del mismo se relaciona con el nivel. Cuando el nivel del líquido

disminuye provoca una disminución en el volumen del cuerpo por lo que la

fuerza de empuje disminuye.

La utilización de sensores de presión directamente es la forma más común

de aplicar el principio hidrostático para aplicaciones que puedan establecer

contacto directo entre el líquido y el sensor. Para eliminar el efecto de la

presión sobre el líquido se utiliza un sensor de presión diferencial con la

segunda toma conectada a la presión 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 aplicación en lugares donde no se

puedan conectar el sensor por fuera como los pozos embalses. Las sondas de

nivel están constituidas por un sensor de presión encapsulado especialmente

para que el líquido no penetre y dañe el equipamiento. Para obtener la

referencia de la presión en la superficie del líquido se hace necesario encontrar

alguna solución que puede definirse en la utilización de un cable ventilado o un

barómetro en dicha superficie.

Un cable ventilado es una pequeña manguera situada en el cable por el cual

se comunica el sensor. Esta manguera brinda la referencia de la presión en la

superficie del líquido necesaria para el transductor. La otra forma de

compensar el efecto de la presión atmosférica es utilizar un sensor barométrico

en la superficie del líquido. Este sensor se encarga de obtener la presión

atmosférica. Después de obtener el valor de presión brindado por el sensor

encapsulado y obteniendo el valor de la presión atmosférica se puede realizar

un proceso de compensación que permita la obtención del valor real de nivel.

1.8Problemas de las sondas de nivel sumergibles y su corrección

El método del cable ventilado constituye una gran ventaja pero al estar el

cable expuesto a la interacción con el ambiente puede llegarse a conformar

una columna líquida en el interior de cable ventilado. Esta situación se produce

como efecto de la humedad y de los cambios de temperatura producto de la

condensación. Esta condición trae como consecuencia la inexactitud en las

Page 26: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

mediciones. Para eliminar esta situación debe descartarse el cable ventilado,

pero sin embargo se debe mantener una referencia de la presión en la

superficie del líquido para la correcta medición. Una forma novedosa es la

utilización de otro sensor de presión que se encargue de medir la presión en la

superficie, para posteriormente utilizando un circuito de procesamiento realizar

la compensación.

1.9 Salidas de las sondas de nivel

Las sondas de nivel poseen una gran variedad de formatos de salida. La

selección 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 analógicas y las salidas digitales.

1.9.1 Salidas analógicas

La salida analógica 4-20mA a dos hilos es una de las más utilizadas

industrialmente por las ventajas que proporciona. Ésta puede utilizarse a

grandes distancias, ya que la información útil se representa por el consumo del

transmisor. Esta salida puede implementarse sobre dos hilos de función doble:

alimentador del transmisor y transmisión del resultado.

Otra formato de salida analógico utilizado es el de 0-10V. La salida en

tensión es dependiente de la longitud del cable ya que la resistencia de este

afecta la señal, trayendo consigo una afectación en la calidad de la medición.

Otro tipo de salida es la nombrada Pulse Width Modulation (PWM). En ésta la

información de la señal de control es representada en el ciclo útil de los pulsos

de salida. La información es susceptible a interferencias generadas por

radiofrecuencia.

1.9.2 Salidas digitales

Las salidas digitales utilizan drivers para estandarizar los niveles de tensión a

sus salidas. Sobre estas interfaces pueden implementarse diferentes tipos de

protocolos de comunicación. Algunos de los protocolos más utilizados en

aplicaciones industriales son: MODBUS, Profibus, HART, SDI-12, entre otros.

Mediante esta comunicación se pueden obtener los datos de la medición y

configurar algunos parámetros del dispositivo. La comunicación digital es más

confiable y económica, posibilitan una mayor cantidad de opciones de

Page 27: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

configuración y funcionamiento, además de permitir en muchos casos la

utilización de buses de campo.

1.10 Análisis 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 cálculo y diferentes salidas para obtener la variable. A

continuación se exponen las características 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 analógica 4-20mA, HART (las

comunicaciones digitales y analógicas se realizan sobre los mismos hilos) o

digital mediante PROFIBUS o Foundation Fieldbus. Brindan además un rango

de medición de hasta 15m, y una precisión a la salida de 2mm. Trabaja para

una presión de proceso de -1…+2 bar (-100…+200kPa)(13).

Es un sensor ideal para las aplicaciones en el sector de la hidráulica y las

aguas residuales. Ofrece resultados exactos de medición 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

Page 28: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

1.10.2 Medidor de nivel capacitivo Liquicap T FMI21 de Endress +

Hauser

Este sensor de nivel es utilizado en líquidos conductivos (mayor de 30μS/cm)

para medición continua y no requieren de calibración (14). El rango de

medición 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 variación de 25 a 2000pF.

Posee salida analógica de 4 – 20mA brindando un máximo de error en la

medición ≤ 1% del valor de escala completa. Trabaja en procesos que se

encuentren a presiones entre -1 y 10 bar. Además 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 presión PS3417 de

IFM

Esta sonda de nivel de medición continua utiliza un sensor de presión para

obtener la presión que ejerce la columna líquida y un cable ventilado para

determinar la presión de la superficie del líquido para la compensación. Utiliza

una salida analógica de 4-20mA y protección contra cortocircuitos y como

Page 29: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

rango de alimentación de 10 a 30V en corriente directa. Posee una cubierta de

acero inoxidable para su protección(15).

El rango de medición es de 0 a 1bar con una exactitud en la señal analógica

de 0.5% incluyendo errores de linealidad, del punto cero y del margen

(configuración del valor límite). El error de repetibilidad es menor que un 1% y

la estabilidad a largo plazo de 0.2% del margen por año. Trabaja en fluidos

líquidos que se encuentren a una temperatura entre -10 y 50ºC. 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 célula de medición de presión

capacitiva de cerámica y un controlador integrado que se encarga de calcular el

nivel del agua. Emplea un cable ventilado para determinar la presión de la

superficie del líquido. Puede suministrarse con salida analógica de 4-20mA o

las salidas digitales SDI-12 o RS485. El rango de alimentación es de 9.6 a 28V

(16).

Brinda un rango de medición desde de 0 a 4m hasta de 0 a 40m con un error

del 0.05% del valor final del margen de medición. Puede trabajar en

temperaturas desde -25 hasta 70 ºC. La desviación anual máxima es de solo

0.1% del valor final del margen de medición.

1.10.5 Sonda de nivel sumergible con sensor de presión DCX-22 AA

de Keller

Las sondas de nivel DCX-22 AA son diseñadas para ambientes de alta

humedad ya que no utilizan el cable ventilado. Para medir la presión

Page 30: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

barométrica utiliza un sensor de presión de aire a prueba de agua que está

situado en el encapsulamiento de acero inoxidable que protege la electrónica.

Los valores medidos son compensados matemáticamente 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 alimentación utiliza una batería de 3.6V que tiene un tiempo de vida

estimado de 10 años si se realiza una medición por hora (17). Posee una salida

digital RS485 y una opción inalámbrica utilizando un módulo de transmisión de

datos GSM-1 (Global System for Mobile) que puede enviar los datos medidos a

un móvil como SMS (Short Message System).

Su linealidad es de 0.02% a escala máxima, brinda una banda de error típica

de 0.05% de escala máxima para el sensor de presión y 0.1% de escala

máxima para el sensor barométrico. Trabaja en fluidos a temperaturas de -10 a

40ºC y con una resolución máxima de 0,0025% de escala máxima. Puede

observarse en la figura 1.9.

Figura 1.9 Sonda de nivel sumergible DCX-22 AA

1.11 Características de la sonda de nivel a diseñar

Después de realizar un análisis, se establecieron las condiciones de

funcionamiento en nuestro país y se deciden las especificaciones de la sonda

Page 31: Tesis Now Modif.pdf

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

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

de nivel a diseñar. Primeramente se decidió utilizar sensores piezorresistivos

con puente de Wheatstone debido a que han sido utilizados en el grupo con

excelentes resultados. También se decidió sustituir el cable ventilado por el

sensor de presión barométrico.

Con el objetivo de diversificar las aplicaciones de la sonda de nivel se

utilizarán dos salidas, una analógica 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 presión mediante el protocolo de comunicación

SDI-12.

1.12 Conclusiones

1. El empleo las sondas de nivel sumergibles que emplean el principio

hidrostático para realizar el cálculo de nivel brinda grandes ventajas

que diversifican su campo de aplicación.

2. Las sondas de nivel sumergibles necesitan realizar la compensación

de la presión atmosférica y para ello puede utilizase otro sensor en la

superficie del líquido.

3. Debido a las características no deseadas de los sensores

piezorresistivos deben emplearse circuitos de acondicionamiento de la

señal para lograr obtener un valor preciso en la medición.

4. La salida analógica de 4-20mA a dos hilos es ampliamente utilizada en

aplicaciones hidráulicas e industriales.

5. Las sondas de nivel con salida digital ofrecen grandes ventajas como

la medición de más de una variable y la configuración de parámetros

del dispositivo.

6. Existen diversidad de protocolos estándar para la comunicación

utilizables en la comunicación digital, ofreciendo confiabilidad y

simplificando la labor del usuario.

Page 32: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 24

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Capítulo 2 Hardware de la sonda de nivel

2.1 Introducción

En este capítulo se describen las temáticas relacionadas al diseño del

hardware de la sonda de nivel y las consideraciones que fueron tomadas en

cuenta en dicho diseño. Primeramente se presenta un diagrama en bloques

general del dispositivo. A partir de este diagrama serán seleccionadas las

componentes electrónicas que se encargarán de cumplir las funciones

asociadas a cada bloque. Esta selección estará condicionada principalmente

por el consumo de corriente de cada elemento. Esto se debe a que para lograr

la implementación de una salida analógica 4-20mA a dos hilos es necesario

que el consumo general del dispositivo no supere los 4mA. Para finalizar se

describe y presenta el esquemático final de la sonda de nivel resultante del

diseño 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á diseñada.

Figura 2.1 Diagrama en bloques de la sonda de nivel

Se comenzará a explicar la función de cada bloque de izquierda a derecha.

El sensor de presión es el encargado de proporcionar la presión ejercida por el

Page 33: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 25

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

bloque líquido. El sensor barométrico se encarga de brindar la presión a la cual

se encontrará la superficie del líquido. Seguidamente se representa el bloque

formado por el procesador digital de señales (PDS), elemento inteligente

central del sistema ya que se encargará de obtener los valores de los sensores

anteriormente descritos y a partir de esa información realizará la compensación

necesaria.

El diseño prosigue con un conversor voltaje corriente mediante el cual se

implementará una salida analógica 4-20mA a dos hilos a partir de una señal de

tensión obtenida del PDS. El PDS también será el encargado de interpretar y

ejecutar los comandos digitales que reciba a través de una interfaz serie. No

puede olvidarse también la fuente de alimentación que se encargará de

alimentar a todos los componentes del circuito diseñado. Se debe emplear un

bloque de compatibilidad electromagnética que garantice la protección de todo

el diseño. Todos los bloques anteriormente descritos son la base del diseño

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 Selección del sensor de presión

Para realizar la selección del sensor de presión piezorresistivo que será

utilizado en el diseño primeramente se debe analizar el consumo de corriente

del mismo y lograr que este sea lo menor posible. Además 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 tecnología

Chip in Oil, integrando dentro del propio sensor el circuito de

acondicionamiento que garantiza una medición eficiente. La comunicación con

este sensor es digital mediante el estándar I2C (Inter- Integrated Circuit) y la

alimentación es mediante tensión entre 1.8 y 3.6V. Presentan un consumo

típico de 1,5mA cuando realizan la conversión y 100nA en estado pasivo,

presentando óptimas características para su utilización en sistemas

alimentados por batería (18). Garantizan un TEB (Total Error Band) de un 0,5%

del intervalo de medida dentro de un rango de temperatura de 0 a 50ºC. El

rango de medición que se puede llegar a obtener es de 1 a 200 bar de manera

Page 34: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 26

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 presión Keller de la serie 9LD

2.4 Selección del PDS

La tarea que será descrita a continuación puede definirse como de primordial

importancia debido al impacto que posee el PDS en el diseño. Se debe tomar

especial cuidado en el consumo de corriente del PDS. También debe integrar la

mayor cantidad de componentes utilizadas en el diseño en aras de disminuir el

espacio ocupado por la placa y la utilización de componentes externas.

Después de realizar un amplio análisis y un profundo estudio de diversas

familias de dispositivos fueron seleccionados como más adecuados para la

aplicación 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

típico es de 19mA, no presenta amplificadores operacionales integrados que

puedan ser utilizados en el diseño del lazo de salida 4-20mA y el DAC está

especialmente diseñado para aplicaciones de audio, brindando dos canales de

salida (Izquierdo y Derecho).

El CY8C38 presenta un DAC de sólo 8 bits, siendo posible mediante diversos

métodos ampliar la resolución hasta 12 bits, pero con un considerable aumento

de los problemas de linealidad (26). El consumo típico de corriente que

Page 35: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 27

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

consumo puede aumentar en dependencia de los periféricos que se encuentren

en funcionamiento, lo cual descarta a esta familia.

El ZSC31050 necesita de la inclusión de amplificadores externos y un

microcontrolador para manejar la interfaz digital con salida RS232 o RS485.

También se encuentra limitado en cuanto cantidad de registros e instrucciones

a utilizar con él, presentando sólo 7 palabras de configuración. El DAC que

ofrece es de 11 bits y el consumo típico trabajando a 2,25MHz es de 2,5mA.

El MSP430F6638 presenta un consumo típico de 270μA/MHz hasta 8MHz, lo

cual resulta realmente bajo considerando que en nuestro diseño trabajaremos a

1MHz. Brinda un DAC de 12 bits, necesitando sólo la utilización de un

amplificador operacional externo para implementar el lazo de salida analógico,

lo cual no representa una gran dificultad. Por estas razones fue elegido para

ser utilizado en el diseño. 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 módulos integrados. Esto ofrece la posibilidad de utilizar

diferentes periféricos que proporcionan gran variedad de aplicaciones. Las

aplicaciones típicas incluyen sistemas de sensores tanto analógicos 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. También brinda dos bloques de interfaces

de comunicación serie universal las cuales son compatibles con UART

(Universal Asynchronous Receiver-Transmitter), SPI (Serial Peripheral

Interface) , I2C, entre otros, los cuales serán utilizados para la comunicación

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 batería en aplicaciones portables. Cuenta con dos

osciladores internos brindando la posibilidad de no utilizar un cristal externo.

Page 36: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 28

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 2.3 Diagrama en bloques funcionales del MSP430F6638

Page 37: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 29

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

2.5 Diseño de la fuente de alimentación

La fuente de alimentación del sistema se encargará de proporcionar la

tensión de alimentación necesaria a cada componente. Para el diseño de este

bloque se decidió utilizar una referencia de tensión. En la selección de dicho

dispositivo se debe tener en cuenta como imprescindibles características o

parámetros propios de especial observación que la tensión proporcionada debe

ser de 3V, valor que optimiza la aplicación para ser alimentada por batería.

También el consumo de corriente de la misma. El rango de tensión de entrada

que es permitido, el cual debe encontrarse entre 0 y 30V, rango de tensión que

cubre la mayoría de las opciones que se brindan en los diferentes dispositivos

comerciales. Se debe tener en cuenta también la corriente que ésta puede

proporcionar a su salida ya que además de brindar la tensión de alimentación

ésta ofrece la corriente necesaria para el funcionamiento de todo el sistema

incluyendo la situación más exigente. Esta última se describe como la

programación de la memoria FLASH interna del MSP430F6638 donde el

consumo aumenta hasta los 3mA típicamente, pudiendo llegar como valor

máximo hasta los 5mA. En el proceso de selección puede tenerse en cuenta

que existe una configuración utilizando un JFET a la entrada de la fuente de

referencia que disminuye la tensión que entra en la fuente, no siendo de

estricta importancia que ésta soporte la tensión máxima definida como la

máxima de alimentación.

El estudio realizado de las referencias existentes en el mercado que podrían

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 condición ideal pero ésta puede ser manejada mediante la

configuración del JFET. La MAX6037 sólo permite un rango de 3.2 a 5.5V,

valor que la elimina del análisis ya que el mínimo de tensión que se puede

mantener con la configuración antes mencionada es de 10V. La única que

realmente cumple con el rango de tensión especificado es la MAX6035, la cual

permite una variación de tensión de alimentación entre 4.9 y 33V.

Los consumos de corriente de esas fuentes se mantienen en niveles

bastante bajos, necesitando la MAX6035 73μA y las MAX6029 y MAX6129

Page 38: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 30

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

6,75μA. El aspecto más determinante en la selección pasa a ser entonces la

corriente que estas pueden ofrecer a su salida, quedándose estas últimas por

debajo del límite recomendable al proporcionar sólo 4mA a su salida. La

MAX6035 brinda 10mA, y al cumplir con las condiciones necesarias en el

diseño es escogida como la fuente de referencia a utilizar. En la tabla 2.1

pueden observarse los parámetros antes expuestos para facilitar una

comparación.

Tabla 2.1 Referencias de tensión

Vout (V) Vin (V) Iin (μA) Shutdown

Source

Current

(mA)

Min Typ Max Min Max Typ Max

MAX6029_30 2,9955 3 3,0045 3,2 12,6 6,75 No 4

MAX6035_AUR30 2,994 3 3,006 4,9 33 73 95 No 10

MAX6037_30 2,994 3 3,006 3,2 5,5 210 275 Sí 5

MAX6129_30 2,988 3 3,012 3,2 12,6 6,75 No 4

2.6 Diseño del lazo de salida 4-20 mA

Para diseñar el lazo de corriente de 4-20mA fue tomada como referencia una

configuración encontrada en la documentación estudiada. Ésta mediante

componentes analógicos activos y pasivos permite una implementación

eficiente del convertidor de voltaje a corriente (31). Esta configuración puede

ser observada en la figura 2.4.

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

Page 39: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 31

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

a corriente. El capacitor Cd tiene como objetivo filtrar la señal de salida de la

referencia de tensión para minimizar las afectaciones que puedan generarse en

el sistema por algún 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 señal de los sensores que son utilizados por el sistema. La

resistencia Rof se encarga de fijar la corriente mínima que generará el lazo

cuando la salida de tensión se sitúe en su límite 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

serán los encargados de generar el lazo de corriente. El operacional

proporciona la realimentación 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 compensación de este y la

disminución 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. También permite ajustar la tensión 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 protección del transistor en caso de trabajo a altas

temperaturas. Ésta lo protege de largos transitorios de corriente durante el

encendido y durante transitorios de tensión, manteniendo en una región segura

la temperatura de cruce del transistor.

2.6.1 Selección del amplificador operacional

Debido a que el MSP430F6638 no presenta amplificadores operacionales

internos debe seleccionarse un amplificador operacional para lograr

implementar el diseño anteriormente explicado. Para realizar la selección de

dicho componente se debe tomar en cuenta el consumo de corriente del mismo

y la ganancia de tensión 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

Page 40: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 32

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

consumo de corriente (4μA) y correctos valores de ganancia de tensión para

nuestra aplicación. 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 comparación. Los espacios en blanco en la tabla se deben a que el

fabricante no proporcionaba la información.

Tabla 2.2 Principales amplificadores operacionales analizados

Icc

(μA)

Input Offset Voltage

Drift (μV/°C)

Avol

(dB)

GBW

(kHz)

Shutdown

Typ Max Typ Max Min Typ Typ

MAX4076 40 55 1.5 80 117 230

MAX9617 59 78 0.005 0.120 120 160 1500

MAX9911 4 5 ±5 95 120 200 0.1nA - 0.5μA max

MAX44264 0.75 1.2 8 90 120 9

2.6.2 Ecuaciones del lazo de corriente 4-20 mA

Con el objetivo de proporcionar las herramientas necesarias para una mejor

comprensión 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 mínimo. La Isx constituye la

corriente que representa la diferencia del valor real de la variable y el valor

mínimo medible, es decir, es el valor entre 4 y 20mA que representa el valor de

la variable monitoreada.

Para realizar el análisis 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 relación 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

pequeña 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

adición 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

Page 41: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 33

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Rof realiza el ajuste de Ioffset. Aplicando el principio de superposición se

obtienen las ecuaciones 2.1 y 2.2.

(2.1)

(2.2)

2.6.3 Cálculo de las resistencias Rof y Rg

Para realizar el cálculo de las resistencias Rof y Rg se debe definir

primeramente que la variación de tensión en la salida del DAC del

MSP430F6638 es de 0,3 a 2,7V. La variación 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 variación de 16mA a la salida con esta variación 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

había definido como criterio que el valor de Rf debe ser mucho mayor que el de

Rs. Tomando Rs de 50Ω garantizamos que la caída de tensión en el resistor

sea de 1V para la corriente máxima que serían 20mA. Si se toma entonces Rf

igual a 100KΩ se puede afirmar que el error al no tener en cuenta el efecto de

Rf sería de 0,05%, sin embargo este error es puramente teórico 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 cálculo de Rof se

determinó que el consumo teórico total que podría alcanzar el circuito sería 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.

Page 42: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 34

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

2.6.4 Selección del transistor

Como parte del diseño del lazo de corriente debe seleccionarse el transistor.

Debe tenerse en cuenta que el transistor debe ser NPN y su comportamiento

debe ser lo más lineal posible. También se debe analizar la disminución de la

disipación de potencia con el aumento de la temperatura, ya que se trabajará

en el rango de 0 a 80ºC. Como datos específicos del componente se debe

garantizar que la potencia máxima disipada del transistor sea de 600mW a la

temperatura ambiente. Esto puede explicarse a partir del máximo valor del

rango de tensión que debe soportar el transistor. Este valor será de 30V y la

corriente máxima que circulará por él será de 20mA, aunque en la práctica 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 aplicación. Este dispositivo disipa 900mW a

temperatura ambiente (25ºC), brindando una variación de 7.2mW/ºC al trabajar

por encima de los 25ºC. En el caso límite de diseño (a una temperatura de

80ºC) la potencia máxima que podrá disipar será de 504mW, a pesar de no ser

este el valor ideal para el diseño puede ser disminuido el efecto de la

temperatura mediante la utilización de la resistencia Rc.

2.6.5 Cálculo de las resistencias Rb y Rc

Para realizar el cálculo 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 máxima en el diseño

teórico y la que logrará disipar el transistor. Mediante la ecuación siguiente

puede calcularse el valor mínimo de Rc:

(2.5)

El valor calculado es de 240Ω, por lo cual cualquier valor que se seleccione

debe ser mayor que este valor teórico calculado. Mientras mayor sea el valor

escogido mayor será el valor mínimo de alimentación de tensión que se

necesitará para el transmisor. Esto no es conveniente. Por tanto se debe

seleccionar el valor final de Rc teniendo en cuenta esta relación.

Page 43: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 35

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

tiene como objetivo que ésta pueda realizar su función de limitar la corriente de

base del transistor y ajustar la tensión 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 Diseño de la interfaz de salida digital

El diseño de la interfaz digital es de gran importancia ya que permitirá la

configuración remota de la sonda de nivel. Mediante esta interfaz se podrán

realizar diversas funciones como la configuración de la sonda de nivel, el

formato de su salida, entre otras.

El MSP430F6638 presenta dos módulos para comunicaciones digitales

llamados USCI_A (Universal Series Communication Interfaces A) y USCI_B los

cuales se utilizan para comunicación 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 comunicación RS232 y RS485 serán

utilizados los módulos USCI_A1 y USCI_A2 que manejarán los drivers

necesarios para la comunicación digital serie mediante la interfaz UART.

En la comunicación serie sólo son utilizados dos pines, uno para transmisión

y el otro para recepción. Simplemente el módulo transmite o recibe caracteres

a una razón de bits asincrónica. La frecuencia de baudio para la transmisión de

cada caracter es seleccionado en el USCI, siendo la misma para transmitir o

recibir.

2.7.1 Selección del driver RS232

Para realizar la selección del driver RS232 se tomó en cuenta principalmente

el bajo consumo que este debía 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 características

de los principales dispositivos estudiados.

Page 44: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 36

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Tabla 2.3 Drivers RS232

Supply Current (mA)

Shutdown Supply

Current (μA)

Maximum

Data Rate

(kbps)

Typ Max Typ Max Min

MAX3222E 0.3 1 1 10 250

MAX3322E 1 - 1 10 250

MAX3230E 0.3 1 1 10 250

MAX13234E 0.3 1 1 10 250

2.7.2 Selección del driver RS485

Con el objetivo de seleccionar el driver RS485 se tomaron en cuenta los

mismos parámetros que fueron observados para el RS232. Después de un

exhaustivo análisis entre algunas de las familias existentes fue seleccionado el

MAX3471(41). Este dispositivo está diseñado para aplicaciones alimentadas

por batería, siendo su consumo típico de 1,6μA para una alimentación de 3,6V

con el driver deshabilitado. El consumo del dispositivo será menor en el diseño

final ya que todo el sistema se alimentará con 3V. El consumo habitual del

dispositivo en completo funcionamiento es típicamente de 50μA.

2.7.3 Compatibilidad electromagnética de la interfaz digital

Para garantizar la protección necesaria contra los picos de tensión que

podrían surgir y tener efectos indeseados en los componentes relacionados

con la comunicación digital es utilizado un supresor bidireccional de transitorios

de tensión. Fueron escogidos los SMBJ5.0CA, los cuales poseen una tensión

de stand off de 5V (42). Estos dispositivos son colocados entre tierra y cada

una de las líneas de comunicación del transmisor con el dispositivo a

comunicar.

2.8 Esquemático de la sonda de nivel

Al concluir la selección de los principales componentes del hardware se

elaboró el circuito esquemático de la sonda de nivel diseñada. 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 comunicación

mediante el protocolo I2C entre el MSP430F6638 y los dos sensores que serán

Page 45: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 37

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

empleados en el diseño (el sensor introducido en el líquido y el sensor

barométrico respectivamente). También puede observarse la conexión

característica de un cristal de 4MHz que se utilizará en el dispositivo como

fuente de reloj y la utilización del diodo D1 para la protección del circuito contra

la inversión de polaridad de alimentación.

En la figura 2.6 pueden observarse la conexión de los dos drivers de

comunicación digital utilizados. La utilización de los capacitores CP1-CP8 entre

Vcc y Tierra permite proteger de ruidos externos al MSP430. También son una

protección de los efectos parásitos no deseados y lazos aterrados que puedan

ocasionar inexactitud en las conversiones o tensiones de offset no deseados.

Además, en dicha figura puede observarse el conector JTAG que permite la

programación del microprocesador y realizar la puesta a punto del programa

durante el funcionamiento del dispositivo.

El hardware diseñado permite que la sonda diseñada tenga salida digital

sobre la interfaz RS232 o RS485 no de forma simultánea. 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 comunicación 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 alimentación

adicional si solo se quiere salida digital. En este caso el transmisor toma la

alimentación de los pines DTR y RTS del puerto serie, para ellos se utiliza el

conector JPO1 y BAT54C.

Page 46: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 38

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 2.5 Esquemático del MSP430F6638 con salida analógica

Page 47: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 39

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 2.6 Esquemático de la interfaz digital de comunicación serie y componentes del diseño

Page 48: Tesis Now Modif.pdf

C a p í t u l o 2 H a r d w a r e d e l a s o n d a d e n i v e l P á g i n a | 40

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

2.9 Conclusiones

1. La alimentación se realiza a 3V para lograr que el consumo de toda la

sonda sea lo menor posible.

2. La utilización del MSP430F6638 en el diseño 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 consideración los requisitos a cumplir

que fueron expresados en el capítulo 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.

Page 49: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 41

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Capítulo 3 Firmwares de la sonda de nivel

3.1 Introducción

En este capítulo se describen los aspectos asociados al desarrollo de los

firmwares que controlan el funcionamiento del dispositivo. Como primer tema

se profundiza en la operación característica que debe realizar la sonda de nivel.

También se especifican las características de la comunicación I2C con los

sensores de presión Keller de la familia LD. Además se describen las

particularidades del firmware que maneja la salida analógica incluyendo el

conversor digital-analógico. Por último, se explican las características,

funciones e implementación del protocolo de comunicación digital SDI-12, así

como el firmware que describe el procesamiento de las muestras.

3.2 Operación en tiempo real de la sonda de nivel

Mediante el dispositivo diseñado es posible obtener la presión ejercida por

una columna líquida para con este dato obtener el nivel. Mediante comandos

de configuración 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 analógica 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 actúa como amo. Este comando

recibido por el MSP pasa por una primera etapa de identificación mediante un

proceso de comparación. Posteriormente el MSP obtiene las muestras de los

sensores y las resta siguiendo el principio de compensación atmosférica

descrito en el epígrafe 1.8. Por último envía los datos adquiridos de manera

digital y/o analógica.

Page 50: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 42

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 3. 1 Diagrama en bloques sobre el procesamiento y envío de las muestras

Debido a este análisis sobre la operación 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 comunicación del MSP con los sensores, el control de la

salida analógica y la comunicación de una PC y el MSP. Estos aspectos serán

presentados en los epígrafes que siguen.

3.3 Comunicación con los sensores Keller 9LD

Con el objetivo de lograr el correcto funcionamiento de los sensores de

presión empleados en el diseño debe ser garantizada la comunicación

mediante el protocolo digital I2C utilizado por los mismos. La correcta

implementación del protocolo de comunicación puede clasificarse como de vital

importancia ya que garantiza el funcionamiento efectivo de nuestro sistema.

3.3.1 Protocolo de comunicación digital I2C

El protocolo I2C fue definido originalmente por el fabricante Philips y

proporciona una manera muy simple de comunicación entre circuitos

Page 51: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 43

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

integrados mediante la utilización de una mínima cantidad de pines. Ha llegado

a convertirse en un estándar industrial adoptado por una gran cantidad de

fabricantes de circuitos integrados. Dicho protocolo presenta varias

características ventajosas que lo distinguen (43):

Sólo se requiere un bus compuesto de dos líneas: una línea de datos

serie (SDA) y una línea de reloj serie (SCL).

Cada dispositivo que se encuentre conectado al bus puede ser

direccionado mediante una única dirección y una relación 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

detección de colisiones y mediación con el objetivo de prevenir errores

en los datos si dos o más amos comienzan a transmitir

simultáneamente.

Es posible realizar transferencias de 8 bits mediante puerto serie a

velocidades de 100kbit/s en el modo estándar, 400kbit/s en el modo

rápido 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

tensión de alimentación.

La cantidad de circuitos integrados que pueden ser conectados al

mismo segmento de bus se encuentra limitado sólo por la máxima

carga capacitiva del bus que es de 400pF.

Dentro del proceso de comunicación que se establece por el I2C se deben

definir dos condiciones particulares que poseen una gran importancia para

dicha comunicación: la condición de START y de STOP (44). La condición de

START constituye una transición de nivel alto a nivel bajo en la línea SDA

mientras que la línea SCL se encuentre en nivel alto como se observa en la

figura 3.2. La condición de STOP se encuentra definida por una transición de

nivel bajo a nivel alto en la línea SDA mientras que SCL se encuentra en nivel

alto, también puede observarse en la figura 3.2. Estas condiciones siempre son

generadas por el amo para ocupar o liberar el bus. Existe otra condición la cual

Page 52: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 44

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

se define como START repetido, la cual, si es generada, continúa ocupando el

bus para el amo, el funcionamiento es similar al de la condición de START.

Figura 3.2 Condiciones de START y STOP

El proceso de comunicación 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 condición de START indicando que el bus se encuentra

ocupado, comenzando los otros dispositivos conectados al bus a

“escuchar” para identificar cuál de ellos va a ser el direccionado.

3. Provee en la línea SCL una señal de reloj que será utilizada por todos

los dispositivos conectados al bus como referencia para reconocer la

validez de cada bit transmitido en la línea SDA. Los datos en SDA

deben ser válidos al momento en que SCL cambia de nivel bajo a nivel

alto.

4. Envía en forma serie la dirección binaria única del dispositivo con el

cual desea comunicarse.

5. Pone un mensaje en el bus que indica si se desea enviar o recibir

información del otro dispositivo mediante un bit.

6. Pregunta al otro dispositivo si reconoció su dirección y está listo para

la comunicación mediante un bit de ACKNOWLEDGE.

7. Después de que el otro dispositivo reconozca que todo se encuentra

listo los datos pueden ser transferidos.

8. Envía o recibe tantas palabras de 8 bits de datos como requiere.

Después de cada palabra el transmisor espera que el receptor

reconozca que la transmisión se realizó de manera correcta.

Page 53: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 45

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

9. Cuando todos los datos terminan libera el bus mediante la condición

de STOP.

Al establecer la comunicación 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 comunicación al mismo

tiempo, se realiza un proceso de mediación, en el cual se determina que amo

se apropia del control del bus.

3.3.2 Protocolo de comunicación de los sensores Keller 9LD

El protocolo de comunicación que utilizan los sensores Keller de la serie LD

se basa en la transmisión serie mediante I2C. La velocidad permisible por la

comunicación de los sensores de la serie 9LD varía entre los 100kbit/s del

modo estándar hasta los 3,4Mbit/s del modo de alta velocidad, siendo incluidos

los 400kbit/s del modo rápido y 1Mbit/s del modo rápido 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 dirección por

defecto del sensor 0x40h (45). Los sensores sólo responderán a la dirección

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 después del

octavo bit el amo detecta una excepción. Ésta puede estar causada por estar

solicitando el dato a la dirección de esclavo incorrecta. En la figura 3.3 se

muestra la composición 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

Page 54: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 46

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

con un byte de STATUS (puede observarse su composición 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 adquisición y

procesamiento de la señal o si se encuentra listo para enviar datos. También 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 extensión.

Existen tres posibilidades de obtener datos útiles: leer 1, 3 o 5 bytes(18). En un

byte se obtendría la información del registro STATUS, en 3 bytes se podría

obtener la información de presión o un registro de 16 bits desde la memoria,

además del STATUS, y en el caso de 5 bytes se obtendrían tanto la

información de STATUS, la de presión y la de temperatura.

3.3.2.1 Detección del fin de adquisición y procesamiento

Cuando finaliza el proceso de adquisición y procesamiento de la muestra el

sensor debe indicarle al amo que está listo para transmitirla. Para reconocer el

final de una conversión existen tres maneras. La primera forma de realizar esta

operación es esperar 4ms después de enviar el comando 0xACh a que finalice

la conversión y el acondicionamiento de los valores de presión y temperatura.

La segunda manera es la solución de “handshake”, la cual se basa en la

utilización de una interrupción externa que despierte al amo cuando suba el

nivel del pin EOC (End of Convertion). La última opción es encuestar

continuamente la bandera Busy? del registro STATUS, la cual será nula

cuando se termine la conversión como fue explicado en el epígrafe anterior.

3.3.2.2 Conversión de los datos digitales enviados por el sensor

Para obtener un valor digital de presión igual a la presión a la que se

encuentra sometido el sensor debe realizarse un proceso de conversión de los

Page 55: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 47

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

valores enviados por el mismo. Este proceso se realizará dentro del CPU

(unidad procesadora central) del MSP. Este escalamiento o conversión se logra

mediante la utilización de una función lineal determinada por dos puntos, los

cuales van a ser los valores máximo y mínimo que serán sensados por el

sensor en particular. Estos valores son almacenados en memoria por el sensor

y equivalen a 16384 y 49152. La expresión que permite obtener la presión real

se describe como:

[ ] [ ]

(3.1)

Donde:

[ ]: Dato de presión en bar

[ ]: Dato obtenido del sensor

: Límite superior del rango de presión que brinda el sensor

: Límite inferior del rango de presión que brinda el sensor

También se debe realizar un proceso de conversión si se desea obtener el

valor digital de la temperatura. Similarmente a la presión se utiliza una función

lineal, pero en este caso los límites en el rango de medición están dados por el

fabricante del sensor. La expresión correspondiente puede observarse en la

ecuación 3.2. Nótese que el dato obtenido del sensor de traslada 4 bits a la

derecha antes de realizar cualquier operación.

[ ] ( [ ] ) (3.2)

Donde:

[ ]: Dato de temperatura en

[ ]: Dato obtenido del sensor

3.3.2.3 Cambio de dirección de un esclavo

En el caso que se decida combinar varios sensores de presión en un mismo

bus debe garantizarse una dirección de esclavo única para cada uno. Para

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

esta memoria basada en tecnología de una sola programación sólo es posible

Page 56: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 48

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

añadir algunos ‘1’ quemando células de bits adicionales. Después de añadir

seis ‘1’al registro de dirección del esclavo la oportunidad de cambiar es

mediante una limpieza del contenido de memoria por incremento del contador

de páginas. Esto indica que no puede cambiarse la dirección del esclavo

infinitas veces, por lo que se recomienda un planeamiento meticuloso en todo

el sistema para cambiar dicha dirección una o dos veces como máximo.

3.3.3 Desarrollo del firmware de comunicación con los sensores

El proceso de comunicación con los sensores se realiza en el dispositivo

mediante la utilización del módulo de I2C presente en la interfaz de

comunicación serie universal (USCI) del MSP430F6638. Para realizar una

efectiva configuración de dicho módulo primeramente se debe proceder a la

correcta configuración de los puertos de los cuales hace uso este componente.

Con este objetivo se utiliza la función 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 configuración que garantiza el funcionamiento

esperado de la comunicación I2C se debe en primer lugar resetear el USCI

mediante la activación del bit UCSWRST del registro UCB0CTL1.

Manteniéndolo en este estado se define el funcionamiento del USCI como I2C

amo y comunicación sincrónica.

La configuración de la fuente de reloj que será empleada también debe

tenerse en cuenta. El MSP430F6638 define tres señales 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 señal en los valores de 1, 2,

4, 8, 16 o 32. La señal de reloj escogida es la del subsistema del amo.

En el sistema la velocidad de comunicación se decidió fuera de 400kHz. Para

lograr que se genere ésta se calculó el valor necesario en el prescaler del

módulo (obteniéndose el valor de 10 para la configuración), siendo el cristal

utilizado de 4MHz. En este punto se considera inicializado el módulo I2C y se

limpia el bit UCSWRST.

Page 57: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 49

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Para realizar la comunicación del amo son empleadas las interrupciones de

transmisión y de recepción que posee el componente utilizado. En el caso de la

transmisión se debe generar un solo byte con el valor 0xACh, de lo cual se

encarga una función nombrada TX_BYTE. En la recepción se deben recibir tres

bytes (status, MSB de presión y LSB de presión), haciéndolo mediante un

arreglo definido que es manejado por la función RX_BYTE. Estas funciones

pueden ser observadas en el Anexo 1.

3.4 Firmware que controla la salida analógica del sistema

El diseño presentado posee tres salidas: dos digitales y una analógica. El

control de la salida analógica mediante el firmware se concentra en habilitar la

conversión de los datos mediante el conversor D/A de 12 bits que se encuentra

embebido en el MSP430F6638 y la habilitación del amplificador operacional

MAX9911 para manejar el consumo de esta parte del circuito integrado.

3.4.1 Conversor digital-analógico perteneciente al MSP430F6638

El conversor digital-analógico que se encuentra embebido en el

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

resolución, proporcionando una salida lineal. También es posible utilizarlo en

conjunto con el controlador de DMA (Direct Memory Access). La salida de

máxima escala es programable para multiplicar por 1, 2, o 3 la referencia de

tensión 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 diseñador de todo el

sistema (25).

El registro de datos del DAC puede enviarse directamente a la conversión o

puede ser doblemente buffereado. El DAC soporta dos formatos de datos:

complemento a dos y binario en orden. La tensión de offset del amplificador de

salida del DAC puede ser tanto positiva como negativa. Cuando es negativo el

amplificador de salida intenta manejar la tensión negativa, pero al ser esto

imposible la tensión de salida se mantiene en cero hasta que en la entrada

digital del DAC produzca una tensión lo suficientemente positivo para

sobrepasar el offset negativo de tensión. La situación 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 tensión nula, se infiere entonces que la tensión de

Page 58: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 50

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

salida del DAC alcanza el valor máximo de tensión antes de que la palabra

digital de entrada sea la máxima posible como se observa en la figura 3.6.

El módulo de DAC tiene la capacidad de calibrar la tensión de offset del

amplificador de salida. Cuando esta opción se encuentra activa se inicia el

proceso de calibración, 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 interrupción del DAC se activa cuando un dato es enlazado

desde registro de datos al “data latch”. El significado de la activación de esta

bandera es que el DAC está listo para recibir nuevos datos.

3.4.2 Modo shutdown del amplificador operacional MAX9911

En el diseño del lazo de salida de 4-20 mA se utiliza como uno de los

componentes el amplificador operacional MAX9911. Un objetivo de nuestro

diseño 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. Típicamente posee una demora al entrar en el modo shutdown de 2μs y al

salir de 30μs. Mientras el amplificador se encuentre en este modo sus salidas

estarán en alta impedancia.

Page 59: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 51

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

3.4.3 Desarrollo del firmware que maneja la salida analógica

Con el objetivo de controlar la salida analógica del dispositivo mediante

software se controla la habilitación y el funcionamiento del módulo DAC

embebido en el MSP430F6638. Para esto se configura el módulo teniendo

como referencia de tensión de alimentación del MSP. También se activa la

calibración automática y se mantiene la salida de escala máxima (del orden de

la referencia de tensión).

Para controlar la habilitación del módulo se utiliza la función desarrollada en

este trabajo DAC_CONV que activa el módulo y permite la conversión del dato,

habilitando también al amplificador operacional. Cuando se finaliza la

conversión se activa la interrupción del canal 0 del DAC y se desactiva el

módulo para contribuir al bajo consumo del dispositivo. También 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 comunicación entre el MSP y una computadora

Para la comunicación con la computadora se escogió el protocolo de

comunicación 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 adquisición 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 aplicación de

LabView llamada LabVIEW SDI-12 API que permite crear un sistema de

comunicación SDI-12 manejado por software (47).

3.5.1 Protocolo de comunicación SDI-12

Este protocolo de comunicación fue diseñado para la adquisición de datos

ambientales a mitad de los años 80 debido a las inquietudes de un grupo de

expertos sobre la poca confianza que brindaban los sensores analógicos de

baja potencia y la complejidad de la interfaz entre estos y los registradores (48).

La utilización de este protocolo presenta como ventajas la posibilidad

complejos algoritmos de auto-calibración en el sensor, el intercambio de

sensores sin necesidad de reprogramar el amo, pueden utilizarse varios

Page 60: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 52

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

sensores o registradores en el bus, el diseño de los registradores puede

realizarse independientemente de los sensores a utilizar, entre otras.

3.5.1.1 Interfaz eléctrica

El bus SDI-12 se encuentra compuesto por tres conductores: tierra, datos

serie y línea de 12V (49). Este bus permite tener conectados 10 esclavos a él,

brindando un tamaño de cable de 60 metros para cada uno. Si se reduce la

cantidad de sensores puede aumentarse esta distancia. La línea de datos es

bidireccional y utiliza lógica negativa para la transmisión. Los niveles de tensión

lógicos utilizados en la comunicación se definen como: marcado, que simboliza

el estado binario ‘1’ y se encuentra en el rango de tensión 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 transición que se define entre 1V y 3.5V.

La línea de tierra se debe conectar a la tierra del circuito y al plano tierra del

amo. El conductor empleado debe ser de gran tamaño para mantener la caída

de tensión entre el amo y todos los esclavos menor que 0.5V durante el mayor

consumo de corriente combinado de estos últimos. La línea de 12V se alimenta

del amo o de la fuente de alimentación externa, el cual ofrece entre 9.6V o 16V

con respecto a tierra.

3.5.1.2 Protocolo de comunicación

La comunicación mediante el protocolo SDI-12 se realiza a través 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 línea de

datos que indica a los esclavos en el bus que están siendo despertados. El

amo entonces debe enviar un comando el cual comienza con una dirección

(entre 0 y 9 en código ASCII) que indica al esclavo que se dirige. Este devuelve

automáticamente la respuesta correspondiente (comenzando también con su

dirección) 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

Page 61: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 53

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

propios del protocolo. Es importante resaltar que para que un esclavo o amo

sea considerado compatible con la versión 1.3 del protocolo deben soportar

cada comando presente en dicha tabla.

El último componente de cada comando es el caracter “!”. Este caracter sólo

puede ser enviado como el final del comando. Los últimos dos bytes de cada

respuesta son un retorno de transmisión y de una alimentación de línea

(<CR><LF>).

El comando “aI!” se encarga solicitar información al esclavo (49). Entre las

informaciones con las cuales se debe responder se encuentra el nivel de

compatibilidad, el número del modelo y un número de versión del firmware,

entre otros. El comando “?!” solicita al esclavo que responda con su dirección.

Se debe tener en cuenta que si se encuentran conectados varios esclavos al

bus estos responderán al mismo tiempo a la solicitud, causando colisión en el

bus.

El comando “aM!” le indica al esclavo que comience la medición. Sin

embargo la respuesta a este comando no es el dato medido, sino el tiempo y el

número 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 línea 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 envía 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 medición 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 medición concurrente. Esto

significa que la medición se realizará mientras otros esclavos están midiendo

también. La respuesta es similar a la proporcionada a “aM!”, la diferencia en

este caso es que el esclavo no envía una solicitud de servicio al amo, sino que

Page 62: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 54

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 63: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 55

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 dígitos

numéricos de la muestra, indicando “.” el punto decimal. La mayor cantidad de

dígitos que puede tener un dato es 7, sin incluir el punto decimal.

3.5.1.3 Chequeo de redundancia cíclica

El protocolo SDI-12 posee una forma de aumentar la capacidad de detectar

errores mediante una variación de los comandos anteriormente expuestos que

obligan al esclavo a añadirle al dato un chequeo de redundancia cíclica (CRC)

de 16 bits. El comportamiento del esclavo debe ser el mismo al comando con

solicitud de redundancia cíclica 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 opción de

control sobre el funcionamiento del esclavo. Estos comandos ofrecen la

posibilidad de indicar al esclavo la realización de una operación no precisada

por los comandos tradicionales. Estos comandos extendidos son definidos y

documentados por cada fabricante. Los comandos extendidos comienzan por

la dirección 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 comunicación 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 recepción

de los diferentes comandos se ejecutan las acciones necesarias para generar

las respuestas adecuadas. El protocolo de comunicación le facilita al usuario en

su labor de amo controlar mediante comandos las salidas que funcionarán en

el dispositivo, las unidades de ingeniería de la variable, la obtención de

mediciones, es decir, todo el funcionamiento del sistema.

Page 64: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 56

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

3.5.2.1 Configuración 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 utilizarán, aspecto de vital importancia en el consumo del

dispositivo. La salida analógica activa llama a la función Analog_out que

deshabilita el modo shutdown del amplificador y activa la bandera Flag_analog

que indica en el proceso de envío del dato al amo que se debe utilizar la salida

analógica.

Tabla 3.2 Comandos extendidos para controlar las salidas del sistema

Comando Descripción

aXL! Salida analógica activa

aX0! Salida analógica inactiva

aX2! Salida digital RS232 activa

aX4! Salida digital RS485 activa

El comando salida digital RS232 activa se encarga de utilizar a la función

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 Configuración de la unidad de ingeniería

El dato enviado mediante la salida digital es obtenido de la compensación de

las muestras proporcionadas por los sensores de presión. 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 ingeniería con la que se muestra la variable. Estos

comandos modifican la variable Unit_out para que en el proceso de transmisión

se tenga en cuenta la conversión necesaria. La unidad de ingeniería puede ser

modificada en cualquier momento.

Page 65: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 57

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Tabla 3.3 Comandos extendidos para cambiar las unidades de ingeniería

Comando Unidad de ingeniería Unit_out

aXB! bar 0

aXmB! mbar 1

aXC! mH2O 2

aXmC! mmH2O 3

aXkP! kPa 4

aXMP! MPa 5

aXK! Kg/cm2 6

3.5.2.3 Obtención 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 presión

mediante la función Start_med. Ésta genera la respuesta correcta a dicho

comando y utiliza otra función llamada Measure_Start para el proceso de

comunicación con los sensores y procesamiento de los datos. Debido a la

ausencia de pruebas físicas 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 parámetros para comunicarse

correctamente con el primer sensor. Se utilizan las funciones del módulo I2C

para obtener las muestras de los sensores de manera que la del sensor de

presión sumergido se almacena en la variable Sensor1 y la del sensor

barométrico en la variable Sensor2. Después de obtener las muestras se

prosigue a procesarlas como se describe en el epígrafe 3.3.2.2 para obtener el

valor real en bar.

Como forma más rápida para el procesamiento se obtuvo mediante

sustitución y simplificación la expresión 3.3. Esta expresión permite sustituir los

valores de cada sensor, realizar la resta y obtener el valor compensado de

presión. Este valor real se almacena en la variable Pressure para su posterior

empleo.

Page 66: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 58

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

3.3

3.5.2.4 Envío de los datos al amo

Como se explica en el epígrafe 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 máximo 7 dígitos que representan el valor de la muestra. Esta cantidad

no incluye el punto decimal que es opcional.

La recepción del comando emplea la función Send_Data para conformar el

mensaje. A su vez ésta llama a la función Data_Out la cual es la real

organizadora del procesamiento de la muestra (almacenada en la variable

Pressure) y el ordenamiento para su correcta transmisión. La explicación de

dicha función podría ser engorrosa, por lo que se expondrán sólo elementos

claves para la confección del algoritmo y su entendimiento, presentándose un

diagrama en bloques de dicho algoritmo (para cuando se envía la presión en

unidades de bar) en la figura 3.7 para una mejor comprensión. 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 conversión de los datos en cada caso.

También fue importante decidir en función de los 7 dígitos que componen la

muestra a enviar la cantidad de cifras significativas que serían posibles incluir.

Debido a esto se decidió mantener los 7 dígitos de resolución, siendo afectada

la posición del punto decimal en cada caso por la conversión de cada unidad

de ingeniería 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 transmisión del

resultado final.

En general se compara Unit_out con cada valor, para así en cada caso

establecer una transmisión similar pero con sus propios valores de conversión

y orden del punto decimal. En el proceso antes expuesto también se tiene en

cuenta si la salida analógica se encuentra activa para ofrecer el dato al DAC.

En la tabla 3.4 pueden observarse los factores de conversión entre las

unidades de ingeniería definidas para el sistema. Estos se utilizan en el

comienzo de cada subrutina para cambiar el valor de la muestra obtenida.

Page 67: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 59

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Tabla 3.4 Factor de conversión en unidades ingenieriles

Unidad Factor de conversión 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 algún comando que a la respuesta se le añada

CRC a su llegada se activará la bandera CRC_ask. Esta bandera indica que en

el proceso de envío de la muestra se debe calcular y enviar el CRC de 16 bits.

Para realizar el cálculo se utilizó un algoritmo brindado por la Texas Instrument.

Este algoritmo se encuentra en la nota de aplicación “Implementación de

CRC con los MSP430” (50). También se le añade un código para su

implementación. Para el envío de los valores calculados se hace uso del

algoritmo facilitado en el protocolo SDI-12 (49).

Page 68: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 60

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 3.7 Diagrama en bloques de la transmisión de la muestra en bar (Unit_out = 0)

Page 69: Tesis Now Modif.pdf

C a p í t u l o 3 F i r m w a r e s d e l a s o n d a d e n i v e l P á g i n a | 61

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

3.6 Conclusiones

1. En el modo de operación en tiempo real el firmware utiliza las

muestras obtenidas de los sensores para calcular el nivel

compensando el efecto de la presión atmosférica.

2. Se desarrolló el firmware que controla la comunicación con los

sensores y la obtención de las muestras.

3. Se logró desarrollar un firmware para configurar y habilitar la salida

analógica de corriente del sistema.

4. Se realizó un algoritmo para procesar las muestras, garantizar el

proceso de compensación y brindarlas al usuario de la manera

requerida.

5. Se implementó una salida digital para sonda de nivel utilizando el

protocolo de comunicación SDI-12 para lograr la comunicación digital

entre el dispositivo y el usuario.

Page 70: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 62

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Capítulo 4 Resultados y Análisis Económico

4.1 Introducción

En este capítulo se muestran los resultados de las simulaciones de cada

bloque funcional del dispositivo en los programas PSPICE y Proteus. También

se describen las pruebas realizadas para validar el firmware desarrollado para

el MSP430F6638, principalmente el procesamiento de los datos leídos de los

sensores y la obtención del nivel. Además se comprobó la correcta

implementación del protocolo SDI-12 para la comunicación digital. Para finalizar

se realiza un análisis económico compuesto por el análisis de costo y el

impacto económico que presenta la sonda de nivel.

4.2 Resultados de las simulaciones

Para validar el funcionamiento del dispositivo fueron utilizados dos software

de simulación de diseños electrónicos. 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 simulación de las componentes

principales de nuestro diseño por separado: el lazo de corriente de 4 a 20mA,

la comunicación mediante el protocolo digital SDI-12 y la comunicación con los

sensores mediante I2C.

4.2.1 Simulación de la comunicación con los sensores

Para simular la comunicación 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 diseño. Por este motivo se decidió

utilizar otro microcontrolador de la familia de los MSP con características

similares en cuanto a los módulos 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 simulación sobre la

comunicación lo más 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 comunicación, esperando que el amo

Page 71: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 63

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

le envíe el comando correcto para brindarle el dato de presión de la misma

forma que lo brindaría el sensor, exceptuando el fin de adquisición y

procesamiento.

En la figura 4.1 puede observarse el esquema utilizado para la simulación. A

la izquierda se encuentran los dos sensores representados por dos

MSP430F2272. Para monitorear la transmisión 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

ejecución del firmware paso a paso utilizando los microcontroladores de la

familia MSP.

Para el proceso de simulación primeramente se procede a realizar la

inicialización de los tres microcontroladores. Las direcciones dadas a cada uno

(necesarias para la comunicación mediante I2C) fueron 0x00h al amo, 0x40h al

primer esclavo (Sensor 1) y 0x42h al segundo esclavo (Sensor 2). Las

direcciones de los esclavos están definidas por la especificación sobre la

comunicación con los sensores tratada en el epígrafe 3.3.2. La comunicación

se configuró a 400kHz de frecuencia.

En la simulación se procede a enviar el comando “0xACh”. Cuando este

comando es enviado a los sensores estos responden con el valor de las

presiones que están siendo aplicadas sobre ellos. En este caso los valores de

presión enviados son datos almacenados en las memorias de los

microcontroladores utilizados para simular a los sensores.

En la figura 4.2 puede observarse la simulación. En la esquina superior

derecha se encuentra la ventana del I2C Debugger. Para una mejor

observación se incluyó la misma pantalla en la esquina inferior derecha en

posición horizontal donde se encuentran enmarcadas las respuestas de los

sensores. Ambas dan como respuesta el número máximo que brindan los

sensores: 49152 (0xC000h). Estos valores de presión son almacenados por el

amo en las variables Sensor1 y Sensor2.

Como resultado de esta simulación se demuestra que se puede obtener

satisfactoriamente los datos de los sensores de presión. También se puede

añadir que se pudo comprobar que estos datos obtenidos se recibieran de

manera correcta para su posterior procesamiento. Por último destacar que fue

Page 72: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 64

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

validado el firmware diseñado para controlar la comunicación con los sensores

de presión.

Figura 4.1 Esquema de los sensores con el microcontrolador

Page 73: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 65

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 4.2 Simulación de la comunicación con los sensores

Page 74: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 66

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

4.2.2 Simulación de la comunicación digital mediante el protocolo

SDI-12

Con el objetivo de validar el funcionamiento del sistema y el protocolo de

comunicación digital SDI-12 se realizó la simulación de la comunicación digital

con el usuario. Esta simulación se realizó en el software Proteus 7

Professional. Fue empleado un microcontrolador MSP430F2272 para simular el

funcionamiento del MSP430F6638 utilizado en el diseño. También 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 comunicación mediante el módulo USCI del MSP

configurado en UART. La comunicación serie debe realizarse a una velocidad

de 1200 baudios y con la conformación de la trama como define el protocolo

SDI-12. En la figura 4.3 puede observarse el esquemático empleado para la

simulación.

Figura 4.3 Esquema para la simulación de la comunicación digital

En la simulación 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 envío de dichos comandos. En la figura 4.4

pueden observarse los resultados de la simulación.

Page 75: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 67

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Tabla 4.1 Orden y significado de los comandos utilizados

Comando Significado

a! Reconocimiento activo

aI! Información

aM! Comenzar medición

aD2! Enviar muestra

aXC! Cambiar unidad a mH2O

aD2! Enviar muestra

aMC! Comenzar medición y añadir CRC

aD2! Enviar muestra

Figura 4.4 Simulación de la comunicación digital

En la prueba de simulación primeramente se envía el comando “a!”, siendo la

respuesta efectiva a éste la dirección del esclavo, en este caso 0x00h. La

respuesta que se debe brindar al segundo comando es la información. La

estructura en la que se brinda la información es: primeramente la dirección,

Page 76: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 68

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

seguida por versión del protocolo que se emplea (1.3), el nombre del fabricante

(CIH) y la versión del dispositivo (1.0).

Al comando de comenzar medición 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 simulación. Se puede

observar la estructura de la respuesta y comprobar que es similar a la expuesta

en el epígrafe 3.5.1.3. La simulación prosigue con un cambio de unidad

ingenieril y la posterior visualización de la misma muestra pero en la nueva

unidad configurada. Por último se realiza una petición del dato pero

añadiéndosele 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 ingeniería (en el orden

presentado en la tabla 3.3) y se envía la misma muestra pero convertida a la

unidad solicitada. Esto puede observarse en la figura 4.5.

Figura 4.5 Simulación de la conversión de unidades de ingeniería

Esta simulación fue muy importante en el proceso de depuración y puesta a

punto del firmware desarrollado para comprobar la comunicación digital y el

funcionamiento del dispositivo. Como resultado de esta simulación puede

Page 77: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 69

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

plantearse que fue validado a nivel de simulación el firmware que controla la

comunicación 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 recepción de los comandos enviados por el

amo y la conversión de la muestra a las unidades ingenieriles que puede

solicitar el usuario. También se incluye la implementación eficiente de las

respuestas a cada comando en el formato requerido.

4.2.3 Simulación del lazo de corriente 4-20mA

La simulación del lazo de corriente 4-20mA persigue dos objetivos. El

primero es demostrar que para variaciones de 0,3 a 2,7V en la tensión de

salida del DAC del MSP430F6638 realmente se obtiene una variación 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 límites esperados siempre que el consumo general de la sonda

sea menor que 4mA.

Para realizar la simulación fue utilizado el esquema mostrado en la figura 4.6.

Las componentes del lazo de corriente simulado no son exactamente las

definidas en el diseño 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 epígrafe 2.6, la resistencia Rg es la que se encarga de

ajustar la ganancia necesaria para lograr que para una variación de 2,4V (2,7 -

0,3) en la salida del DAC se obtenga una variación 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

tensión de salida del DAC sea el mínimo posible. Como los valores más

notables de salida del lazo son determinados por las resistencias antes

expuestas, entonces los cambios hechos en el esquema para la simulación no

son de gran importancia para los objetivos que se persiguen.

Page 78: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 70

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 4.6 Lazo de 4-20mA utilizado en la simulación

En el esquema puede observarse primeramente la fuente de tensión Vloop

que constituye una sustitución de la tensión de alimentación del lazo. Como se

manifestó en el epígrafe 2.6 este es de 30V. La referencia de tensión de 3V

seleccionada en el diseño 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

diseño del hardware. La salida del DAC del MSP430F6638 se sustituye por una

fuente de tensión (VMAX) para variar su valor entre los valores 0.3 y 2.7V que

brindaría el DAC a su salida. El consumo del circuito es simulado por la fuente

de corriente I1, pudiéndose realizar variación en su valor. Estas dos

componentes son de vital importancia en la simulación.

En la primera simulación se plantea la variación de la fuente de tensión

VMAX entre 0.3 y 2.7V para observar la variación lineal en la salida del lazo.

También deben observarse los límites del valor de la corriente a la salida ya

que deben mantenerse entre 4 y 20mA. El resultado final de dicha simulación

puede observarse en la figura 4.7.

Las primeras simulaciones realizadas permitieron comprobar los errores

presentes en la salida. Estos significaban que se deberían realizar cambios a

los valores de las resistencias Rof y Rg para lograr una salida satisfactoria.

Page 79: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 71

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 Gráfica de la salida del lazo de corriente vs VMAX

Page 80: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 72

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

La segunda simulación 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 variación 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 diseño de la sonda. Son evaluados los valores límites 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 Gráfica de salida mínima contra consumo de corriente

Page 81: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 73

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Figura 4.9 Gráfica de salida máxima 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 mínimo 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

Page 82: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 74

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

máximo (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 variación lineal adecuada en el lazo de

corriente. Éstos fueron modificados a los valores de 4.9M y 300K

respectivamente. Además, 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 mínima se verá alterado.

4.3 Resultados prácticos

Después de realizarse las simulaciones antes descritas se procedió a diseñar

y realizar una prueba práctica con el objetivo de comprobar el correcto

funcionamiento de la comunicación digital y el procesamiento de datos. La

prueba consiste en comprobar la comunicación real entre el microcontrolador y

una computadora mediante la interfaz RS232.

Para realizar el experimento se disponía 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

diseño ni en las simulaciones este presenta los módulos necesarios para

realizar la comunicación serie con los parámetros requeridos.

Para lograr la comunicación se utilizó un driver RS485 específicamente el

MAX485 (55). El microcontrolador empleado debía ser alimentado por 3.3V,

mientras que el MAX485 necesita 5V. Debido a estas diferencias en las

tensiones de alimentación resultaba imposible conectar directamente esos

dispositivos. Para eliminar este inconveniente se implementó una solución

reportada en una nota de aplicación sobre la comunicación entre los MSP y

circuitos de diferente alimentación (56). La configuración utilizada puede

observarse en la figura 4.10. El voltaje Vi(sys) corresponde a una entrada

digital de tensión conectada al MSP. Esta configuración es un divisor de

tensión, y su implementación se basa en las expresiones 4.1, 4.2 y 4.3. Las dos

primeras aseguran que la entrada de tensión del MSP se encuentre por encima

(cuando Vi(sys) está en nivel alto) o por debajo (cuando Vi(sys) está en nivel

Page 83: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 75

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

bajo) de las tensiones de entrada requeridos. La tercera expresión se encarga

de que las corrientes de escape de la entrada no influyan en la tensión de

entrada del MSP.

(4.1)

(4.2)

(4.3)

Donde:

: Nivel alto de tensión desde el sistema externo

: Nivel bajo de tensión desde el sistema externo

: Umbral del máximo nivel alto de tensión para un MSP430

: Umbral del mínimo nivel bajo de tensión para un MSP430

: tolerancia de los resistores

: Tensión de alimentación del MSP430

: Corriente de escape de una entrada de un MSP430

Los resultados obtenidos al aplicar dichas expresiones fueron:

, y .

Figura 4.10 Configuración para convertir de 5V a 3V

El microcontrolador fue programado a través del MSP-FETU430IF facilitado

por el ICID. Además de hacer función de programador éste también es un

Page 84: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 76

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 fabricación de la interfaz de comunicación con la

computadora se utilizó un conversor de RS485 a RS232. Este componente

tiene como objetivo convertir los niveles lógicos del estándar RS485 a los del

RS232 que son compatibles con el puerto serie de la computadora. El resultado

del diseño puede observarse en la figura 4.12.

Figura 4.12 Hardware para la comunicación digital

Para comprobar la comunicación 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 sucesión de

Page 85: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 77

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

comandos para determinar si las respuestas enviadas por el MSP eran

correctas. Además, 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 comunicación realizada en parte de

la prueba.

Figura 4.13 Resultado de la comunicación digital mediante SDI-12

El primer comando es la respuesta a una solicitud de medición. Los

caracteres se observan en código ASCII, siendo este: “01201”. El segundo

constituye la respuesta a una solicitud de envío de la muestra. Este resultaría

representar “0-0.4437325”. Después se pasa a solicitar el envío de otra

muestra, siendo la respuesta “0+2.5”. Posteriormente se realiza una petición de

dirección, a lo que se responde con “0”. Le sigue una solicitud de verificación,

la respuesta definida para este caso fue “01201”. Para finalizar con esta parte

de la prueba se realizó un cambio de unidad de ingeniería y se solicitó la

muestra. La respuesta dada a esta solicitud es “0-04.52600”. Como se puede

distinguir se comprobaron varios comandos, recibiéndose en todo momento la

respuesta correcta. Además de los resultados presentados la prueba se

extendió a todos los diferentes comandos que componen el protocolo de

comunicación y que se emplean en nuestro diseño.

Con esta prueba se pudo verificar la validez tanto de la comunicación digital

mediante el protocolo SDI-12 como el procesamiento de las muestras

obtenidas de los sensores (en este casos valores almacenados en memoria).

Page 86: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 78

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

También se comprobó que fueran reconocidos los comandos enviados por el

usuario al MSP y se pudo validar la conversión de unidades de ingeniería.

4.4 Análisis económico

4.4.1 Estimación de los costos

Realizar un análisis económico brinda la posibilidad de establecer un control

de los gastos en que se incurren. También constituye una pauta para comparar

en próximos proyectos. Analizarlos costos permite disminuir el derroche de

capital invertido en instrumentación o materia prima que no se consideran

necesarias en el proyecto.

El cálculo del costo total (CT) tiene como objetivo estimar el costo real que se

obtendrá una vez terminado el proyecto. En este cálculo intervienen el costo

directo (CD) y el costo indirecto (CI). En la expresión 4.4 se observa esta

relación.

(4.4)

Como costos indirectos se incluyen gastos de administración, gastos de

electricidad consumida, entre otros. Este costo se calcula la multiplicación del

salario básico devengando en la investigación por el coeficiente de costo

utilizado para un departamento docente (0.84), dando como resultado la

expresión 4.5.

(4.5)

Los gastos por salario básico se calculan a partir del estipendio apercibido

por los estudiantes y los salarios del tutor y cotutores según el tiempo de

laborable empleado en el proyecto. Esto se observa en la expresión 4.6

(4.6)

Donde:

Page 87: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 79

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

: horas dedicadas a la investigación por cada participante

: salario/hora de cada participante

: total de participantes

Para realizar los cálculos se toma el estipendio para estudiantes de 125

CUP, 24 días laborables en el mes y el empleo de cinco meses de trabajo,

dedicando como promedio ocho horas al trabajo de diploma cada día laborable.

En este caso participan el autor, el tutor y dos cotutores. Realizando el cálculo

mediante la expresión 4.6 el estudiante tiene un salario básico de 625 CUP, el

tutor 122.4 CUP y los cotutores uno 122.4 y otro 208.33. En total el salario

básico es de 1078.13 CUP. Aplicando entonces la expresión 4.5 resulta un

costo indirecto de 905.63 CUP

Para calcular el costo directo se emplea la expresión 4.7.

(4.7)

Donde:

: Salario básico

: Seguridad social

: Salario complementario

: Medios o materiales directos

: Dieta, pasajes

: Otros gastos

El salario complementario es el 9.09% del salario básico, este se utiliza para

pagar las vacaciones. En el caso del tutor la estimación 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 básico

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 también

cero ya que en este caso no fue utilizado ningún componente para la

fabricación del dispositivo (no estaba dentro de los objetivos). En otros gastos

pueden incluirse los gastos por concepto de tiempo de máquina. Este se tarifica

Page 88: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 80

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

como 10.00 CUP por hora. Si asumimos que se utilizaron cerca de 700 horas

de máquina entonces el resultado son 7000 CUP.

Empleando entonces la expresión 4.7 el costo directo es de 8168.76 CUP.

Mediante la expresión 4.4 se obtiene de costo total de 9074.39 CUP.

4.4.2 Impacto económico

Uno de los objetivos que se perseguían con este proyecto era la disminución

del nivel de importaciones del país con la realización de una sonda de nivel.

Aunque no se logró concretar la fabricación del dispositivo el análisis siguiente

genera una idea sobre el costo que supondría su fabricación. Este puede

compararse con el precio de una sonda de nivel en el mercado internacional, el

cual estaría sobre los 800 CUC. En la tabla 4.2 pueden observarse el precio de

cada uno de los componentes del hardware diseñado.

Tabla 4.2 Precios de los componentes del esquemático

Componente Precio (CUC) Cantidad

MSP430F6638 13.06 1

Keller 9LD 59.85 1

Keller 9FLD 63.45 1

XTAL ABLS-4.000MHZ-B2-T 0.74 1

MAX9911 1.40 1

2DD2679 0.43 1

MAX3471 4.78 1

MAX3230 5.07 1

MAX6035 2.30 1

Conector 5 vías 0.42 2

Conector 3 vías 0.35 2

Conector 2 vías 0.28 1

Diodo Schottky 0.23 1

Conector JTAG 1.95 1

Diodo Zener 0.32 2

Capacitor 0.1uF 0.10 13

Capacitor 22pF 0.10 2

Page 89: Tesis Now Modif.pdf

C a p í t u l o 4 R e s u l t a d o s y A n á l i s i s E c o n ó m i c o P á g i n a | 81

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Capacitor 2.2uF 0.10 2

Capacitor 470nF 0.12 1

Capacitor 10uF 0.10 4

Capacitor 100uF 0.12 1

Resistencia 1KΩ 0.10 2

Resistencia 10KΩ 0.10 1

Resistencia 100KΩ 0.10 2

Resistencia 150KΩ 0.10 2

Total 158.66

4.5 Conclusiones

1. Se comprobó mediante la simulación en Proteus la validez de la

comunicación entre el microcontrolador y los sensores de presión.

2. Mediante la simulación 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 simulación en Proteus y posteriormente de

forma práctica el correcto funcionamiento del protocolo de

comunicación SDI-12 entre un microcontrolador y una computadora.

4. Fue validado el algoritmo matemático para procesar las muestras,

compensarlas y tenerlas a punto para su envío.

Page 90: Tesis Now Modif.pdf

C o n c l u s i o n e s F i n a l e s P á g i n a | 82

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Conclusiones Finales

En correspondencia con los objetivos de esta tesis se obtuvieron los

resultados enumerados a continuación:

1. Se realizó un profundo estudio del estado del arte de las sondas de

nivel y sus principales características.

2. Se diseñó una sonda de nivel con compensación de la presión

atmosférica cumpliendo los requerimientos planteados en el diseño.

3. Se diseñó un algoritmo para compensar las muestras obtenidas de los

sensores de presión y procesarlas para obtener el dato de nivel y

garantizar su envío de manera satisfactoria.

4. Se comprobó el funcionamiento del diseño realizado utilizando

programas de simulación que permitieron realizar la puesta a punto

del dispositivo.

5. Se realizó un experimento práctico que permitió validar el firmware

desarrollado para el microcontrolador y el protocolo de comunicación

SDI-12.

Page 91: Tesis Now Modif.pdf

R e c o m e n d a c i o n e s P á g i n a | 83

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Recomendaciones

Es importante como trabajo futuro comprobar la exactitud de los sensores

Keller 9LD para determinar la necesidad de algún algoritmo de compensación.

Se debe continuar trabajando en el diseño de la placa impresa para lograr la

fabricación del dispositivo diseñado. Al final se debe realizar las pruebas

adecuadas con el dispositivo físico sobre los tiempos de comunicación y los

errores que pueden presentarse. También debe crearse un programa de

usuario con interfaz gráfica para visualizar las respuestas recibidas a los

comandos definidos por el protocolo de comunicación.

Page 92: Tesis Now Modif.pdf

R e f e r e n c i a s B i b l i o g r á f i c a s P á g i n a | 84

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Referencias Bibliográficas

1. Ramírez J, Villar Y. Fundamentos de la medición de presión, nivel y caudal en los sistemas hidráulicos. 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. Hernández A. “Diseño de un transmisor de presión con salida digital RS232 y salida analógica 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, Pallàs-Areny R. Direct interface circuit to linearise resistive sensor bridges. Sensors and Actuators A: Physical. 2008;147(1):210-5. 11. Jordana J, Pallàs-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 LD…9 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.

Page 93: Tesis Now Modif.pdf

R e f e r e n c i a s B i b l i o g r á f i c a s P á g i n a | 85

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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. MAX4074–MAX4078. Micropower, SOT23, Rail-to-Rail, Fixed-Gain, GainAmp/Open-Loop Op Amps. 1999. p. 20. 33. Maxim. MAX9617–MAX9620. Single/Dual SC70, Zero-Drift, High-Efficiency, 1.5MHz Op Amps with RRIO. 2012. p. 9. 34. Maxim. MAX9910–MAX9913. 200kHz, 4μA, 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 ESD-Protected, 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. MAX13234E–MAX13237E. 3Mbps RS-232 Transceivers with Low-Voltage Interface. 2008. p. 16. 41. Maxim. MAX3471. 1.6μA, 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/white-paper/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 Microprocessor-Based 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/MAX487–MAX491/MAX1487. Low-Power, Slew-Rate-Limited RS-485/RS-422 Transceivers. 2009. 56. Texas Instrument. Application Report SLAA148 Interfacing the 3-V MSP430 to 5-V Circuits. 2002.

Page 94: Tesis Now Modif.pdf

B i b l i o g r á f í a P á g i n a | 86

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Bibliografía

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. García J, Rodríguez JI, Goñi R, Brázalez A, Funes P, Rodríguez 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. Hernández A. “Diseño de un transmisor de presión con salida digital RS232 y salida

analógica 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, Pallàs-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 LD…9 LD. 2013. p. 2. 26. Kularatna N. Electronic circuit design: from concept to implementation. Boca Raton:

CRC Press; 2008. 27. Maxim. MAX3471. 1.6μA, RS-485/RS-422, Half-Duplex, Differential Transceiver for

Battery-Powered Systems. 1998. p. 8. 28. Maxim. MAX4074–MAX4078. 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.

Page 95: Tesis Now Modif.pdf

B i b l i o g r á f í a P á g i n a | 87

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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. MAX13234E–MAX13237E. 3Mbps RS-232 Transceivers with Low-Voltage

Interface. 2008. p. 16. 37. Maxim. MAX481/MAX483/MAX485/MAX487–MAX491/MAX1487. Low-Power, Slew-

Rate-Limited RS-485/RS-422 Transceivers. 2009. 38. Maxim. MAX9910–MAX9913. 200kHz, 4μA, 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 ESD-

Protected, Down to 10nA, 3.0V to 5.5V, Up to 1Mbps, True RS-232 Transceivers. 2010. p. 22. 41. Maxim. MAX9617–MAX9620. 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. Ramírez J, Villar Y. Fundamentos de la medición de presión, nivel y caudal en los

sistemas hidráulicos. 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 Microprocessor-

Based Sensors. 2013. 53. Sifuentes E, Casas O, Reverter F, Pallàs-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.

Page 96: Tesis Now Modif.pdf

B i b l i o g r á f í a P á g i n a | 88

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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.

Page 97: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 sincrónico

UCB0CTL1 = UCSSEL_2 + UCSWRST; // SMCLK

UCB0BR0 = 10; // Prescaler a 10 fSCL ~400kHz

UCB0BR1 = 0;

UCB0I2CSA = 0x20;

UCB0CTL1 &= ~UCSWRST;

UCB0IE |= UCTXIE; // Habilitar la interrupción del TX

UCB0IE |= UCRXIE; // Habilitar la interrupción del RX

Page 98: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

void TX_BYTE(unsigned char buffer_TX)

TXByteCtr = 1;

TXData = buffer_TX;

while (1)

while (UCB0CTL1 & UCTXSTP); // Asegurar la condición de STOP

UCB0CTL1 |= UCTR + UCTXSTT; // Condición de START y habilitación

del modo TX

void RX_BYTE(void)

UCB0CTL1 &= ~UCTR; // Habilitación del modo RX

while (1)

PRxData = (unsigned char *)RxBuffer; // Inicio de RX buffer

RXByteCtr = 3; // Cargar contador de bytes

while (UCB0CTL1 & UCTXSTP); // Asegurar la condición de STOP

UCB0CTL1 |= UCTXSTT; // Condición 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

Page 99: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

case 10: // Vector 10: RXIFG

RXByteCtr--; // Decrementar contador de bytes

if (RXByteCtr)

*PRxData++ = UCB0RXBUF; // Mover data a la dirección PRxData

if (RXByteCtr == 1) // Solo un byte?

UCB0CTL1 |= UCTXSTP; // Generar condición de STOP

else

*PRxData = UCB0RXBUF; // Mover final data a PRxData

break;

case 12: // Vector 12: TXIFG

if (TXByteCtr) // 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);

Page 100: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 101: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 102: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

UCA0MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3,

UCBRFx=0

UCA0CTL1 &= ~UCSWRST;

UCA0IE |= UCTXIE; // Habilitar la interrupción del TX

UCA0IE |= UCRXIE; // Habilitar la interrupción 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)

Page 103: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 104: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 20

#define CRC_TEST_SEQ "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);

Page 105: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 106: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 107: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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();

Page 108: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 109: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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)

Page 110: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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();

Page 111: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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?

Page 112: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 113: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

__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?

Page 114: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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 presión

Sensor1 = Sensor1 * 256;

Sensor1 = Sensor1 + *PRxData++; // Salvar LSB de presión

UCB0I2CSA = 0x22; // Apuntar al sensor barométrico

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 presión

Sensor2 = Sensor2 * 256;

Sensor2 = Sensor2 + *PRxData++; // Salvar LSB de presión

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)

Page 115: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 116: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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?

Page 117: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 118: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

__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?

Page 119: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 120: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

__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);

Page 121: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 122: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 123: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 124: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

__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();

Page 125: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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?

Page 126: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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();

Page 127: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 128: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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();

Page 129: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 130: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 131: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

__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();

Page 132: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 133: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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();

Page 134: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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?

Page 135: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 136: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 137: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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?

Page 138: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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)

Page 139: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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__

Page 140: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

#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 0x0

#define CRC16R_POLY 0xA001

#define CRC16R_INIT_REM 0x0

#define CRC16R_FINAL_XOR 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 0xFFFFFFFF

#define CRC32_FINAL_XOR 0xFFFFFFFF

#define CRC32R_POLY 0xEDB88320

#define CRC32R_INIT_REM 0xFFFFFFFF

#define CRC32R_FINAL_XOR 0xFFFFFFFF

Page 141: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 142: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 143: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 144: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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++)

Page 145: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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

Page 146: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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++)

Page 147: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

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;

Page 148: Tesis Now Modif.pdf

A n e x o s

Alimed Celecia Ramos | “Diseño de una sonda de nivel con compensación de la presión atmosférica”

Anexo 2. Análisis desde la defensa

El proyecto objeto de estudio es el rediseño de una sonda de nivel con

compensación de la presión atmosférica. Para desarrollar este proyecto se

utilizan los conocimientos adquiridos en las asignaturas de Microcontroladores,

Electrónica Analógica, Electrónica Digital y Procesamiento Digital de Señales,

pueden incluirse también conocimientos básicos sobre otras materias

relacionadas con el tema que no se estudien en la carrera.

Este dispositivo puede emplearse en cuencas hidraúlicas 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, ríos, pozos, entre otras en

la vida diaria y durante la ocurrencia de desastres naturales. Con esta

información puede decidirse la necesidad de evacuación, evitarse las pérdidas

económicas, determinar estrategias económicas y de racionamiento en la

distribución de los recursos hidráulicos.

Debido a la amenaza constante del gobierno de los Estados Unidos de

América y su política para nuestro país son adquiridos a muy altos precios las

sondas de nivel en el mercado internacional. Además, se desconocen las

bases de su funcionamiento, lo que imposibilita su reparación en caso de

presentar desperfectos.

El inconveniente principal de este dispositivo es la presencia de un cble

ventilado que permite la acumulación de humedad por encontrarse en contacto

directo con el aire. Debido a esta situación se decide utilizar un sensor de

presión para medir la presión atmosférica, la cual se necesita para realizar el

proceso de calibración.

Entre las acciones enemigas puedan incidir en el funcionamiento del sistema

o en la realización del diseño se puede destacar la prohibición a los

proveedores de componentes necesarios de proveer información o su venta.

En cuanto a acciones directas puede decirse que el enemigo puede atacar

físicamente alguna parte del dispositivo para afectar su funcionamiento.

Para el ejército precisamente puede utilizarse en la contabilización de las

existencias de cualquier líquido en tanques o pozos. Desde el punto de vista

organizativo, este dispositivo puede emplearse variedad de regiones con

diferentes condiciones climatológicas ya que no posee impedimentos

fundamentales para su empleo.