- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Hello,

I am developing an application that measures an unknown resistance on the PSoC 5lp Cy8CKIT-059. The problem I am encountering is accuracy. The requirement needed for this application is to measure a resistance within 0-100 Ohms and have it be within an Ohm of error. for example, if the unknown resistance is 70 Ohms and the readings are 69 Ohms or 71 Ohms then it is considered an inaccurate reading for my application.

the method I have implemented is a 4 wire Kelvin connection using an IDAC for the known current source and an ADC Delsig for measuring the voltage across the unknown resistor.

The results I am getting is still about 1.5 to 2 Ohms off from the desired resistance (77 ohms when it should be 75). I have configured the ADC to the high resolution low speed configuration and have the IDAC to the max current of 2.04 mA. I have also implemented an averaging function in the firmware to filter the ADC counts. I have attached my project for more details on the configuration and firmware.

Any help/advice in order to achieve the desired accuracy would be greatly appreciated!

Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

The PSoC IDAC8 is __reasonably__ accurate. Additionally, the ADC_DelSig is __reasonably__ accurate too.

To improve your overall accuracy you need to add a high precision reference resistor (0.1% to 1.0%) in series to your Resistor-under-test.

Using a differential ADC reading of the R_ref resistance, you can more accurately minimize the IDAC variance at the target IDAC value. You should be able to use the calculated current from the R_ref for the current for R_1.

The accuracy variance of the ADC is also minimized by the R_ref current reading.

Therefore the R_1 equation with improved accuracy should be:

R_1 = V_adc_r_1/(V_adc_r_ref/R_ref)

"Engineering is an Art. The Art of Compromise."

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

The PSoC IDAC8 is __reasonably__ accurate. Additionally, the ADC_DelSig is __reasonably__ accurate too.

To improve your overall accuracy you need to add a high precision reference resistor (0.1% to 1.0%) in series to your Resistor-under-test.

Using a differential ADC reading of the R_ref resistance, you can more accurately minimize the IDAC variance at the target IDAC value. You should be able to use the calculated current from the R_ref for the current for R_1.

The accuracy variance of the ADC is also minimized by the R_ref current reading.

Therefore the R_1 equation with improved accuracy should be:

R_1 = V_adc_r_1/(V_adc_r_ref/R_ref)

"Engineering is an Art. The Art of Compromise."

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Len is right about using a reference resistor. The accuracy of the iDAC is +/- 2.5%.

+/-0.025*75ohm=+/-1.875ohms, roughly what you are seeing. The calibration to a reference resistor will be as accurate as the resistor itself, and you can easily buy +/-0.1% (0.075 ohms) resistors. There are other voltage-dependent non-linearities involved, but if you are working over a limited range (say, 55 to 95 ohms), these errors would be less than the error in reference resistor.

---- Dennis Seguine, PSoC Applications Engineer

(and also the guy who generated and tested the iDAC linearity models, back

in the day when PSoC5LP was new)

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Islas,

1. Alternatively, you may consider using external low-cost 24-bit ADC HX711 for measuring low resistances. Please find Cypress Community component:

# HX711: 24-bit Delta Sigma ADC interface for weight scale using PSoC

and application note from dannyelectronics (attached). The App Note also discusses some accuracy issues of measuring low resistance. Note that HX711 has 50/60Hz digital hardware filter built-in.

2. Keep in mind the following:

(i) IDAC is not based on voltage reference, so its output is not very stable and drifts with temperature as 40PPM/degC.

(ii) The DelSig-ADC measurements are strongly affected by the AC main noise (50 or 60 Hz). To achieve 16-bit accuracy, ADC output needs to be filtered specifically for that frequency. The Moving Average Filter should work, but ADC sampling frequency and number of taps must be specifically selected to suppress that frequency, not just blindly averaging some points.