Conectando la fotocélula al arduino. Conectando un fotorresistor a un arduino y trabajando con un sensor de luz

Los fotorresistores le dan la capacidad de determinar la intensidad de la luz.

Son pequeños, económicos, requieren poca energía, son fáciles de usar y son prácticamente indestructibles.

Es por esto que a menudo se utilizan en juguetes, artilugios y artilugios. Por supuesto, los proyectos de bricolaje basados ​​en Arduino no podían ignorar estos maravillosos sensores.

Los fotorresistores son esencialmente resistencias que cambian su resistencia (medida en ohmios) dependiendo de la cantidad de luz que incide en sus elementos sensores. Como se mencionó anteriormente, son muy baratos, tienen diferentes tamaños y especificaciones, pero la mayoría de ellos no son muy precisos. Cada fotorresistencia se comporta de manera ligeramente diferente a la otra, incluso si son del mismo lote del fabricante. ¡Las diferencias en las lecturas pueden ser de hasta un 50% o más! Por lo tanto, no debe contar con mediciones de precisión. Se utilizan principalmente para determinar el nivel general de iluminación en condiciones específicas, "locales" en lugar de "absolutas".

Los fotorresistores son una excelente opción para resolver problemas como "está oscuro o hay luz alrededor", "hay algo frente al sensor (que limita el flujo de luz)", "qué área tiene el nivel máximo de iluminación".


Características técnicas medias de los fotorresistores.

Las especificaciones a continuación son para fotorresistores de la tienda Adafruit. Estos fotorresistores tienen características similares al PDV-P8001. Casi todos los fotorresistores tienen características técnicas diferentes, aunque funcionan de manera muy similar. Si el vendedor le da un enlace a la hoja de datos de su fotorresistor, léalo y no lo que se indica a continuación.

  • Tamaño: Redondo, 5 mm (0,2 ") de diámetro (¡otros fotorresistores pueden tener hasta 12 mm / 0,4" de diámetro!).
  • Precio: alrededor de $ 1.00 en la tienda Adafruit.
  • Rango de resistencia: 200 kΩ (oscuro) a 10 kΩ (claro).
  • Rango de detección: los sensores capturan longitudes de onda de 400 nm (violeta) a 600 nm (naranja).
  • Fuente de alimentación: cualquiera con un voltaje de hasta 100 V, use una corriente promedio de aproximadamente 1 mA (dependiendo del voltaje de suministro).

Problemas al utilizar varios sensores

Si, al agregar sensores adicionales, resulta que la temperatura es inconsistente, esto significa que los sensores se superponen entre sí al leer información de diferentes pines analógicos. Esto se puede solucionar agregando dos lecturas con retrasos y mostrando la primera.

Medición del nivel de luz

Como dijimos antes, la resistencia del fotorresistor cambia según el nivel de iluminación. Cuando está oscuro, la resistencia de la resistencia aumenta a 10 megaohmios. A medida que aumenta el nivel de luz, la resistencia disminuye. El siguiente gráfico muestra la resistencia aproximada del sensor en diferentes condiciones de iluminación. No olvide que las características de cada fotorresistencia individual serán ligeramente diferentes, estas características solo reflejan la tendencia general.


Tenga en cuenta que la característica no es lineal y tiene un carácter logarítmico.

Los fotorresistores no perciben todo el rango de ondas de luz. En la mayoría de las versiones, son sensibles a las ondas de luz en el rango entre 700 nm (rojo) y 500 nm (verde).


Es decir, una indicación de un rango de longitud de onda de luz que corresponde al azul no será tan eficaz como una indicación de un rango verde / amarillo.

¿Cuál es la unidad de medida "lux"?

La mayoría de las hojas de datos utilizan lux (lx) para indicar la resistencia a un nivel de luz determinado. Pero, ¿qué es - lx? Este no es el método que usamos para describir el brillo, por lo que está vinculado directamente al sensor. A continuación se muestra una tabla de correspondencias, que fue tomada de Wikipedia.


Comprobación de fotorresistencia

La forma más fácil de probar su fotoresistor es conectar un multímetro en modo de medición de resistencia a dos contactos del sensor y rastrear el cambio de resistencia en la salida cuando cubre el sensor con la palma de la mano, apaga la luz de la habitación, etc. Dado que la resistencia cambia en grandes rangos, el modo automático funciona bien. Si no tiene el modo automático o no funciona correctamente, pruebe con el rango de 1 MΩ y 1 kΩ.



