miércoles, 6 de noviembre de 2013

MSP430: Sensor Interno de Temperatura

Este capítulo tiene el propósito de mostrar como configurar y trabajar con el módulo interno de temperatura que viene integrado en los microcontroladores de la familia MSP430.

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 interno de temperatura del microcontrolador cada dos segundos, y una vez obtenida, enviarla por la UART para que se muestre por pantalla en un software PC.

Además, en dicho software de PC, se podrá cambiar los estados de los LEDS incorporados en la placa MSP430 Launchpad.

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.
· Leds: Ambos leds (LED1 y LED2) incorporados en la placa MSP430 Launchpad. 
· 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:          24-October-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 interno de 
         temperatura.

         Así mismo, se podrán cambiar los estados de los LEDS de la placa
         MSP430 Launchpad por medio de una interfaz gráfica PC.
                  
         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 LPM1 hasta
         que reciba una orden desde el ordenador.
*/

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


void main( void )
{  
   conf_WDT    ();           // Configura WDT del sistema
   conf_CLK    ();           // Configura CLK del sistema                                              
   conf_IO     ();           // Configura Entradas/Salidas
   conf_ADC10  ();           // Configura ADC10 (Sensor Interno Temperatura)
   conf_UART   ();           // Configura UART
   conf_TimerA ();           // Configura Timer A 
  
   __enable_interrupt();     // Interrupciones ON.
  
  
   while(1)
   {     
     TA0CTL   |= TAIE;       // Interrupción TimerA ON
    
     LPM1;                   // Modo bajo consumo: LPM1
    
     if (datoUART == '0')
       P1OUT ^= BIT0;        // Cambia estado LED1
     else
       P1OUT ^= BIT6;        // Cambia estado LED2
   }
}

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: UART + Sensor Interno de Temperatura
Compilador IARCompilador MSPGCC
CC
MSP430: Temp Int
MSP430: Temp Int  
MSP430: Temp Int
MSP430: Temp Int
MSP430: Temp Int
MSP430: Temp Int

· NOTA 1: En caso de que en el Software empleado para cambiar el estado de los leds de la placa, 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.

5 comentarios:

Reynel Rios dijo...

Hola buenas, me da un error al usar io430, estoy usando el code composer versión 6 dime tu con cual debo compilar.Gracias de antemano

AqueronteBlog dijo...

Buenas Reynel Rios:

El compilador que se ha usado, como se especifica en el código, es el IAR, en este caso concreto: IAR 5.60.1 [Kickstart].


Un saludo.

Anónimo dijo...

tienes el codigo de tu forma

Anónimo dijo...

de casualidad tienes el programa de tu interfaz ya que no la puedo descargar muchas gracias

AqueronteBlog dijo...

Buenas:

Tenemos en mente crear un manual o ciertas pautas de programación software ( para diseñar interfaz gráfica, por ejemplo ) donde pondremos como se realizan las interfaces que usamos en nuestros programas.

Es por ello que no podemos distribuir el código, de momento.


Un saludo.