AN-1063: 过采样技术提高ADXL345输出分辨率
简介
ADI公司的 ADXL345三轴加速度计包括一个数字接口和内置模数转换器(ADC)。ADXL345在所有g范围内(±2g、±4g、±8g和±16g)具有3.9 mg/LSB的高分辨率,适合大多数应用。在需要更高分辨率的应用中,可使用过采样技术来提高ADXL345的分辨率。此应用笔记说明如何利用先进先出(FIFO)缓冲器提高ADXL345的分辨率。
过采样原理
对来自加速度计的加速度信号进行数字信号处理的第一步是模数转换。对于具有模拟输出的加速度计,加速度计的信号通过外部ADC被数字化,其分辨率取决于应用的需求和设计者的选择。相对于模拟输出加速度计,数字输出加速度计(如ADXL345)具有一个内部ADC,且其分辨率已由传感器设计决定。
过采样技术是使用比所需速率高得多的速率对模拟信号进行采样来提高分辨率的技术。与数字滤波和抽取结合使用,可产生更高的分辨率。甚至对于ADC分辨率已固定的数字输出加速度计,仍可使用该技术以更高的分辨率对加速度进行测量。过采样背后的原理是过采样信号中的总量化噪声与以原速率采样的信号相同,但总量化噪声被分散到了更高的带宽中。该过采样信号可以原始带宽滤波,减少总量化噪声。总噪声降低以后,在保持原始信噪比(SNR)的同时,信号可以更小的步进进行分辨。
表1所示为过采样系数,它决定ADXL345的输出数据速率比应用中所需数据速率高多少。对于2倍或 1 LSB分辨率的提高,过采样系数必须是4。而4倍或2 LSB分辨率的提高则要求过采样系数为16。
过采样系数 | SNR的提高 | 分辨率的提高(用位数表示) |
4 | 6 | 1.0 |
16 | 12 | 2.0 |
ADXL345的实现
ADXL345为具有数字接口的三轴加速度计。它包含一个13位ADC和一个具有强大中断系统的32级FIFO(每轴)输出缓冲器。当规定数量数据存储在FIFO中时,它将产生一个中断信号。通过写入适当的寄存器,可对ADC的输出数据速率进行配置。
由于FIFO具有可配置输出数据速率以及灵活的中断系统,因此ADXL345非常适合于过采样技术。
输出数据速率设置
在对ADXL345使用过采样技术时,用户必须首先确定过采样系数。根据分辨率提高所需的等级选择过采样系数:当分辨率需要提高1 LSB时,选择过采样系数为4;当分辨率需要提高2 LSB时,选择过采样系数为16。接下来,根据所需数据速率选择传感器的输出数据速率。例如,若在应用中所需数据速率为12.5 Hz,分辨率需要提高1 LSB,那么ADXL345的数据速率可配置为50 Hz (12.5 Hz × 4)。输出数据速率可在BW_RATE寄存器中进行设置。
FIFO设置
当存储在FIFO中的数据数量与过采样系数值相等时,应该设置FIFO在此时产生一个中断。该类型中断称为水印(WM)中断。FIFO既可以在FIFO模式下使用,也可以在流模式下使用(更多信息,请参见ADXL345数据手册)。
产生WM与FIFO操作所需的数据量可由FIFO_CTL寄存器设置。INT_ENABLE寄存器用于使能WM中断。INT_MAP寄存器控制是否将WM中断分配到INT1引脚或INT2引脚。关于此应用笔记中没有提到的使用FIFO的其它详细信息,请参考ADXL345数据手册或 AN-1025应用笔记,即《ADI数字加速度计中先进先出(FIFO)缓冲器的使用》。
数据格式
通过访问数据寄存器(每轴两个字节)可读取ADXL345的数据。当在±2 g模式下使用右对齐数据时,加速度数据如表2所表示(带有扩展符号位的10位数据字段用二进制补码表 示)。
微处理器中的数据处理
根据应用中所需的数据速率,配置ADXL345产生WM中断。处理器基于对应于WM中断的过采样系数读取多种数据。然后,数据必须经过数字滤波,并经过抽取获得所需分辨率数据。简单、有效的滤波和抽取方法是求平均值。将所有从ADXL345读取的数据相加,然后除以2或4,在分辨率上就可以分别得到1 LSB或2 LSB的提高。(当过采样系数为4时则除以2,当过采样系数为16时则除以4。)
当ADXL345的输出数据速率为200 Hz且有16组数据存储在FIFO中并产生水印中断时,过采样的时序图如图2所示。表3为处理器内部过采样系数为4时数据处理过程的实例。
在3.9 mg/LSB分辨率时,Data1为256 LSB。应当对应为1000 mg。Data2为257 LSB和约1004 mg,如此类推。当所有四个数据相加且除以2以后,数据变成512 LSB,也就是在1.95mg/LSB分辨率下的1000mg。此表明分辨率有1 LSB的提高。
值得注意的是,ADXL345的数据为二进制补码。当除以负数时,移位的数据可能导致结果与实际数据不一致。
0x33 (X)/0x35 (Y)/0x37 (Z) | 0x32 (X)/0x34 (Y)/0x36 (Z) | ||||||||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
符号 | 符号 | 符号 | 符号 |
符号 | 符号 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 DATA_FORMAT寄存器用于配置ADXL345的动态范围和数据格式。 |
噪声考虑因素
过采样仅能改善ADC的量化误差。可通过噪声密度和用于过采样的数字滤波器的性能计算ADXL345的输出噪声。
ADXL345的噪声为白噪声,它在每个频率上的功率相同。可通过以下方程计算输出噪声:
输出噪声 (g rms) = √(噪音密度(g/√(Hz))2 ×
滤波增益 (dB) × پf (Hz))
对于移动平均数的情况(16倍过采样可提高2 LSB),输出数据速率为100Hz,图1所示为滤波器的增益响应。
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
Data1 (256 LSBs) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Data2 (257 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Data3 (255 LSBs) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Data4 (256 LSBs) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Data1 至 Data4 的和 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
将总和除以2 (512 LSBs) | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |