Estoy tratando de trabajar con la matriz de fotodiodos lineal TSL202R pero no puedo obtener la salida del pin AO para cambiar. Sospecho que el chip se ha dañado o que no estoy proporcionando las señales de entrada de reloj y serie correctas. Sin embargo, no sé cómo aislar y probar ninguno de estos.
He visto tutoriales de Arduino para el TSL201R, pero nada para el TSL202R. Desafortunadamente, las formas de onda operativas para estos dos chips no son las mismas.
Soy bastante nuevo en electrónica, por lo que puedo estar cometiendo errores simples. Sin embargo, describiré lo que he hecho y lo que estoy observando.
El chip se ha conectado según la Fig. 5 de hoja de datos . Estoy alimentando el chip con 4 baterías recargables AA (5-5.3V en el voltímetro), proporcionando las señales CLK y SI con un Arduino Yun, y leyendo la salida con un multímetro.
A continuación se muestra un diagrama de circuito con todo lo que se muestra.
A continuación se muestra el código Arduino que estoy usando:
int CLKpin = 4; // <-- Arduino pin delivering the clock pulses to pin 3 (CLK) of the TSL1402R
int SIpin = 5; // <-- Arduino pin delivering the SI (serial-input) pulse to pin 2 of the TSL1402R
void setup()
{
// Initialize two Arduino pins as digital output:
pinMode(CLKpin, OUTPUT);
pinMode(SIpin, OUTPUT);
digitalWrite(SIpin, LOW);
digitalWrite(CLKpin, LOW);
// Initialize photodiode array
digitalWrite(SIpin, HIGH);
delay(5000);
digitalWrite(CLKpin, HIGH);
delayMicroseconds(10);
digitalWrite(SIpin, LOW);
digitalWrite(CLKpin, LOW);
for(int i=0;i< 128;i++)
{
ClockPulse();
}
}
void loop()
{
// integration time
delay(100); // milliseconds
// start the output cycle
digitalWrite(SIpin, HIGH);
delay(5000);
digitalWrite(CLKpin, HIGH);
delayMicroseconds(10);
digitalWrite(SIpin, LOW);
digitalWrite(CLKpin, LOW);
// cycle through all pixels
// send clock pulse to make the voltage of the next pixel available
for(int i=0;i< 128;i++) {
delayMicroseconds(100);// <-- We add a delay to stabilize the AO output from the sensor
ClockPulse();
}
}
// This function generates an outgoing clock pulse from the Arduino digital pin 'CLKpin'. This clock
// pulse is fed into pin 3 of the linear sensor:
void ClockPulse()
{
delayMicroseconds(10);
digitalWrite(CLKpin, HIGH);
delay(200);
digitalWrite(CLKpin, LOW);
delay(200);
}
Los retrasos son largos, por lo que puedo registrar los cambios en el multímetro. Creo que están bien, siempre y cuando cumplan con los requisitos de tiempo mínimo de la Fig. 2.
Algunas observaciones que he hecho al sondear con un multímetro:
- RL es una resistencia de 470 ohmios, pero cuando se coloca en el circuito, el multímetro registra 15 megaohmios que nunca cambian en ningún momento durante la operación. Creo que esta es la parte Hi-Z del circuito que se muestra en la Fig. 1. Sin embargo, mi conocimiento de impedancia se limita a que no estoy seguro de si esto es correcto.
- Se supone que SO1 debe ir a 5 V después del 64. ° pulso de reloj como en la Fig. 2. Sin embargo, el multímetro no registra ningún impulso de 5 V en ningún momento durante la operación.
- AO es aproximadamente 0.7-1 V (es ligeramente diferente cada vez que conecto el circuito), mientras que en la parte inferior de la página 2 se indica que la salida debe ser 0 sin luz, 2 V para luz de nivel de blanco normal y 3.4 V en saturación. No puedo hacer que AO cambie durante la operación, ya sea iluminando la luz de mi teléfono celular o ocultándola con la mano de la luz de la habitación.
Cualquier consejo o truco para averiguar qué está pasando sería muy apreciado. Lo que sería especialmente útil es una prueba simple para ver si el chip ha sido dañado.