- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I'm using Pt1000 sensor to detect a temperature.
A 1 kohm resister is used as reference resister.
The output temperature became 80 degrees in room temperature.
What is wrong in my project?
Could you check my project file?
Thank you.
Solved! Go to Solution.
- Labels:
-
PSoC 5LP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
YuSh,
As I indicated in an earlier post, there was a significant error source due to the offset measurement and compensation in GetOffset().
I changed the ADCMux to include a third channel with Vssa as the third input. Then in GetOffset() I don't change the IDAC but switch the ADCMUx to the Vssa channel (=2). This significantly lowers the GetResult32 value I was getting from 11000+ counts to < 1000 counts.
int32 GetOffset(void)
{
volatile int32 result = 0;
/* Set the ADCMux to VSSA to measure the ADC offset */
ADCMux_FastSelect(VSSA_CHANNEL);
/* Get the ADC offset voltage */
ADC_StartConvert();
ADC_IsEndConversion(ADC_WAIT_FOR_RESULT);
result = ADC_GetResult32();
return result;
}
I believe you are trying to compensate for the ADC offset. Setting the IDAC to 0mA is not as effective since there are non-linearity and leakages in the IDAC output. I recommend this as a more preferred method to offset correct the ADC input.
Once I used the above technique for offset measurements, my Temp readings from RTD_GetTemperature() are now within 0.12C of the intended values. Note: My unit testing are still using ideal RefRes and RTD (stepped from -70C thru 90C) values.
Len
"Engineering is an Art. The Art of Compromise."