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 IAR | Compilador MSPGCC | ||||||||||||||||||
C | C | ||||||||||||||||||
|
|
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:
donde estas los archivos de
#include "io430.h"
#include "variables.h"
#include "funciones.c"
?????
Buenas Hector:
Si te descargas el archivo, encontrarás todo lo que necesitas.
Un saludo.
Ola muchacho!Soy del Brazil. Podería enviar-me o código de lo projecto arriba por gentileza! Gracias
Buenas Diego:
El código te lo puedes descargar en la sección de descargas.
Un saludo.
Publicar un comentario