Estoy usando un PIC18F2550, un CNY70 y un 40106. (Esquemas a continuación)
El problema es que cuando enciendo el circuito, la primera vez que el CNY70 detecta que algo funciona perfectamente (tengo 1 led en cada salida B, excepto B0, que es la entrada de interrupción). Los LED se encienden por un tiempo muy corto y luego se apagan. Pero cuando intento hacerlo de nuevo, el voltaje de la salida CNY70 cambia la forma en que debe hacerlo, pero la salida 40106 solo cambia de 10mV a 100mV. Además, he cambiado el CNY70 y tengo el mismo problema. Revisé todas las conexiones varias veces pero no puedo encontrar nada malo.
Probé 3 configuraciones diferentes con el CNY70 y el 40106:
- Sin condensador:
Yo uso un PIC18F2550. El programa es muy simple, en este momento es solo para probar el sensor:
#int_EXT
void EXT_isr(void) {
output_B (0b11111110);
delay_ms (300);
output_B (0b00000000);
}
void main() {
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_1(T1_DISABLED);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
port_b_pullups(TRUE);
set_tris_b(0x01);
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
while(true){}
}
Pasos para reproducir el problema:
- Enciende el circuito
- CNY70 al aire (abierto). su salida es de 4.5V
- La entrada de 40106 es entonces de 4,5 V, por lo que la salida es de 0 V (10 mV). (B0 = 0)
- Ahora cubro el CNY70 (cerrar). Su salida es de 150mv.
- La entrada 40106 es de 150 mv, por lo que la salida es de 5V. (B0 = 1)
- Salida B1-B7 alta, encendiendo los 7 leds durante unos ms.
- Puse el CNY70 al aire de nuevo (abierto). su salida es de 4.5V
- La entrada 40106 es entonces 4.5V, por lo que la salida es 0V (10mv) (B0 = 0)
- Vuelvo a convertir el CNY70 (cerrar). Su salida es de 150mv.
- La entrada 40106 es entonces de 150 mv, PERO la salida es de solo 100 mv. (B0 = 0)