Conexión fotorresistor

Dado que los fotorresistores son esencialmente resistencias, no tienen polaridad. Esto significa que puedes conectarlos con sus piernas "lo que quieras" ¡y funcionarán!


Los fotorresistores son realmente sencillos. Puede soldarlos, instalarlos en la placa de prueba, usar los clips para conectarlos. Lo único que puede hacer es doblar las "piernas" con demasiada frecuencia, ya que pueden romperse fácilmente.


Usando fotorresistores

Método de lectura de voltaje analógico

El caso de uso más simple es conectar una pata a la fuente de alimentación y la otra a tierra a través de una resistencia desplegable. Después de eso, el punto entre la resistencia de valor constante y la resistencia variable, la fotorresistencia, se conecta a la entrada analógica del microcontrolador. La siguiente figura muestra el diagrama de cableado del Arduino.


En este ejemplo, se conecta una fuente de 5V, pero recuerde que también puede usar una fuente de 3.3V. En este caso, los valores de voltaje analógico estarán en el rango de 0 a 5V, es decir, aproximadamente igual a la tensión de alimentación.

Funciona de la siguiente manera: cuando la resistencia del fotorresistor disminuye, la resistencia total del fotorresistor y la resistencia pull-down disminuyen de 600 kOhm a 10 kOhm. Esto significa que la corriente a través de ambas resistencias aumenta, lo que hace que aumente la tensión a través de la resistencia de 10K. ¡Eso es todo!


Esta tabla muestra los valores de voltaje analógico aproximados basados ​​en el nivel de iluminación / resistencia con un voltaje de suministro de 5 V y una resistencia pull-down de 10 kΩ.

Si desea usar el sensor en un área muy iluminada y usar una resistencia de 10K, se apagará rápidamente. Es decir, alcanzará casi instantáneamente el nivel de voltaje permitido de 5 V y no podrá distinguir una iluminación más intensa. En este caso, debe reemplazar la resistencia de 10K con una resistencia de 1K. Con tal circuito, la resistencia no podrá detectar el nivel de oscuridad, pero es mejor determinar las sombras del alto nivel de iluminación. ¡En general, deberías jugar con esto dependiendo de tus condiciones!

Alternativamente, también puede usar la fórmula "Axel Benz" para mediciones básicas del valor de resistencia mínimo y máximo con un multímetro y luego encontrar el valor de resistencia de la resistencia usando: Resistencia de bajada = raíz cuadrada (Rmin * Rmax), que le dará un resultado mucho mejor. resultado en la forma:


La tabla de arriba muestra voltajes analógicos aproximados cuando se usa un sensor de 5 V con una resistencia pull-down de 1 kΩ.

¡No olvide que nuestro método no nos da una dependencia lineal del voltaje de la iluminación! Además, cada sensor es diferente en sus características. Con un aumento en el nivel de luz, el voltaje analógico aumentará y la resistencia disminuirá:

Vo = Vcc (R / (R + Fotocélula))

Es decir, el voltaje es inversamente proporcional a la resistencia del fotorresistor, que, a su vez, es inversamente proporcional al nivel de iluminación.

Un ejemplo simple de usar una fotorresistencia

Este boceto toma las lecturas analógicas para determinar el brillo del LED. ¡Cuanto más oscuro sea, más brillante brillará el LED! Recuerde que un LED debe estar conectado a un pin PWM para que este ejemplo funcione. En este caso, se utiliza el pin 11.


Este ejemplo asume que está familiarizado con los conceptos básicos de la programación de Arduino.

/ * Boceto de prueba de fotorresistencia simple.

Conecte una pata del fotorresistor a 5 V y la otra al pin analógico 0.

Luego conecte una resistencia de 10K entre Analog 0 y tierra.

Conecte el LED a través de una resistencia entre el pin 11 y tierra. * /

int photocellPin = 0; // sensor y resistencia pull-down de 10k conectados a a0

int photocellReading; // leer valores analógicos del divisor del sensor

int LEDpin = 11; // conecta el LED rojo al pin 11 (pin PWM)

