lunes, 2 de diciembre de 2013

MSP430: DS1821 + UART

Este capítulo tiene el propósito de mostrar como trabajar con el dispositivo digital de temperatura DS1821 mediante la librería que hemos creado y explicado en el siguiente capítulo: MSP430: DS1821.

Vamos a trabajar sobre la placa MSP430 Launchpad y en este caso, usaremos el microcontrolador MSP430G2553.

El programa que vamos a emplear para tal propósito, consistirá en obtener una lectura del sensor externo de temperatura DS1821 cada dos segundos (primero realiza una petición de conversión de temperatura y después, la lectura de la misma), y una vez obtenida, enviarla por la UART para que se muestre por pantalla en un software PC.

El conversor USB <---> RS-232 que vamos a usar, es uno externo, concretamente el CP2102 (enlace del fabricante).

 El material que vamos a necesitar y su función, es la que se muestra a continuación:

· MSP430 Launchpad: Evidentemente, nuestra placa de desarrollo con el microcontrolador MSP430G2553.
· Módulo B75937: Conversor USB <---> RS-232 externo basado en el dispositivo CP2102.
· DS1821: Dispositivo digital de temperatura/termostato de la empresa Maxim.
· Interfaz Gráfica: Software que se ejecuta en un ordenador con sistema operativo Windows con al menos, la versión .NET Framework 4.0. Dicha interfaz gráfica se puede descargar más adelante junto al Firmware.

El módulo B75937, es un conversor USB <---> RS-232 que actuará de puente entre el módulo interno UART del microcontrolador y el puerto USB del ordenador (creando un puerto COM virtual en el ordenador).

Pero antes de presentar el código, debemos tener en cuenta algunas consideraciones:

· Preparación placa MSP430 Launchpad: La placa MSP430 Launchpad dispone de un conversor incorporado, para no causar conflictos, se recomienda desconectar las patitas TXD y RXD del conector J3.


El código del programa principal, es el siguiente:

/*----------------------------------------------------------------------
    AqueronteBlog@gmail.com            
                                                      
Este archivo es propiedad intelectual del blog Aqueronte,  
cuya dirección web, es la siguiente:                       
                                                       
  http://unbarquero.blogspot.com/           
                                                       
Se permite cualquier modificación del archivo siempre y cuando
se mantenga la autoría del autor.                          
                                                      
----------------------------------------------------------------------
                                                       
Filename:      main.c                              
Date:          26-November-13                                
File Version:  vs0.0                                     
Compiler:      IAR 5.60.1 [Kickstart]   

Author:        Manuel Caballero                           
Company:       Hades                          
                       
----------------------------------------------------------------------
                                                      
Notes:  Este programa tiene el propósito de enviar mediante el módulo
        interno UART el dato recogido por el sensor externo de 
        temperatura DS1821.

        Dicho sensor trabaja con el bus 1-wire que se implementará 
        mediante software.
                  
        Se utilizará el módulo conversor B75937 USB <---> RS-232 basado
        en el dispositivo CP2102 a 115200 Baudios.

        El microcontrolador estará en modo bajo consumo LPM3 hasta
        que reciba una orden desde el ordenador.   

        La actualización de la temperatura es cada ~ 2 s.
*/

#include "io430.h"
#include "variables.h"
#include "funciones.c"
#include "interrupciones.c"
#include "DS1821.c"


void main( void )
{   
  conf_WDT    ();             // Configura WDT del sistema
  conf_CLK    ();             // Configura CLK del sistema                                              
  conf_IO     ();             // Configura Entradas/Salidas
  conf_UART   ();             // Configura UART
  conf_TimerA ();             // Configura TimerA
  
  __enable_interrupt();       // Interrupciones ON.
  
  while(1)
  {  
    LPM3;                     // Modo bajo consumo: LPM3
    
    if (seleAccion == 1)
    {
    // Realizar una conversión de Temperatura del DS1821
      varAux   =  DS1821_Start_Conv_T ();
      TA0CTL  |=  TAIE;                 // Servicio de interrupción TA1 ON
    }
    else
    {
    // Realizar una lectura de Temperatura del DS1821
      varAux   =  DS1821_Read_T ();     // Obtiene temperatura del DS1821
      TX_Buff  =  1;                    // Se va a transmitir 1-Byte
      IE2     |=  UCA0TXIE;             // Interrupción Tx ON (Transmite datos)
    }
  }
}

Como vemos, el ejemplo es bastante simple, se recomienda bajar los archivos disponibles más abajo para indagar entre sus librerías y leer sus funciones de manera más detallada.

Un vídeo que demuestra lo explicado anteriormente se presenta a continuación:



Os pongo a vuestra disposición el programa en lenguaje C (IAR y MSPGCC) para que lo podáis descargar y probar:

MSP430: DS1821 + UART
Compilador IARCompilador MSPGCC
CC
MSP430: DS1821
MSP430: DS1821
MSP430: DS1821
MSP430: DS1821

· NOTA 1: En caso de que en el Software empleado para la lectura de temperatura del sensor DS1821 no reconozca ningún puerto COM, es síntoma de que no se tiene los drivers necesarios del dispositivo CP2102, por lo que se deberán instalar para un uso correcto, ya que el ordenador no lo reconoce.

0 comentarios: