jueves, 17 de enero de 2013

MSP430: LDR + Led

Esta entrada tiene el propósito de demostrar el fácil uso de los dispositivos fotorresistores descritos en el capítulo: MSP430: LDR.

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

Y el programa de demostración que vamos a emplear consiste en encender un led en caso de oscuridad.

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 MSP430G2231.
· LDR: En este caso se ha escogido uno cuya características son: R(Luz) = 5 kΩ, R(Oscuridad) = 500 kΩ.
· Resistor: Un resistor cuya resistencia es de 10 kΩ.

La configuración (circuitería externa) que vamos a adoptar con el LDR es la siguiente:

Circuito con Fotorresistor (LDR): Divisor de Tensión
· ↑↑↑Luz --> ↓↓↓LDR (~ Ω)  --> ↑↑↑Vo ~ Vcc
· ↓↓↓Luz --> ↑↑↑LDR (~ MΩ) --> ↓↓↓Vo 

Obtenemos la expresión de Vo (divisor de tensión):

· Vo = [R1/(R1 + R(LDR))]·Vcc

En nuestro caso, el valor de las incógnitas fijas son:

· R1 = 10 kΩ.
· Vcc ≈ 3.6 V (Alimentación de la propia placa Launchpad).

Y el valor variable depende de la incidencia de luz del LDR, cuyas características nominales son:

· R(Día) ≈ 5 kΩ.
· R(Oscuro) ≈ 500 kΩ.

Por lo tanto, el valor de tensión de salida (Vo) dependerá de la resistencia por LDR de tal manera:

· Vo(Día) = [10/(10 + 5]·3.6 = 2.4 V
· Vo(Oscuro) = [10/(10 + 500]·3.6 ≈ 0.07 V

Esto quiere decir que, dependiendo de la luz que incida en el LDR, el valor de la tensión de salida (Vo) variará entre [0.07, 2.4] V.

¿Qué quiere decir éste intervalo? Pues que desde oscuridad (0.07 V) hasta día (2.4 V) existen, si asumimos números enteros, tres niveles:

· Nivel 0: Estado oscuridad, Vo = 0 V.
· Nivel 1: Estado intermedio, Vo = 1 V.
· Nivel 2: Estado en día, Vo = 2 V.

Evidentemente, con la configuración que hemos adoptado nos limita mucho las posibilidades de monitorizar la luminosidad donde se encuentra el LDR, pero para este caso, nos sirve y es suficiente; asumimos que tanto el nivel 0 como el 1 son oscuridad y que, simplemente el nivel 2 es de día.

Asumiendo dichas consideraciones, el programa en que se basa este capítulo, encenderá un led cuando estemos en el nivel 0 o 1, y en caso contrario, cuando estemos en el nivel 2, lo apagará.

La lectura de la tensión Vo se hará cada, aproximadamente 0.25 segundos mientras que el resto del tiempo, el microcontrolador estará en modo ahorro de energía LMP3 (todo apagado menos el reloj ACLK), y solo se saldrá de dicho estado, para monitorizar la tensión Vo y decidir si encender el led o no.

Para una explicación más detallada, se recomienda que se lean los comentarios del programa que está más abajo para disposición del usuario su descarga.

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-December-12                                
File Version: vs0.0                                     
Compiler:     IAR 5.51.3 [Kickstart]   

Author:       Manuel Caballero                           
Company:      Hades                          
                       
----------------------------------------------------------------------
                                                      
Notes:  En este programa vamos a mostrar como trabajar con el 
        dispositivo LDR (fotorresistor) para monitorizar la
        luminosidad en la que está ubicado.

        En nuestro programa, se obtendrá el valor de la tensión de 
        salida del circuito exterior donde está el LDR y se
        decidirá si enciende un led o no dependiendo de la luminosidad.

        La velocidad de lectura y toma de decisión es de,
        aproximadamente 0.25 segundo.
        Como dato adicional, el microcontrolador estará en modo ahorro
        de consumo LPM3 hasta la nueva lectura.
*/

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

void main( void )
{  
   conf_WDT ();      // Configura WDT del sistema
   conf_CLK ();      // Configura CLK del sistema                                              
   conf_IO ();       // Configura Entradas/Salidas
   conf_ADC10 ();    // Configura ADC 10
   conf_TimerA ();   // Configura TimerA
  
   __enable_interrupt();  // Enable interrupts.
  
   while(1)
   {    
    LPM3;      // LPM3 with interrupts enabled
    
    if (IntDegC < 2)
      P1OUT |= BIT0;
    else
      P1OUT &= ~BIT0;
   }
}

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: LDR + Led 
Compilador IARCompilador MSPGCC
CC
MSP430: LDR + Led
MSP430: LDR + Led
MSP430: LDR + Led
MSP430: LDR + Led
MSP430: LDR + Led
MSP430: LDR + Led

Como se ha podido ver en el transcurso de este capítulo, es fácil el uso de los dispositivos LDR y bastante útil para monitorizar la luminosidad donde esté instalado.

4 comentarios:

Hector Sandoval dijo...

donde estas los archivos de
#include "io430.h"
#include "variables.h"
#include "funciones.c"
?????

AqueronteBlog dijo...

Buenas Hector:

Si te descargas el archivo, encontrarás todo lo que necesitas.


Un saludo.

Diego dijo...

Ola muchacho!Soy del Brazil. Podería enviar-me o código de lo projecto arriba por gentileza! Gracias

AqueronteBlog dijo...

Buenas Diego:

El código te lo puedes descargar en la sección de descargas.


Un saludo.