bclose

Arduino y fotosensores LDRs

Fotoresistencias y divisores de tension

Objetivos

 

 

    • Un componente simpático, el LDR.
    • Los divisores de tensión.
    • Un theremin sensible a la luz.
 

Material requerido.

 

  Tienda España Tienda Mexico
Kit Arduino Uno  Kit inicio UNO Kit inicio UNO
Kit Arduino MEGA Kit Inicio Mega Kit Inicio Mega

 

Los fotosensores

 

Una fotorresistencia o LDR (Light Depending Resistor, o resistencia dependiente de la luz) es un componente fotoelectrónico cuya resistencia varía en función de la luz que incide en él. Esta resistencia es muy baja, de unos pocos Ωs con una luz intensa incide en él y va creciendo fuertemente a medida que esa luz decrece.

Se les suele utilizar como sensores de luz, para arrancar luces automáticamente cuando la oscuridad sobrepasa un cierto umbral, o como detectores de movimiento próximo ( Cuando algo se interpone).

Vamos a utilizar en esta sesión un típico LDR, que es bastante fácil de conseguir y es sensible a los cambios de luz ambiente. Montaremos un circuito con un LDR y el zumbador que vimos en la última sesión, para construir un theremin rudimentario, que espero que os haga pasar un rato entretenido.

Un theremin es un sintetizador rudimentario que genera audio variable de espectro continuo, analógico, en función de una señal de control (No os asustéis, que es una tontería).

El circuito utiliza un LDR como señal de control y calcularemos una frecuencia en función de la caída de tensión que leamos en nuestra fotorresistencia.

 
  • Recordad que los convertidores ADC como los de Arduino uno no pueden leer resistencia sino tensión.
  • Los LDR no son precisamente rápidos en reaccionar a la luz, y puedan tardar hasta algunas décimas de segundo en reaccionar. Esto no es importante para una alarma de luz, pero hace imposible que se puedan utilizar para enviar información mediante la luz.
 

Pero antes de entrar en materia necesitamos hacer un inciso para conocer lo que es un divisor de tensión.

 

Divisores de tensión

 

Hablamos en su momento de la ley e Ohm:

V = R * I

Pero no hablamos de cómo se combinan las resistencias y ha llegado el momento de hacerlo, para desesperación de los que odian las mates.

Podemos combinar un par de resistencias R1 y R2 de dos maneras. En serie y en paralelo:

En serie En Paralelo
Suma de resitencias Resitencias en paralelo 

Cuando ponemos las dos resistencias en serie, la resistencia resultante es la suma de ambas:

Resistencias en serie

Y cuando las ponemos en paralelo, podemos calcular la resitencia equivalente así:

Calculo de resitencias en paralelo

Imaginemos ahora un circuito como este:

Como las resistencias están en serie el valor total es R1 + R2. Si Vin es de 5V la intensidad que circulará por el circuito será: Intensidad con resistencias en serie

La pregunta del millón ahora es ¿Si medimos entre las dos resistencias cuanto es Vout? Pues igual de fácil :

Voltaje

Si todavía queda alguien despierto, se habrá dado cuenta que si R1 y R2 son iguales Vout será exactamente la mitad de Vin pero si R1 o R2, fuese un potenciómetro (o un LDR) cualquier variación en el ajuste, causaría una modificación en el valor de salida de tensión Vout.

Esto es lo que se conoce como un divisor de tensión y es un circuito de lo más práctico para rebajar una señal de entrada, y podéis apostar a que lo usareis mas de una vez.

Por ejemplo, los convertidores analógicos de Arduino aceptan un máximo de 5V, pero muchas señales industriales son de entre 0 y 12V.Si lo conectas sin más al A0, por ejemplo, freirás el chip de largo.

Pero con el truco del divisor de tensión y calculando adecuadamente las resistencias (Que sí, que tú puedes con lo que hay en la página anterior) puedes adaptarlo tranquilamente para que tu Arduino viva feliz con una señal que originalmente le hubiera chamuscado.

Los divisores de tensión son un circuito muy sencillo y que conviene que sea parte de vuestro arsenal electrónico. Resuelven cantidad de problemas con una resistencia y un potenciómetro y son ideales para tratar señales, que por exceso de tensión, quedarían fuera del alcance de tu Arduino.

De hecho en esta práctica vamos a montar un divisor de tensión con una resistencia y un LDR y leeremos la caída de tensión en él. Nos va a servir como ejemplo de los divisores de tensión y además nos servirá como señal de control para calcular la frecuencia a la que haremos vibrar el buzzer.

 

