APP下载

基于STM32的多功能滤波器系统设计

2022-04-07辉,王

关键词:增益滤波器滤波

程 辉,王 勤

(成都大学 电子信息与电气工程学院,四川 成都 610106)

0 引 言

滤波器是很多电子电路中必不可少的组成部分,其作用是允许特定频段信号通过且将其余频段信号加以抑制或使其急剧衰减,广泛应用于信息处理、数据传输及抑制干扰等方面[1-2].由于传统滤波器在设计完成后的中心频率及电压增益等参数不能改变,传统滤波器只能处理一定频率范围内的信号,若处理此频率范围外的信号,则需要额外增加滤波电路,这将使电路变得复杂,且增加了电路的不确定性和成本.又因为传统滤波器电压增益较低不可调,对弱信号响应较差,所以使用范围受到较大的限制.近年来,研究机构开发了各种功能的滤波器[3-6],但多数滤波器存在精度不高、通用性差、功能较少且性价比低等问题.对此,本研究根据开关电容技术设计了一种多功能滤波器.该种滤波器由STM32整体控制,具有较高的电压增益且增益步进可调,并可设置低通、高通、带通及陷波等多种滤波功能,且截止频率、中心频率及陷波频率等均步进可调,满足了较宽频率信号范围内对弱信号的多种滤波需求.本研究设计的多功能滤波器系统整体误差较小,可应用于多种滤波电路中.

1 系统总体设计

本滤波器系统主要由键盘显示模块、控制模块、放大模块与滤波模块等组成,如图1所示.键盘显示模块为人机交互部分.根据需求,设置放大模块对各输入信号的电压增益与滤波模块中各滤波参数.在控制模块作用下,放大模块产生对应增益,滤波模块则产生相应的滤波功能.输入信号经放大模块放大后得到所需幅度的信号,再经滤波模块处理后获得最终输出信号.系统整个工作过程中,均可随时根据需求调整放大增益、滤波器类型及参数.

图1 系统结构图

2 系统硬件设计

2.1 控制模块

本研究使用STM32F103VE作为控制模块的核心来控制整个系统的运行.STM32F103VE是意法半导体生产的32-bit高性能微控制器,采用ARM Cortex-M3内核,CPU最高速度达72 MHz,可完成单周期乘法和硬件除法,具有较快的运算速度、较强的处理能力及较低的功耗,广泛满足工业、医疗和消费类市场的各种应用需求[7-9].

2.2 放大模块

放大模块由放大器AD8429和数字电位器AD5272组成.AD8429是ADI公司生产的高速仪表放大器,其最高带宽可达15 MHz,只需一个外部电阻便可将增益设置为1~10 000,具有低功耗、极低噪声、超低偏置电流及宽电源电压的特性,广泛适用于信号调理和数据采集应用场合[10].AD5272是ADI公司生产的单通道数字电位器,具有低电阻容差误差及低温度系数特性,可应用于运算放大器可变增益控制、可编程电源及传感器校准等领域[11].

本研究中,放大模块由3级结构与功能均相同的放大电路组成.每级放大电路包括1片AD8429和1片AD5272,可实现0~20 dB电压增益.整体可实现0~60 dB增益,以1 dB为步进调节.放大模块电路如图2所示.

图2 放大模块电路图

对于每级放大电路,AD8429均采用+15 V单电源供电,1脚负极输入端V-IN和6脚参考电压输入端VREF采取接地处理.输入与输出之间的关系如式(1)所示.

VOUT=G×V+IN

(1)

式(1)中,G为电压增益.同时,为减少高频干扰及有效滤除高频干扰信号,AD8429输入端增加低通R-C滤波网络.图2第1级放大电路中,R1、R2、C2、C3与C4即为R-C滤波网络.

AD8429的2脚和3脚之间需接1个电阻作为增益调节电阻,改变其电阻值RG便可改变电压增益.增益值G与增益调节电阻值RG的关系如式(2)所示.

G=20lg((6/RG)+1)

(2)

式中,RG的单位为kΩ.当所接增益调节电阻引脚断开时,增益值G=0,即信号无放大.

为减小增益误差与增益漂移,增益调节电阻需选用高精度且低温度系数的电阻,同时需避免产生与增益调节电阻串联的高寄生电阻.AD5272输出电阻容差误差最低为±1%,在可变电阻器模式下温度系数达到5 ppm/℃,满足对增益调节电阻的要求.

AD5272游标W端和A端之间的电阻为标称电阻,其电阻值RWA可设置为20 kΩ、50 kΩ和100 kΩ,并具有1 024个可供W端访问的触点,设置内部RDAC寄存器中的数值为1 024个游标位置,从而输出1 024个电阻.当将RWA设置为50 kΩ时,带宽可达120 kHz,此时AD5272的W端和A端之间数字编程输出电阻如式(3)所示.

RWA(D)=(D/1024)×50

(3)

式中,D为RDAC寄存器中数值,其范围为0~1 023之间的整数,确定D值便可得到AD5272输出电阻RWA(D),即AD8429实际增益调节电阻值.由式(3)可知,输出电阻RWA(D)最小值为48.8 Ω.当改变RDAC寄存器的数值,输出电阻RWA(D)将从最小48.8 Ω改变,因此,AD5272实际输出值与式(2)得到的理论RG值存在一定偏差,故实际增益值存在一定误差.由式(2)、式(3)可得到理论增益值与AD5272实际输出值的关系如表1所示.

表1 理论增益值与AD5272输出电阻关系表

系统工作时,键盘显示模块先设定增益值.控制模块STM32F103VE根据设定的增益值,控制每级AD5272输出相应电阻值.输入信号由第1级放大电路AD8429的4脚输入,经第2、3级放大电路放大后,从第3级放大电路AD8429的7脚输出.

2.3 滤波模块

滤波模块由有源滤波器MAX262和模拟开关ADG704、ADG849构成,用于将前级放大电路输出信号经滤波后输出.MAX262是双二阶通用开关电容有源滤波器,其内部含有2个相同的二阶滤波单元.每个滤波单元通过编程来设置中心频率或截止频率、品质因数和工作方式,可构成低通、高通、带通及陷波等多种滤波器,其中,2个滤波单元可单独作为2个二阶滤波器使用,也可将其级联成1个四阶滤波器使用[12-14].ADG704是单通道4选1模拟开关,其导通电阻仅为2.5 Ω,具有低功耗、高开关速度及低导通电阻的特性.ADG849为单通道2选1模拟开关,其导通电阻仅为0.5 Ω,可承载高达600 mA电流,具有超低导通电阻、极低开关失真及高载流能力的特性.

有源滤波器MAX262中,2个二阶滤波单元均有4种工作方式,且对应5种不同滤波功能,使用时要用到中心频率或截止频率f0、外部时钟频率fclk、Q值和工作方式等4个参数.对于方式1、3和4,f0和fclk的关系如式(4)所示.

fclk/f0=40.84+1.57NF

(4)

式中,NF为频率控制字,由MAX262内部程序存储单元中F5~F0此6位二进制码组成,共可构成0~63之间的64个十进制整数,故f0可通过固定NF并调节fclk灵活变化.根据需求确定f0后,由式(4)即可得到fclk值.

在方式1、3和4下,滤波器的Q值由式(5)求得.

Q=64/(128-NQ)

(5)

式中,NQ为品质因数控制字,由MAX262内部程序存储单元中Q6~Q0此7位二进制码确定,可实现128种品质因数.根据需求确定Q值后,由式(5)得到NQ值.

当工作方式、NF、fclk、NQ确定后,STM32F103VE便可将相应参数输入到MAX262,从而产生对应功能的滤波器.

滤波模块电路如图3所示.数据在STM32F103VE控制下经74HC374锁存器后输入到MAX262,可消除逻辑输入跃变导致的滤波器输出噪声干扰.MAX262中CLKA与CLKB为fclk时钟输入端,分别为滤波器A和滤波器B提供时钟信号fclkA与fclkB,控制开关电容滤波器的采样率.A3、A2、A1、A0为地址输入端,通过输入不同的地址数据来选定滤波器方式、频率控制字NF及品质因数控制字NQ等设置的存储单元.D1、D0为数据输入端,当相应存储单元被选定后,在D1、D0端输入相应数据,从而确定滤波器工作方式、f0及Q值.由图3可知,2片ADG704与1片ADG849用于选择输出滤波信号类型与滤波器阶数,并在下方ADG704的D端口输出最终滤波后的信号.

