Usando Arduino para leer los datos de ADS1113

0

Tengo el ADS1113 ADC conectado al Arduino usando el protocolo I2C. Solo estoy tratando de leer los datos analógicos del ADC. Tengo 5 voltios conectados a las entradas AIN0 y AIN1. Cuando verifico el valor de Wire.endTransmission () sigo obteniendo un cero de vuelta, lo que significa que los datos se transmitieron con éxito. Sin embargo, cuando solicito 4 bytes, sigo recibiendo esto, incluso si cambio el voltaje en las entradas AIN0 y AIN1.

SoybastantenuevoenelusodeI2CyenaprenderaconfigurarICparticularesalleerlahojadedatos: enlace La Guía de inicio rápido se encuentra en la página 33 (Lo siento, intenté publicar una foto de lo que dice, pero no tengo la reputación suficiente para publicar más de dos enlaces ...).

Entonces, supongo que mi pregunta es, ¿cómo obtengo los valores de segundo y tercer byte? ¿O estoy completamente fuera de servicio y ni siquiera se supone que estoy leyendo los datos del registro de conversión?

#include <Wire.h>


void setup()
{
  Serial.begin(9600); 
  Wire.begin(); 

}

void loop()
{
  int sensorValue = analogRead(A0);             //compare to ADC data
  float voltage = sensorValue * (5.0 / 1023.0);
  Serial.println(voltage);
  Serial.println();

  Wire.beginTransmission(B1001000);         //Address of ADC
  Wire.write(1);                          
  int ack = Wire.endTransmission();       
  Serial.print("I2C = ");
  Serial.print(ack);                      
  Serial.println();
  delay(15); 

  Wire.requestFrom(B1001000,4,1); //Requesting 4 bytes 
  while(Wire.available()){
    float RAW = Wire.read();
    float RAW_voltage = (RAW*4.096/32768.0);
    Serial.print("Raw ADC value = ");
    Serial.print(RAW);
    Serial.print("\tVoltage = ");
    Serial.print(RAW_voltage);
    Serial.println();
  }
  delay(1000); 

}
    
pregunta Zach Stow

1 respuesta

0

¿Qué quieres decir con 4bytes? Su código es correcto y recibió todos los 4 bytes solicitados 1 por 1

este bucle se ejecuta cuatro veces y recibió todos los datos del esclavo I2c.

 while(Wire.available()){    



    float RAW = Wire.read();  <<--------------- at this line 
    float RAW_voltage = (RAW*4.096/32768.0);
    Serial.print("Raw ADC value = ");
    Serial.print(RAW);
    Serial.print("\tVoltage = ");
    Serial.print(RAW_voltage);
    Serial.println();
  }

Pero si sus valores de ADC no se modifican, significa que su sensor ADS1113 no está configurado / funcionando correctamente en primer lugar, verifique la salida de su sensor.

    
respondido por el Bhura

Lea otras preguntas en las etiquetas