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.

ADS1148: Need help with basic schematics.

Part Number: ADS1148
Other Parts Discussed in Thread: ADS1248

Before i play with Arduino ADC inputs and it was very easy to read data from any pin and convert it to voltage.

Now I have ADS1148. And i have fried my brains while trying to connect a single thermistor to it.

I need to read temperature from thermistor and i cannot find any simple solution how to do it. Why its so complicated to read voltage from voltage divider?

Does any one have a schematic for single termistor connection with ADS1148?

  • Coll,


    I would start with this application note:

    It gives a basic idea of how to make temperature measurement with the ADS1248. The ADS1248 is the 24-bit version of the ADS1148, which is a 16-bit ADC. A thermistor would be measured in the same way as a two-wire RTD.


    Note that you would need a reference resistor (RBIAS) larger than the thermistor to make the measurement. Also the reference resistor should be a precision resistor. The output code will be a ratiometric measurement between the thermistor resistance and the known RBIAS resistance value.


    If you have further questions feel free to post back.

    Joseph Wu

  • Hi. Thanks for your response!

    I have build thermistor conection from Figure 69. Example of a Ratiometric RTD Measurement and schematic of ADC is from Figure 64. Serial Interface Connections connected over CP2130 to Android phone. Rrtd - thermistor 10k, Rref - 6.8K . Using code just like in 9.1.7 Pseudo Code Example. And I recieving totaly random values from ADC.

    I use registers in next way:

    MUX_SP - AIN0

    MUX_SN - AIN1

    CLKSTAT - External clock in use

    VREFCON - Internal reference is always on

    REFSELT - REFP0 and REFN0 reference inputs selected

    IMAG - 250 uA

    I1DIR - AIN0

    All others settings in default. 

    Schematics that you gave me have Line Resistance, and i dont understand what they doing there and what resistance required.

  • Coll,


    First I'd like you to run a test. Start by sending the SDATAC command. This will later require you to read data with the RDATA command. It won't stop conversions but it will prevent new data from interrupting your reads of either data or the registers.

    I want to confirm that you are able to write to and read from the registers correctly. Run that as a test, just to make sure are using the right version of SPI and make sure that you have no timing errors. If you read back all registers and they have all the changes that you've made, then you're likely good.

    After that, I think you'll need a larger reference resistor and a smaller current. You're starting with a 10kΩ thermistor and a 6kΩ reference with a 250uA current source. Because of this, the measurement voltage will be 2.5V, while the reference voltage will be 1.5V. You're input measurement must be smaller than the reference voltage.

    Start with a 20kΩ reference and 100uA for the IDAC current. With a 10kΩ thermistor, the ADC reading should be half of full scale, or 4000h. With your current setup, you would likely be overranged, which should have given a full-scale reading of 7FFFh. To be sure of your setup, measure the voltages across the reference resistor and the thermistor to verify your connections.

    If you are still having problems, you'll need to be more descriptive about what data you are receiving. Is it 7FFFh? Are bits completely random? Report back a longer sequence of data to be sure. Are you sure that the device is operating? Check the /DRDY line to make sure that the device is converting. If it isn't then check the /RESET and START pins to makes sure they are high. It would also help to have oscilloscope or logic analyzer to monitor the SPI communications.

    One last point that I wanted to make was that the line resistance is an error term (not a required component. In a two wire system, the RTD (or in your case a thermistor) may have a long length of wire that has some resistance. This resistance will be an additional error to the thermistor itself. For 3- and 4-wire RTDs, there are methods of removing the line resistance error. I would note that since the thermistor is 10kΩ, line resistance will be a small error in comparison.

    Regardless, if you continue to have problems with your setup, please post back.


    Joseph Wu
  • HI again!

    I have rebuilded and checked all connections, put the 20kΩ reference and set 100uA for the IDAC current. But i have found 1 mistake that cannot be fixed for few days. Its the 100kΩ thermistor resistance instead of 10kΩ. Anyway i have some progress.

    Schematics is now looks like this: 20kΩ resistor at pins REFP0 and REFN0, 100kΩ thermistor at AIN4 and AIN5, REFN0 connected to ground, REFP0 connected to AIN4, AIN5 internaly connected to IDAC with 100uA current.

    Starting exactly as shown in Pseudo Code Example and with SDATAC command

    MUX0 bits is 0b00101100

    MUX1 bits is 0b00111000

    IDAC0 bits is 0b00000010

    IDAC1 bits is 0b01011100

    I can write them and read back. No problems here.

    Starting to recieve data:

    255 254
    0 0
    255 255
    255 255
    0 0
    0 0
    255 255
    0 0
    255 255
    255 255
    0 1
    255 255
    0 1
    255 255
    0 1
    0 0
    255 255

    Now i take the measurement with multimeter at GND and AIN5 pins while sensor is heating, voltage is about 1.94v. BUT look at the recieving data:

    255 84
    255 85
    255 87
    255 90
    255 94
    255 95
    255 96
    255 98
    255 100
    255 101
    255 103
    255 106
    255 108
    255 108
    255 111
    255 114
    255 114
    255 117
    255 115
    255 119
    255 120
    255 121
    255 122
    255 123
    255 124
    255 125
    255 127
    255 127
    255 128
    255 165

    When I stop measuring on the pins the data is going crazy again. What is going on here? Maybe I need to solder some components for proper operation of the chip?

  • Coll,


    When you report back the register settings, you should report back all the settings, it will help show your setup better. I think you should also show a basic schematic. I know you are basing the schematic on the example ratiometric RTD measurement in the datasheet, but it helps to show any changes you've made.  

    Now that you've found that the thermistor value is higher than expected, you'll probably need to increase the reference value and lower the IDAC current. First, the ADC compares the input value against the reference value. Therefore the reference must be a larger voltage than the input. If your thermistor is 100k, and your reference is 20k (and the IDAC currents are the same) the thermistor voltage is going to be 5x larger than the reference.

    Also 100uA through 100k is 10V! your input and reference must be less than 5V. I recommend measuring the voltages around the input and the reference with a multimeter. This is to make sure the voltages are expected based on your setup.

    Looking at your output data, right now your output values are near 0000h or FFFFh. Both values are near 0V. Note that the output data is in twos complement notation. FFFFh is the equivalent of -1V. In your output data, you are near 0V or slightly negative in all cases. Note that you can get negative numbers if you have a negative offset.

    I'd also note that I would have expected that your measurement should have read positive full scale voltage. If you really had an input voltage that was larger than the reference, you'd have output data of 7FFFh instead of output data near 0V. I would check the connections again. Currently, AIN5 is selected as the positive input and AIN4 is selected as the negative input.

    Regardless, go through my comments and see if you can get a few answers.


    Joseph Wu