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.

ADS1230 STABILITY ISSUE

Other Parts Discussed in Thread: ADS1230

Hi Bob;

I having some issues with the ADS1230, i get at-least 20% of pcb's giving count fluctuation, i tried cleaning it with IPA as well as Thinner but no use. Kindly advice . I am enclosing the schematic for the same. C7,C8,C9,C10,C12 - 0.1uf X7R, C6 - POLY CAPACITOR, C11 - 470uf/16V,  R9,R10- 100E, R11- 1E.

  • Hi Dhinesh,

    You really haven't told me how many counts you have that are fluctuating or the voltage that is being applied.  The best method to check for your system noise is to short the inputs and bias the inputs at mid-supply.  This will tell you if you have board layout or design issues as you should see numbers very similar to the ADS1230 datasheet.

    There are several potential problem areas.  First, you should have bypass caps very close to the digital supply pins of the ADS1230 and the micro.  Another area is the possibilty of noise or instability of the supply.  Make sure the supply is clean and free of ripple, especially at the reference.

    You also have a very large cap on AVDD which may cause a very slow ramp on the AVDD/Reference.  I would suggest that you wait a sufficient amount of time at power up for the supply voltage to stabilize and then pulse the PDWN on the ADS1230 so that the device resets.  This will ensure that the device has no POR issues due to the slow ramp.

    You should also make sure that C8 is at least ten times larger in value than C7 and C9 to prevent a differential voltage due to component mismatch.  This is particularly important for drift, but noise filtering can also create a mismatch to common mode noise and cause fluctuation of the readings.  If C8 is 100nF, then C7 and C9 should be no greater than 10nF.

    Another common concern is with PCB layout.  You should have a good ground plane as opposed to ground traces.  You should also be careful with routing to keep analog portions seperate from digital portions.  Another concern is C6, which must be routed carefully and close to the input pins of the ADS1230.  This is a filter cap for the PGA, so routing is important.  Also, some of these film caps can be easily damaged in board construction from overheating when soldering.

    Best regards,

    Bob B

  • Hi Bob;

    The supply voltage is 5VDC, any my code is fluctuating atleast 10 -15 counts on averaging it will increase slowly or decrease slowly. This problem is seen in certain pcb's only. I also tried using differential capacitors of 0.01uf for C7 & C9, but still problem persist. I had enclosed my layout for the same kindly advise.

  • I had given delay time in my main program so that capacitor would be charged fully, ie C11, but the problem is reduced a little, but still fluctuate. Is there any layout issue.
  • Hi Dhinesh,

    Although the layout could possibly be improved, I do not see anything that would cause the type of problem you are seeing.  If you are seeing this issue on only a smaller percentage of boards, then it is not likely to be the PCB board itself.

    I would make a small test jumber that can be plugged on to the load cell connector that consists of a voltage divider to place the input voltage at mid-supply and then short the inputs together so that the are both biased at the mid-supply voltage.  This data should show that you are getting the ADS1230 expected noise results as given in the datasheet.

    If you do not get the expected results, then you need to verify that the voltages for inputs, supply and reference are as expected.  I would also check that the components are correctly installed.  For example, R11 shows 10k in the schematic, and you have 1 ohm in the description.  If you have some other value for this resistor or the C11/C12 capacitors you will have a great deal of instability.  I myself have made this mistake when making prototypes where I have accidently switched two component locations on accident.

    Best regards,

    Bob B

  • Hi Bob;

    I tried it with test jumper earlier, the result was different for different board, some with -3, -4, 7, 8, 12,15 so on..

    All the components are installed correctly,

    What improvement can be possibly made in my layout, kindly list out, right now i am designing a new pcb layout.
  • Hi Dhinesh,

    Regarding PCB layout, please see the information here:

    http://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/1302.pcb-layout-guidelines

    As far as the data results, I need to see precisely what the data is for successive captures so that I can process a histogram.  Stating that the codes fluctuate is rather meaningless as the codes do fluctuate as the system is not noiseless.  This is shown in Table 1 of the ADS1230 datasheet.  What would really be helpful is for me to see a range of data results as codes (at least 128 but no more than 1024).  These results should be successive readings at the specified data rate. No reading should be skipped and no readings taken twice for the same conversion.  Also, the analog input should be shorted together and biased at mid-supply.

    Prior to capturing data, it would also be helpful to issue a self offset calibration.  In this way you can compare results without the device offset.  It is always a good idea to issue the self offset (26 sclks) anyway after power up.

    Best regards,

    Bob B

  • Hi Bob;

    I am facing some issues with the weighing formula, currently using the bellow formula.

    Mass=( ((float) (ADC_VALUE - CALZERO)*(CALWEIGHT/(CALKNOWN-CALZERO))) ) );

    the above formula works but problem is the all variables are float data type, it consumes large space in my program as well as slow in processing.

    When is converted to Long data type, i am having issue with overflow of long data type, here bellow,

    NO LOAD COUNT : 9337 / LOAD COUNT : 56002 / CALWEIGHT : 100000

    As per my formula ((56002-9337)*100000)/(56002-9337)

    ie (4666500000)/(46665). there is a overflow in variable because the long data type can't hold 4666500000 and thus the result moving in negative regions

    Kindly provide suitable solutions for it.
  • Hi Dhinesh,

    Math is one of the overlooked areas when selecting a micro.  Some micros have a math hardware peripheral for complicated or floating point math to speed up operation and reduce code size.

    There are a couple of ways that you can make this operation.  One is to use a long long integer type.  Another is to simplify the equation first by finding the 'constant' values then manipulating to floating point.  In other words you make CALWEIGHT/(CALKNOWN/CALZERO) a constant.  This makes this portion of the calculation done once instead of every measurement.  If you stay with the integer types, then this will also help as you will not need the long long as the number will still be within signed 32-bit.

    If you do your math as integers, remember that the fractional portion is truncated.  A value of 16.9 becomes just 16 (C99).  You will need to use the modulo function (%) to retrieve the remainder of the operation.  If you use the trunctated values you have inaccuracies in your measurement.  You could round the division up or down based on the remainder to prevent a floating type which may be good enough for your result.

    Best regards,

    Bob B