过采样提高12位ADC的精度
背景:
- 过去传统的按键都是机械按键,随着威廉希尔官方网站
的发展也出现了触摸按键,但是机械按键不能泡水,寿命也比较短。触摸按键也没法有很多水或泡沫等,金属面板还不能使用。
- 压感就应运而生,可以应用于不同的面板,还防水防油,寿命也很长。
- 压感不但可以应用于按键,还可以应用于刷头等,提升了产品的体验。
概述:
- 深圳瑞浒科技有限公司专注于压力传感器的研发。
- 标准电键传感器RH101、多键标准传感器、压力按键定制模块以及家电、手机、电子烟、无线耳机和电动牙刷等多领域,不断为3C、家电、卫浴等行业客户带来更高效、更优质的综合解决方案,是一家基于新型压感材料和印刷工艺的高科技公司,专业研发、生产、制造和检测压力传感器以及提供配套服务。
- 正常使用压力传感器需要专门的高精度ADC采集芯片,比如M68等专用芯片。
- 为了减少成本普及客户的应用,可以采用普通的12bit ADC MCU来实现压力方案.
- 目前该方案在STM32上面已经有实测和验证ok,如下是详细的实现过程和测试数据.
压感知识补充:
- 瑞浒科技的压感是电阻桥式的压感,如下图所示:
- 给压感供电:比如VCC供电3.3v,然后采集两个信号的差值SIG+和SIG-得到实际按压的力度检测,来实现各种方案。
- 压感信号比较小,大概uv级别,所以需要专用的高精度的ADC芯片来采集和处理。
压感应用实物概览:
**过采样方案(理论依据): **
- 因为压感信号比较小,假如单独用12位ADC采集是不够的。
- 假如压感供电3.3v,大概计算12位ADC的1ADC = 805uV。没法识别几十或几百uv的压感信号,所以得增加识别精度。
- 用过采样方式来提高:软件上,把12bitADC扩展为16bit数据,有效位数为14bit,原理为每隔0.625ms采集一次传感器信号,每16次ADC数据相加的和,即为16bit的ADC数据,有效位数为14bit,最后2bit的数据为无效数据。假如直接以16bit的数据进行运算可以提高ADC精度,有效14bitADC对应 1ADC=201uV 假如按压压感信号可以到几百uV那么就可以省去高精度ADC的MCU。
**过采样方案(电路图): **
- LDO给MCU和压感供电:
- 12位ADC的MCU和压感:
**过采样方案(参考代码): **
int main(void)
{
//初始化ADC,GPIO,TIMER等
Init_All_Driver();
while (1)
{
//定时0.625ms
if (time3_ms625_time_out_flag)
{
time3_ms625_time_out_flag = 0;
//看门狗喂狗
IWDG_ReloadCounter();
//获取ADC值
ADC_Get_Data(key_adcdata);
g_adc_sum += (key_adcdata[2] - key_adcdata[1]);
g_10ms_cnt++;
if(g_10ms_cnt >= 16)
{
g_10ms_cnt = 0;
//压感ADC处理
key_rawdata[1] = g_adc_sum;
g_adc_sum = 0;
//ADC数据处理
ADC_DealWith();
//按键处理
Button_DealWith();
//按键模式切换
Button_Mode_Pro();
//时间计时
Key_Time_Pro();
}
}
}
}
**过采样方案(对比测试数据): **
**结论(过采样是可行的): **
- 从上面实际测量的数据对比看:过采样可以提升精度,从而可以省去专用高精度ADC芯片,来采集压感信号。
- 假如直接用12bit采集压感信号,只有在施加很大压力的时候,信号非常大的时候才可以采集到信号。
**总结(压感降成本使用对比): **
- 传统使用方式:
- 低成本方案,省掉高精度AD芯片,直接用主控采集压感:
|