detectar un cambio en el estado del divisor de voltaje sin usar ADC

1

Estoy usando un fotoresistor para una configuración de cable de disparo por láser para detectar movimiento. Me faltan un poco los canales adc, así que me gustaría usar un GPIO simple para leer el estado del fotoresistor ckt. Estoy buscando algo que me dará un ALTO si el láser se dispara y BAJO si no lo está. ¿Alguna idea?

    
pregunta anujdeshpande

2 respuestas

7

Para lograr una entrada de nivel lógico utilizando un fotoresistor, se debe conocer lo siguiente:

  • Resistencia del fotoresistor en estado iluminado y no iluminado: use un multímetro para averiguarlo.
  • Voltaje de umbral "alto" de nivel lógico GPIO para el microcontrolador en cuestión: la hoja de datos generalmente proporciona esto.
  • Supuesto: El GPIO es una entrada de alta impedancia: la mayoría de los microcontroladores modernos son.

Una vez que se conocen los valores anteriores, un divisor de voltaje adecuado servirá como un disparador basado en el nivel para el fotoresistor.

Para disparar un ALTO si el láser se "dispara", es decir, oculto, este fotorresistor hipotético debe cablearse en el lado de tierra del divisor de voltaje, con una resistencia fija en el lado Vcc, y el pin de entrada GPIO conectado al Unión de estos dos resistores.

Aquí hay algunos valores asumed , para ilustrar los cálculos:

  • Vcc del circuito: 5 voltios
  • valores de la fotorresistencia:
    • 1 kOhm cuando está iluminado por el láser
    • 1 MOhm cuando no está iluminado
  • Umbrales de puertos IO (de la hoja de datos ATmega328):
    • LOW es < 0,3 Vcc, es decir, < 1.5 voltios
    • ALTO es > 0.7 Vcc, es decir, > 3.5 voltios
    • Los valores intermedios no están definidos, por lo que GPIO podría leer de cualquier manera.

Si seleccionamos 100 kOhm para la resistencia fija, entonces el voltaje en la unión será ...

  • Cuando está oculto: 4.55 voltios = ALTO
  • Cuando está iluminado: 0.495 voltios = BAJO

Ambos valores dejan un margen suficiente para un disparo confiable del nivel lógico en el pin GPIO, por lo que se logra la solución requerida.

    
respondido por el Anindo Ghosh
4

Una técnica barata para medir una resistencia variable sin un ADC es ver cuánto tiempo se tarda en cargar un condensador a través de él. Conecte el condensador a uno de sus pines IO. Inicie un temporizador y luego cargue el condensador a través de su resistencia variable. Cuando cambie el estado del pin IO, lea el temporizador. Ese número es proporcional a la resistencia.

Así es como funciona el puerto del juego para los joysticks pre-USB.

    
respondido por el Phil Frost

Lea otras preguntas en las etiquetas