Enchufar un LDR en los pines GPIO de una Raspberry Pi

12

Quiero conectar un LDR a los pines GPIO de mi Raspberry Pi, sé que Raspberry Pi no tiene un convertidor analógico a digital, así que lo que quiero hacer es señalar una señal ALTA (3.3v) en el GPIO cuando hay baja resistencia en el LDR (algo por debajo de 200 ohmios) y una señal BAJA cuando la resistencia del LDR es alta (por encima de 2k, por ejemplo). La corriente máxima que puedo extraer de forma segura de los pines GPIO de la Raspberry Pi, de acuerdo con la documentación, es de 50 mA, ¿cómo calculo la resistencia necesaria? ¿Necesitaré agregar una resistencia pull up / down también? No tengo una idea clara sobre cómo hacerlo de manera segura sin quemar mi procesador.

Me imagino que también tengo que enchufar una resistencia en el circuito para asegurarme de que siempre tenga resistencia cuando el LDR está en un estado de resistencia muy baja.

Actualización : funcionó bien, construí el circuito y se muestra en esta publicación , gracias por la ayuda.

Tarántula
fuente
1
"La histéresis de entrada GPIO (disparador Schmitt) puede estar activada o desactivada, la velocidad de respuesta de salida puede ser rápida o limitada, y la corriente de fuente y sumidero se puede configurar desde 2 mA hasta 16 mA". El 50mA es el consumo máximo del pin 3V3.
Ignacio Vazquez-Abrams

Respuestas:

13

La mejor manera de hacer esto sería usar un transistor como comparador para hacer la transición nítida.
Aquí hay un circuito de ejemplo:

LDR

Utiliza el LDR como la parte superior de un divisor de voltaje. Cuando la resistencia LDR cae, el voltaje en la base del transistor aumenta y lo enciende. El transistor puede ser cualquier NPN de uso general.
Podemos calcular el valor de la resistencia en función del paradero en el que queremos que ocurra el encendido.

Digamos que las resistencias LDR van de 200Ω (oscuro) a 10kΩ (oscuro). Queremos que el transistor se encienda cuando el LDR esté a 5kΩ. El suministro (V +) está a 3.3V. Un transistor NPN típico se enciende a aproximadamente 0.7V, así que si lo hacemos:

5,000 * (0.7 / 3.3) = 1060Ω necesarios para la resistencia base. Podemos elegir una resistencia de 1kΩ ya que está lo suficientemente cerca. Ajuste sus valores para adaptarse a su punto de encendido.

Aquí hay una simulación del circuito:

Sim LDR

El eje horizontal es la resistencia LDR, y la línea azul es el voltaje en el punto Vout (debe conectarlo al pin de entrada Rpi; debe configurarse como entrada. Puede agregar una resistencia de 1kΩ entre Vout y el pin Rpi para protegerlo). en caso de ajustarlo accidentalmente a la salida) Podemos ver que el transistor se enciende a aproximadamente 5kΩ como se predijo (no será exacto ya que el voltaje del emisor base del transistor variará con la temperatura, etc., pero lo suficientemente cerca para sus propósitos)

Tenga en cuenta que la salida del transistor es baja cuando es clara y alta cuando está oscura, puede cambiar el LDR y la resistencia y usar 5,000 * (3.3 / 0.7) = 23.5kΩ para la resistencia si lo desea al revés, esto es En realidad, una mejor configuración ya que consume menos corriente (debido a las resistencias más altas), así que si eso es importante, use esta versión.

Oli Glaser
fuente
Convenido. Iba a sugerir un comparador de amplificador operacional pero luego pensé que era excesivo. No se me había ocurrido la solución simple de usar un transistor como interruptor.
Ignacio Vazquez-Abrams
2
Eso es exactamente lo que necesito, lo haré, muchas gracias por la respuesta, es bastante sorprendente que podamos construir este sigmoide para controlar los niveles lógicos, nunca hubiera imaginado algo así, gracias por dedicar tu tiempo para escribir esto
Tarántula
@Tarantula: no hay problema, me alegra ayudar.
Oli Glaser