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.

System transferring Load Cell Signal wirelessly problem

Other Parts Discussed in Thread: ADS1230, DAC1220, ADS1232, PCM1754

Hi,

Here is my setup:  Load Cell Signal that spans -36mV to 36mV -> ADS1230 20 bit -> Microprocessor -> Send serial data that contains the digital code from ADS1230 over a wireless module -> AIR -> wireless module receiving serial digital code data -> microprocessor -> DAC1220 20 bit -> Original load cell signal

Here are my questions:

1) According to the spec sheet of ADS1230, I should be ok with a 20 bit AtoD like ADS1230 right?

2) ADS1230 have a gain of 64 or 128 PGA.  Since the input voltage is amplified by this multiplier, the DAC1220 on the receiving end will receive this amplified signal.  So how do I reconstruct the original signal without the 64 or 128x gain?  Please advise.

3) I believe the gain from the ADS1230 will introduce an error since there will be rounding to the nearest digit after the 64x or 128x multiplication.  Am I correct?  Also, I should be getting another rounding error when I try to divide the DAC1220 output signal back down by 64x or 128x to get back my original load cell mV signal.  Am I getting this wrong?  Or the error will be small enough that it's negligible?  How do I calculate this error?

 

Please let me know if I miss anything major.

I would appreciate it if anyone can respond to this.

