单片机控制的双路有源滤波器设计
2009-04-30
作者:倪向东
摘 要:用单片机对可编程滤波器芯片MAX262进行程序控制,可以同时对两路输入信号进行二阶低通、高通、带通、带阻以及全通滤波处理,滤波器的中心频率在15kHz~50kHz频率范围内实现64级程控调节,其Q值在0.5~64范围实现128级程控调节。
关键词:MAX262 单片机 滤波器
在工业自动化的许多领域都要使用滤波器。一般有源滤波器均由运算放大器和RC元件组成,对元器件的参数精度要求比较高,设计和调试都比较麻烦。美信公司(MAXIM)生产的可编程滤波器芯片MAX262可以通过编程对各种低频信号实现低通、高通、带通、带阻以及全通滤波处理,而且滤波的特性参数如中心频率、品质因数等也可以通过编程进行设置。
有源滤波器一般通过改变RC网络的参数来改变频率特性,采用运算放大器和可切换元件参数的RC网络,可以用同一电路组成各种频率特性的滤波器。美信公司的可编程滤波器芯片采用编程数据来完成RC网络的切换。
1 MAX262芯片介绍
(1)内部结构
MAX262主要由放大器、积分器、电容切换网络(SCN)和工作模式选择器组成。积分器、电容切换网络(SCN)和工作模式选择器分别由编程数据M0M1,F0~F5和Q0~Q6控制。MAX262内部有两个二阶滤波器,滤波器A和B可以单独使用,也可级联成四阶滤波器使用。芯片的使用非常灵活,但它们均受同一组编程数据的控制。
MAX262芯片的工作频率为1Hz~140kHz。当时钟频率为4MHz,工作模式选择为模式3时,芯片可以对140kHz的输入信号进行滤波处理。其它工作模式的最高工作频率为100kHz。滤波器A和B可以采用内部时钟,也可以采用外部时钟。外部时钟分别从芯片的引脚CLKA、CLKB引入,对外部时钟无占空比要求。如果要对更低频率的信号进行滤波处理,可采用MAX260芯片,它的工作频率为0.01Hz~7.5kHz。输入的低频信号可以直接送到MAX260芯片的输入端(即INA或INB引脚),输入信号的幅度范围为0V~+5V。
(2)编程参数
MAX262芯片有三个编程参数:中心频率f0、Q值和工作模式。
中心频率由编程数据F0~F5控制,共64个不同的二进制数据,每个数据对应一个时钟频率fCLK与中心频率f0的比值fCLK/f0。在文献[1]的表2中给出了MAX262芯片的fCLK/f0与编程数据F0~F5的对应关系。在系统实现时,可以采用查表的方法获得编程数据。本文采用计算的方法来形成编程数据F0~F5。
Q值由编程数据Q0~Q7控制,共128个不同的二进制数据,每个数据对应一个不同的Q值,最小的Q值为0.5,最大的Q值为64(如果芯片工作在模式2则可达90.5)。在文献[1]的表3中给出了编程数据Q0~Q7与Q值的对应关系。
工作模式由编程数据M0M1控制,分别对应工作模式1、2、3和4。模式1可以实现低通、带通和带阻滤波;模式2基本与模式1相同,只是该模式可以获得最高的Q值;模式3是唯一可以实现高通滤波的模式;而只有模式4才能实现全通滤波,它和模式3也可以实现低通和带通滤波。
编程参数f0、Q值和工作模式确定以后,只要将相应的编程数据装入MAX262芯片内部的寄存器,滤波器的类型和频率特性也就确定了。
2 单片机硬件设计
MAX262芯片的编程输入总线比较简单,它包括2条数据线D0D1,4条地址线A0~A3,另外还有一条写允许控制线。单片机采用内部有4KB程序存储器的89C51。它与MAX262芯片构成的双路程序控制滤波器系统硬件配置原理框图如图1所示。
本系统采用6264芯片扩展数据存储器。由于74LS138译码器使用89C51 P2口的高三位进行地址译码,则6264的地址范围为0000H~1FFFH。
74LS138译码器的输出Y2作为 8279芯片的片选信号,其地址范围为4000H~5FFFH。经74LS373锁存后的地址线A0送到8279的A0地址输入端,所以选择5FFFH作为8279的命令口地址,5FFEH作为8279的数据口地址。89C51的晶振选用12MHz,其ALE信号经4分频后,得到频率为500kHz的信号送到8279的CLK输入端作为时钟信号。8279采用中断方式,占用89C51的外中断0。8279采用8个七段LED显示器,其键盘按键如下:10个数字键0~9,1个小数点键,5个功能键(即用于选择滤波器的类型,低通、带通、高通、全通和带阻滤波),1个回车键,共17个按键。
89C51的控制信号和74LS138译码器的Y1输出信号相与后送到MAX262的写允许控制端,则MAX262的地址范围为2000H~3FFFH。MAX262的地址线AX(即A0~A3)和数据线DX(即D0D1)连接到89C51的P0口低六位,即A0~A3、D0D1分别连接到P0.0~P0.5。89C51的ALE信号送到MAX262的CLKA和CLKB引脚作为时钟信号,即MAX262的外部时钟频率为2MHz,所以程控滤波器能处理的输入信号频率范围为15kHz~50kHz,通过改变编程数据F0~F5实现64级中心频率调节。
本系统选用模式1实现低通、带通和带阻滤波,模式3实现高通滤波,模式4实现全通滤波。其中,滤波器A和B的高通、带阻和全通滤波输出端分别共用MAX262的HPA、HPB引脚。需要处理的低频输入信号分别由MAX262的INA和INB引脚输入,滤波器A和滤波器B的三个输出端分别连接到模拟开关4052的输入端,然后由4052的输出端输出滤波处理后的信号,即图1中的OUTA和OUTB两路输出信号。4052的地址A1、A0由89C51的P1.1、P1.0控制,实现对滤波器类型的选择。
3 系统软件实现方法
(1)编程数据获得方法
MAX262的地址A0~A3与数据D0D1的关系见表1。由表1可见每个滤波器的工作模式、中心频率、Q值所需编程数据均需要分8次写入MAX262的内部寄存器才能完成设置。
通过文献[1]给出的fCLK/f0与F0~F5的关系表格,得到本文根据fCLK/f0计算编程数据F0~F5的公式,即fCLK/f0与F0~F5的关系为:
fCLK/f0=40.84+1.57N1(1)
或,N1=(fCLK/f0-40.84)/1.57 (2)
其中,N1为二进制数据F0~F5对应的十进制整数,范围为0~63共64级。
同样,对应滤波器的Q值也不采用查表的方法,而是通过计算来获得Q值的编程数据Q0~Q7。Q值与Q0~Q7的关系为:
Q=64/(128-N2) (3)
或, N2=64(2-1/Q) (4)
其中,N2为二进制数据Q0~Q6对应的十进制整数,范围为0~127共128级。
(2)系统程序流程
本系统的单片机主程序框图见图2。首先进行初始化,包括对8279的初始化,然后从片内RAM中读取新设置标志位进行判断。如果不是则给MAX262芯片送入滤波器所需的初始工作参数;是新设置则根据键中断服务程序获得的键值进行处理。
进行新设置时,首先根据输入的键值完成对滤波器的选择,包括滤波器A和B的设置选择以及相应滤波器的类型选择;然后根据式(4),由输入的Q值计算N2并转换为二进制编程数据Q0~Q6送片内RAM;同时根据式(2),由输入的中心频率f0值计算N1并转换为二进制编程数据F0~F5送片内RAM。在获得MAX262的工作参数后,根据表1将这些参数转换为8字节的编程数据,由89C51的P0口送到MAX262。
设置完成后,MAX262就按照当前所要求的中心频率和Q值对输入信号进行滤波处理。
最后调用显示子程序,在LED数码管上显示当前滤波器的工作参数,即中心频率和Q值。
本文采用单片机89C51来完成对可编程滤波器MAX262的控制,很好地实现了有源滤波器的设计工作。而且这种程控滤波器具有使用灵活、调试容易的特点,一片MAX262就能完成对两路输入信号进行二阶滤波的处理。
如果需要四阶滤波可以很容易通过滤波器A和B的级联来实现。另外还可以通过对89C51的ALE信号进行倍频和分频实现MAX262的所有工作频率范围。
参考文献
1 钟福元.可编程滤波器的原理及应用.实用电子文摘,1994;(3)
2 陈光东,赵性初.单片微型计算机原理与接口技术.武汉:华中理工大学出版社,1993
3 钟福元.采用PC机键盘控制的程控“变声器”.实用电子文摘,1994;(3)