Quiero agregar un indicador LED simple que se encenderá cuando el LDR esté roto o algo así
En realidad, conducir el indicador LED es la parte fácil, por supuesto. Dependiendo de la salida de luz esperada del LED de "falla LDR detectada", es posible que no se necesite un transistor de accionamiento.
Para detectar que el LDR está "roto o algo así", debe decidir exactamente qué significa "roto o algo así", especialmente "algo". Solo he visto que los LDR fallan en circuito abierto (debido a elementos fracturados), pero puede haber otros modos de falla.
Aquí hay 2 enfoques rápidos, que puede investigar y modificar para adaptarse a sus restricciones generales de diseño:
Use un LDR cuya resistencia oscura aún pueda detectarse fácilmente como diferente de un "circuito abierto". De esa manera, aún esperaría obtener una salida de ADC por debajo del valor máximo, cuando se usa en ese divisor potencial con R1
.
Por ejemplo, usar un LDR con una resistencia oscura de 20 MΩ hace que esto sea mucho más difícil, especialmente si usa el ADC de 10 bits en su PIC16F877A. Mientras que un LDR con una resistencia en la oscuridad de 100 kΩ es mucho más fácil de distinguir de un circuito abierto, ya que no esperaría que el valor del ADC se acerque a su valor máximo incluso cuando el LDR está en la oscuridad.
O, más complejo, pero más flexible, puede probar el LDR usted mismo, en el intervalo que elija.
En ese segundo enfoque, hay varias variables que debe considerar y ajustar en su código, pero eso le permitirá cumplir un objetivo para probar que el LDR responde a la luz.
Voy a sugerir un pensamiento completamente diferente a considerar que se dirige tanto a la medición con el propósito de umbrales de encendido/apagado, como a la detección de casos abiertos y en cortocircuito para el LDR (roto o alguien tiene un destornillador que corta los contactos por alguna razón.) La idea también funciona casi completamente independientemente del comportamiento específico de LDR. Pero significa una modificación en su sistema de medición.
Me gustaría sugerir lo siguiente:
simular este circuito : esquema creado con CircuitLab
En primer lugar, ambos y cada uno estará, siempre, dentro del rango de medición de sus entradas ADC. En segundo lugar, su diferencia, , será una medida linealizada del comportamiento de resistencia exponencial del LDR a la luz. (Dicho de otra manera, los BJT toman el logaritmo de la corriente del colector y por lo tanto de la resistencia, porque eso es lo que el de BJT lo hacen por usted). Por lo tanto, puede ser "más agradable" en términos de cómo interpreta las cosas dentro de su software para los umbrales. ( y casi no tienen efecto en este comportamiento).
Si el LDR está abierto (o desconectado del circuito), entonces y y podrá detectar fácilmente este problema.
Si el LDR está roto-cerrado (o alguien clava un destornillador en los cables), entonces y se acortarán y limitarán el "daño" actual a aproximadamente y presente . Eso también es muy fácil de detectar con su software.
Ese es más el enfoque que probablemente tomaría. (A menos que me perdí algo serio, aquí.)
Coloqué el circuito anterior (menos las resistencias de protección contra cortocircuitos) en Spice usando un LDR simulado (que en este caso va de a plena luz para en plena oscuridad. El -eje es el logaritmo natural de la resistencia LDR. El -eje es . Estoy usando BJT no ideales (2N2222A y 2N3906) en .
Lo anterior muestra la linealidad que los BJT pueden conferir a sus mediciones de ADC. Debería ser muy simple escribir código para que pueda pedirle al usuario que "calibre", aplicando una luz brillante y luego cubriéndola en la oscuridad, para que su software pueda capturar el rango operativo para una mejor repetibilidad durante la operación.
Dicho esto, la compensación de la diferencia de voltaje variará con la temperatura de funcionamiento, ya que tanto los BJT (y también el LDR) tienen dependencias de temperatura. Ignorando el LDR por un momento, las variaciones de BJT de congelación a aproximadamente se parece a esto:
Entonces puede ver que puede experimentar un cambio de compensación suficiente sobre la temperatura lo suficiente como para que una calibración periódica de un punto pueda ayudar. (Simplemente cubriría el LDR para bloquear la luz y le diría al software que tome una medida que se usaría para corregir el extremo oscuro de la curva de calibración de dos puntos).
Sin embargo, los BJT pueden ser el menor de los problemas. El LDR también tiene una variación sustancial sobre la temperatura. Realmente no están diseñados para aplicaciones de luz/oscuridad de precisión. Por lo tanto, también debe tener eso en cuenta, y para mejorar su funcionamiento en varias temperaturas, es posible que necesite un sensor de temperatura (que usaría con un algoritmo de interpolación mejorado).
El punto principal que estaba tratando de transmitir es que el comportamiento exponencial de la resistencia LDR, con respecto a la luz, se puede linealizar fácilmente antes de que la MCU lo procese. Lo bueno de esto es que, en términos generales, existe una relación lineal entre el logaritmo de la resistencia LDR y el logaritmo de la luminancia. (Los seres humanos también tienen una especie de función de raíz cuadrada que llega en parte debido a la dilatación de la pupila, y esto agregará otro factor más a considerar).
PS En las gráficas anteriores, si toma elevado a la -valor del eje, obtendrá de la LDR.
Si "roto" significa que el LDR es un circuito abierto, entonces el voltaje en su entrada sería de 5V. Supervisaría esa situación en la entrada analógica y escribiría algún código para encender un LED.
Tenga en cuenta que está utilizando el LED para generar luz, no como sensor.
Dwayne Reid
broma
broma
Linh Trần Quang
broma
Dwayne Reid
Linh Trần Quang
broma
broma
Linh Trần Quang
broma
broma
broma
Dwayne Reid
Dwayne Reid
broma
broma