Por qué MCP 3402 ADC no muestra el valor correcto

0

Estoy usando el ADC MCP3204 con mi Arduino. El chip funciona con 5V de mi PSU LM338. Como no tengo una referencia adecuada a mano, también uso la tensión de alimentación como Vref. Cuando le doy 5V, muestra 4093, que es una deflexión total de ADC de 12 bits. El voltaje lo dividí a 2.5V con dos 10k, entonces es 1757. Lo verifiqué con mi DMM y es 2.513 ... ¿eh? Apesto en matemáticas pero estoy seguro de que no es la mitad de 4093.

código original en C del tutorial enlace

uint16_t ReadADCEx(uint8_t ch) {    uint8_t byte,data_high,data_low;

   byte=0b00000110;

   if(ch>3)
      byte|=0b00000001;

   CS_LOW();

   SPIWrite(byte);

   byte=ch<<6;

   data_high=SPIWrite(byte);

   data_high&=0b00001111;

   data_low=SPIWrite(0xFF);

   CS_HIGH();

   return ((data_high<<8)|data_low); }

Mi arduino eqivulent

#include<SPI.h>
const int ssPIN = 10;
void setup() {
  // put your setup code here, to run once:
  pinMode(ssPIN,OUTPUT);
  SPI.begin();
  Serial.begin(9600);
}
uint16_t ReadADCValue(uint8_t ch)
{
    uint8_t value,data_high,data_low;

  //active MCP3204
  digitalWrite(ssPIN,LOW);
  value = 0b00000110;
  SPI.transfer(value);
  value= 1 << 6;
  data_high=SPI.transfer(value);
  data_low=SPI.transfer(0xFF);
  digitalWrite(ssPIN,HIGH);
   return ((data_high<<8)|data_low);
}

void loop() {
Serial.println(ReadADCValue(1));
delay(1000);
}
    
pregunta Ageis

1 respuesta

0

Los ADC generalmente tienen topes de muestra de 15 o 20pF. Pruebe una tapa de 1000pF desde el nodo divisor a tierra para reducir la impedancia de la fuente que controla el ADC.

    
respondido por el gsills

Lea otras preguntas en las etiquetas