Interruptor de alimentación de fotorresistencia para arduino, ¿se ve correcto?

editar: esquema cargado: soy un novato, este diagrama puede no ser correcto pero debería transmitir el intento.

Quiero encender un microcontrolador arduino cuando está oscuro.

Escribí un ejemplo en la pizarra y cargué el diagrama a continuación.

Fuerza

Usando una fotorresistencia y un transistor, planeo cambiar el lado alto que lleva energía al arduino desde un adaptador de 5v CC (eventualmente, un paquete de baterías).

LED

Planeo controlar la potencia de 5v a los LED a través de los puertos de salida del arduino y usar resistencias de 200Ω para regular la corriente en el lado de tierra.

Pregunta:

¿Cómo determino los valores de resistencia para R1 y R2? Soy nuevo en EE y la ley de ohm, lo siento.

¿Es mi lógica sólida? ¿Es esto terriblemente ineficiente?

Referencia

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Use la herramienta para dibujar un esquema, este es ilegible, asegúrese de proporcionar designadores para resistencias y transistores. Para saber qué R2 sería, también necesitaríamos saber a qué puerto del arudino va y una explicación detallada.
Parece que un extremo de su fotorresistencia no está conectado...
Es posible que un sensor de oscuridad no funcione bien a menos que esté bien aislado de las fuentes de luz LED que está controlando. Los fotorresistores recogen la luz de un área amplia.
Excelentes puntos, intentaré dibujar el diagrama usando una herramienta en línea. Tienes razón, conectaría el otro lado de la fotorresistencia a la tierra común. (Creo que esto es correcto)
Puede ser una mejor idea que Arduino controle el nivel de luz, para que pueda tomar sus propias decisiones inteligentes. Si le preocupa el consumo de energía, puede poner el Arduino en un modo de menor consumo de energía cuando no esté oscuro.
@Daniel esa era mi preocupación. Preferiría controlar el consumo a través del software, pero pensé que sería mejor apagar todo el dispositivo.

Respuestas (5)

Un problema como este se puede implementar con mayor precisión con un fotodiodo y un diseño TIA Op Amp o un "sensor de luz" activo. Los PD tienen tolerancias mucho más precisas que los LDR, por lo que no necesita un potenciómetro para ajustar.

Un solo transistor es un comparador que usa el voltaje de referencia Vbe, pero la ganancia no es muy alta en comparación con un comparador y el voltaje de referencia está sujeto a variaciones con la corriente de polarización, pero puede ser adecuado.

Luego, todo lo que necesita hacer es apuntarlo en la dirección correcta para evitar errores de luz nocturna y determinar los umbrales de encendido y apagado. En lugar de un detector de gran angular, puede ser un tubo estrecho de termorretráctil para bloquear la luz no deseada.

Si la luz reflejada detectada de una luz nocturna es más baja que la luz ambiental, entonces el diseño óptico del sensor es más simple.

Sugiero analizar los diseños existentes y encontrar cómo se discuten las tolerancias de error para comprender más. Luego estudie comparadores para umbral con histéresis. Las respuestas a estos dependen de sus búsquedas de palabras clave.

Un diseño simple debe cumplir con todos los requisitos de detalle, así que siga preguntándose qué es la tolerancia de entrada y salida, para que comprenda la tolerancia de la función de transferencia, donde importa. https://www.google.com/search?q=ldr+light+switch+design&num=50&client=firefox-b&tbm=isch&tbo=u&source=univ&sa=X&ved=2ahUKEwjk04r39dHcAhVH1qwKHSWRD3gQsAR6BAgBEAE&biw=818&bih=810

