Aduc7061 - Reading high impedance source into ADC1

This is regarding auxilary ADC (ADC1).  I am measuring single ended values in unipolar against ADC5 (which is connected to GND).

I had no problem reading a voltage with low impedance on ADC4/ADC5, but having difficulty reading ADC6/ADC5.  The only difference is that ADC4 is low impedance, while ADC6 source impedance is around 6K

ADC4 works:

=====================================================================

  ADCMSKI = 0;            // interrupts (ADC0RDY, ADC1RDY, -, ADC0OVR, ADC0CM_THRESH,-, ADC0ACC_THRESH)

  ADCFLT = 0x4F;           // Chop off, 100hz samping rate. No averaging.  also resets both ADCs

  ADCMDE = BIT7 + BIT1;           // [7]=512Khz, [4:3]=normal pwr, [2:0]=2 (single conversion)

  ADC1CON =   BIT15 +             // enable ADC1

                   BIT11 +                       // [11]=> ADC1CODE. ADC output coding. 1=unipolar,

                   BIT9+BIT8;               // [10:7]=> [0110] = ADC4/ADC5 (single-ended mode).  Low source impedance


  while ((ADCSTA & BIT1) != BIT1);   // bit 1 is ready bit for ADC1

  Vtemp = ADC0DAT;               // fake read to clear ADC1RDY

  Vtemp = ADC1DAT;

  Vtemp = Vtemp/65535 * 1.2;    // convert to voltage (internal ref = 1.2V)

But ADC6 does not:

=====================================================================

   ADCMSKI = 0;            // interrupts (ADC0RDY, ADC1RDY, -, ADC0OVR, ADC0CM_THRESH,-, ADC0ACC_THRESH)

  ADCFLT = 0x4F;               // Chop off, 100hz samping rate. No averaging.  also resets both ADCs

  ADCMDE = BIT7 + BIT1;           // [7]=512Khz, [4:3]=normal pwr, [2:0]=2 (single conversion)

  ADC1CON =   BIT15 +             // enable ADC1

                   BIT11 +             // [11]=> ADC1CODE. ADC output coding. 1=unipolar,

                   BIT9+BIT8+BIT7;          // [10:7]=> [0111] = ADC6/ADC5 (single-ended mode).  6K source impedance


  while ((ADCSTA & BIT1) != BIT1);   // bit 1 is ready bit for ADC1

  Vtemp = ADC0DAT;               // fake read to clear ADC1RDY

  Vtemp = ADC1DAT;

  Vtemp = Vtemp/65535 * 1.2;    // convert to voltage (internal ref = 1.2V)

I experience the following problems:

-- ADC4 affects ADC6 readings, even with 100ms delay in-between them

-- first reading is entirely diffrent than subsequent readings

-- readings are all over with 50% variations.  My source is very clean on oscilliscope

What do I have to do to measure a high impedance source?  I tried sampling down to 50Hz, chop on, averaging, delay between two reads.. but nothing works

Parents
  • 0
    •  Analog Employees 
    on Jan 7, 2011 6:05 AM

    The main problem is that you start conversion before you switch the input configuration. You first should set ADC1CON and than start the conversion via ADCMDE, otherwise the digital Sigma-Delta-Filter has still data from AIN4/5 input and it takes at least 1 sample-cycle to fill the filter-pipe with correct data.

    Another point to mention are the input voltage specifications as explained in Reading negative voltage with ADUC7060.

    To get AGND related, you can bypass the negative input buffer (AIN5 connected to AGND).

Reply
  • 0
    •  Analog Employees 
    on Jan 7, 2011 6:05 AM

    The main problem is that you start conversion before you switch the input configuration. You first should set ADC1CON and than start the conversion via ADCMDE, otherwise the digital Sigma-Delta-Filter has still data from AIN4/5 input and it takes at least 1 sample-cycle to fill the filter-pipe with correct data.

    Another point to mention are the input voltage specifications as explained in Reading negative voltage with ADUC7060.

    To get AGND related, you can bypass the negative input buffer (AIN5 connected to AGND).

Children
No Data