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.

Ads1211 Self calibration

Other Parts Discussed in Thread: ADS1211

Dear TexasInstruments-Experts,

i'm new to things like initializing such an AD, so i have some questions:

- When i do the self calibration i have to write a channel to the command register. Will the calibration only affect this channel or all four?

- When i want all channels to have the same settings but i want to read them out one after another, will it be enough to inizialize one channel with this self calibration and then overwrite the byte in the command register containing the channel? After self calibration mode the IC should automatically go into normal mode and i would so read out one channel and then switch to the next. I know i have to wait 3 times DataReadyPin until valid data can be read again.

Thank you so much for your help!

Greetings from Germany,

Florian

  • Florian,

    Welcome to the forum!  The values placed into the OCR and FCR registers after the SELFCAL will always be used no matter which mux input channel is selected.  However, using the same values for each of the mux inputs may introduce some error as only the original mux calibration used for the SELFCAL will be truly calibrated.  Generally it is a good idea to run the calibration any time you change input channels, gain, or data rate and if there is a large temperature shift at the ADS1211.

    You will have to analyze your system to see how much the calibration results affects the non-calibrated input channels.  The error may not be that significant for your measurements using the SELFCAL, especially if the only change is the input channel.  You may see a much larger difference with the SYSCAL between input channels. 

    You can read and write the registers for the offset and gain, so one method of maintaining calibration is to run the SELFCAL on each input channel you will use and then store the calibration results.  Then each time you change the input channel, you can also write the data for the calibration registers that is specific to that input channel.

    Best regards,
    Bob B

  • Hey Bob,

    thank you for your fast response!

    I've got one more question: I have gyroscope sensors, which will not have exactly 2.5 V when the are in not in motion. So i thought i would detect which value the AD gives me in idle and then subtract that sensor offset from the values read in motion, so I get the unbias values. Will the system offset calibration influence that or has that system offset calibration nothing to do with this? I worry about performing this calibration when system starts up and find out which offset the channels have. Then i will do the system calibration every time I change the input channel and I want to know if the new calibration will influence my calculated offset and then it wouln't be valid any more.

    Sorry for my strange english.

    Thanks again for replies!

    Regards,

    Florian

  • Florian,

    The offset calibration assumes that there is a 0V input applied.  In the case of the self calibration, the inputs are disconnected and an internal short is applied to the ADC inputs.  A number of readings are averaged together and the resultant code value is placed in the OCR register.  This code is then subtracted (or added depending on the signed value) from any conversion result before being read out from the device.  This then provides for a zero output code for a zero input applied.

    The system offset calibration is similar in that it requires a shorted input.  It would not be a good idea to apply a large offset (2.5V) and then run the system offset calibration.  In this case it would be better to run the self calibration.

    It sounds like offset will really not be a large factor in what you want to do, so I would just run the self calibration (instead of system) and do as you have proposed by subtracting out the code for a static input condition.  That is assuming that you just want to know the amount of code variation from a static, or no movement, position.

    Best regards,

    Bob B