¿Puedo crear una matriz multiplexada de fotodiodos IR?

Me gustaría usar un Arduino para leer de una gran cantidad de fotodiodos IR. He visto esta pregunta: ¿Cómo usar el fotodiodo IR SFH235 correctamente? y me gustaría usar una técnica similar al circuito de la izquierda:

ingrese la descripción de la imagen aquí

Sin embargo, no solo estoy tratando de leer de un fotodiodo. Tengo una gran cantidad de fotodiodos dispuestos en una cuadrícula. Me gustaría poder leer desde esta cuadrícula con el esquema de cableado más simple posible. Pensé que podría ser posible usar un esquema similar al que se usa a menudo para las rejillas de LED:

ingrese la descripción de la imagen aquí

D1,2,3 representan pines digitales. Operaría esto configurando, por ejemplo, D1 en salida BAJA y los otros dos en alta impedancia. Mi esperanza es que esto esencialmente "desactive" la segunda y tercera columna de fotodiodos (ya que sus ánodos están efectivamente desconectados), y podría usar los ADC para leer solo la primera columna. Luego cambiaría los pines digitales para activar la segunda columna, luego la tercera, etc.

esto funcionara? Originalmente me preocupaba que el estado de alta impedancia del Arduino tuviera demasiadas fugas, pero este enlace sugiere que es equivalente a una resistencia de 100 Mohm.

Aparte: soy un aficionado, realmente no tengo un buen conocimiento del comportamiento de los fotodiodos, por lo que me resulta difícil razonar sobre situaciones como esta. También tuve problemas para encontrar modelos SPICE para fotodiodos, por lo que realmente no pude simular esta configuración. ¿Alguien tiene sugerencias sobre recursos introductorios accesibles para fotodiodos o modelos SPICE?

Creo que quieres cambiar la posición del diodo y la resistencia de 1Meg en la primera imagen. Piense en el fotodiodo como una fuente de corriente. (Pero tiene un cumplimiento realmente terrible.... <0.5V) Con el diodo en la parte superior de la primera imagen, los 5V polarizan inversamente el diodo y la resistencia convierte la corriente en voltaje. (Si tiene mucha luz, es posible que deba reducir el valor de la resistencia). Está bien, puede dejar la orientación como está... pero hay un cambio en el signo... 5V = sin luz.

Respuestas (2)

La estructura de multiplexación básica se veía superficialmente bien. Sin embargo, los comentarios de Kevin señalaron que, tal como está dibujado, no funciona bien. Cuando están sujetos a la luz, los fotodiodos tienen una corriente definida en todos los voltajes, con polarización directa o inversa, por lo que no se pueden conectar directamente como lo sería una matriz de diodos 'adecuados' como los LED.

Puede salvar el concepto de matriz agregando un solo diodo de pequeña señal en serie con cada fotodiodo, un diodo 'adecuado' como 1N4148, para conducir la fotocorriente hasta la línea D de multiplexación. La caída de voltaje en este diodo tiene poca importancia para la precisión, ya que la fotocorriente desarrolla un voltaje en la resistencia de 1M, esto es lo que está midiendo con el ADC. La caída del diodo cambia la polarización inversa en el fotodiodo, por lo que una dispersión de estos aumentará ligeramente la falta de coincidencia entre los diodos. Sin embargo, el uso de polarización inversa variable y los ADC internos de Arduino me indican que la precisión no es el punto de especificación más importante con el que está trabajando.

Para multiplexar las filas, tome cada salida D 'apagada' a 5v. Esto invertirá la polarización de todos los diodos de silicio y aislará los fotodiodos.

No olvide programar las entradas del ADC para una oscilación de 5 V y realice una lectura adicional para vaciar la tubería después de cambiar las filas.

Sin embargo, el rango de la mejor sensibilidad a la luz será algo limitado. Con las resistencias de polarización fijas de 1M, la mejor sensibilidad será de alrededor de 2,5v y 2,5uA. Se leerá desde la oscuridad hasta la luz del sol, pero la resolución en los extremos del rango se comprimirá.

Puede usar pines Dout adicionales para cambiar las resistencias de valor más bajo/más alto al sesgo para cambiar el rango más sensible a otros niveles de luz. Solo un pensamiento.

Gracias, esto suena como una buena solución. Sin embargo, estoy un poco confundido: si el fotodiodo tiene una corriente específica cuando está iluminado, ¿dónde fluye esa corriente cuando aíslo el fotodiodo al llevar las líneas D a +5? ¿Hacia dónde fluiría si el fotodiodo no estuviera conectado a nada?
La fotocorriente está en una dirección tal que polariza directamente el fotodiodo para que la corriente fluya hacia el propio fotodiodo. Debe tener en cuenta el hecho de que el fotodiodo tendrá aproximadamente ~ 0,5 V de polarización directa al determinar la cantidad de polarización que necesita para apagar los diodos de matriz. Si espera fotocorrientes muy bajas, es posible que 1n4148 no sea lo suficientemente bueno ya que su fuga puede ser demasiado alta. ¡También es posible que deba mantenerlos en la oscuridad para evitar que generen su propia fotocorriente!
Utilicé la solución sugerida aquí (colocar cada fotodiodo en serie con un diodo de pequeña señal "adecuado"), y terminó funcionando muy bien para mí.
@Geo Sí, D1, 10 y 14 estarán activos al mismo tiempo, por lo que cada uno se lleva a su propio canal de medición de voltaje y resistencia. Podrían multiplexarse ​​en un solo canal, pero esto requeriría algún hardware de multiplexación, más de lo que se muestra en el diagrama del OP. Como siempre con muxing, es una compensación en velocidad y complejidad. A menudo, ajusta el esquema a los componentes disponibles, y no al revés. El Arduino tiene varios canales de entrada ADC, por lo que el OP los usa. Internamente, es un ADC que está multiplexado entre ellos, por lo que también tenemos su esquema.

No, eso no funcionará.

¿Cómo deshabilita los fotodiodos que no desea detectar?

Solo puede polarizarlos hacia adelante, en cuyo caso conducen y afectan la salida del diodo que desea detectar, o los polariza hacia atrás y la fotocorriente de todos los diodos se suma.

Para usar un fotodiodo para detectar la luz, debe polarizarlo inversamente y detectar el flujo de corriente. Todos los diodos conectados a una entrada ADC en particular agregarán su propia contribución actual.

O necesita usar una entrada analógica separada para el microcontrolador o puede expandir la cantidad de entradas con un multiplexor externo como un 74HC4051.

¡Dijo HiZ los pines que no quería leer!
Sí, pero tiene varios diodos conectados a ese pin Hi-Z. Obtendrá corrientes que fluyen a través de la interconexión común. Si tiene un diodo por pin, eso funcionaría.
Tienes razón, eso fue tonto de mi parte. Sin embargo, la estructura de matriz básica se puede arreglar a bajo costo, con toda la buena escalabilidad que eso significa, sin recurrir a multiplexores externos. He arreglado mi respuesta.