- IC型号
企业档案
- 相关证件:
 
- 会员类型:普通会员
- 地址:宝安区西乡街道固兴鸿宇大厦9层
- 传真:0755-23202135
- E-mail:756566693@qq.com
技术解密:如何提高基于C8051F020温度采集系统的MCU ADC采样精度?
发布时间: 2022/1/19 16:05:31 | 129 次阅读
笔者解决了一个基于C8051F020 MCU做温度采集(内部结构框图如图1)、但采集的结果却不稳定的问题。该温度采集系统软件及硬件,一切看似中规中矩,但在多个细节处却隐藏了导致异常的隐患, 终导致测试结果跳动。现在总结如下,供小伙伴们参考。
图1:C8051F02010位ADC功能框图
在实际中,该采集系统处在进风道处,安装了PTC温度传感器,通过电阻桥来采样温度。测试发现,刚开机的时候,温度显示比较稳定,但当风机运行后,温度偶尔会出现不同频率的跳动。再了解到,这种现象概率不高,大概在10%左右。初步检查系统的硬件电路,基本正常,只是电阻桥离MCU会比较远,使用了外部参考电压。
为了搞清楚输出的数据的特征,将ADC结果通过串口输出,经分析数据发现,ADC结果也存在跳动,即说明,温度的跳动的确来自ADC的结果异常,并且这种异常很可能是硬件产生的。
再次检查该采集系统的电路板,在温度电压输入上,尽快加了滤波电容,但离MCU很远,约10CM,因此,在靠近MCU处、在ADC输入上,加了滤波电容,104pf;再次测试,稳定度好了很多;另外,系统的板子用了外部参考电压,但滤波电容只放了一个4.7uf,加一个104pf的滤波电容,再次测试,效果又有改善,跳动的问题,基本消失。
为了检查修改效果,现场休整并测试了3台机器,基本上不出现跳动的情况了,但3台机器之间存在 高0.9°的偏差;根据以前解决的经验,这应该属于偏移误差。现场修改了代码,用外部高精度温度传感器、将ADC校准了,如此,3台输出消除了偏移误差。
至此,该客户的测试结果异常的问题,已经解决,主要用3个措施:
1)靠近MCU处、在ADC输入通道上,加了滤波电容,根据该采集系统信号的特点,容值取104pf。
2)系统PCB板子用了外部参考电压,但滤波电容只放了一个4.7uf,根据Silicon Labs的推荐电路(如图2)又加了一个旁路电容,104pf。
3)修改了代码,用外部高精度温度传感器、将ADC校准了,消除偏移误差。
图2:C8051F020电压基准功能框图
另,为了使问题更具有全面性,如下还列举了其他一些因素,可以影响到ADC精度,攻城狮们可以作为参考:
1)此次涉及的是C8051F020,它的分辨率是10位。显然的,如果使用12位,或14位,或16位,再或24位的,它的精度肯定会更高。
2)在需要通道切换的应用中(比如在C8051F020中,即指变换AMUX),如果切换时间非常快,可能会有刚切通道换后、采集到的数据失真的情况,因此,需要丢弃一些数据,才能保证数据是真实的,至于丢掉是2个3个还是更多,需要根据实验来确定,这与现实的、ADC通道上的电阻、电容有关。
3)数字地与模拟地分开;强电与弱电分开。
4)过采样、求平均,也可以显著提高ADC精度。