Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC™ 5, 3 & 1 Forum Discussions

Islas
Level 1
First like given First question asked Welcome!
Level 1

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.  

Islas_0-1657737255186.png

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!

 

0 Likes
1 Solution
Len_CONSULTRON
Level 9
1000 replies posted 750 replies posted 500 likes received
Level 9

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.

Len_CONSULTRON_0-1657743791122.png

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)

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

View solution in original post

3 Replies
Len_CONSULTRON
Level 9
1000 replies posted 750 replies posted 500 likes received
Level 9

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.

Len_CONSULTRON_0-1657743791122.png

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)

Len
"Engineering is an Art. The Art of Compromise."
DennisS_46
Employee
50 sign-ins 100 replies posted 25 solutions authored
Employee

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)

odissey1
Level 9
First comment on KBA 1000 replies posted 750 replies posted
Level 9

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.