Seleccione el canal del multiplexor para mostrar los valores de temperatura en la programación de c

-1

Tengo una pregunta sobre la selección del canal desde el multiplexor. Estoy tratando de recibir una lectura de la temperatura de los dos sensores que compartían la misma dirección y mientras uso un sensor, puede funcionar perfectamente. Sin embargo, cuando intenté fijar el segundo sensor en el circuito y editar el programa, no funciona. ¿Puede alguien ayudarme?

Aquí está el código cuando comienza a leer:

void readSensor(void) {
int ch;
TWI_init_master();
for (ch=0; ch<2; ch++) 
{
TWI_start();
TWI_write_address(0xE0); // set multiplixer
TWI_write_data(0); // disable all ch    
    TWI_write_data(ch+1); // enable  ch-ch+1
    TWI_stop();
    delay100us(1);
    TWI_start();
    TWI_write_address(0x14);// writing to sensor
    TWI_write_data(0x4C);// asking for data
    delay100us(1);
    TWI_repeated_start();// restart
    TWI_read_address(0x15);// read

    if (ch==0)
    {
        for(i = 0; i < 34; i++) {
        TWI_read_data();//geting data
        readbuff[i] = recv_data;
        }

        if(!(D6T_checkPEC(readbuff, 34))) {
            writeChar(0x50, USB);
            writeChar(0x50, USB);
            writeChar(0x50, USB);
        }
        else
        {
            for(i = 2; i < 34; i++) 
            {
                temp = readbuff[i];
                writeChar(temp, USB);
                delay100us(1);
            }                       
        }
    }
    else if (ch==1) 
    {

        for(i = 0; i < 34; i++) {
            TWI_read_data();//geting data
            readbuff2[i] = recv_data;
        }
        if(!(D6T_checkPEC(readbuff2, 34))) {
            writeChar(0x50, USB);
            writeChar(0x50, USB);
            writeChar(0x50, USB);
        }
        else
        {
            for(i = 2; i < 34; i++) 
            {
                temp = readbuff2[i]; //readbuff 2 is defined for sensor 2, its just another array    
                writeChar(temp, USB); // Send data to the real term
                delay100us(1);
            //  delay10ms(10);  
            }
        }
    }
    TWI_stop();
    delay100us(10);
//  delay10ms(10);  
//TWI_repeated_start();// restart
//TWI_stop();   
}
//TWI_stop(); }

¡Gracias!

    
pregunta user38577

2 respuestas

1

Estos sensores utilizan una interfaz I2C y tienen una dirección codificada. No puedes usar dos de ellos en el mismo bus I2C. Deberá crear un bus I2C eléctricamente separado para cada sensor, con distintas líneas SDA y SCL.

    
respondido por el Joe Hass
0

Sí, he usado un multiplexor para conectarlos.

Heusadoestediagramaesquemáticoparaguiarmeatravésdelsegundosensor.

Elmultiplexorqueestoyusandoseindicaeneldiagrama,PCA9548A(8canales).Lahojadedatos: enlace

    
respondido por el user38577

Lea otras preguntas en las etiquetas