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.

ADS1219: PCB prototype not working

Part Number: ADS1219

Hi

I have got a prototype made with ADS1219 with below circuit. I have tried to use TI op amps but due to non-availability I used MCP6V02. I am getting the same readings on the ADC1219 with or without the gas sensor. The gas sensor is connected to AIN1. Please help me resolve this.

AIN0: 1.02438 | AIN1: 1.02438 | AIN2: 1.02438 | AIN3: 1.02438

Please click link to see schematic 

ADS1219 Gas Sensor Shield

Regards

Vijay

  • Hi Vijay,

    Have you verified the reference voltage is present at the ADS1219?  Have you verified your communication (and do you have any scope or logic analyzer shots that I can see)?  What is the register configuration setting?  What is the expected data and what are you getting as a conversion result?

    Best regards,

    Bob B

  • I have verified the VREF at ADC. It is 2.048V +/- 0.01V. The VREF is also the same at Op Amp inputs. I am using the Arduino library. Currently, the config is Single Shot, Gain 1, 20 SPS, External VREF. From what the sensor manufacturer says, the reading without the sensor is considered zero reading. When I add the sensor I should substract the zero reading from the reading with sensor. But the problem is that there is no change in the reading with or without the sensor. The voltage I am getting without the sensor is correct but it should change when I add the sensor. Please below transcript from sensor manufacturer.

    I recently bought a oscilloscope but I still have to figure out how to use it Slight smile.

  • Hi Vijay,

    I can only be of help with the operation of the ADS1219.  I really don't know enough about the circuit.  Have you actually tried to simulate the op amp portion to see how it works?  I have a colleague that mentioned that not all op amps may work the same.  So once you have your oscilloscope up and running you may want to check to see if you have oscillations or stability issues.

    Best regards,

    Bob B

  • Hello Bob

    Looks like the board is working fine. Add delay of 2 secs In the code while switching between channels solved the problem. However, I like to know what is the minimum time required to to switch between channels. Below is partial code.

    Serial.println(ads.readSingleEnded(0)*2.048/pow(2,23),5);
    delay(2000);
    Serial.println(ads.readSingleEnded(1)*2.048/pow(2,23),5);
    delay(2000);

    Regards

    Vijay

  • Hi Vijay,

    You should not have to wait 2 seconds unless your communication is very slow and/or there is a lot of analog settling time between sensor measurements.  When using single-shot mode at 20sps, the conversion begins when the START/SYNC command is latched.  Commands are latched on the 8th falling edge of SCL.  The actual conversion times are listed in the ADS1219 datasheet in section 8.3.6 on page 19.  As you are using single-shot mode, there will be an internal oscillator 28us startup time in addition to the conversion time of the ADC as noted as note 1 under Table 4.  The conversion time total will be around 50.04ms maximum at 20sps output data rate.

    If you change your mux setting and give the START/SYNC command, then you will need to consider the entire length of time it takes to complete this communication.  It is not clear what the SCL timing frequency is, but even if it is slow (such as 1kHz) there should not be this much time required based on the ADC alone.  I would suggest monitoring the communication with an oscilloscope or logic analyzer to determine why the communication appears to be so slow.

    Best regards,

    Bob B

  • I don't think there is any problem with the communication speed as I am able to quickly read values from BME680 on the same board without any such issues. However, I will double check this and let you know.

    Another problem I am facing is that I am getting very high and unstable readings (uV) with the sensors on board.

    Without the sensors, the readings are very stable at around 1.024V as expected. I have taken a 10 minute average readings and applied them to the channels and the readings without sensors are constantly around 0 +/- 0.00001.

    #define AIN0_Zero 1024400 // uV
    #define AIN1_Zero 1022210
    #define AIN2_Zero 1023590
    #define AIN3_Zero 1024720

    I am using an external 2.048V voltage reference for this circuit. I am not sure if I should use the effective resolution of 19.63 (17.66) as mentioned in 7.1 and change the code from

    (ADC Reading x 2.048 / 2 ^ 23) - AIN0_Zero (as per 8.5.2)

    to

    (ADC Reading x 2.048 / 2 ^ 18.63) - AIN0_Zero (as per 7.1)

    How can I know what is the actual resolution of the ADC in my PCB? What parameters should I ask the hardware engineer to check in my PCB to arrive at the right resolution to apply to the readings? Please also let me know the procedure to calibrate the ADC as mentioned in 8.3.7.

    Regards

    Dr. Vijay

  • Hello Dr. Vijay,

    If your readings are consistent without the sensor, but inconsistent with the sensor how are you determining that there are issues with the ADC? 

    You cannot improve upon the base noise of the ADC which is 19.71 uV p2p as given in Table 1 of the datasheet for gain of 1 at 20 sps.  So the noise is much greater than the typical offset of +/-4 uV and calibration of the offset will only calibrate noise.  I would advise attempting the offset calibration (8.3.7).

    As to determining the ADC result, you can remove the ADC noise from the measurement by truncating the result to a specific number of bits which many customers will do.  However, effective resolution (RMS) will still include noise in the result so you should use noise-free resolution based on the peak-2-peak noise.  This however will only reduce the noise of the ADC result with respect to the ADC and not your system.

    As you appear to have good results without the sensor, I suspect the real issue is with the system prior to the ADC and not the ADC.  Depending on the op amps being used you may have some stability issues that could include oscillation.  I would highly recommend looking for issues using an oscilloscope to verify the noise and stability of your system and how that may relate to the ADC code value being returned.

    Best regards,

    Bob B