lunes, 2 de diciembre de 2013

MSP430: DS1821

En esta entrada se expondrá una librería (no completa, ver nota al final del capítulo) para poder realizar una lectura de temperatura del dispositivo DS1821, un dispositivo que puede trabajar tanto de termostato cómo de termómetro de manera digital, su fabricante es la empresa Maxim, y en el siguiente enlace, podemos ir a su espacio web: DS1821 Programmable Digital Thermometer and Thermostat.

Para tal tarea, como venimos haciendo, vamos a emplear la placa MSP430 Launchpad. Para empezar, vamos a mostrar algunas características técnicas de éste dispositivo:

Características DS1821
· No requiere de componentes externos· Tiempo de conversión de temperatura: 1s (máximo)
· Alimentación desde 3V a 5V· Bus 1-Wire
· Medición: -55°C a +125°C (1°C de resolución)· Temperatura almacenada en 8-Bit

La estructura interna esquematizada es tal y como se muestra en la siguiente figura:




Dónde podemos observar que solamente es necesario una patita del microcontrolador para establecer una comunicación con el dispositivo (patita llamada DQ).

Pero en este capítulo no pretendemos hacer una explicación exhaustiva de este periférico, nuestro propósito es mostrar cómo controlarlo mediante la librería que hemos diseñado para tal fin. Esta librería contiene dos archivos:

· ds1821.c : Dónde se alojan todas las funciones necesarias para el control del DS1821.
· ds1821.h : Dónde se alojan todas las definiciones, constantes y declaraciones necesarias del DS1821.

Librería: ds1821
· Lo que podemos hacer:
· Controlar el DS1821 mediante 1-pin· Leer temperatura desde el DS1821
· Inicializar una conversión de temperatura. 

La configuración del microcontrolador para trabajar con este dispositivo externo es la siguiente:

Configuración por defecto: DS1821
· Puerto a usar:
· P1

Pin Launchpad
Pin DS1821
P1.0--->DQ

Una vez resuelto el problema de la conexión entre el microcontrolador (mediante la placa Launchpad) y el dispositivo DS1821, debemos tener en cuenta otro aspecto más de configuración, y este es (¡cómo no!) la velocidad a la que está configurado el puerto a usar o nuestro reloj del sistema (hay que tener en cuenta que los periféricos internos del microcontrolador pueden ajustarse a una frecuencia de reloj distinta a la del reloj principal), en este caso, por defecto está configurada a una velocidad de 6 MHz.

La función que nos permite obtener una lectura de la temperatura del dispositivo DS1821 es la que se muestra a continuación:.

Leer desde el DS1821
· Función:
unsigned char DS1821_Read_T (void)
· Ejemplos:Descripción
temp = DS1821_Read_T ();Lee valor de la temperatura y lo almacena en la variable temp.

Pero para realizar una lectura de temperatura correctamente, primero debemos realizar una petición de conversión de temperatura, mediante la siguiente función:

Permiso de realizar una conversión de temperatura del DS1821
· Función:
unsigned char  DS1821_Start_Conv_T (void)
· Ejemplos: Descripción
aux = DS1821_Start_Conv_T (); Permiso de que el DS1821 realice una conversión de temperatura.
Devuelve si el dispositivo está presente (presence) o en caso contrario, ha habido algún error.

¡Ojo!, hay que tener en cuenta que la anterior función sólo le da permiso al DS1821 de realizar una y sólo una única conversión de temperatura y después, entrará en modo reposo. Esto significa que cada vez que queramos hacer una lectura de temperatura, debemos darle permiso al dispositivo con ésta función, en caso contrario, leeremos el dato (o temperatura en este caso) última que realizó (¡no la actual!).

Y llegados a este punto, ya se han presentado todas las funciones fundamentales y necesarias para controlar el dispositivo DS1620, pero esta librería ofrece al usuario tres funciones adicionales más, todas dedicadas al manejo de los datos obtenidos por la lectura del dispositivo.


Os pongo a vuestra disposición, los archivos que componen la librería para el manejo y control del dispositivo DS1821:

EnlaceMSP430: Librería DS1821
Compilador IARCompilador MSPGCC
CC
DS1821
DS1821
DS1821
DS1821
DS1821
DS1821

Para poner en práctica los conceptos y el control del dispositivo DS1620, os dejo un ejemplo:

Ejemplo: MSP430 + DS1821 + UART
1. ProgramaLectura de temperatura del dispositivo DS1821.


· NOTA: Esta no es una librería capaz de aprovechar todas las funcionalidades del dispositivo DS1821 ya que hay ciertos aspectos que no están implementados, como por ejemplo los siguientes:

· Configurar el DS1821 mediante su registro STATUS. En esta librería se trabaja con el registro STATUS por defecto, es decir: Configuración del dispositivo en termómetro en modo bajo consumo (solo ofrece un dato de temperatura cuando se realiza una petición, modo 1SHOT).

· Realizar lectura de otros registros internos del dispositivo DS1821.

En fin, es solo una librería para empezar a obtener lecturas de temperatura del dispositivo DS1821. Otro aspecto a tener en cuenta es que la implementación del bus 1-Wire, ha sido realizada por software y los tiempos de respuesta se han implementado mediante el TimerA TA1. Dicha implementación se puede encontrar en forma de librería adaptada a las necesidades del dispositivo DS1821.

Las funciones restantes que quedan por implementar no requieren de un gran esfuerzo, teniendo como referencia las que trae por defecto nuestra librería DS1821.c.

0 comentarios: