1. 单片机A/D采样
假设一个系统使用12位的ADC,每秒输出一个温度值(1Hz)。为了将测量分辨率增加到16位,我们按下式计算过采样频率:
因此,如果我们以fs=256Hz的采样频率对温度传感器进行过采样,我们将在所要求的采样周期内采集到足够的样本,对这些样本求均值便可得到16位的输出数据。为此,我们先累加(将256个连续样本加在一起),然后将总和除以16(或将总和右移4位)。这样的过程通常被称为抽取。这样得到的结果是16位的有用数据,所做的操作被称为累加和抽取。一旦我们计算得到由256个样本(对本例而言)所产生的结果,我们将对数据进行保存或处理,然后开始为下一个输出字采集样本。
注:用于累加过采样数据和进行除法运算的存储器单元所占的字节数必须足够多,以免发生溢出或产生截断错误。
2. AVR单片机如何提高AD采集精度抗干扰,去除噪声这些,请提供一些解决方案。请大侠帮个忙。
1.加强模拟电压的滤波,信号源稳定是第一位要考虑的,否则后续处理会很累,需要用很多办法,耗费单片机机时。同时要注意模拟地和数字地分开布线。
2.由于M128的内部精度是固定的,要想再提高精度就需要采用“过采样”技术。条件是需要白噪声的环境,通过用每4倍过采样来, 提高1位的分辨率。
3.软件滤波。滤波的方法很多,建议你搜 “经典软件滤波” 有很详细的说明。文章列举了各种软件滤波的方法,并评价其优缺点。
3. C8051单片机编程中,实现AD转换,实现平均值滤波,参考电压为VDD=3.3V,为什么将过采样次数定为3300,这两
参考电压选择3.3V的原因是为了方便,C8051系列单片机是低功耗单片机,正常工作电压3.3V,单端输入AD电压基准可以在3.3V以内任意选取(虽然单片机可耐5V电压,但是为了保险起见还是3.3V为好),所以电压基准一般直接选择3.3V,这样直接使用电源做基准即可,不用另加芯片,有的是选择2.5V(TL431做基准)
采样次数也是可以任意选定的,与电源基准没有关系,只要你AD实时显示的频率满足要求,采样次数越大,AD显示的数字越稳定,如果你AD使用的是变化速度很快的加速度传感器之类,建议使用卡曼滤波。
4. 提高单片机AD分辨率的问题
一般情况下要是想用10-bit的ad芯片得到12bit的数据就只能用过采样的方法了,但是这是一种算法,类似于数值分析的方法,所以转换的准确性肯定没有12bit的AD效果好,不考虑成本还是选用12bit的AD吧,如果采用过采样的方法,你的程序中肯定就有对ad数据的额外处理,这样势必增加程序的长度,影响系统的实时性。