FPGA实现的FIR算法在汽车动态称重仪中的应用

发布者:温馨小筑最新更新时间:2007-01-26 来源: 电子设计应用关键字:滤波器  频率  单片机 手机看文章 扫描二维码
随时随地手机看文章
引言

  车辆在动态称重时,作用在平台上的力除真实轴重外,还有许多因素产生的干扰力,如:车速、车辆自身谐振、路面激励、轮胎驱动力等,给动态称重实现高精度测量造成很大困难。若在消除干扰的过程中采用模拟方法滤波,参数则不能过大,否则将产生过大的延迟导致不能实现实时处理,从而造成滤波后的信号仍然含有相当一部分的噪声。所以必须采用数字滤波消除干扰。

FIR滤波的原理及实现

  本文采用FIR数字滤波,其原理如公式1所示。
  Y(n)= (1)
  其中h(k)为系统滤波参数,x(n)为采集的信号,Y(n)为滤波后的输出信号。
  FIR滤波器的h(n)0≤n≤N-1
  H(z)= (2)

  在本文中N=17。由于h(n)具有对称性质,即:
  h(n)=h(N-1-n) (n=0,1,...,(N-1)/2) (3)

  这样就可以把FIR滤波器设计成具有线性相位。利用这一情况,可以得到的乘法结构,需要(N+1)/2次乘法,仅是级联或并联结构所需次数的一半,因此,实际应用中多采用此方法。

  我们选用17点的FIR滤波算法,这样实现一次FIR卷积运算需要执行9次乘法和16次加法。为了实现数据的实时处理,需要在20ms内完成这个卷积运算,如果选用单片机89C51(12M晶振)则无法实现。所以我们选用了Altera公司的FLEX10K20。FLEX10K系列是工业界第一个嵌入式的PLD,采用重复可构造的CMOS SRAM工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时也结合了众多可编程器件的优点来完成普通门阵列的宏功能。具有高密度、低成本、低功率等特点。

     图1 硬件结构框图

 

         图2

 

        图3

 

       图4

硬件设计

  由于我们选用的AD1674芯片转换时间为10ms,而所设计的电路每隔20ms启动转换一次,所以有足够的时间完成模数转换。轴重台的宽度为40cm,汽车通过轴重台的最大速度为15km/h,通过计算可知在这段时间里系统可采集4800个数据。由于前30ms是传感器的反应时间,将剩下的数据进行FIR数字滤波后,噪声会被有效的抑制。为了进一步平滑波形,对每8个数据做一次平均,这样就消弱了由于汽车高速通过轴重台时由于颠簸产生的尖峰信号。FPGA的每次滤波包含有FIR运算和8个数据的平均值运算,完成一次滤波就会向单片机发一个中断请求,此时单片机读取滤波后的数据。由于我们选用的A/D转换器是12位,而单片机89C51是8位的,所以经过处理后的数据必须分两次读入。第一次读入低8位,第二次读入高4位,然后对数据处理。此时我们可以认为单片机接收的数据为滤波后不含有噪声的数据。根据轴重称量的波形图可以知道,只要求出此时的最大值就是汽车的真实重量。

  在此仪表中,串行口即用来显示也用来通讯,我们可以通过FPGA很容易实现切换。如图1所示,当控制信号为1的时候RXD、TXD用于显示,而当控制信号为0的时候用于和上位机通讯。

  我们选用加海明窗的理想低通滤波器,其归一化截至频率为0.25,如图2所示。汽车称重信号为含有多种成分噪声的直流信号如图3所示,这1000个数据经过FPGA的FIR滤波和8点数据平均后,提供给单片机125个数据,其波形如图4所示。

  滤波之前的噪声的峰峰值在0.1V左右,而此时的轴重信号为1,这将严重影响测量精度。滤波后我们看到情况得到了明显的改善,噪声信号的峰峰值被抑制在0.02V的范围内,大大改善了信噪比,从而提高了测量精度。

结语

  本设计不但实现了硬件数字滤波电路,而且减少了许多门电路和组合逻辑电路。用比较少的器件实现了比较复杂的功能,减少了故障率。用此方法设计的汽车动态称重仪表具有良好的实时性和较高的精度,现已投入批量生产。

关键字:滤波器  频率  单片机 引用地址:FPGA实现的FIR算法在汽车动态称重仪中的应用

上一篇:双传感器的航星计程仪测试系统
下一篇:一种串联蓄电池组电压巡检仪的设计

推荐阅读最新更新时间:2024-03-30 22:04

