工具/软件:
使用了 TI 演示代码、 UltrasonicGasFR6043_02_30_00_01
“USS_ALG_FILT_IS_FILTER_ENABLE"启用“启用带通滤波器、并按如下方式更新滤波器系数。
我发现整个程序只能运行一次、我能够得到一组接收到的无法继续的波形。
我不知道为什么。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
使用了 TI 演示代码、 UltrasonicGasFR6043_02_30_00_01
“USS_ALG_FILT_IS_FILTER_ENABLE"启用“启用带通滤波器、并按如下方式更新滤波器系数。
我发现整个程序只能运行一次、我能够得到一组接收到的无法继续的波形。
我不知道为什么。
现金奖励、
我尽量理解解决方案。 希尔伯特转换用于计算 absToF、获取信号包络、然后获得信号到达时间。 相关方法已用于计算 deltaToF。
如果接收到的信号的 SNR 低于预期、deltaToF 也将受到影响。 所以、我想提高带通滤波器的 SNR。
Hilbert‘s可以影响 absToF、也许可以避免“ kip 周期“、但不能在低 SNR 下提高 deltaToF 的标准。
也许我误解了、但我希望得到您的答案。
谢谢!
您好、
您的理解是正确的。 dTOF 结果将受到 ADC 采集数据的低 SNR 的影响。
对于滤波器系数设置、您将需要在 MATLAB 中执行以下代码来生成滤波器 系数。 您需要更改 FS、Fstop1/2、Fpass1/2 甚至是燃气表的 Wpass、然后重试。 如果 系数正确、则应该有效。
N = 18;FS = 3600000;Fstop1 = 600000;Fpass1 = 800000;Fpass2 = 1200000; Fstop2 = 1400000;Wstop1 = 1;Wpass = 10;Wstop2 = 1;filterCoeffs =[firpm (N、[0 Fstop1 Fpass1 Fstop2 Fstop2 Fs/2]/(Fs/2)、[0 0 1 0 0]、[Wstop1 Wstop2]) 0];
此致、
现金好
Hi Cash、
我的配置:
USS_ALG_FILT_IS_FILTER_ENABLED 对
如下所示、这是用于生成滤波器系数的代码。
clear; clc; close all; N = 18; % 滤波器阶数(系数数=N+1=19) Fs = 1000000; %采样率 1M Fstop1 = 150000; %阻带1 150 KHz Fpass1 = 180000; %带通下限180KHz Fpass2 = 240000; %带通上限 240KHz Fstop2 = 280000; %阻带2 280 KHz Wstop1 = 1; %阻带1权重 Wpass = 10; %带通权重 Wstop2 = 1; %阻带2权重 filterCoeffs = [firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), [0 0 1 1 0 0],[Wstop1 Wpass Wstop2]) 0]; fvtool(filterCoeffs,1) q15_coeffs_decimal = int16(round(filterCoeffs * 32767)); hex_str = arrayfun(@(x) dec2hex(typecast(x, 'uint16'), 4), q15_coeffs_decimal, 'UniformOutput', false); for i = 1:length(hex_str) fprintf('0x%s, ', hex_str{i}); if mod(i,4)==0 fprintf('\\\n'); end end
然后、将滤波器系数复制到气体演示代码中。 程序针对单次迭代成功执行。 它会在代码中的特定位置冻结。 这会导致看门狗计时器到期并强制系统复位。
也许您可以尝试通过我的过滤器效率运行代码。 该问题将不断重现。
谢谢!