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.

10 bit ADC instead of 12 bit for more accuracy on F28027

Other Parts Discussed in Thread: INA333

I am using ADCINA7 (pin J5.3) to measure the voltage from a pressure sensor (after being amplified by an INA333).

Attachment shows : Voltage (mV) after an exponential curve has been subtracted 

 I am noticing unexpected spikes that are most noticeable in attached picture.

 I wish that I had the option of increasing the gain of the INA333, but that is not possible with my application.

 A former TI employee that I spoke with suggested that I use a 10 bit ADC instead of 12 bit ADC to prevent these spikes from occurring. At the time, this seemed like a great idea but, upon looking into it, I became uncertain if this is a possibility. Also, I am uncertain how to actually change the code so that it only uses a 10 bit ADC.

I would appreciate suggestions either to convert the 12 bit ADC to 10 bits or other ideas of how I might remove these spikes.  

Thanks for the info!

  • Hi Laura,

    I don't follow how switching to a 10-bit ADC will help the noise spike situation. If the y-axis in your plot is LSBs you are seeing spikes of about 75LSBs; switching to a 10-bit ADC will reduce this to spikes of about 18LSBs (but really the size in volts is still the same, you just have less resolution). 

    Maybe what was meant was that an external 10-bit ADC with near perfect specs and a lower sampling rate would be more accurate than the 12-bit Piccolo ADC (this is certainly possible)?

    In any case, what is your sampling rate, and do you have an RC low-pass filter between the output of the instrumentation amplifier and the input to the ADC? If your sampling rate is low (I assume this is the case since it is a pressure sensor and your instrumentation amplifier has pretty low BW), for an RC LP filter, try using (1): C =  2^(12+1)*Ch, and R as high as possible such that the LP filter cutoff is still above your signal bandwidth.  If this doesn't have a high enough cutoff, or if the amplifier has trouble driving this capacitive load, then try (2): C = 40*Ch, and R again as high as possible such that the LP filter cutoff is above your signal bandwidth. For case (2), you may need to increase the ACQPS setting of that channel and/or decrease the R to allow Ch to fully charge within the allotted S+H time.

    Hints: Ch = 1.6pF for F28027 (you can find this in fig 6-26 in the F28027 DS), here is an RC filter calculator: http://sim.okawa-denshi.jp/en/CRlowkeisan.htm,

  • Thank you so much for your response Devin.

    So, being a bit of a newbie....there is not way to use only the effective bits? For example, if I have a 12 bit microcontroller with a ENOB of 10 bits I can't just use the 10bits? Just rephrasing the question for clarity...

    That is a very good point. I am using a PCB from another group that has a passive filter with fc=34Hz [R=47*10^3 ohms and C=0.1*10^(-6)F]. Looking at the INA333 specs the bandwidth is 150kHz. Do you think that I am missing some of the signal? 

    I truly appreciate your suggestions. I will look into changing the ACQPS setting also.

  • Laura,

    Sure, you could truncate to 10-bits by doing (ADCRESULT & 0x0FFC) >> 2, but typically this is not desired.  The ENOB is a statistical measure, based on noise and distortion (typically limited by noise)...you are probably better off keeping those additional bits.  (you can also increase the effective ENOB by averaging many samples)

    Is the spike magnitude actually 75LSBs?  You shouldn't have spikes of 75LSBs...this would be giving you an ENOB in the 5-bit range (if you treat it as noise).

    I wonder if your op-amp is having stability issues driving such a huge capacitive load (even though it is through a large resistance).  Maybe try C = 64pF and R = 100's of ohms range.  This will have a much higher BW than the sensor, the op-amp, or the ADC, but may rule out stability issues.  Use the maximum possible ACQPS setting (I think 63, but check the ADC user guide for what settings are valid/invalid). If this works, but has high noise, you can digitally decrease the noise by over-sampling and then averaging (e.g. do a 256 sample average). 

    You may also want to rule out issues with your sensor by driving a DC voltage into the op-amp input instead of the sensor output.