伺服电机频率如何计算_伺服电机频率响应
  伺服电机频率如何计算   伺服电机的频率通常指电机旋转的频率,也可以理解为控制器发送给电机的脉冲信号频率。一般来说,伺服电机的频率计算涉及到电机的额定转速、控制器的脉冲输出方式等因素,具体计算方法如下:   首先,确定伺服电机的额定转速,即电机在额定电压、额定电流下的旋转速度。这个值通常可以在电机的规格书中找到。   然后,确定控制器的脉冲输出方式,即每个脉冲的宽度和脉冲数目。通常情况下,控制器会输出一定数量的脉冲信号,每个脉冲的宽度也可以在控制器的参数设置中进行调整。   接下来,根据电机的额定转速和控制器的脉冲输出方式,可以计算出每秒钟向电机发送的脉冲信号数目,即电机的控制频率。   具体计算公式为:   控制频率 = 额
[嵌入式]
Candera CGI Studio现已支持Traveo II MCU
多年来,Candera CGI Studio一直是首选的HMI创建工具,在MCU上为成本敏感应用开发强大的HMI解决方案。运行在赛普拉斯的Traveo II MCU上的Candera CGI Studio,支持该设备的所有可用功能,如多核,以及从IBO、LBO到OTF的所有呈现模式。 凭借超过20年的嵌入式软件经验,Candera在HMI方面为全球客户提供支持,从低端MCU到高端SoC。Candera总经理Reinhard Füricht说:“尤其是MCU应用,对RAM和ROM的大量限制,在创建强大和可靠的人机界面方面对HMI开发人员构成了挑战。凭借在嵌入式软件市场二十多年的经验,我们开始关注低端设备,为日常业务开发创建UI工
[汽车电子]
Candera CGI Studio现已支持Traveo II <font color='red'>MCU</font>
AVR 单片机初值计算
使用芯片 AT Mega16 外部晶振 4.00MHz 定时器1 (16位定时器)寄存器 TCCR1B = 0x04 设定 256预分频 要利用定时器定时1秒 1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断 2,65535 - 15625 = 49910 计算出要累加多少次才能在1秒后出发定时器1的溢出中断 3,49910 == C2 F6 将计算后的值换算成16进制 4, TCNT1H = 0xC2 ; 对寄存器赋值 TCNT1L = 0xF6 ; =============================================
[单片机]
单片机轻松入门之二:流水灯
由于P0口内部没有上拉电阻,所以P0在用作输入、输出时要外接上拉电阻,一般取10k左右。 程序如下: #include reg52.h //头文件 #define uchar unsigned char #define uint unsigned int //宏定义 uchar code table ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数据表 uchar i,j,a; void delay(uchar x) //延时子函数 { for(i=x;i 0;i--) for(j=110;j 0;j--); } void main() //主程
[单片机]
<font color='red'>单片机</font>轻松入门之二:流水灯
8051单片机红外线遥控实验
如果网页显示格式错乱可从这里下载完整的源程序:http://www.51hei.com/f/dpjjmhw.rar // 遥控器 采用Ht6221 芯片 //红外线遥控 用外部中断作为红外线解码输入 红外遥控器1号键为 电风扇 启动键 #include reg51.h #define uchar unsigned char #define uint unsigned int code uchar seg ={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60}; //数码管码表 code uchar tab ={0x7f,0xbf,0xdf,0xef,0xf7
[单片机]
8051<font color='red'>单片机</font>红外线遥控实验
什么是51单片机?51单片机主要产品有哪些?
51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。 当前常用的51系列单片机主要产品有: *Intel的:80C31、80C51、87C51,80C32、80C52、87C52等; *ATM
[单片机]
什么是51<font color='red'>单片机</font>?51<font color='red'>单片机</font>主要产品有哪些?
51单片机 数码管模块
1.原理图 共阴极和共阳极: 简单来说,如果是共阴极的话,我们想要驱动某一个led灯,就应该给另一端加高电平,共阳极的话就加低电平 数码管显示分两种:静态显示和动态显示; 静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动。 动态显示:动态驱动是将所有数码管的8个显示笔划 a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控
[单片机]
51<font color='red'>单片机</font> 数码管模块
I2C总线在单片机上的实现
    摘要: 本文介绍了I2C总线的性能、特点以及数据传输和结构,并详细分析了它的应用示例,给出了它在单片机上的具体实现和相应的汇编程序。     关键词: I2C总线 单片机 随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROM、RAM、I/O端口、A/D、D/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行总线,另一种是串行总线。由于串行总线的连线少,结
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved