科研_两种麦克风_校正

目的

  校正麦克风,得到1pa声强下对应两种麦克风G.R.A.S和Dodo的电压值。

  作为基准,并根据公式,将后续待测实际实验(npa)下测得的电压值转化成声压级SPL(db)。

 


 

理论支持

  Pa-db 转换公式

    SPL(db) = 20log10(P / Pref)    公式1

    SPL单位db,从量纲来看,应该为0?

    其中 P 为动态声压的均方值差,直观感觉动态值变恒定值,等于其幅值的0.707倍。

    Pref 基准值

    

    e.g. 线性尺度

      pref = 1pa/  1pa对应0db  0.001pa 对应 -60db

      分贝尺度

      pref = 2e-5pa/  1pa对应94db  10pa对应114db 

  

  为什么要转换?声压级

    从听阈到痛阈(2e-5, 20pa/ 0, 120db),声压的绝对值相差1000000倍。显然,用声压的绝对值表示声音的大小是不方便的。

    为了便于应用,人们便根据人耳对声音强弱变化响应的特性,引出一个对数量来表示声音的大小,这就是声压级。

    后续分析,需用到声压级。

  

  Pa

    所得声音数据为电压 Vr,实则表示声压 P,因此两者间对应关系应明确 1 / Vb,麦克风校正解释如下。 

      麦克风校正

        获得常用声压对应的电压值 Vb

        传声器校准时,常用声压有效值分别是1Pa和10Pa。

        1 / Vb

    P / Vr = 1 / Vb    公式2

 

  Pref

    采用分贝尺度,Pref = 2e-5

  

  最终公式

       将公式2,Pref代入公式1,可得 SPL(db) = 20log10(Vr / Vb) + 94


麦克风校正步骤

  G.R.A.S

  将八个G.R.A.S依次插入到声波矫正器 (94/114db) 孔中, 打开矫正器电源,默认发出声波为94db。

  运行CorectGRAS.m,收集G.R.A.S的声音数据。

  运行ComputeRMS.m,计算每个G.R.A.S电压的有效值。

  重复上述操作三次。

    若各G.R.A.S的三次RMS值相对误差在 5%之内,则取平均值作为麦克风的1pa下的电压基准。

    否则,删除波动较大数据,重复前三次操作测新的数据,继续判断是否符合,直至数据可用。

 

  Dodo

    如何用matlab控制loudspeaker发出在接受位置处特定声压的声波

 


涉及程序  

CorectGRAS.m

%% Correction of GRAS Microphones

% Note: in this case, Run the program "StartUp.m"
% Author: unknown professor
% Verified by yanming on Nov, 17, 2018

clear all;

% Pramters
fs = 250e3;
duration = 3;
n_mic = 8;
GRAS_data = zeros(fs, n_mic);

% GRAS microphone 
for MICpnt = 1:n_mic
    disp(['MIC number = ' num2str(MICpnt)]);
    aa = input('Push key 1 to start: ');
    
    % start the session
    s=daq.createSession('ni');
    ch1=s.addAnalogInputChannel('Dev4',0:7,'Voltage');
    ch2=s.addAnalogInputChannel('PXI2Slot2',0:15,'Voltage');
    
    % setting the input range
    for m = 1:8
        ch1(m).Range = [-5 5 ];
    end
    for m=1:16
        ch2(m).Range = [-5 5 ];
    end

    % analog output for trigger of the camera
    % s.addAnalogOutputChannel('PXI2Slot2',1, 'Voltage');
    % outdata=zeros(fs*duration,1);
    % outdata(1:round(fs))=4.8;
    % s.queueOutputData(outdata);
    
    % if you do not use the analog output, please use the following equation:
    s.DurationInSeconds = duration;
    % addDigitalChannel(s,'PXI2Slot2','Port0/Line0','OutputOnly');
    
    % sampling frequency
    s.Rate=fs;
    
    % common trigger to synchronize the system
    % addTriggerConnection(s,'PXI2Slot2/PXI_Trig0','Dev4/PXI_Trig0','StartTrigger');

    % get all MICs data 
    c = clock;
    disp('Measuring Started');
    data = s.startForeground; % 
    disp('Measuring Stopped');
    cname = datestr(c,'yymmddHHMMSS');
    
    savename = ['output' filesep 'data' cname '.mat'];
    save(savename,'data');
    max_data = max(max(abs(data)));
    
    % get the G.R.A.S data
    % micphone loction: PXI2SLOT 0-7
    GRAS_data(:,MICpnt) = data(:,MICpnt+8); 
    savename = ['output' filesep 'GRAS_data' cname '.mat'];
    save(savename,'GRAS_data');
    
    % plot all data
    for m=1:6
        for n=1:4
            subplot(6,4,(m-1)*4+n);
            plot((1:length(data))/fs,data(:,(m-1)*4+n));
            ylim([-max_data max_data]);
            title(num2str((m-1)*4+n));
        end
    end
    disp('Process finished');
end

 

ComputeRMS.m

% Voltage Root-Mean-Square(RMS) of G.R.A.S Microphone at 1Pa
% Author: unknown professor
% Verified by yanming on Nov, 17, 2018

clear all;

% load data interactively
[FileName,PathName] = uigetfile('*.mat','cd');
load([PathName FileName]);

% prameters and output
fs = 250e3;
n_mic = size(GRAS_data,2);
fil_data = zeros(fs, n_mic);
RMS = zeros(1, n_mic);
output = 'RMS_GRAS_Voltage.mat';

% plot filtered G.R.A.S microphone data
for m = 1:n_mic
    fil_data(:,m)=filtfilt(fil,1,GRAS_data(:,m)); 
    plot ((1:length(fil_data))/fs,fil_data(:,m)+m);
    hold on;
end

% get the axis value of analyzed data 
aa = input('press number key after adjust the data region ');
ax = axis*fs;

for m=1:n_mic
    % calculte the valid value of selected areas
    RMS(m)=sqrt(mean(fil_data(round(ax(1)):round(ax(2)),m).^2)); 
end

save(output, 'RMS');

  

 

参考

  https://zhuanlan.zhihu.com/p/26525950

     http://www.ni.com/white-paper/14349/en/

 

 

 

 

 

 

转载于:https://www.cnblogs.com/dignity/p/10023663.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值