Me gusta la idea de superar la lectura variable del fotorresistor usando un mejor diseño de circuito para activarlo en una lectura de encendido/apagado... realmente admiro la habilidad de ustedes. Sin embargo, creo que eso es demasiado avanzado para mí en este momento :(
Marcaré esto como la respuesta, debido a que los detalles y mis necesidades cambian. Gracias por la explicación.

Daniel tiene un enfoque excelente: mantenga el microcontrolador encendido y vivo siempre.
Dado que un fotorresistor tiene una alta resistencia en la oscuridad, utilícelo para cargar un capacitor en uno de los pines de entrada del microcontrolador. Se cargará lentamente en la oscuridad, mucho más rápido cuando esté iluminado. Cualquier microcontrolador es muy hábil para medir este tiempo de carga.

esquemático

simular este circuito : esquema creado con CircuitLab


Quizás la fotorresistencia suba a 500Kohms a medida que se acerca la oscuridad. Si C1 comienza a cero voltios (descargado), su voltaje aumentará exponencialmente a aproximadamente 3V en medio segundo. En total oscuridad, el tiempo de carga será mayor.
Las corrientes de fuga del pin de entrada no se han tenido en cuenta, pero suelen ser bastante pequeñas.
Una vez que se ha detectado un nivel lógico alto en el pin de entrada, puede cambiarlo para que sea un pin de salida , de modo que C1 pueda volver a descargarse a cero voltios. Esto tomará alrededor de 500 microsegundos. Una vez descargado a cero voltios, el pin se vuelve a cambiar a un pin de entrada y se inicia un temporizador. Cuando el pin de entrada cambia de 0 lógico a 1 lógico, el temporizador se detiene; el tiempo tomado es una medida de "oscuridad".

También es posible usar el convertidor de analógico a digital del microcontrolador para medir la velocidad del aumento de voltaje en C1.

La mayoría de los microcontroladores tienen un estado de bajo consumo de energía que consume muy poca corriente de su suministro (V1). Si se va a minimizar el consumo de corriente del suministro, el microcontrolador puede pasar la mayor parte del tiempo dormido, despertándose de vez en cuando para probar la oscuridad. En este caso, C1 podría hacerse mucho más pequeño para minimizar el tiempo que tarda en aumentar su voltaje.
Mantenga LDR1 ópticamente aislado de las fuentes de luz LED.

El principal problema con su plan es que la resistencia del LDR cambia gradualmente a medida que cambia el nivel de luz, lo que significa que la energía suministrada al Arduino también cambiaría gradualmente. Lo que necesita es algo que se encienda completamente cuando está oscuro y luego se apague completamente cuando hay luz.

Puede conectar en cascada varias etapas de transistores para aumentar la ganancia. Use un PNP de potencia para la etapa final y omita R2... debe ser cero ohmios. Entiendo que es posible que este consejo no lo lleve a un circuito real, pero me temo que esto está un poco por encima de su cabeza.

correcto, creo que mi mejor apuesta es usar el lado del emisor como entrada para el arduino y controlar las salidas en función de un umbral de esa lectura. Luego deje el arduino encendido, sin cambiar.
No, Q1 debe ser un transistor PNP y su colector debe estar conectado al arduino. El emisor del transistor debe conectarse directamente al suministro de 5 V, sin resistencia en serie. Tendrás que invertir las conexiones del LDR para que la base del PNP quede baja en la oscuridad.

El enfoque de apagar el Arduino solo tiene sentido si está utilizando algo como un Arduino UNO o similar donde hay dispositivos (serie a USB) y LED indicadores que darían como resultado un consumo de corriente inevitable.

Si está utilizando solo el ATMega328P (sin chips auxiliares), tiene más sentido simplemente poner la MCU en reposo.

La lógica que propone usar el LDR con un transistor no funcionará bien, ya que el Arduino podría apagarse en cualquier momento (una consecuencia no deseada) si el nivel de luz cae (como una mano sobre el LDR). Tiene un control muy pobre a menos que tenga definidos puntos de histéresis definidos.

Sugeriría que necesita algún tipo de lógica en la entrada y sería mucho mejor usar un FET en lugar de un transistor como interruptor de encendido. Tal vez algo en este sentido:

esquemático

simular este circuito : esquema creado con CircuitLab

Aquí he sugerido un dispositivo TinyLogic, el NC7SV57 . Este dispositivo es configurable y se muestra aquí como una puerta NOR de 2 entradas que se utiliza para controlar la puerta de un FET de canal P.

La configuración del NC7SZ57 es la siguiente:

ingrese la descripción de la imagen aquí

La MCU utiliza la segunda entrada para garantizar que, una vez que haya encendido, pueda usar un pin DIO del Arduino para asegurarse de que el interruptor de encendido permanezca encendido (establezca el pin IO alto) hasta que decida cambiar el estado. Cuando el Arduino está apagado, R2 mantiene bajo este pin para que solo se use la entrada LDR.

También vale la pena leer sobre el uso de un LED como sensor óptico en una solución en la que puede poner la MCU en reposo. Esto tiene la ventaja de que no necesita amplificadores operacionales de alta ganancia, comparadores de nivel, LDR o fotodiodos. Todo lo que tiene que hacer es usar dos pines DIO para controlar uno de sus LED (un poco como un puente H). A continuación, puede utilizar un bucle de tiempo para determinar el nivel de luz.

ingrese la descripción de la imagen aquí

configuración vacía(){

Serial.begin (115200, SERIAL_8N1);

pinMode(7,INPUT_PULLUP); pinMode(2, SALIDA);

}

bucle vacío(){

if(analogRead(7) <= 450 ){ digitalWrite(2,HIGH);

}

más { digitalWrite(2,BAJO);

}

Serie.imprimir("a7="); Serial.println(analogRead(7));

}
Bienvenido a EE.SE. Hay un botón de formato de código {}en la barra de herramientas del editor. Edite su pregunta para formatear el código correctamente. También hay un botón de editor de esquemas que es fácil de usar y crea esquemas de apariencia profesional.
Seleccione todo el código y luego presione el {}botón de código. (Agrega cuatro espacios al comienzo de cada línea). Mire la vista previa antes de enviar la respuesta y corríjala si aún no es correcta. Elimina las líneas en blanco y sangra correctamente.
-1 Esta respuesta no aborda la pregunta original sobre el control de la energía del Arduino. Ni siquiera intentas explicar qué se supone que debe hacer el código. Finalmente, creo que su lógica es al revés... encenderá el LED cuando esté claro, no oscuro.