ADuC7020 ADC error

void Adc_Interrupt(void)
{
AdCnvDat[0] = (ADCDAT>>16) & 0xfff;
return;
}

float GetADC(void)
{
return (float)AdCnvDat[0];
}

void application(void)
{
while (1)
{
  if(TICK)
  {
   printf("RAW : %d\t VOLT : %4.2f\r\n",(int)GetADC(),Conv_hex_to_vot(GetADC())*2);
   TICK = 0;
  }
}
}

----------------------------------------------------------------

Input : DC Supply

R1, R2 are various

Blue line in image(in excel) is measured by multi-meter and Red line is (printed) ADC value.

I wonder why 0 value at lower 30% ~ 40%.

Sorry for my poor English.

Parents
  • 0
    •  Analog Employees 
    on Mar 22, 2011 5:19 AM

    I assume your multi-meter has a high impedance input, the ADuC702x ADC not - you need to provide a good Op-AMP in front of it, as on the Evaluation-Boards you can i.e. use a AD8606 or the single AD8605. Please also read the data-sheet pages 41 to 46 - specifically page 45 "Analog Input Structure" carefully. Also you can improve the performance by increasing the acquisition-time of the ADC - Bit 8 & 9 in the ADCCON MMR. Further you may get best results with a "CALIBRATION" as explained on page 46.

Reply
  • 0
    •  Analog Employees 
    on Mar 22, 2011 5:19 AM

    I assume your multi-meter has a high impedance input, the ADuC702x ADC not - you need to provide a good Op-AMP in front of it, as on the Evaluation-Boards you can i.e. use a AD8606 or the single AD8605. Please also read the data-sheet pages 41 to 46 - specifically page 45 "Analog Input Structure" carefully. Also you can improve the performance by increasing the acquisition-time of the ADC - Bit 8 & 9 in the ADCCON MMR. Further you may get best results with a "CALIBRATION" as explained on page 46.

Children
No Data