sábado, 12 de julio de 2008

Uso de LDR como selectores

Vamos a empezar por explicar lo que es una LDR, teniendo en cuenta que tú puede ser que no sepas de qué se trata, y si lo sabes puedes directamente pasar de la explicación o refrescar un poco lo que ya sabes.

Una LDR es una Light Depent Resistor, una resistencia que varía su valor en función de la luz que da sobre ella. ¿Un ejemplo para verlo más claro? Pues fácil. Imagina que tienes una LDR conectada a un circuito que alimenta una bombilla de una linterna, y que la colocamos de forma que cuando aumenta la luz que da sobre la LDR la bombilla se va apagando, y que cuando la luz que incide sobre la LDR va disminuyendo la bombilla de la linterna se va encendiendo cada vez con más fuerza.

Este sería un ejemplo muy simple para entender lo que podemos hacer con una LDR, pero aquí le vamos a dar otro uso a la LDR. Sea que no se precisa un contacto de presión, podemos hacer un divertido interruptor que podemos accionar al pasar la mano (a modo de interruptor invisible), con un efecto parecido al que podemos obtener cuando usamos sensores mucho más caros.

Lo que tenemos que hacer es poner las dos LDR en serie, quedando un extremo conectado a una tensión de 5V y el otro extremo a masa. ¿Qué hacemos con la parte común en la que se conectan las dos LDR?, pues precisamente esa parte es la que llevamos a la entrada analógica del microcontrolador, y de esta forma al cambiar la luz que incide sobre cada una de las LDR haremos que el microcontrolador efectúe una cuenta ascendente o descendente.

El proyecto es muy simple de realizar y el programa es sencillo, lo importante no es la complejidad del proyecto, sino pasarlo bien y dar otros usos a los elementos baratos que tenemos más a mano.

Aquí tenéis el código del programa:

program FotoResistores
dim tension as integer

dim numero as byte
dim temporizacion as word

main:
TRISA = 255
TRISB = 0
TRISD = 0
PORTA = 0
PORTB = 0
PORTD = 0
numero = 127

while true
if temporizacion = 500 then

tension = ADC_Read (0)/4
PORTB = tension
if tension <= 16 then
numero = numero + 1
PORTD = numero
end if
if tension >= 80 then
numero = numero - 1
PORTD = numero
end if
temporizacion = 0
end if
inc(temporizacion)
wend
end.

No hay comentarios: