夏夏xyxy

单片机程控滤波器设计详解

0
阅读(181) 评论(1)

  设计要求

  当输入信号幅度变化时,通过前级的程控增益放大模块实现对增益的精确控制,最终使输出信号幅度基本保持稳定;而对于输入信号频率的改变,借助单片机——HCE1012GH900BP可编程滤波器芯片的同时,用简单的外围期间来辅助,采用编程数据来完成RC网络的切换,通过单片机变成对各种低频信号实现通、高通(带通、带阻以及全通)滤波处理,而且滤波的特性参数,如中心频率、品质因数等也可以根据不同的应用场合进行设置,提高了滤波器的性能和指标的同时,也有效避免了传统有源滤波器电路滤波特性参数精度不高、电路复杂、设计和调试麻烦等问题,可以很好的应用于信号频率及幅度在宽范围内变化的场所,操作方便,性能优良。

  本次设计一个程控滤波器,放大器增益可设置,低通或高通滤波器通频带,截止频率等参数可设置。滤波器为有源滤波器,并可按一定程序设置通频带及截止频率等。

  设计方案

  (1)增益控制

  采用精密数字电位器和仪表放大器AD620连接通过改变数字电位器的阻值来实现增益的调节,可以精确的调节增益且精度高。此方案可以较精确的控制电压增益,便于单片机控制,同时降低干扰和噪声,满足设计要求,但成本较高。符合设计要求。

  (2)滤波模块

  通过单片机对现有的集成的截止频率可调的滤波器来实现题目的要求。实现起来精度高,且易于调试。通过单片机对MAX270(up程控滤波芯片)进行控制实现设计要求。

  (3)椭圆滤波器模块

  采用集成的开关电容滤波芯片。由于此种芯片滤波器的截止频率由外部时钟决定,只要有一个稳定的外部时钟,滤波器的截止频率是可以保证精度的,同时,为了校准元件误差,可以通过时钟频率的微调来改变滤波器的截止频率,从而使其准确的达到设计要求。

  (4)幅频特性测试仪模块

  采用DDS产生扫频信号,利用真有效值测量芯片AD637和A/D接口电路实现到频信号频率的步进调整及被测网络幅频特性的数显。DDS产生信号的频率稳定度较高,而且信号频率的步进和信号幅度的控制比较方便。

  (5)键盘控制及显示模块

  采用按键和LCD显示来实现系统的增益、截止频率的适时调节和显示的操作界面。

  最终系统框图如图2-1所示:

  单片机程控滤波器设计详解

  理论分析与计算

  (1)AD620增益控制实现

  可控增益放大器部分是以AD620作为核心器件,实现0~60 dB之间的增益调节。AD620为低噪声精密可变增益放大器,温度稳定性高,其内部由R-2R梯形电阻网络和固定增益放大器构成,加在其梯形网络输入端的信号经衰减后,由固定增益放大器输出,衰减量由加在增益控制接口的参考电压决定;其增益与控制电压呈线性关系,通过单片机控制,而由D/A转换器产生精确的参考电压来控制增益,从而实现较精确的数控,同时可降低干扰和噪声。程控滤波器部分采用开关电容滤波器实现。开关电容滤波器是由MOS开关、MOS电容和MOS运算放大器构成的集成滤波器,其开关电容组在时钟频率的驱动下,可等效成1只与时钟频率有关的等效电阻 R=1/2πC fc。其中C为开关电容组的电容,fc为滤波器时钟频率。 增益计算:

  放大模块的电路如图2-3所示,该部分是由仪表放大器AD620和模拟开关CD4051共同组成三级放大电路来实现的,通过调节AD620的1脚和8脚之间的电阻值来改变电压增益,电压增益为10dB到60dB。

  单片机程控滤波器设计详解

  式中G为放大倍数,Gr为控制增益的电阻。

  (2)MAX270滤波器截止频率实现

  系统采用滤波器MAX270实现低通滤波器。 MAX270包含两个二阶低通滤波器(过度带频率响应斜率近视为-40dB/十倍频程)可分别程控,截止频率1KHz—25KHz,96dB动态范围,不需要连接外部元件,可级联,具有低功耗的关断模式。通过7位寄存器(D0—D6)发出的数据改变二阶低通滤波器的两个电容值从而改变电路的截止频率fc(Cutoff frequencies)1KHz到25KHz共分128档。

  (3)椭圆滤波器的设计

  四阶椭圆低通滤波器相当于两级二阶低通滤波电路的的组合。其传递函数为:

  单片机程控滤波器设计详解

  我们采用椭圆形归一化LPF的设计方法,选择带内起伏量为1.0db阻带频率为通带频率的4.0倍。带内起伏量为1db时,阻带内有一个限波点的椭圆型归一化LPF的设计数据如表2-1所示。

  单片机程控滤波器设计详解

  单片机程控滤波器设计详解

  (4)幅频特性测试模块

  AD9851由DDS产生0~200 kHz范围内的扫频信号,DDS产生信号的频率稳定度较高,而且信号的频率步进和信号幅值控制方便。DDS以Nyquist时域采样定理为基础,在时域中进行频率合成。DDS的基本工作原理:每个参考频率fs上升沿到来时,N位的相位累加器值便按照频率控制字K的长度增加一次,输出所得相位值,正弦查找表将相位信息转化为相应的正弦幅度值。在fs和N一定的情况下,输出波形频率由频率控制字K决定。以一定步进循环增加频率控制字K,输出频率变化的扫频信号。

  扫频信号通过被测网络后,由AD637检测有效值,即利用各个频点通过网络后的有效值在示波器上显示其幅频特性图。AD637的外围电路简单,而且当输入峰峰值大于2 V时,其测量误差在100 Hz~1 MHz的范围内可忽略。

  DDS原理框图,幅频特性测试模块原理框图如图2-2:

  单片机程控滤波器设计详解

  硬件设计

  系统主要采用精密放大器AD620和MAX270,以及单片机的控制来实现。

  1、放大器模块

  AD620特性:放大倍数可设置为1~1000倍,低价格、低功耗、高精度仪表放大器。它体积小,为8管脚的SOIC或DIP封装;供电电源范围为±2.3V~±l8V;最大供电电流仅为1.3mA。AD620具有很好的直流特性和交流特性,它的最大输入失调电压为5OμV,最大输入失调电压漂移为lμV/。C,最大输入偏置电流为2.0nA。G=10时,其共模抑制比大于93dB 。在1kHz处输人电压噪声为9nv/(Hz)1/2,在0.1Hz~10Hz范围内输人电压噪声的峰--峰值为0.28μV,输入电流噪声为0.1pA/(Hz)1/2 ,G=l时它的增益带宽为120kHz,建立时间为15μs。

  其引脚如图3-1:

  单片机程控滤波器设计详解

  放大器模块电路如图3-2所示:

  单片机程控滤波器设计详解

  2、单片机控制滤波器模块

  通过AT89S52单片机控制二阶低通程控滤波器MAX270,来完成低通滤波器的设计。

  a、AT89S52单片机

  AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

  单片机程控滤波器设计详解

  引脚及功能:

  P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

  P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。

  引脚号第二功能:

  P1.0 T2(定时器/计数器T2的外部计数输入)时钟输出

  P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

  P1.5 MOSI(在系统编程用)

  P1.6 MISO(在系统编程用)

  P1.7 SCK(在系统编程用)

  P2口:P2口是一个具有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动 4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

  P3口:P3口是一个具有内部上拉电阻的8 位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。

  端口引脚 第二功能:

  P3.0 RXD(串行输入口)

  P3.1 TXD(串行输出口)

  P3.2 INTO(外中断0)

  P3.3 INT1(外中断1)

  P3.4 TO(定时/计数器0)

  P3.5 T1(定时/计数器1)

  P3.6 WR(外部数据存储器写选通)

  P3.7 RD(外部数据存储器读选通)

  此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

  RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

  ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

  PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

  EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

  XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

  XTAL2:振荡器反相放大器的输出端。

  b、MAX270

  主要性能:包含两个二阶低通滤波器(过度带频率响应斜率近视为-40dB/十倍频程)可分别程控,截止频率1KHz—25KHz,96dB动态范围,不需要连接外部元件,可级联,具有低功耗的关断模式。通过7位寄存器(D0—D6)发出的数据改变二阶低通滤波器的两个电容值从而改变电路的截止频率fc(Cutoff frequencies)1KHz到25KHz共分128档。

  单片机程控滤波器设计详解

  引脚功能:

  SHDN:关断控制,低电平时,OUTA,OUTB和OP OUT以及配置驱动均被关断; WR:写控制输入,低电平是,将数据D0-D6写入由地址A0选择的程序存储器中,高电平时数据关断;

  CS:片选输入,低电平有效;

  A0:三态地址输入逻辑高电平,选择滤波器A,逻辑低电平,选择滤波器B; D6-D7:7位数据输入。

  单片机程控滤波器设计详解

  滤波模块的电路如图3-5所示,途中74HC373为八D锁存器,当LE为高电平时,单片机控制地址和数据的信号被锁存在锁存器中,当LE转为低电平时锁存器打开,同时WR变为低电平控制信号送入MAX270。通过控制MAX270的四条地址线A0-A3、两条数据线D0、D1和一条允许控制线WR对MAX270进行控制。

  其引脚图如图3-4:

  单片机程控滤波器设计详解

  3、操作及显示模块

  利用单片机控制键盘显示器8279、可编程计数器8254、可编程有源滤波器MAX270。其中8254是3通道16位可编程计数器,计数时钟频率可达10 MHz,可向MAX262提供精确的时钟频率fclkA和fclkB。

  软件设计

  1、开发软件及环境简介

  通过使用Keil软件进行前期仿真调试,通过后进行实际电路的连接,并进一步对各个参数进行测试,用Proteus设计电路。 4.1.1 Keil

  Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。

  Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

  Keil的特点:

  1)全功能的源代码编辑器

  2)器件库用来配置开发工具设置

  3)项目管理器用来创建和维护用户的项目

  4)集成的MAKE工具可以汇编、编译和连接用户嵌入式应用

  5)所有开发工具的设置都是对话框形式的

  6)真正的源代码级的对CPU和外围器件的调试器

  7)高级的GDI(AGDI)接口用在目标硬件上进行软件调试以及和Monitor-51进行通信。

  本次设计的汇编语言编程环境就是Keil,由它和仿真软件Proteus关联,进行单片机的仿真和调试。

  Proteus

  Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

  Proteus软件具有其它EDA工具软件(例:mulTIsim)的功能。这些功能是:

  1)原理布图

  2)PCB自动或人工布线

  3)SPICE电路仿真 革命性的特点:

  1.互动的电路仿真

  用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

  2、仿真处理器及其外围电路

  可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型。

  上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。


  1. 感谢分享~~~