
数据采集流程需分三步:模拟前端(AC耦合+RC低通+同相放大)抑制直流偏置并滤除高频噪声,ADC采样率按奈奎斯特定理选择(高于2倍信号最高频率),噪声处理分高斯噪声(巴特沃斯低通)和周期性噪声(陷波滤波器,Q值控制带宽),最后通过多次采样求平均计算光强,减少随机误差。
光学传感器输出模拟信号,含直流偏置(如传感器暗电流)、高斯噪声(随机、均值为0)和周期性噪声(如工频50Hz)。流程核心逻辑如下:
| 类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| AC耦合+RC低通 | 电容耦合(C耦合)+ R-C低通 | 隔断直流,RC截止频率( f_c=\frac{1}{2\pi RC} ),阶跃响应延迟τ=RC | 低成本,信号频率低,需抑制直流偏置 | 截止频率需高于2( f_{\text{max}} ),否则信号衰减;阶跃响应延迟导致快速变化信号失真 |
| 巴特沃斯低通 | 多阶RC网络(如二阶) | 通带平坦,阻带衰减随阶数增加而加快(如二阶-12dB/倍频程) | 信号与噪声频率接近,需陡峭截止 | 阶数越高,电路复杂、延迟越大,成本增加 |
| 选择 | 条件 | 混叠风险 | 适用场景 |
|---|---|---|---|
| 奈奎斯特采样 | ( f_s > 2f_{\text{max}} ) | 无 | 信号最高频率已知,采样率足够 |
| 不足采样 | ( f_s < 2f_{\text{max}} ) | 存在混叠(高频信号折叠为低频噪声) | 需更高采样率或信号频率低(如直流信号) |
假设信号最高频率( f_{\text{max}}=30\text{Hz} ),ADC为12位(量程0-4095),噪声为高斯分布,标准差( \sigma=50 )(对应均方根噪声电压),允许误差( \Delta\mu=5 )(光强相对误差)。模拟前端:AC耦合电容( C=10\mu\text{F} )(隔断直流),RC低通( R=10\text{k}\Omega ),( C=0.318\mu\text{F} )(( f_c\approx50\text{Hz}>2\times30\text{Hz} ));同相放大器增益( G=10 )(输出不超过4095)。采样率( f_s=100\text{Hz} )(( >2\times30\text{Hz} ))。采样次数( N ):由( N=\frac{\sigma^2}{(\Delta\mu)^2}= \frac{50^2}{5^2}=100 ),取( N=100 )。
伪代码:
def calculate_light_intensity():
# 模拟前端初始化
ac_coupling = 10e-6 # 10μF AC耦合电容
rc = RCFilter(R=10e3, C=0.318e-6) # f_c≈50Hz
amp = InvertingAmplifier(gain=10) # 避免饱和
adc = ADC(sample_rate=100) # f_s=100Hz
sum_val = 0
for _ in range(100):
raw = adc.read() # 0-4095
filtered = ac_coupling.process(raw) # AC耦合(隔断直流)
filtered = rc.process(filtered) # 低通滤波
amplified = amp.process(filtered) # 放大
sum_val += amplified
avg = sum_val / 100
return avg
面试官您好,针对光学传感器模拟信号采集,我会设计如下流程:首先,模拟前端处理,用10μF电容AC耦合(隔断传感器直流偏置),再接RC低通滤波器(R=10kΩ,C=0.318μF,截止频率约50Hz)滤除高频噪声,同相放大器放大10倍(确保ADC输入不超过量程)。根据奈奎斯特定理,信号最高频率30Hz,采样率设为100Hz(高于2倍最高频率),避免混叠。噪声处理方面,高斯噪声用巴特沃斯二阶低通(通带平坦,阻带衰减快),周期性噪声(如50Hz工频)用陷波滤波器(中心频率50Hz,Q值设为5,控制带宽)。最后,通过100次采样求和除以100计算光强平均值,根据统计理论,多次采样取平均能降低随机误差,最终得到更准确的光强值。