La lectura digital en arduino nano / atmega 328 siempre es 0 en un transistor bipolar

-1

{

//configurapuertoDDRD=0b0000000000;DDRC=0b0000000001;while(1){printf("lee\n");
    // activa sensor X 
    PORTD = 0b0000000100;
    _delay_ms(ESPERA_SENSORES);
    lectura_sensor_x = PINC & 0b0000000001;
    printf("lectura %d \n", lectura_sensor_x);
    _delay_ms(PAUSA_EN_LECTURA);
    //PORTD = 0b0000000000;
    //_delay_ms(PAUSA_EN_LECTURA);
}

}

Mi objetivo es alternar el nivel de voltaje en el emisor IR y el fototransistor, 0 a 5v , y leer el valor de voltaje entre la resistencia de tierra y 10k, solo cuando el pin D2 está alto .

Todo funciona bien sin la línea conectada al pin digital_read A0 (no ADC).

Los valores entre el suelo y la resistencia de 10 k son 0,8 V o 3,26 V cuando muevo un obstáculo en medio del emisor de infrarrojos y el fototransistor.

Cuando conecto el cable digital_read, el voltaje cae a casi 0, y la lectura en arduino_nano es siempre de 0 bits.

He habilitado y deshabilitado la resistencia de recuperación interna en A0 sin éxito.

¿Qué pasa?

Mi propósito de cambiar el voltaje en los componentes optoelectrónicos es aumentar su vida útil.

Como escribió @Chris Stratton, cambiar de alta / baja al emisor IR es casi suficiente para reducir el flujo de corriente a través del fototransistor.

Omití el transistor, conecté el fototransistor solo con una resistencia de 10k y detecté el nivel de voltaje en el punto transistor-resistencia.

Veo que, en el estado bajo del emisor de infrarrojos, la corriente a través del fototransistor se reduce al 11%. Esto es suficiente, creo, para enfriar el componente.

    
pregunta Ando

2 respuestas

2

Cuando D2 aumenta, establece un voltaje en la base de T1 y T1 está conectado como un seguidor de emisor, lo que significa que prácticamente todo lo que pones en la base se reproduce en el emisor, pero aproximadamente 0.7 voltios más bajo y esto es en gran medida independientemente de lo que tenga el seguidor del emisor como una señal variable en el colector.

Cuando D2 baja, se apaga T1 y verás 0 voltios en la resistencia de 10 kohm.

El T1 parece ser superfluo: si lo acortaste (y quitaste el D2 de su base), deberías poder leer la señal del colector del optotransistor directamente.

    
respondido por el Andy aka
2

Has configurado A0 como salida, y está bajando el emisor de T1.

  

A0 se define como entrada por este {DDRC = 0b0000000001;}

A0 es PC0 , y estás escribiendo un 1 a DDRC0 . Un 1 en DDRx significa salida.

    
respondido por el marcelm

Lea otras preguntas en las etiquetas