Paul

  • Paul,

    I guess I'm not sure why you would need to convert your load cell signal back to analog, as there will be a lot of latency.  The ADS1230 is a good choice for load cells.  As far as the ADS1230 is concerned, the resultant code is based on the gain and reference used.  So your LSB size becomes much smaller with the use of gain, and the resolution is much finer.  The result is still the measured value.  What changes with the gain is the full-scale range.

    So when converting the signal back to analog you need to scale to the reference of the DAC1220.  If the reference voltages are the same for both the ADS1230 and the DAC1220, then it should only be a matter of bit shifting the result to match the DAC1220.

    Will there be a rounding error?  Yes, but it should be much less than the the effect of noise on the least significant bits if you were to use a PGA gain of 1.  The ADS1232 does increase the resolution to 24-bit and has a gain of 1, but I doubt that you would see much benefit by the time you converted the result back to analog as the DAC1220 best resolution is 20-bit.

    Best regards,

    Bob B

  • Hi Bob,

    Thanks for the prompt response.  The reason why I want to do this conversion to digital and then back to analog is because I want to do an application where I can have a transmitter for the load cell signal, send that over wireless, and then have a receiver that plugs into any 3rd party indicator/display with a load cell input.   This way, it can be used with any exisiting load cell indicator out there.  Please let me know if there is a simpler way or I am missing something...

    Can you reconfirm my understanding of your response?

    1) If I use the same reference voltage for both ADS1230 and DAC1220, and if i use a gain of 128 on the ADS1230, then all i have to do on the DAC1220 side is get that value and shift the bits to the right by 7 bits to get my 128 division to get back my original signal?

    2) If #1 is correct, then wouldn't I be losing a lot of resolution?  DAC1220 is 20 bits and if i shift it by 7 bits to get my 128 division, then effectively, my DAC1220 will only have 13 bits of resolution for the indicator.  Is there a way around this and keep my 20 bits resolution?

    3) The load cell indicator (display) i am using contains 6 digits.  I am still trying to figure out if the ADS1230 20 bit will have enough resolution.  Can you advise?

     

    Thanks,

    Paul

  • Paul,

    One thing you will need to do is to make sure that you run the DAC1220 in offset two's complement mode.

    Another issue is calibration.  You need to make sure that the first system and the second system agree over the range of the load cell.

    A third consideration is that often times the load cell excitation and the ADC reference voltage are the same so that they are ratio-metric and reduces noise and drift effects.  You will lose this advantage within your system.

    Regarding question 1.  As I think about this some more I don't think you want to use the same reference voltage for both devices.  The DAC1220 is pretty much locked in around 2.5V.  For the ADS1230 you want to used the largest  excitation voltage you can to get the most range for deflection.  This is the same voltage you would use for the reference.  Assuming that the ADS1230 is using 5V reference, and the input is 10mV, the resultant code for gain of 128 is 268435.  Dividing it down by 128 you get a code of 2097.  For the DAC1220 following the transfer function from Table 8, 20-bit mode and two's complement the resultant output is 2.509999275V as compared to the desired 2.51V, resulting in an error of 925nV, which is less than 1 LSB of 4.768uV for the DAC1220.

    So for 2, you are keeping your resolution for the DAC1220, which is the full 20 bits where one LSB is 4.768uV.  So what you really are losing is the 37nV resolution of the ADS1230, which is one of the reasons you use the gain to improve the LSB size.  If the display unit you are using has a gain stage as well, you will probably be gaining up the noise from the DAC1220.

    As far as question 3 is concerned, it will depend on the range of the load cell you are using and the degree of resolution you will want to observe.  For example, if you have a 100Kg load cell, the best that you can display is to the nearest gram even though you can measure less than that value.

    Best regards,

    Bob B

  • Hi Bob,

    So what you are saying is that with a 20 bit ADC and DAC, i can only acheive 3 digits of accuracy?

    The load cell voltage going in will be in the range of -36mV to +36mV with a rated capacity of 30,000lbs.  In that case, can you verify my calculation below?

    72mV / 30,000 = 0.0000024 V per lb

    code = 0.0000024 V * 128 gain * (2^20 - 1) / 5V ref = 64.43 => 64

    Taking 64 over to the DAC, dividing by 128 will give me zero.... which is very very bad in terms of accuracy.

    If the above is the right way to calculate, I guess I'll need a 24 bit ADC and DAC?  Or I can still tweak other parameters to make this better?  Maybe do a 2.5V ref on the ADC so that my code will double and will be more divisible by 128 on the DAC side?

     

    Thanks,

    Paul

  • Paul,

    I think you have misunderstood what I was saying.  A 6 digit display is the limiting factor depending on the range of the load cell.  If it is a large load cell in regards to range, then you will be limited.  In the case I used (100kG), the largest number possible of 100,000 (6digits) only allows a display resolution of 1 gram.  If you use a smaller load that deflects to 10,000g, you can show a reading of 10,000.0 g.

    For your example, assuming you can measure negative weight, you have a full scale deflection of 36mV for 30,000 lbs.  This means that you will have to use a gain of 64, as you would be beyond the input range if you use 128.  One LSB will be, assuming a 5V reference, 75nV.  So you use 36mV/30000 lbs = 1.2uV/lb.  But because you have more resolution, there are actually 16 codes (LSBs) to make up a pound.  In other words, each code is 1/16th of a pound in regards to resolution.  This excludes any noise or errors.  Code = 0.5Vref/gain/(2^19-1) = 0.5(5)/64/(2^19-1) = 75nV. 1.2uV/lb / 75nV/code = 16 codes/lb or 1 code = 1/16th lb.

    For the DAC side, 1 LSB is 4.6uV.  This ends up being almost 4 pounds change for each LSB or code change, which is the best you can get from the DAC1220. If you take 64 codes times the LSB for the ADS1230 (64 * 75nV = 4.8uV) you happen to get the same code resultant size as the DAC1220.  So  up to the first 64 codes coming from the ADS1230, the result from the DAC1220 will be zero. Another way to look at this is # of codes/gain = resultant code for the DAC1220.

    So the ADS1230 can resolve to the 1/16th pound level because of the PGA, but it is the DAC that has issues.  But not just the DAC as you will have a great deal of noise in this system, and once you take the result from the DAC and run it once again through an ADC you will undoubtedly gain the noise to some degree well below the initial target.  It is quite likely that you will end up with a 10-12bit system at best.  It is most desireable to keep the signal in the digital domain once converted as the noise immunity is verly low with such small signals.

    Best regards,

    Bob B

  • Hi Bob,

    Thank you so much for the detail information.  This really helps in understanding my scenario.  Here are 2 final comments I want verification on:

    1) You mentioned that if i use 128 on the ADC side, I'll hit the input limit.  Do you mean the input limit of the ADC?  Can you clarify?  I would assume with 128 i would get 1 code = 1/32th lb, which is even better than 64.

    2) If I use ADC1230 from TI and use another vendor who has a 24 bit DAC, then I think the calculation will become 1 code = 5V*(1/2^24) = 0.3 uV.  With 1.2uV/lb from the load cell, this would equate to 1.2uV/lb / 0.3 uV/code = 4 codes / lb => 1 code = 1/4th lb. In this case I could be ok in terms of accuracy assuming noise is not in the equation.  Am I correct?  Or better yet, if I limit the spec of the load cell to work with the system to a higher uV/lb value (say 2.4uV/lb), then effectively, with a 24 bit DAC, I'll be getting 1 code = 1/8th lb, which should be pretty good even with noise.  Is this the right assumption?

    I understand that keeping it in digital domain is the best in terms of noise immunity, but the application I am trying to achieve needs to work with any weigh indicator with a load cell input.

    Thanks again for your time Bob!

    Paul

  • Paul,

    Regarding question 1, there is an input voltage restriction on the ADS1230.  It is approximately 19mV (+/-) for a gain 128, and approximately 39mV (+/-) for a gain of 64.  You stated earlier a maximum input of 36mV, so that leaves a gain of 64.

    In regards to question 2, yes a 24 bit DAC would help to achieve smaller values of resolution.  You will need to verify on the datasheet just how much resolution you will get; i.e. what is the value of a single code.  Remember that you need to duplicate a bridge type input, so the input should be around mid-supply.  So for the DAC to respond to a differential signal, you need to think in terms of 23 bits.  Not all DACs allow you to do this, so make sure that you can get the correct result using binary two's complement value with the DAC you want to use.

    In terms of performance, don't expect it to be as great as you are calculating.  You are trying to measure and reproduce voltages that are very small.  Noise will play a significant factor in your results.

    Best regards,

    Bob B

  • HI Bob,

    I see that TI sells this PCM1754 that is a 24 bit DAC.  Will this work?  If not, what 24 bit DAC do you suggest?  I think TI ADS1230 20 bit is good enough since going to 24 bit wont help me much since i am limited by the resolution of the DAC.  Can you suggest which 24 bit DAC to use?

    Thanks,

    Paul

  • Paul,

    This is an audio converter and is not that accurate at DC levels near near the bi-polar zero point.  The second problem is that it uses I2S for communication, and not a standard SPI or I2C interface.

    Currently the highest resolution general purpose DAC that we have is 20-bit.

    I'm not aware of any other option that may work for you that will give any finer resolution than the DAC1220.

    Best regards,

    Bob B

  • Hi Bob,

    I thought about this problem some more and have an idea.  What about keep using the DAC1220 20 bit, but instead of dividing the code received from the 20 bit ADC1230 (with 64 gain) by 64 before converting it to analog, can I use a voltage divider with resistors that will divide the output of the DAC by 64?  This way, I will get the full result from the ADC and may reduce noise since the DAC output voltage will be 64x higher above the noise floor.

    Thanks!

    Paul

  • Paul,

    Remember that when you use a resistor divider you have the potential for adding noise and drift and the resistors have to be really well matched.  That said, at some point you need to take it from the theoretical and build the circuit and test it. 

    Best regards,

    Bob B

  • Hi Bob,

     

    I am almost done with my prototype.  I have a minor question for you.  The 2's complement output from the ADS1230, is it correct to take that code and multiple that code by 2 as an input for the DAC1220 since the DAC1220 is offset 2's complement?  The reason I am asking is when i take the code from ADS1230 directly and input it to the DAC1220, I am about 1/2 of what I expected.  I guess I don't know how to convert 2's complement number to "offset" 2's complement number.

     

    Thanks,

     

    Paul

  • Paul,

    Yes you will be off by a factor of two if the ADS1230 has a 5V reference and the DAC1220 has 2.5V reference.  So you can multiply by 2(<<1), which at the levels of voltage you are reading should not be a problem. 

    This would only be a problem when you have a reading that produces a large output voltage.  For example, 0x7FFFF when multiplied by two becomes 0xFFFFE and reverses the sign and is totally the wrong value.

    Best regards,

    Bob B

  • Hi Bob,

    So I can get my original signal by measuring between Vout and Vref of DAC1220 right?  That will take care of the "offset" 2's complement format i assume.

    One more thing, the multiplication by 2 is based on 5V/2.5V.  But since those 2 voltages are not exactly 5V or 2.5V sometimes, will I have errors from this multiplication?  If so, is there any way around this?

    Thanks,

    Paul

  • Paul,

    Yes, in two's complement form you can measure between VREF and VOUT and you should see the voltage as it is converted through your system.

    As far as the accuracy of your measurements, you can only be as good as your references, so that is why you need very stable references for your system.  For example, you could use a REF5050 for the 5V reference for the ADS1230 and a REF5025 for the DAC1220.  These are precision references.

    Best regards,

    Bob B

  • Hi Bob,

    Thanks for your suggestion on using a high precision voltage reference like the REF5025 and REF5050.  You mentioned previously that:

    "A third consideration is that often times the load cell excitation and the ADC reference voltage are the same so that they are ratio-metric and reduces noise and drift effects.  You will lose this advantage within your system."

    When using a voltage reference of 5V on the ADS1230 side and a voltage reference of 2.5V on the DAC1220 side, and using acommon ground for both the DAC1220 and the load cell excitation source, would it solve this consideration since the signal of interest is the voltage between Vout and the fixed precise 2.5V from the voltage reference?  So it doesn't matter what the load cell excitation voltage is since it doesn't go into the calculation of Vout of DAC1220.  Only the Vref on ADS1230 and DAC1220 is relevant.  Am I correct?

     

    Thanks,

    Paul

  • Paul,

    If this is wireless, the only common ground is earth ground.  I think you are missing the point I was trying to make.  Normally you would have one reference noise source from the initial conversion.....now you really have three.  One from the initial conversion, another when converting back to analog and a third when converting the analog to digital again.  Any noise as a result of the DAC1220 will be gained up in the final ADC.

    Your ability to resolve to the desired resolution of the final ADC stage will be a factor of the noise induced by the previous stages.

    Best regards,

    Bob B

  • Hi Bob, Thanks for the clarification. I thought of another problem besides noise at 3 different stages. Assuming I use a precise 5V reference at the transmitter side (ADS1230) and a precise 2.5V reference at the receiver side (DAC1220), that is the best I can do besides noise. In my application, the signal from the 2nd stage DAC1220 will be directed into an unknown 3rd stage (meaning it's still 5V ref but I won't know how precise that 5V is). So the unknown precision of the 5V ref on the 3rd stage of the ADC (which is also connected to the excitation voltage) may throw my system's accuracy off. Here are my questions: 1) I would assume that I shouldn't use the excitation voltage from the last stage (unknown Vref of final ADC) to drive my receiver (DAC1220) circuit since it would load it down and cause the Vref at the last stage to change to an unknown voltage. I should use an independent power source. In this case, maybe I can use a trimmer potentiometer across the excitation voltage to simulate different loads for calibration purposes. If Vref is say 5.01V, then increasing the pot value would load it down hopefully to 5.00Vref (what we wanted). Do you think this is a workable solution? 2) Since the 3rd and last stage has an unknown precision of Vref, do you think it's even worthwhile using a precise Vref for the 1st and 2nd stage? I would assume so since I am reducing the number of problem area and also if the solution to #1 is feasible. Thanks, Paul
  • Paul,

    I think you are now starting to see the big picture, and why I stated at the beginning why this is a difficult task and why I said there should only be one conversion.

    You want to have as precise a signal as possible end to end, and then calibrate it end to end.

    If you add a pot to the third stage you will add noise/drift issues to the reference, so I'm not sure I would do that.  Overall I think you will need to build a prototype and see how it performs.  You can try the pot and see what happens.

    Part of engineering is taking an idea, building a circuit, and testing it.  You make improvements to your design and try again until you make it happen.  Until you actually try it, you won't know all the issues that you have to deal with.  Simulations and calculations help you get started, but it doesn't tell the whole story as there is undoubtedly something you didn't account for in your design.  I understand that you want to have the best starting point as possible, but many times you learn more from failure than success.

    My advice is to take the circuit you have so far and build it and test it.  Hopefully the prototype is not built on a solder-less breadboard, but on a well designed PCB.

    Best regards,

    Bob B

     

  • Hi Bob,

    Thanks for the great advice again!  I almost finished building my prototype.  I am using the eval boards from TI and hook everything up with a microprocessor board.  Hope I am not introducing too much noise that way.

    I am looking at the DAC1220 eval board side only now.  I programmed a fixed output voltage (2mV).  I hooked up to a device load cell input (the unknown last stage of my system) on 3 signals (1 wire +signal to Vout of DAC1220 eval board, 1 wire -signal to Vref of DAC1220 eval board, and the ground).  With a volt meter, I see 2mV across Vout and Vref (But only to a precision of 0.1mV.   However I see that there is a wide range of fluctuation in the number the device is reading(very not stable).  This is noise (< 0.1mV) but I don't know where it's coming from.  The DAC1220 eval board uses a 2.5V voltage reference (part # REF1104I-2.5), and I am feeding that to the device.  I don't know if somehow this would introduce noise to the Vref?  Also, i have an independent power source to my DAC1220 eval board instead of taking power from the device's excitation voltage since I don't want to interfere with the Vref of the end device by loading it down. 

    Can you give me any suggestions?  I don't know where to look now since I have isolated the problem by looking at the DAC1220 eval board side only by programming a fixed output voltage (so it can't be a problem with the transmitter).

     

    Thanks

    Paul

  • Paul,

    The device defaults to 16-bit mode....do you have it in 20-bit mode, and did you do a self-calibration?

    You need to make sure that there is no noise on your flywires.  I would first look at the stability of the DAC1220EVM without the connection to the external device to ensure you know what the best case stability/precision/noise is for the EVM.

    Best regards,

    Bob B

  • Hi Bob, 

    Yes, I did self calibration and changed to 20 bit.  Do I have to do it multiple times or is one self calibration enough?  I made sure it's in 20 bit since the code I registered correspond to a 20 bit output by using my multimeter (0.1mV precision only).  I programmed 0x1A4 and got 2mV (which is about what i expected).  So the only thing is noise since roughly I got the right output.  Will the Vref from the DAC1220EVM produce enough noise to affect my system (1.2 uV per lb)  since I am using Vref as my -Signal input.

    I will have to look at my flywires to see if there is difference at the output of the EVM and the input to the end device.

     

    Thanks

    Paul

  • Paul,

    Yes the reference can add noise to your system.  You might get some improvement using the REF5025.  The REF1004 (zener type) requires an opamp to drive the reference of the DAC1220, but the REF5025 has a drive stage built in. 

    So every device you add to the system will increase the noise.

    Best regards,

    Bob B

  • Hi Bob,

    Assuming that I am using Vout of DAC1220 directly as the AinP for the ADC1230 and Vref from a very good low noise 2.5V reference as AinN for the ADC1230, can I assume that in terms of noise wise, this is the best I can do (besides doing a good job on the PCB layout)?  I would assume that I can't improve the noise better beyond what the DAC1220 output and a very good Voltage reference can give me.  Am I correct?  Or is there other ways of improving these 2 outputs before entering the ADC1230?

    Also, will DAC1220 be good enough to drive the ADC1230 AINP?  My test doesn't show any difference between a direct output and a buffered output.

    Any design suggestions would be appreciated!

     

    Regards,

    Paul

     

     

  • Paul,

    Depending on what is causing the noise, there may be ways of filtering it.  An active filter may add more noise, and a RC filter will add some latency.  So, you might be able to improve it some, but it depends on the nature of the noise.

    Best regards,

    Bob B

  • Hi Bob,

    I have finally gotten some more time to work on this home project.  In fact, I have gotten a PCB now so there are no flying wires... 

    I have a couple of questions:

    1) On the ADC1230, I noticed that the code that is generated differs from my prototype (using TI ADC1230 Eval board).  One thing I didn't do is connect AGND to DGND at the ADC.  AGND and DGND is connected together but it has a long path since I separated my analog and digital ground planes.  Will this cause noise into my analog and cause a code that is generated differently compared to the benchmark ADC1230 TI Eval board?  What else can cause this phenomenon?

    2) For AINP and AINN on the ADC1230, does it matter where in 0 to AVDD range it is situated in? In other words, say AVDD=5V and VREF=5V, is there a difference between AINP=3V and AINN=2V versus AINP=4V and AINN=3V?  They both have a difference of 1V, and thus the ADC can't tell a difference and still generate the same code?

     

    Thanks,

    Paul

     

  • Paul,

    Regarding question 1, the grounds should be connected together at the ADC.  Noise can enter the ground trace.  There can be other sources of noise as well, and are often  related to layout.  See the design notes page:

    http://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/grounding-techniques.aspx

    For question 2, it will make a difference.  There is a common mode input range restriction where AINP and AINN must be at least 1.5V from AVDD and AVSS.  4V at the input is outside the common mode input range.  Another problem with your example is 1V differential is too large for a gain of 64 or 128, so you will not get the proper reading as it will over scale.

    Best regards,

    Bob B

  • Hi Bob,

    I'll try connecting the grounds together at the ADC.

    As for the AINP and AINN, does that mean that for example (AINP=2.01, AINN=2.00) will be equivalent to (AINP=3.01,AINN=3.00)?  Meaning that for those 2 cases, the ADC will generate the SAME code?  This example is outside of the restriction range.

    Thanks,

    Paul

  • Paul,

    Yes they will be the same (excluding any noise that may also be a part of the measurement.)  The ADC will measure the difference from AINN to AINP, which is 0.01V.  If the input is swapped, the reading will represent -0.01V.

    Best regards,

    Bob B