This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADS1234 - DATA OUTPUT

Other Parts Discussed in Thread: ADS1234

Hi,

I am trying to use ADS1234 to measure the output of a load cell.currently an avr uc is used to read data from the ADS and send it it PC.

Now my question are ,

1)if  i short  AINP1 to AINN1(currently only one channel is used) what will be the output? i expected  it to be 0 or something near to zero as these are differential input.But my output doesn't support my assumption.

2)What is the impedance of the input channel. Is there need any impedance matching circuit between ADS and the load cell?

The following hardware setup is used

DVDD-3.3V

AVDD-5V

REFP-5V

REFN-0

SPEED-0

GAIN-128

Many Thanks

Priyesh

  • Hi Priyesh,

    Welcome to the forum! For the answer to question one, at a gain of 128 you need to bias the short so that it is within the input range of the ADS1234.  This is at least 1.5V from the voltage rails.  I usually just use a voltage divider (like two 10k ohm resistors) and set the short at mid-supply.  Second thing you need to do is issue an offset calibration.  Even with this you will see a result that is not exactly 0 V due to noise of the conversion process and reference noise.  It should be pretty close, however.

    Second question, the input impedance is pretty high as it has an op amp buffer stage (Gohms) and the load cell is usually quite low (hundreds of ohms.)  No external buffering or circuitry is required at the input between the load cell and the ADS1234, although you might want to add some EMI/RFI filtering in addition to what is provided within the device.  See Figure 42 of the device datasheet.

    Keep in mind that there is often some offset inherent to the load cell.  You will have to calibrate the system for at least a two point calibration.  The low point is the no load condition, and the high point is the calibrated weight condition.  The difference between the two is the measurement span of the load cell.

    Best regards,

    Bob B

  • Thanks for your reply.

    I have shorted the pins as you suggested, but it gives  readings in between 838650(in decimal) and 838670 in the negative range.

    How can i calculate the input from this reading?

    is it  (Digital out*step size)/gain ?

    Thanks

    Priyesh

  • Priyesh,

    Might it be possible you left out a digit, or made a conversion error?  The output of the ADS1234 is binary two's complement.  When converting the value of 24 bits to a 32 bit integer you need to make sure the sign is extended appropriately.  If the MSB of the data read out is high, then all of the upper bits also need to be high of the 32 bit value (those beyond 24) so that the number is properly represented.

    The positive full-scale value is 0x7fffff or 8388607 decimal, and full-scale negative is 0x800000.  A single minus count results in 0xffffff.  If I make the assumption that you left a digit out of the decimal values given and also failed to sign extend you might see something like 8388660.  When using sign extension properly you would actually see -53 counts for the 32 bit value.  Now we are pretty close to zero.

    What I would do is verify the result you are getting from your program and compare it to readings you see by connecting an oscilloscope to DOUT/SCLK.

    Best regards,

    Bob B

  • Thanks a lot for pointing to the right way . As you mentioned i was using some wrong sign extension logic. Now it gives values between -200 and 100 for common mode voltage.

    But still it is not working properly with other inputs. I just connected  AINN  to 1.644V using a voltage divider and AINP to 1.65V from a wave form generator the data given is 8388607. Can we measure this differential voltage using a multimeter?When i tried  the multimeter read 1.2V! . At this stage the output impedance of the waveform gen. was 50R.

    I made an attempt with waveform gen. in high impedance mode and a voltage of 1.7. Now my multimeter gives 47mV and ADS gives codes in between 5600000 and 5500000. As per my calculation it should be an input voltage in the range of 12.68mV(5600000*.29uV/128) and 12.46mV(5500000*.29uV/128). Are these correct? I calculated the step size as follows-

    .5*(REFP-REFN)/((2^23)-1)*128 = .29uV. Is this the right way?

    Hope I'm not bothering you and please forgive me if i write any blunder.

    Thanks

    Priyesh

  • Hi Priyesh,

    The calculation for 1 LSB is 0.5*(REFP-REFN)/128/((2^23)-1) which is about 2.3nV.  To get the actual value you multiply the resultant code times the LSB size to get the actual voltage (2.3nV * 5500000 is about 12.65mV.)  Your calculation worked out ok in the end, but the actual transfer function was incorrect.

    When you used a low impedance output of the signal generator, your voltage divider became much smaller as you had 50 ohms in parallel with your divider resistance.  A 1.2V difference would mean a full-scale reading and that is what you measured.  As to the difference in the voltmeter and the ADC result, this will be dependent on a couple of things.  One is the precision of the actual reference value relative to the calculation using 5V.  Another is the actual precision of the voltmeter.

    Best regards,

    Bob B

  • A thousand thanks for your support. Almost everything is working fine now.

    Can you please tell me where i can get  application notes, notes on PCB design consideration and notes on software filtering techniques for ADS1234?