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.

ADS 1252

Other Parts Discussed in Thread: ADS1251, MSP430F449, ADS1252, INA125, INA122, REF5030

I'm using an ADS1252 with a strain gage and am interfacing with an arduino.  The ADS is not working as expected and I want to ensure that I've got it wired correctly.  I'm following as best as I can the application report SLAA242, "Interfacing the ADS1251/52 to the MSP430F449".  Here's my current configuration:

ADS1252 Pinout:

Pin1: +Vin (from strain gage)
Pin2: -Vin (from strain gage)
Pin3: +5V from Arduino
Pin4: not connected
Pin5: Dout to Arduino Pin 50 (MISO)
Pin6: SCLK to Arduino Pin 52 (SCK)
Pin7: GND
Pin8: Vref 3.3v from Arduino

The problem:
No matter the +/- differential input values from the strain gage, the Dout value is always +5v.  I've tried grounding the -Vin and I've tried different Vref values, but Dout=+5v remains.  Does anyone have any insight as to what I'm doing wrong?

Thank you

  • Hi Nick,

    You must connect a valid clock signal to pin 4 of the ADS1252.

    Best regards,

    Bob B

  • I've got 16MHz going to Pin 4 and 2MHz going to Pin 6.  Does that sound correct?

  • Hi Nick,

    Yes, those clock connections are correct. Do you have any oscilloscope screenshots of the serial communication (SCLK and DOUT/DRDY)?

    Also, consider the maximum output voltage of the strain gauge. You may need an amplifer to gain up the input signal.

    Regards,
    Chris

  • I could connect the gage to an instrument amplifier, but it has only one output.  Can the ADS1252 be configured for one input?

  • Hi Nick,

    Yes. It is not ideal because you lose half of the ADC's dynamic range, but you can tie -Vin to GND and +Vin will be valid from GND to Vref, or 0V to 3.3V in your case.

    Regards,
    Chris

  • The scope trace on the SCLK pin is a beautiful square wave, the trace on DOUT is a constant +5v.  It seems like I've got the right idea, but I'm missing something.

    Now I've got the strain gage connected to an INA125.  The output of the amplifier is connected to pin 1 of the ADS1252, pin2 is grounded.  Output looks the same.  Is it possible I've got a bad chip?

  • Do you see any activity on the DOUT/DRDY pin like what is shown in the data sheet?

     

  • Unfortunately no.  It is a constant +4.932V.

  • Does your SCLK timing match the timing diagram in figure 12? Also, double check that your providing the system clock to pin 4.

    You'll want to use an active low SCLK, otherwise you may be putting the ADS1252 into the reset or power-down mode.

     

  • Hi Christopher and Nick,

    I have about the same issue. In my application i'm reading a straing gauge with output voltage of 10mV, amplified with a INA122. At this step, the signal is stable and send to ADS1252. The 3 bytes values are read by an Arduino, but the values are floating a lot, from negative to positive.

    In the case of INA122, the connections are the follow:
    1: 220ohm
    2: negative strain-gauge
    3: positive strain-gauge
    4: GND (from Arduino)
    5: GND (from Arduino)
    6: to pin 1 ADS1252
    7: +5VDC (from arduino)
    8: 220ohm

    In the case of ADS1252, the connections are:
    1: pin 6 from INA122
    2: GND (from Arduino)
    3: +5VDC (from Arduino)
    4: Clock 2MHZ (another Arduino only to generate the signal clock)
    5: MISO (Arduino)
    6: SCLK (Arduino)
    7: GND (Arduino)
    8: LM4040A41 (Zener 4.096V)

    My question is: the 2MHz clock from another affects the INA122 signal ? Should I reduce the 2MHz signal ? the +VDD requested by ADS1252 should be changed ?

    Thanks in advanced.
  • Daniel,


    Based on the writeup it looks like the connections are correct. I'd be a bit concerned that the input to the INA might violate the input common mode range of the INA, but that won't give you a communications error like the one you're seeing (with data giving floating values).

    I don't think this is related to the clock frequency and this shouldn't have have much to do with the supply voltage. However, check the input to the ADC and make sure that the analog voltage is stable. Then check the reference to also make sure that it is stable. If both of these values are ok, then We'll check the digital communications.

    I would first get a oscilloscope capture of the data. Make sure you get the CLK, SCLK, and the DOUT/DRDY. If you only have a two channel scope, then CLK is the least important.

    I would compare what you get to Figure 12 of the datasheet. In particular, I'd check to makes sure that you are waiting for the DRDY indication before reading the data. I would also make sure that the SCLK dwells low and that the data is being read on the rising edge of the DOUT and that the next data is setup by the falling edge of the SCLK. The ADS1252 is a slightly older device and it's communication is slightly different than some of the newer devices I'm familiar with.

    Out of coincidence, I wrote a blog about debugging communications that came out yesterday, read through it and see if this is applicable to your system.

    e2e.ti.com/.../help-i-can-t-talk-to-my-data-converter-what-s-wrong


    Joseph Wu
  • Hi Joseph,

    Thanks for your replay. I'll check those tips tonight.

    I saw your blog. It's very clear to understand what is happening (or not) during communication. Congratulations.

    Out of this scope, I have a doubt: i2c communication uses less peripheral devices, and the protocol is simpler than SPI. Why high bit converters is SPI ?

    Thanks
  • Daniel,


    There were probably a few reasons that we use SPI for this communication. First, I think when this was designed, we had more experience with SPI. Second, since we use a combined DOUT/DRDY, we only use two lines to communicate and to get the data ready indication. With I2C, you could read the device to get a status on the DRDY, or you would need a third line to get an ALERT pin. Lastly, I think I2C is generally slower, for high data rates, SPI is better for throughput of data.

    Regardless, most of our 24-bit parts use some sort of SPI. I2C is sometimes used on some of our 16- and 12-bit parts.


    Joseph Wu
  • Daniel,


    Incidentally, you might find this interesting. If you search Google for Arduino and ADS1252, someone else has worked on this before:

    forum.arduino.cc/index.php


    Joseph Wu
  • Hi Joseph,

    Using an osciloscope, the time of DRDY is 18ms, the application wait for 30ms, which is before first byte sent by ADS1252.

    The three bytes are clear in the osciloscope. The first byte is stable, but the second and third floats.

    Measuring the Vout from INA122, the voltage is stable. What could be wrong ?

    Thanks again.

  • Daniel,


    For your measurement, you say the first byte is solid, but the other two are noisy. This generally means that either the input that you are measuring is really that noisy or that the reference that you are using is that noisy.

    I'm going to guess that it is the latter that is the problem. If you are using a 3.3V signal from the Arduino, it's probably not a precision voltage reference. If you can get a precision voltage reference, try using that for the ADC reference to see if the measurement improves.

    The ADC gives a digital output data comparing the input with a known voltage (in this case it should be a low noise reference). If the reference is noisy, then that noise becomes reflected in the output data.

    Let's imagine that the input voltage is perfect, with no noise but the reference is noisy. Let's say that there is 12mV of noise in the reference. With 12mV if noise out of 3.3V, that is about 1 part in 275 that is good in the measurement. That would be about 8 bits of no noise, with about 16 bits of noise in a 24-bit measurement.

    If that's the case, let me know. If you want to keep 3.3V for the reference voltage, you could try the REF5030. It's low enough noise to give you a cleaner signal, and is close to the 3.3V you are currently using. If the Arduino is putting out a precision reference voltage, what is the noise spec? I admit, I've had limited experience with the Arduino and don't know all of the ins and outs.


    Joseph Wu
  • Hi Joseph,

    As you suggested, I used LM4040A41 as reference voltage, but the noise of 2 byte do not changed.

    I measured the signal that came from INA122 and its presents a noise from CLK signal.

    I reduced the CLK frequency to 200Hz, and the noise was dramatically reduced. 

    So, I think the problem is the noise presented by INA122. Any tips ?

    Thanks. 

  • Hi Daniel,

    Basically you will need to discover how the CLK noise is entering the INA and preventing the noise from entering the device so that the noise is not gained up with the signal.  Avoid loops of wire if prototyping, and make sure that clock signals do not come adjacent to low level signals when routing traces (or wires when prototyping).  You may require additional input filtering if not already present.

    Best regards,

    Bob B

  • Hi Bob,

    After these 2 months,  I tested the circuit in a PCB, and it works perfectly. The main problem was the breadboard.

    Thanks very much for your and  help.

    Regards.

    Daniel Thomazini

  • Hi Daniel,
    We're glad you had success and thanks for letting us know your outcome.
    Best regards,Bob B
  • Daniel,


    I'm glad you were able to get your circuit working. If want, you could post some more information about some of the things you did to make sure it operated properly. It might help other get their own circuits to work.

    Either way, thanks for posting back and letting us know.


    Joseph Wu