Tengo alrededor de 100 LED infrarrojos, cada uno con un fototransistor adyacente para detectar pequeñas diferencias en la distancia de varios objetos ( QRE1113 ).
Como los materiales de los objetos difieren, quiero poder calibrar la intensidad de cada emisor por separado para compensar esto. Como la salida de cada fototransistor se mide con una frecuencia de muestreo muy alta (~50 ksps), no puedo usar un controlador PWM, ya que normalmente funcionan alrededor de 20 kHz, por lo que necesitan controlar directamente el flujo de corriente a través de cada emisor IR.
Como me gustaría hacer esta fase de calibración sobre I2C, mi idea fue usar un potenciómetro digital como el MCP4451 como reóstato. Tiene 4 canales, por lo que pensé en usarlo como resistencia limitadora de corriente para 4 LED. Si bien esto es atractivo por un lado (precio bajo, configuración sencilla), veo dos problemas principales:
Todos los potenciómetros digitales asequibles tienen un rango de al menos 5kΩ. Necesito un rango de alrededor de 400Ω. Al usar una resistencia paralela, podría ajustar el rango, pero el rango resultante ya no sería lineal. Si bien no se requiere una linealidad perfecta, quiero poder hacer ajustes razonables en todas las regiones, y no solo en el extremo de bajo amperaje.
Eficiencia. Estoy manejando todo esto desde una fuente de 5V, y sin hardware de calibración pude poner 3 LED en serie con una resistencia. Por lo tanto, el consumo de energía promedio por LED fue de alrededor de 30 mW, lo cual es excelente. Con este enfoque, cada LED se mantendría solo con su resistencia, lo que generaría 100 mW adicionales de calor para el funcionamiento del LED a 30 mW.
En el siguiente gráfico, puede ver la relación resultante de la configuración del limpiaparabrisas del MCP4415 con la resistencia total resultante y la corriente directa del LED. Los cálculos son para usar una resistencia de 680 Ω en paralelo y una de 68 Ω en serie (para establecer el máximo):
Circuito relacionado:
simular este circuito : esquema creado con CircuitLab
Mi principal problema es definitivamente el limpiaparabrisas no lineal a la relación de resistencia, la eficiencia es solo una consideración secundaria. Estoy abierto a cualquier solución, pero no puedo permitirme un controlador LED dedicado para cada LED, ya que mi presupuesto es limitado, por lo que el MCP4415 me pareció una solución atractiva (~25 € para controlar todos los LED).
EDITAR: Quiero aclarar algunos aspectos:
EDIT 2: Respuestas adicionales a las preguntas de los comentarios.
En primer lugar, permítanme aclarar que este no es un proyecto comercial, sino solo un proyecto personal. Además, soy informático y no ingeniero electrónico, así que tenlo en cuenta. (Por lo tanto, no hay especificaciones que deba seguir). Estoy abierto a cualquier sugerencia.
Mostrar aplicación. ¿Y qué distancia y rango de reflectividad?
Los objetos están hechos de madera y no se pueden pintar ni modificar. Por lo tanto, la reflectancia varía según los diferentes objetos (puntos oscuros, etc.).
Lo más cercano posible es alrededor de 3 mm (+- 1 mm), lo más lejos es alrededor de 13 mm (+-2 mm). Entonces, la distancia de viaje será de alrededor de 9-10 mm para cada objeto. Todo es madera, por lo tanto todas las medidas tienen estas altas tolerancias. El PCB ya está en el punto más alejado de los objetos. Probablemente no pueda cambiar estas distancias (tal vez -+ 1 mm).
Tengo ADC de 12 bits que miden los fototransistores y solo quiero desperdiciar la menor precisión posible. Por lo tanto, quiero ajustar el LED IR para que el punto cercano (3 mm) tenga aproximadamente el mismo valor ADC para todos los objetos. Aproximadamente igual es todo lo que necesito: simplemente no quiero que un ADC mida 3000 en el punto cercano y otro mida 3500. Los puntos lejanos no son importantes.
Básicamente, ha realizado algunas interpretaciones deficientes de la hoja de datos, suposiciones y, por lo tanto, malas elecciones. hFE=CTR (efectivo) = IcON/If varía de 0,2 % a 0,9 % a 10 mA a 1 mm utilizando un espejo de alumbre pulido. ¿Cuál es su especificación de tolerancia al error? ¿Y qué variación en la altura de la viruta? 0,1 mm máx. 0,05 mm?
Ya veo, esta es también la razón por la que quiero poder hacer la calibración. Toda la información de tolerancia que pude recopilar se encuentra arriba.
Con respecto a la altura del chip: tengo que soldar a mano todos los chips, así que suponga un pesimista de 1 mm.
¿Dices 3 IR en serie pero luego 1 R por LED IR? ¿No muestra ninguno en serie?
Lo siento si no he sido claro. Quise decir una resistencia por 3 LED en serie, este es el diseño actual (abajo). Lo que quise decir es que no puedo ponerlos en serie si quiero controlarlos por separado.
En total tengo 90 sensores, por lo que este patrón se repite 30 veces.
¿Qué tal una fuente de corriente OPAMP alimentada por un voltaje variable modulado de PWM?
simular este circuito : esquema creado con CircuitLab
La idea es hacer que el OA1 regule la corriente de una manera que haga que el voltaje en Rsense sea igual a Vin, haciendo así que la corriente a través del LED sea proporcional a Vin. OA2 actúa como un amplificador de búfer para ese voltaje variable que puede ser generado por PWM y filtrado a cuasi-DC.
OA2 proporciona una forma de modular Vin con su señal digital Vmod. La modulación se invierte: cuando Vmod es alto, Vin cae a cero, mientras que Vmod = 0 hace que Vin se establezca proporcionalmente al ciclo de trabajo de PWM.
david tweed
Tony Estuardo EE75
marcelmo
nironio