La resistencia de la foto está emitiendo una salida inestable, ¿cómo puedo solucionarlo?

0

Acabo de comenzar con Arduino, y para mi primer proyecto, necesito usar una resistencia fotográfica para obtener una lectura precisa de la luz ambiental en mi habitación.

El problema es que la resistencia fotográfica no emite una salida estable, incluso en una luz constante muy . Por ejemplo, en condiciones de luz diurna en mi habitación, el monitor de pin analógico muestra que la salida del resistor de foto varía de 70 a 80:

Este problema se vuelve aún más pronunciado cuando los niveles de luz son bajos: no puedo obtener una salida estable y precisa. ¿Qué puedo hacer para arreglar esto? ¿Es la forma en que estoy cableando la cosa? Avíseme si necesita información adicional y con gusto la proporcionaré.

Gracias de antemano.

    
pregunta J R

2 respuestas

1

No sé el motivo de la inestabilidad de la salida, pero estaría en una mejor posición para depurarla si entiende un poco más cómo funciona.

Lo que tienes es un divisor de voltaje formado por el fotoresistor y una resistencia de 220ohm. Si la resistencia del fotoresistor, en un punto dado, es R, el voltaje medido por el Arduino es 220ohm / (220ohm + R).

Si está oscuro, R podría ser bastante alto, digamos, 1Mohm, y la lectura será muy baja, del orden de 1 mV. Si es brillante, R será mucho más pequeño, digamos, 1k, y la lectura será del orden de 0.9V.

Sería bueno saber qué tipo de fotorresistor tiene para estimar su respuesta a diferentes niveles de iluminación, pero sin saberlo, aumentaría la resistencia inferior a 10 K y vería si tiene alguna mejora.

Primero, aumentará su señal y, por lo tanto, mejorará potencialmente la relación señal a ruido.

En segundo lugar, limitará la corriente a la luz brillante, lo que podría causar un calentamiento excesivo e inestabilidad (mencionado por glen_geek).

Basado en la curva, no veo ningún salto. Sería útil tener más datos y ver si hay algún patrón obvio.

Supongo que ha bloqueado el sensor manualmente y vio la respuesta cambiada (para asegurarse de que realmente está leyendo la salida del sensor, no de otro pin flotante). Si no, hágalo.

No estoy seguro de cómo se utilizan los dos LED que se muestran en la imagen, pero si, por algún motivo, los enciende, puede esperar que la salida del sensor de luz responda en consecuencia. En cualquier caso, tiene sentido desconectarlos, mientras está depurando el problema con el sensor.

También verificaría 5V: cualquier ruido en el suministro de 5V se traduciría directamente al ruido en la salida del sensor (reducido por el divisor).

Buena suerte con tu proyecto.

    
respondido por el V.F.
1

Como se señaló en los comentarios, muchos factores pueden afectar el nivel de la señal que está recibiendo: cambios mínimos en los niveles de luz reflejada en la habitación, vibración de la fotocélula, efectos térmicos, ruido eléctrico, etc.

Probablemente quieras filtrar la entrada en el software. Yo uso un simple filtro de un polo algo como esto; Puede intercambiar la velocidad de respuesta frente a la reducción de ruido fácilmente.

static int value = 0;
int raw = analogRead( A0 );
value = ((value * 15) + raw) / 16; // very smooth but slow to respond
//value = ((value * 3) + raw) / 4; // noisier but faster to respond

Esto dice, en cada paso a través del bucle, ponderar el resultado anterior en una gran cantidad y la nueva lectura en una pequeña cantidad, lo que suaviza los pequeños cambios en los niveles de luz.

También mencionaste:

  

También, una resistencia de 220 ohmios conecta el riel del resistor de foto al riel negativo en la placa de pruebas. No estoy seguro de por qué es necesario, pero todos los tutoriales especifican que esto es un deber.

Sin la resistencia fija, el 5V que entra en el fotoresistor no tiene otro lugar que el pin de entrada analógica, por lo que leería 5V independientemente del nivel de luz. La resistencia variable del PR combinada con la resistencia fija forma un divisor de voltaje que pone una variable Tensión en la entrada.

    
respondido por el Russell Borogove

Lea otras preguntas en las etiquetas