int LEDbrightness; //

configuración vacía (vacía) (

// enviaremos información de depuración al monitor serial

Serial.begin (9600);

bucle vacío (vacío) (

Serial.println (photocellReading); // valores analógicos del sensor

// El LED se ilumina más brillante si el nivel de luz en el sensor disminuye

// esto significa que tenemos que invertir los valores leídos de 0-1023 a 1023-0

photocellReading = 1023 - photocellReading;

// ahora tenemos que convertir el rango 0-1023 a 0-255, ya que este es el rango que usa analogWrite

Brillo del LED = mapa (lectura de fotocélula, 0, 1023, 0, 255);

analogWrite (LEDpin, LEDbrightness);


¡Puedes probar otras resistencias dependiendo del nivel de luz que quieras medir!

Código simple para mediciones de nivel de luz analógicas

No hay cálculos en el croquis, solo la visualización de valores que se interpretan como niveles de iluminación. Esto es suficiente para muchos proyectos.


/ * Un sencillo boceto de prueba de fotorresistencia.

Conecte una pata del fotorresistor a 5 V y la otra al pin analógico 0.

Luego conecte el pin de la resistencia de 10k a tierra y el segundo al pin analógico Analog 0 * /

int photocellPin = 0; // sensor y resistencia pull-down de 10k conectados a a0

int photocellReading; // datos leídos desde el pin analógico

configuración vacía (vacía) (

// Pasar la información de depuración al monitor serial

Serial.begin (9600);

bucle vacío (vacío) (

photocellReading = analogRead (photocellPin);

Serial.print ("Lectura analógica =");

Serial.print (photocellReading); // valores analógicos

si (fotocélulaReading

Serial.println ("- Oscuro");

) else if (fotocélulaReading

Serial.println ("- Dim");

) else if (fotocélulaReading

Serial.println ("- Light");

) else if (fotocélulaReading

Serial.println ("- Brillante");

Serial.println ("- Muy brillante");

Este control se realizó en la habitación durante el día. Cubrí el sensor con mi mano y luego con un paño.


Lectura de valores del fotorresistor sin usar pines analógicos

Dado que los fotorresistores son esencialmente resistencias ordinarias, se pueden usar incluso si su microcontrolador no tiene pines analógicos (o si todos los pines analógicos están ocupados). Este método se basa en las propiedades básicas de resistencias y condensadores. Si toma un capacitor que puede transferir potencial y lo conecta a una fuente de energía (por ejemplo, 5V) a través de una resistencia, el cambio de voltaje ocurrirá gradualmente. Cuanto mayor sea la resistencia de la resistencia, más lento cambiará el voltaje.

A continuación se muestra una parte del oscilograma que caracteriza qué sucede exactamente con el pin digital (amarillo). La línea azul muestra cuando el boceto de Arduino comienza a funcionar y cuando termina su trabajo (una sección de aproximadamente 1,2 ms de duración).


Si dibujamos analogías simples, entonces el capacitor actúa como una canasta y la resistencia actúa como un tubo. Llevará mucho tiempo llenar la canasta con el tubo delgado. Dependiendo del grosor del tubo, la velocidad de llenado de la canasta variará.


En nuestro caso, la "cesta" es una resistencia cerámica de 0,1 μF. Puedes experimentar con la capacitancia del condensador. Y este indicador afectará directamente el tiempo. Si desea medir el nivel de luz, use un capacitor de 1uF. Si está trabajando en condiciones de poca luz, puede usar un capacitor de 0.01uF.

/ * un boceto simple para probar el rendimiento de la fotorresistencia.

Conecte una pata del fotorresistor a la alimentación y la otra al pin 2.

Después de eso, conecte una pata del condensador de 0.1 uF al pin 2 y la otra a tierra * /

int photocellPin = 2; // fotorresistor conectado al pin 2

int photocellReading; // valores digitales

int ledPin = 13; // puedes usar el LED incorporado

configuración vacía (vacía) (

// enviar información para la depuración que se mostrará en la ventana del monitor en serie

Serial.begin (9600);

pinMode (ledPin, SALIDA); // usa LED como salida

bucle vacío (vacío) (

// leer lecturas del sensor usando tecnología RCtime

photocellReading = RCtime (photocellPin);

if (photocellReading == 30000) (

// si las lecturas alcanzan los 30.000, esto significa que hemos alcanzado el valor límite

Serial.println ("¡Nada conectado!");

Serial.print ("Lectura RCtime =");

Serial.println (photocellReading); // flujo de datos analógicos leídos

// ¡Cuanto más brillante, más a menudo parpadea el LED!

digitalWrite (ledPin, ALTO);

retraso (lectura de fotocélula);

digitalWrite (ledPin, BAJO);

retraso (lectura de fotocélula);

// usa un pin digital para medir la resistencia

// hacemos esto suministrando corriente al condensador y

// calcular cuánto tiempo tomará alcanzar Vcc / 2 (para la mayoría de Arduinos esto es 2.5V)

int RCtime (int RCpin) (

lectura int = 0; // empezar en 0

// inicializa el pin como salida y configúralo en LOW (tierra)

pinMode (RCpin, SALIDA);

digitalWrite (RCpin, LOW);

// Ahora establece el pin como entrada y ...

pinMode (RCpin, ENTRADA);

while (digitalRead (RCpin) == LOW) (// cuente el tiempo que se tarda en obtener el valor ALTO

lectura ++; // incremento de tiempo

si (lectura == 30000) (

// si llegamos a este nivel, la resistencia es tan grande

// ¡que lo más probable es que no haya nada conectado!

rotura; // salir del bucle

Video de proyectos Arduino usando fotorresistores

Cambio de la velocidad del motor mediante fotorresistencia:

El robot rastrea la trayectoria del movimiento usando una fotorresistencia:

Deje sus comentarios, preguntas y comparta su experiencia personal a continuación. ¡A menudo surgen nuevas ideas y proyectos en la discusión!

Fotorresistencia
En mi humilde opinión, especies en peligro de extinción. La última vez que lo vi fue cuando era niño. Por lo general, es una madera redonda de metal con una ventana de vidrio, en la que se puede ver. Cuando se ilumina, su resistencia cae, aunque de manera insignificante, de tres a cuatro veces.

Fototransistor
Últimamente me he encontrado con ellos constantemente, una fuente inagotable de fototransistores: unidades de disquete de cinco pulgadas. La última vez que, por el precio de la suciedad, puse en un mercadillo de radio unas 5 piezas de un pañuelo de los descubridores, allí se colocan los transistores frente a los orificios para controlar la grabación y rotación del disquete. Otro fototransistor dual (o tal vez un fotodiodo, por suerte) está en un ratón de bola ordinario.
Parece un LED normal, solo que la carcasa es transparente. Sin embargo, los LED también son iguales, así que confundir quién de ellos escupe quién solo una vez. Pero no importa, el partisano se calcula fácilmente con un multímetro ordinario. Basta con encender un ohmímetro entre su emisor y su colector (no tiene base) y brillar sobre él, ya que su resistencia colapsará simplemente catastróficamente, de decenas de kiloohmios a unos pocos ohmios. El que tengo en el detector de rotación de engranajes del robot cambia su resistencia de 100 kOhm a 30 Ohm. El fototransistor funciona como uno habitual: mantiene la corriente, pero como acción de control no hay una corriente de base, sino un flujo luminoso.

Fotodiodo
Exteriormente, no es diferente de un fototransistor o un LED ordinario en una carcasa transparente. Además, a veces hay fotodiodos antiguos en cajas de metal. Por lo general, estos son dispositivos de pala, marcas FD-cheto allí. Un cilindro de metal con una ventana al final y cables saliendo del culo.

A diferencia de un fototransistor, puede funcionar en dos modos diferentes. En fotovoltaica y fotodiodo.
En la primera versión, fotovoltaica, el fotodiodo se comporta como una batería solar, es decir, brilla sobre él: ha surgido un voltaje débil en los terminales. Se puede reforzar y aplicar =). Pero es mucho más fácil trabajar en modo fotodiodo. Aquí aplicamos un voltaje inverso al fotodiodo. Dado que es una foto, pero un diodo, entonces el voltaje no irá en la dirección opuesta, lo que significa que su resistencia estará cerca de una ruptura, pero si está encendido, el diodo comenzará a grabar con mucha fuerza y ​​su resistencia aumentará. caer bruscamente. Y bruscamente, en un par de órdenes de magnitud, como un fototransistor.

Espectro
Además del tipo de dispositivo, también tiene un espectro de trabajo. Por ejemplo, un fotodetector afilado para el espectro infrarrojo (y hay la mayoría) prácticamente no reacciona a la luz de un LED verde o azul. Reacciona mal a una lámpara fluorescente, pero reacciona bien a una lámpara incandescente y un LED rojo, y no hay nada que decir sobre los infrarrojos. Así que no se sorprenda si su fotosensor reacciona mal a la luz, quizás cometió un error con el espectro.

Conexión
Ahora es el momento de mostrar cómo conectar esto al microcontrolador. Con el fotorresistor todo está claro, no hay problemas aquí: lo toma y lo conecta como de acuerdo con el esquema.
El fotodiodo y el fototransistor son más complicados. Es necesario determinar dónde está su ánodo / cátodo o emisor / colector. Esto se hace de forma sencilla. Coges un multímetro, lo pones en el modo de marcación por diodos y lo adhieres a tu sensor. El multímetro en este modo muestra la caída de voltaje a través del diodo / transistor, y la caída de voltaje aquí depende principalmente de su resistencia U = I * R. Coges y enciendes el sensor, siguiendo las lecturas. Si el número ha disminuido drásticamente, entonces acertó y el cable rojo está en su cátodo / colector, y el negro está en el ánodo / emisor. Si no ha cambiado, cambie los pines. Si no ayuda, entonces el detector está muerto o está tratando de obtener una respuesta del LED (por cierto, los LED también pueden servir como detectores de luz, pero no es tan simple allí. Sin embargo, cuando tengo hora te mostraré esta perversión tecnológica).


Ahora sobre el trabajo del circuito, aquí todo es elemental. En el estado oscurecido, el fotodiodo no pasa corriente en la dirección opuesta, el fototransistor también está cerrado y la resistencia del fotorresistor es muy alta. La resistencia de la entrada está cerca del infinito, lo que significa que la entrada tendrá un voltaje de suministro completo, también conocido como una unidad lógica. Ahora vale la pena encender el diodo / transistor / resistencia ya que la resistencia cae bruscamente y la salida resulta estar plantada firmemente en el suelo o muy cerca del suelo. En cualquier caso, la resistencia será mucho más baja que una resistencia de 10 kΩ, lo que significa que el voltaje desaparecerá repentinamente y estará en algún lugar en un nivel lógico cero. Ni siquiera necesita poner una resistencia en el AVR y el PIC, el pull-up interno es suficiente. Entonces DDRx = 0 PORTx = 1 y serás feliz. Bueno, dale la vuelta como un botón normal. La única dificultad puede surgir con el fotorresistor: su resistencia no cae tan bruscamente, por lo que es posible que no llegue a cero. Pero aquí puedes jugar con el tamaño de la resistencia pull-up y asegurarte de que el cambio en la resistencia sea suficiente para pasar por el nivel lógico.

Si es necesario medir la iluminación, y no atrapar estúpidamente la luz / la oscuridad, entonces será necesario conectar todo al ADC y hacer que la resistencia de pull-up sea variable para ajustar los parámetros.

También hay un tipo avanzado de fotosensores: TSOP hay un detector de frecuencia y un amplificador integrados, pero escribiré sobre ello un poco más tarde.

ZY
Tengo algunos parques aquí, por lo que el sitio será muy estúpido con la actualización, creo que esto será hasta fin de mes. Entonces espero volver al mismo ritmo.

Hoy haremos un boceto y un prototipo del circuito en Arduino utilizando un fotorresistor. Aquí hay un fotoresistor ubicado aquí, he ensamblado un diseño de este tipo, parece una guirnalda LED de Año Nuevo de artículos anteriores.

Tenemos 8 LED, están instalados de modo que el tramo corto de la izquierda sea un menos, el tramo largo de la derecha sea un plus. Entonces están todos instalados, el circuito usa una resistencia de 10 kiloohmios, la saqué del kit Kit Arduino, y se utilizan 8 resistencias conectadas al contacto positivo del LED a 220 ohmios, así se conecta.


Usados ​​8 cables negros son negativos y 8 piezas verdes: pines de control del duodécimo al quinto. En el proceso de depuración, el negro extremo fue reemplazado por verde, pero hablaremos de eso más adelante.

El fotorresistor está aquí, al lado hay un resistor de 10kilohmios, el puente azul va a menos, el naranja está conectado en un extremo al punto medio, entre el resistor y el fotorresistor, el otro extremo a la placa Arduino, en A0 (pin analógico).

El rojo es de 5 voltios, y el circuito funcionará a través de este divisor de voltaje, los LED se iluminarán, dependiendo del nivel de iluminación. Arreglaré los LED, la construcción es bastante inestable. Volvamos al modelo, pero ahora comencemos a escribir un boceto.

Creemos un nuevo proyecto y comencemos a escribir, declaremos constantes, varias piezas, que sea un tipo En t, este será el número de pines, ya que hay 8 LED en el circuito. Esto indicará cuántos LED se utilizaron en el circuito.

const int NbrLEDs = 8;

Hagamos una matriz con números de pin, use 5 6 7 8 9 10 11 12 conectores digitales, indique el número de pin en el que se filma el nivel de iluminación, declare una variable para el fotorresistor, el valor del sensor y también declare el nivel de iluminación para que podemos romperlos con alfileres.

const int ledPins = (5, 6, 7, 8, 9, 10, 11, 12); const int photocellPin = A0; int sensorValue = 0; int ledLevel = 0;

En la subrutina de configuración, escribiremos un bucle en el que, para no asignar cada valor saliente a través de pinMode, recorreremos todos los pines, les asignaremos los valores en el pinmode del arreglo y asignaremos el valor de SALIDA a cada pin.

configuración vacía () (para (int led = 0; led< NbrLEDs; led++) { pinMode(ledPins, OUTPUT); } }

En principio, no podría hacer esto, podría especificar pinmode y luego escribir cinco, luego 6, y así sucesivamente, pero esto es mucho tiempo y este es un método bárbaro salvaje. Por tanto, en el bucle, de una pasada, pasaremos por todos los pines.

pinMode (5, SALIDA); pinMode (6, SALIDA);

En el bucle, obtenemos el valor del sensor leyendo a través de analogRead desde el pin A0.

A continuación, analicemos el valor del sensor, utilizando la función de mapa, obtenemos el valor del sensor y, en función del nivel de iluminación, con una sensibilidad de 300 al valor máximo 1023 , se distribuirá en 8 pines, que se anuncian anteriormente.

Vea también el fotorresistor de video y los LED en Arduino - (video), el enlace se abrirá en una nueva pestaña.

Más adelante en el ciclo, pasaremos por todos los pines, por lo que agregamos paréntesis, comenzando con el primer LED, si el contador no es más de 8, agregaremos, y luego verificaremos con la condición de que si el número de LED es menor que el nivel de iluminación, aplicaremos todos los voltajes anteriores a este LED a través de la constante ALTA.

De lo contrario, anotaremos la ausencia de voltaje en él y el LED no se encenderá.

bucle vacío () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 300, 1023, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Alinear el código a través del atajo de teclado Ctrl + T y ahora veamos qué sucede, ejecútelo para verificación, guarde el boceto.

Así que compilación del boceto, ahora cárguelo en Arduino... Volvamos al diagrama, en este momento un LED no se enciende al cambiar la iluminación debido a un mal contacto.


Ahora lo arreglaré, no lo tocaremos, si apago la iluminación, se apagarán todos los LED. Si enciendo la fotorresistencia con una linterna, agregando iluminación suavemente, entonces casi todos los LED estarán encendidos y, en consecuencia, elimino, reduciendo el nivel de iluminación, la cantidad de LED cambiará.


Si enciendo todas las luces, casi todo está encendido, cuál es el problema con este LED. Pasé bastante tiempo en él, todo está ensamblado correctamente aquí, incluso arrojé un signo menos con un cable verde que funcionaba a sabiendas, pero por alguna razón es caprichoso y no se quema.


Volvamos ahora al boceto y veamos qué está mal. El ejemplo fue tomado de la fuente oficial, en disco para Arduino hay el mismo código.

En el croquis, la distribución de la iluminación se obtiene a partir de 300 antes de 1023 (valor máximo), un intento de cambiar el umbral inicial a 0 - no da ningún resultado.

Pero si distribuimos todo este valor en 8 partes, entonces resulta que una calculadora será útil, o la resistencia a 10 kilo-ohmios da un error de algún tipo, debe dividir 1023 entre 8, obtenemos prácticamente 128 , si lo toma correctamente, entonces 1024 dividido por 8, esto es y hay 128.

Ahora necesitas restar 128 de 1023, poner el valor 895 aquí, luego, de acuerdo con la lógica de las cosas, todo debería estar bien. Descarguemos y veamos qué cambios.

bucle vacío () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 0, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Ahora todos los LED están encendidos, intentemos bloquear la iluminación, o apaguemos ...

El valor inicial aún debe devolverse 300, ya que se suministra a estos tres primeros LED de alimentación. Cambiemos de 0 a 300 en el boceto, como estaba, se hizo por una razón, recargue el boceto y veamos qué cambia esta vez ...

bucle vacío () (sensorValue = analogRead (photocellPin); ledLevel = map (sensorValue, 300, 895, 0, NbrLEDs); for (int led = 0; led< NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Ahora el primer LED está encendido, con iluminación mínima, si enciendes todo, y ahí tengo 1800 lux, de dos metros de tira de LED, todo está encendido como debe.


Cuando se apaga, la fotorresistencia capta la iluminación residual de la habitación, la lámpara de araña está encendida, no completamente a oscuras, y se activa. Pero si ilumina con una linterna, aplicando luz suavemente a la fotorresistencia, el circuito funciona correctamente.


Si apagamos las luces por completo, veremos qué pasa en la oscuridad total. Como puede ver, en ausencia total de luz, la fotorresistencia reacciona correctamente, los LED se iluminan gradualmente, a medida que aumenta la iluminación. Cuando la luz está encendida, todo está encendido. Tal boceto resultó, con un truco de vida: ajustando la sensibilidad de la fotorresistencia, para satisfacer sus necesidades.


Continuamos la serie de lecciones “”. Hoy conectamos la fotorresistencia (fotocélula) a la placa Arduino. Los fotorresistores se utilizan en robots como sensores de luz. El artículo contiene una instrucción en video, una lista del programa, un diagrama de conexión y los componentes necesarios.

Fotorresistencia- una resistencia, cuya resistencia depende del brillo de la luz que incide sobre ella. En nuestro modelo, el LED está encendido solo si el brillo de la luz sobre el fotorresistor es menor que uno determinado, este brillo se puede ajustar mediante programación.

Los fotorresistores se utilizan en robótica como sensores de luz. El fotorresistor integrado en el robot permite determinar el grado de iluminación, determinar las áreas blancas o negras de la superficie y, de acuerdo con esto, moverse a lo largo de la línea o realizar otras acciones.

Instrucciones en video para ensamblar un modelo Arduino con un fotorresistor:

Para ensamblar un modelo con un servodrive, necesitamos:

  • tablero arduino
  • 6 cables "papi-papi"
  • fotorresistencia
  • Diodo emisor de luz
  • Resistencia de 220 ohmios
  • Resistencia de 10k
  • Programa IDE de Arduino que se puede descargar desde el sitio web de Arduino.

Diagrama de cableado para el modelo Arduino con fotorresistor:

Diagrama de conexión del fotorresistor Arduino

Para que este modelo funcione, el siguiente programa es adecuado (simplemente puede copiar el programa al IDE de Arduino):

int led = 13; // variable con el número de pin del LED
int ldr = 0; // y fotorresistencia
void setup () // procedimiento de configuración
{
pinMode (led, SALIDA); // indica que el LED es una salida
}
void loop () // procedimiento de bucle
{
si (analogRead (ldr)< 800) digitalWrite(led, HIGH);
// si el índice de iluminación es inferior a 800, encienda el LED
más digitalWrite (led, LOW); // de lo contrario apaga
}

Así es como se ve el modelo Arduino ensamblado con un fotorresistor:

Modelo listo para conectar un fotorresistor a Arduino

Si el LED no responde a los cambios en la iluminación, intente cambiar el número 800 en el programa, si está encendido todo el tiempo - disminuir, si no está encendido - aumentar.

Publicaciones de lecciones:

  1. Primera lección:
  2. Segunda lección:
  3. Tercera lección:
  4. Cuarta lección:
  5. Quinta lección:
  6. Sexta lección:
  7. Séptima lección:
  8. Octava lección:
  9. Novena lección:

Todas las publicaciones del sitio "Robótica entretenida" por etiqueta.

Nuestro Canal de Youtube donde se publican tutoriales en video.

Nuevos articulos

● Proyecto 13: Fotorresistor. Procesamos la iluminación mediante iluminación o extinción de leds

En este experimento, nos familiarizaremos con un sensor analógico para medir la iluminación: un fotorresistor (figura 13.1).

Componentes requeridos:

Un uso común de un fotorresistor es medir la iluminación. En la oscuridad, su resistencia es bastante grande. Cuando la luz incide en el fotorresistor, la resistencia cae en proporción a la iluminación. El diagrama para conectar el fotorresistor al Arduino se muestra en la Fig. 13.2. Para medir la iluminación, es necesario ensamblar un divisor de voltaje, en el que el brazo superior estará representado por una fotorresistencia, el inferior, por una resistencia ordinaria de una clasificación suficientemente grande. Usaremos una resistencia de 10k. Conectamos el brazo medio del divisor a la entrada analógica A0 del Arduino.

Arroz. 13.2. Diagrama de cableado de fotoresistor a Arduino

Escribamos un boceto de lectura de datos analógicos y enviándolos al puerto serie. El contenido del croquis se muestra en el listado 13.1.

Int luz; // variable para almacenar datos de fotoresistores configuración vacía ()(Serial.begin (9600);) bucle vacío ()(ligero = analogRead (0); Serial.println (ligero); retraso (100);)
Procedimiento de conexión:

1. Conectamos el fotorresistor según el diagrama de la fig. 13.2.
2. Cargue el boceto del Listado 13.1 en la placa Arduino.
3. Regulamos la iluminación del fotorresistor a mano y observamos la salida al puerto serie de los valores cambiantes, recordamos las lecturas con la iluminación completa de la habitación y con la superposición completa del flujo luminoso.

Ahora creemos un indicador de luz usando una fila de LED de 8 LED. El número de LED encendidos es proporcional a la iluminación actual. Montamos los LED de acuerdo con el diagrama de la Fig. 13.3 usando resistencias limitadoras de 220 ohmios.

Arroz. 13.3. Diagrama de cableado de fotoresistor y LED a Arduino


El contenido del esquema para mostrar la iluminación actual en la barra de LED se muestra en el Listado 13.2.

// Contacto para conectar LED const int leds = (3, 4, 5, 6, 7, 8, 9, 10); const int LIGHT = A0; // Pin A0 para entrada de fotoresistor const int MIN_LIGHT = 200; // Umbral de iluminación inferior const int MAX_LIGHT = 900; // umbral de iluminación superior // Variable para almacenar datos de fotoresistores int val = 0; configuración vacía (){ // Configurar pines LED como salida para (int i = 0; i<8 ;i++) pinMode(leds[i],OUTPUT); } bucle vacío ()(val = analogRead (LUZ); // Leer las lecturas del fotorresistor // Usando la función map () val = mapa (val, MIN_LIGHT, MAX_LIGHT, 8, 0); // restringimos para que no exceda los límites val = restringir (val, 0, 8); // enciende el número de LED proporcionalmente a la iluminación, // extinguir el resto para (int i = 1; i<9 ;i++) { if (i>= val) // enciende los leds digitalWrite (leds, ALTO); demás // apaga los LED digitalWrite (leds, BAJO); ) retraso (1000); // pausa antes de la siguiente medición }
Procedimiento de conexión:

1. Conectamos el fotorresistor y los LED según el diagrama de la fig. 13.3.
2. Cargue el boceto del Listado 13.2 en la placa Arduino.
3. Ajustamos la iluminación del fotorresistor a mano y determinamos el nivel de iluminación actual por el número de LED encendidos (Fig. 13.3).

Tomamos los límites inferior y superior de iluminación de los valores memorizados cuando realizamos el experimento en el boceto anterior (Listado 13.1). Escalamos el valor de iluminación intermedio en 8 valores (8 LED) e iluminamos el número de LED proporcional al valor entre los límites inferior y superior.

Listados de programas