ads1230 interfacing 8052

Hello Sir,

   My ADC board is working fine,But some of my customers complainted  that after power on the weigh scale,the  value slightly increased without any weight on the loadcell upto 1 gm for 10kg/1gm scale and 5 gm for 30kg/5gm scale within 1 - 2 hour.So the customer needs to tare after 1 - 2 hour to make it  zero.So i observed my board,s internal counts and it seems increasing slightly upto some level.What is the cause of this.How can i arrest this problem.  

   And also if i calibrated a 30kg/5gm scale with 20 or 30 kg weight ,i can achieve precision for all the weight above 500gm.But if i put some 10 or 20 gm on the loadcell it shows the precision 05 or 15 gm,why this happening,Please suggest me some ideas,expecting your valuable reply...

                                                                                                                    Thank you

                                                                                                                    By Ajit..

  • Hi Ajith,

    This sounds like it may be a thermal equilibrium issue.  Can you share the details of your layout and packaging with us?

  • Hi Sir,

       As per your information,pcb layout file has been attached with this mail.

    L1=100mH

    L2=100ohm,(resistor)

    L3=100ohms(resistor)

    C8,C17,C18,C19=0.1 uF(box type capacitor)

    Please go through that and give me necessary instruction.I m expecting your valuable reply.

         Thank you

         Ajit.. 

    0218.silk.pdf8322.bottom.pdf7563.top.pdf

  • In reply to ajith kumar:

    Hi Ajith,

    There are a couple of things that are confusing to me.  The layout doesn't appear to match the actual pinout of the ADS1230.  Can you send me your schematic?  One thing that might be a problem is your cap values.  If you use both differential (cap across the inputs) and common mode caps (caps from inputs to ground) the common mode caps must be at least 1/10 the value of the differential caps or you will see some dramatic drift issues.  So if the differential cap is 0.1uF, the common mode caps should not be larger than 0.01uF.

    Best regards,

    Bob B

  • Dear Bob,

    As per your information,schematic has been attached with this mail.I m facing the following issues :

    1) The counts are gradually increasing upto 10 counts within 5 - 6 hours.So this reflects on the weight value.But i observed that, its due to temperature variation inside the weigh scale body(Regulator Ic temperature variation,when it connected to main supply).Because when the weigh scale operates on battery there is no such type of drifting.

     And if i connect electrolytic capacitor(100uF or 10uF) across the AVDD and DVDD for filtering,the same drifting issue was happening(during battery operation also).So later i removed those electrolytic capacitor and placed with 0.1uF capacitor.Now the counts are maintained in between + or -   1 or 2 counts drifting.....Is it possible to arrest this small drifting completely.

    2)After calibrating using standard weight,the weight shows on display is lesser than the standard weight.

    For Example:After calibrating a 10kg/1gm scale(load cell capacity is 15kg) ,if i put 1kg on the load cell it shows only 0.999gm on the display.Is this due to the counts fluctuating + or - 1 count.Also I m little bit confused that,my averaging process is perfect  or not.Below there shows the outline how i m taking the values,Please verify..

    i)After offset calibration,i  take 20 bits of useful data.

    ii)After taking 20 bits of data,i  divide this with 4.

    Therefore display weight=(ADC_count - Zero_count - TARE_count) * ((Cal_weight)/(span_count - zero_count))

    So in practical, display weight=(6000-2000)*500/(6000-2000)=500gm  (TARE_count not mentioned)

    so if the ADC_count is fluctuating 1 count and hence the value is 5999,the value seems

                                display weight=(5999-2000) * 500/(6000 - 2000) = 499.875 gm, So if i take the integer value i get the value 499gm only.So 1 gm is missing.

    How to fix this problem...Please suggest me some ideas...I m expecting your valuable reply...

    Thank you..

    By Ajith..

    4812.sch_adc.pdf

  • In reply to ajith kumar:

    Hi Ajith,

    Thanks for the schematic.  You might want to consider placing a 0.01 to 0.1uF cap close to the reference input pins.

    I'm not sure about your averaging.  Did you mean to say that you are taking four readings (each 20 bits) adding them together then dividing by four?  Are you doing a running average?

    When calibrating, have you waited for the input to settle for both analog and digital filters before averaging the readings?  You must wait for the input to settle before averaging.  Averaging helps with noise, but will not correct settling error.

    Can you clarify one other thing...in your equation, is the span_count the count with the calibrated weight applied?  I normally think of the span as being the number of counts adjusted by zero, or the measurement range of counts.  You have to be really careful with TARE and ZERO counts so that your equation is adjusting correctly.

    It appears that noise or settling may be an issue initially.  For example, if the reference is not stable or the filtering not settled when calibrating you will see an error after the reference is stable or the filter is settled.  I think that is why you see a difference with the larger caps.  With the smaller caps the supply settled faster.  As the supply is being used for your reference, this will shift slightly over time.

    Best regards,

    Bob B

  • Dear Bob,

    Thank you for your reply..I had provided a 0.1uF capacitor,but it is not closer to reference pin(around 1 inch distance).would this affect the adc performance..?

    Could you please explain, how to perform averaging,Actually i m not doing any averaging.I m directly taking the value after 20 clock pulses and process it,to display the weight and also to achieve good speed at 10SPS.(was it a wrong procedure).

    Here after getting the value (after 20 clock pulses) i  divide that value by 4,to view the counts in display before doing calibration..

    Does Averaging reduces the processing speed of the controller .?

    What is running average ?,could you please give me the details..!

    I m expecting your valuable reply..

    Thank you 

    by Ajit..

  • In reply to ajith kumar:

    Hi Ajith,

    Having the cap close to the reference pins allows charge to be available on demand as needed, and also allows for stability when the reference is being sampled.  If you make changes to your layout, you should consider moving the cap closer to the pins.

    I've attached a link to an application note about averaging that was written for the MSC12xx microcontrollers, but the principles still apply.

    ftp://ftp.ti.com/pub/data_acquisition/MSC_CD-ROM/Application_Notes/SBAA124_Average_Measurements_with_MSC12xx.pdf

    I'm not totally clear on why you are dividing your result by four.  This shifts your result to the right by two, which essentially makes your result 18 bit instead of 20.  You also are adjusting the full-scale range.  This is ok to do, as long as all your calculations are also adjusted appropriately.  Are you just throwing away noise bits?

    if you throw away two bits of resolution, and the adjusted lsb is toggling then from the intial measurement you are seeing noise of 3 bits from the original measurement.  From the datasheet at 10 sps and gain of 128, noise free bits are 17.5.  This is the best the ADC can get under the best of circumstances.  Any layout issues, reference noise, noise at the inputs, etc., will reduce this further.  There will also be some drift over time due to temperature.  Running the self offset can help with some of these effects.

    Some averaging can help you, but this takes time.  At 10 sps, and four conversions averaged effectively reduces the conversion result rate to 2.5 sps.  There will be a little computational overhead involved, but this should not slow things down below 2.5 sps.

    Best regards,

    Bob B