传感器采集的数据有多重要 (三)——软件设计方法

今天把(二)的方法介绍下,和大家分享,若有错误,欢迎指正。

传感器的数据采集和数据滤波处理是在FPGA上实现的,滤波采用了简单的滑动滤波,先把代码贴出来:

    reg [17:0] adder_sum;    //累加和
   
    //求滑动滤波
    always @ (posedge adc_clk) begin
        adder_sum    <= {data_buf1[15],data_buf1} + {data_buf2[15],data_buf2} +
                            {data_buf3[15],data_buf3} + {data_buf4[15],data_buf4};
    end
    
    always @ (posedge adc_clk or negedge adc_rst) begin
        if (!adc_rst)
            filter_val    <= 16'h0;    
        else
            filter_val    <= adder_sum[17:2];        
    end

下面分析为啥用 /4的方法。

1、现场条件:现场传感器在静态时测量的数据为:

分析传感器的数据波动的周期在60Hz左右,基本上和工频电源的频率一致;传感器的重复测量频率在600Hz左右。

2、软件设计:FPGA芯片的时钟为25MHz,AD芯片的SPS采用300KHz,16位AD,采用24位移动方法,采样后再通过FIFO实现串并转换,其FPGA代码为:

    //ADC 获取数据
    reg [15:0]    load_data_r;
    always @ (posedge sclk_clk or negedge adc_rst) begin
        if (!adc_rst)
            load_data_r <= 16'h0;
        else if (!load_data1 && !load_data2 && !load_data3 && clk_cnt_r == 4)
            load_data_r[0]  <=  sda_ch;

       。。。
        else
            load_data_r <=  load_data_r;
    end

    //ADC 数据同步控制
    wire [15:0]    loadl_data;
    wire        adc_fifo_empty;
    
    adc_fifo_bb           adc_fifo_bb_inst(
            .aclr              (~adc_rst),
            .data              (load_data_r),        //采样数据串行输入
            .rdclk             (adc_clk),            //采样时钟    
            .rdreq             (!adc_fifo_empty),//读请求
            .wrclk             (sclk_clk),
            .wrreq             (clk_cnt_r == 25),//写请求
            .q                 (loadl_data),        //数据并行输出
            .rdempty           (adc_fifo_empty),    //数据有效
            .wrfull            ()
    );

3、截止频率:设计采样截止频率为2KHz,所以滑动滤波截止频率计算方法为:

fco = (0.443 x fs)/N    其中,N为平均的点数,fs为采样频率,fco为截止频率,当N=4时,截止频率为:
fco = (0.443 x 20000)/4 = 2215hz,满足设计要求。

即,实际的截止频率=2.2KHz。

总结:实际测量数据还行,数据的曲线见上篇文章。

联系方式:masmin@163.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值