图3 滤波模块电路图

系统工作时,键盘显示模块设定滤波器类型、阶数、f0及Q值等参数,控制模块中STM32F103VE将参数写入MAX262内部存储单元,设定滤波器参数,通过控制CLKA、CLKB端输入fclk频率及ADG704、ADG849的通断,在输出端可分别得到所需低通、高通、带通及陷波滤波后的信号.

3 系统软件设计

系统软件流程如图4所示.系统初始化后,首先进入增益设置,根据显示提示,使用键盘设置输入信号增益值.控制模块根据该增益值控制放大模块产生相应增益.增益设置完成后,进入滤波设置部分,依次设置滤波器类型、阶数、f0及Q值等参数.控制模块根据设置控制滤波模块生成相应功能的滤波器.最后,通过控制模拟开关通断输出滤波后的信号.

图4 系统软件流程图

3.1 放大模块软件设计

因系统放大增益为0~60 dB,故3级放大电路中每级放大增益范围均为0~20 dB.放大模块软件流程图如图5所示.在键盘显示模块设置增益G值后,若0 dB

图5 放大模块软件流程图

若20 dB

若40 dB

若设置增益值G>60,则显示增益超出范围,此时需要重新输入增益进行测试.

3.2 滤波模块软件设计

滤波模块要实现低通、高通、带通及陷波等滤波功能,其软件流程图如图6所示.在键盘显示模块分别设置滤波器类型、阶数、f0A、QA、f0B、QB等参数.若滤波器类型设置为陷波滤波器时,其阶数固定为二阶,则只需输入陷波频率fN与Q.

图6 滤波模块软件流程图

当滤波器类型设置为低通、高通或带通滤波器时,则在MAX262内部具有相同的配置方式.如果设置为二阶滤波,则MAX262只有滤波器A工作,需先将滤波器A设置为方式3,此时STM32F103VE先后由PB0~PB3输出0000、PB4~PB5输出10,便可将MAX262的滤波器A设置为方式3.完成方式的设置后,需进一步设置fclkA、NFA、NQA等.时钟fclkA由STM32F103VE的定时器T3产生,由于在方式3下fclk、f0可取最大值分别为4 MHz、100 kHz,为使f0在可调节范围尽可能较大且最终滤波输出误差较小,使NFA为25,则由式(4)可知,当fclkA为最大值4 MHz时,f0A可取到最大值50 kHz.当NFA确定后,由设置f0A值便可得到fclkA,改变T3设定值即可实现f0A在1 Hz~50 kHz内变化.设置NFA时,只需由STM32F103VE的PB0~PB5将MAX262内部F5A~F0A单元设置为011001.设置NQA时,根据输入QA值,由式(5)可得到NQA,由PB0~PB5脚将MAX262内部Q6A~Q0A单元设置为NQA所对应二进制数值.当MAX262内部配置完成后,STM32F103VE通过PC6~PC0控制ADG704与ADG849的通断,即可实现二阶输出低通、高通或带通滤波后的信号.此时,当PC6~PC0分别输出1001110、1001101、1001111时,便可得到二阶低通、高通、带通滤波后的信号.

如果设置为四阶滤波,需同时配置滤波器A、B.滤波器B工作方式、fclkB、NFB、NQB与滤波器A配置方法相同,其中,工作方式配置为方式3,fclkB由STM32F103VE的定时器T8产生,NFB通过将F5B~F0B设置为011001来实现,NQB通过将相应的二进制数设置到Q6B~Q0B来实现.配置完成后,STM32F103VE的PC6~PC0分别输出1100110、1100101、1110111,即可得到四阶低通、高通、带通滤波后的信号.

当设置为陷波滤波器时,由于只有二阶,故只需设置滤波器A,其中工作方式需配置为方式1,此时STM32F103VE先后由PB0~PB3输出0000、PB4~PB5输出00,便能将滤波器A设置为方式1.参数fclk、NF、NQ配置方法与二阶低通滤波器的fclkA、NFA、NQA相同,其中fN最大值为50 kHz.配置完成后,STM32F103VE通过PC6~PC0输出1001101控制ADG704与ADG849的通断,便得到二阶陷波滤波后的信号.