El circuito para un theremin óptico

 

Aunque el titulo  impresiona, lo reconozco, el circuito no es para tanto:

Divisor de tensionFíjate que el LDR R1, junto con R2 forma un divisor de tensión. La lectura de A0 dependerá de la luz que incida en el LDR. El esquema de protoboard es igual de fácil:

Divisor de tension

 

Vamos con el programa.

 

El programa es muy sencillo. Leemos la caída de tensión en A0 y lo usamos para mapear una frecuencia entre 20 y 5.000 Hz para llamar a la función tone() y eso es todo.

     const int pinBuzzer = 13 ; 
     void setup()
        {
             pinMode (pinBuzzer , OUTPUT) ; 
        }
     void loop()
        {
            int p = analogRead(A0) ;
            int n = map (p, 0,1024, 20, 5000) ;
            tone ( pinBuzzer, n) ;
        }
 
  • Para probar el circuito os recomiendo que pongáis un foco potente a 50 cm por encima del LDR y probéis a mover la mano por delante y especialmente de arriba abajo y viceversa.
  • Escuchareis un tono continuo más o menos agudo, que ira variando su frecuencia en función de la luz que incida en el LDR.
  • Se acepta que el oído humano se mueve ente 20 Hz y 20Khz (aunque esto es para algún adolescente de oído muy fino) para los que peinan canas entre 40Hz y 10Khz ya es un rango optimista. Por eso, mapeamos los valores del potenciómetro, que van de 0 a 1024, entre 20 y 5Khz, pero os recomiendo que cambiéis estos valores y veáis lo que pasa.
 

Aqui teneis un pequeño video con el resultado

Creo que convendréis conmigo, en que ha sido tan fácil, que no puedo dejaros marchar, sin poneros antes algún otro problema. Veamos.

El sonido que obtenemos es de espectro continuo, es decir, que reproduce frecuencias continuas en el margen que es capaz. Pero nuestro oído está acostumbrado a escuchar las notas en tonos y semitonos de frecuencia dada, como veíamos en el programa de las sesión 20. ¿Cómo haríais para conseguir que el resultado de este theremin, produjera, las notas que definimos allí?

Podrá ser algo así:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

He usado un array con las frecuencias temperadas de una octava. Después, mapeamos las lectura de la puerta A0 a un entero entre 0 y 12, porque el array e arriba solo tiene 12 notas, y usamos su valor para leer la frecuencia correspondiente.

En mi caso, además, A0 solo daba valores entre 500 y 1024, así que por eso he corregido la escala. Por último el delay impide que el cambio de notas sea instantáneo, porque de lo contrario no notaríamos mucho cambio el programa anterior.

Resumen de la sesión

 

Hoy hemos aprendido en este curso de arduino lo siguiente:

 

 

    • Hemos presentado las fotorresistencias o LDRs.
    • Presentamos los divisores de tensión.
      • Que utilizaréis más de una vez en vuestros circuitos.
      • Los usamos para rebajar niveles de tensión en señales de entrada y como adaptadores para leer caídas de tensión resistencias variables .
    • Vimos como montar un theremin óptico
 

 

 

 

BOVADA River Valley Casino Resort In mid-2020 the Arkansas Racing Commission selected and licensed a plan submitted by a Mississippi casino group, Gulfside Casino Partners, to build a $254M casino resort in Russellville, Pope County, Arkansas. Our waiter Michael and supervisor Erin really looked after us. Using Bitcoin is important to US online poker players because it is the fastest, cheapest withdrawal option http://bestonlinecasinoinjapan.com/. Here you can find everything from classic slots to progressive slots, video slots to MegaSpin slots, Vegas style slots and everything in between.

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(37) Comments

  • Avatar for Charly
    • Ivan Uriarte

    Efectivamente no la usamos para nada. Ya lo hemos corregido. Gracias!

  • Avatar for Charly

    Hola muy buenas, espero siga activo el hilo.

    Tengo una duda, en el programa 2, declaras una variable pinLDR = 0, pero nunca veo dónde la usas, ¿entonces para qué sirvió declararla?

    Saludos

  • Avatar for Charly
    • Admin

    Hola Juanjo, las dos resistencias estan en serie, y la resistencia final se suma, por lo que entre el positivo y negativo hay una oposicion a el paso de corriente y no hay corto posible ¿Vale?

    La idea siempre es que la resistencia entre positivo y negativo no sea nula

  • Avatar for Charly
    • Juanjo Llabrés

    Hola,
    acabo de registrarme y es mi primer mensaje. Espero hacerlo correctamente.

    En el esquema éste del LDR, como se comenta, se conectan 2 resistencias en paralelo (la 330 Ohm, y la LDR), pero una desde el negativo y la otra desde el positivo. Aunque se reduzca la tensión, ¿no es un cortocircuito? por pequeño que sea.

    Perdonad mi ignorancia, pero estoy empezando con el tema de la electrónica, y Arduino por supuesto.

    Saludos

  • Avatar for Charly
    • Ivan

    Pues si te sirve, estupendo!

  • Avatar for Charly

    Muchas gracias.
    No entiendo bien como funciona, pero funciona ( With toneAC, we’re sending out of phase signals on two pins. So in effect, the speaker is getting 5 volts instead of 2.5, making it nearly twice as loud).

    La sintaxis es: toneAC( frequency [, volume [, length [, background ]]] )
    Para el UNO, el buzzer se conecta a los pines 9 y 10.
    El volumen va del 0 (silencio) al 10.

    (Es para un Theremin «más real» que estoy haciendo con control de frecuencia y volumen).

  • Avatar for Charly
    • Ivan

    Hola Jesustor, por lo que leo por ahí hay alguna librería para ello llamada toneAC, pero no la he probado. Un saludo.

  • Avatar for Charly

    Gracias. ¿Y hay forma de controlar también el volumen?

  • Avatar for Charly
    • Ivan

    Hola, con el tone() puedes establecer la frecuencia de sonido que quieres que emita y así por ejemplo puedes hacer que toque las notas que quiera. Usando analogWrite puedes hacer que suene pero no vas a saber la frecuencia. Un saludo.

  • Avatar for Charly

    Enhorabuena por los tutoriales. ¿Que diferencia habría entre poner tone ( pinBuzzer, n) y analogWrite ( pinBuzzer, n)? ¿Solo el rango de valores que admite n?

  • Avatar for Charly
    • Admin

    no tengo experiencia en esto, pero si pusieras el LDR al final de un tubo cerrado de digamos 10 cm, la luz ambiente pienso que no te molestaria

  • Avatar for Charly
    • Rodrigo

    Estimado!

    tengo una duda con respecto a un proyecto que realizo con LDRs y Lasers. resulta que estoy haciendo un circuito de competición de tipo time trial, donde el competidor le da la partida a un cronometro a partir del corte de una barrera que esta compuesta por ldr que recibe la luz de un modulo laser, cuando el ldr deja de recibir la señal del laser, el cronometro comienza a correr y lo mismo pasa al otro extremo de la pista donde el cronometro para bajo el mismo funcionamiento.
    Cuando estoy bajo techo, el laser funciona muy bien dandome lecturas optimas para el funcionamiento del sistema, el problema es que al aire libre el ldr no distingue el laser le la luz del ambiente dandome variaciones de uno a cinco puntos.
    por otro lado el corte que generan los competidores sobre la barrera laser es del orden de los mili segundos y no siempre lo toma como valido.

    espero puedas ayudarme con esto. desda ya, muchas gracias

  • Avatar for Charly
    • Jesús Sánchez

    Hola Fran. Pues pasanos foto del montaje, a ve si vemos algo.

  • Avatar for Charly

    buenas tardes Jesus la salida en voltaje es de 4,9V, sigo sin entender nada se me desmonta la ley de ohm jejejeje

  • Avatar for Charly
    • Jesús Sánchez

    Ahora mismo solo se me ocurre que agarres un multímetro y midas la tensión en esa salida. Empieza en la medida de voltios y si te marca cero, baja a la de mV (si tu multímetro tiene ese rango).

  • Avatar for Charly

    Gracias Jesus eso lo tengo hecho pero el LED me luce muy tenue no se porque, si suprimo la LDR y el LED lo conecto a la entrada digital luce perfectamente, no consigo saber el porque de este fenomeno.

    Saludos

  • Avatar for Charly
    • Jesús Sánchez

    Hola Fran.
    Esa LDR que comentas admite hasta 150V y 90mW. Con luz, su resistencia es de entre 5 y 10K, y con oscuridad de unos 500K.
    Para hacer la prueba de encender un LED con oscuridad, chequea por monitor Serial los valores que te arroja esta entrada cuando la LDR está iluminada y cuando está a oscuras, para decidir con un condicional cuando encender un LED. La salida del LED la defines al inicio del sketch como OUTPUT, le das valor bajo (LOW) para apagarlo y ya luego que el programa lo encienda en base al condicional que has puesto. Agrégale una resistencia al LED, pues no soportan 5V, de por ejemplo 220 Ohm hacia arriba.

    Saludos.

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login