4 系统测试

4.1 放大功能测试

为了测试放大模块增益,在放大模块输入端接电压、频率分别为10 mV、20 kHz的正弦信号.键盘显示模块在设置增益值时为突出增益特性,在0~20 dB内以1 dB步进,在20~40 dB内以3 dB步进,在40~60 dB内以5 dB步进,共设置31组数据.在放大模块输出端接数字示波器,观察放大后的信号,最终得到设置增益、实际增益、增益误差数据如表2所示.

表2 放大功能测试数据表

从表2可知,1~6 dB内增益误差小于1%且无较大变化;7 dB处误差有较大幅度增加;8~10 dB、11~20 dB内误差均有明显增加;当增益大于20 dB后,除个别增益点外,误差在2.5%左右浮动,整体放大模块误差小于3%,输出信号无明显失真.产生上述误差的主要原因是AD5272输出电阻不是线性连续变化且电阻容差不同.由于AD5272为数字电位器,内部RDAC寄存器中控制输出电阻数值的代码范围为0x000~0x3FF,又因其最小输出电阻为48.8 Ω,故改变RDAC寄存器中代码会引起输出电阻非连续变化,从而产生误差.当激活1%电阻容差性能之后,RDAC寄存器中只有代码为0x078~0x3FF范围内输出的电阻误差才为1%,对应表2中1~6 dB增益;代码为0x055~0x077、0x032~0x054范围内输出的电阻误差分别为2%、3%,分别对应7 dB、8~10 dB增益;其他代码输出的电阻误差大于3%,对应11~20 dB增益.

4.2 滤波功能测试

本研究在进行滤波功能测试时输入了不同频率信号,以分别测试各种滤波功能.测试低通、高通或带通滤波功能时,使用信号发生器在系统输入端输入幅度为10 mV、频率在1~50 kHz范围内且以5 kHz为步进增加的正弦信号,并在输出端接数字示波器.使用键盘显示模块将系统增益设置为40 dB,滤波部分设置为四阶低通、高通或带通滤波,使f0为输入信号频率,Q值为1,分别计算并设置f0A、f0B、QA、QB.对于低通或高通滤波,输出信号电压在-3 dB处时,所对应的输入信号频率即为截止频率.对于带通滤波,输出信号电压在最大值处时,所对应的输入信号频率即为中心频率.测试陷波滤波功能时,输入信号与放大器增益不变,滤波部分设置为陷波滤波,将fN设置为输入信号频率,Q值为1.当输出电压在最小值处时,所对应的输入信号频率即为陷波频率.各滤波输出信号在10 kΩ负载上测试所得的数据如表3所示.

表3 滤波功能测试数据表

从表3可知,在50 kHz范围内滤波器f0、fN实际测试数据与设置数据存在一定误差,整体误差小于3%.产生误差的原因主要是由低fclk/f0比值和低Q值引起的.由于fclk/f0比值和Q值分别为80和1,若将fclk/f0比值和Q值以低值设置时,Q和f0之间的相互作用会导致滤波器产生误差.此外,STM32F103VE输出fclk有一定的偏差,也会导致滤波器f0、fN产生误差.

5 结 语

本研究以STM32F103VE、AD8429和MAX262为核心,设计了一种多功能滤波器,可实现二阶或四阶低通、高通、带通及陷波滤波.对输入信号在0~60 dB范围内且以1 dB为步进放大,增益误差小于3%.在10 kΩ负载上截止频率、中心频率及陷波频率步进可调,最大可达50 kHz,频率误差均小于3%.本研究设计的多功能滤波器操作方便,功能较强,可适用于多种滤波测试场合.

猜你喜欢

增益滤波器滤波
“增益”还是“损耗”?挑战性工作要求对工作−家庭增益的“双刃剑”影响*
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
浅谈有源滤波器分析及仿真
基于多模谐振器的超宽带滤波器设计
经典仪表放大器(PGIA)的新版本提供更高的设计灵活性
旦增益西的藏戏梦
宽频带增益放大器的设计与测试
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
FIR滤波器线性相位特性的研究