1.1基本要求
(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线性组合的波形。
(3)具有波形存储功能。
(4)输出波形的频率范围为100Hz~20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔≤100Hz。
(5)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。
(6)具有显示输出波形的类型、重复频率和幅度的功能。 1.2发挥部分
(1)输出波形频率范围扩展至100Hz~200kHz。
(2)用键盘或其他输入装置产生任意波形。
(3)增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载电阻变化范围:100Ω~∞)。
(4)具有掉电存储功能,可存储掉电前编辑的波形和设置。
(5)可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波输出)。
(6)其它(如增加频谱分析、频率扩展>200kHz、失真度分析、扫频输出等功能)。
2.设计方案 方案一:模数结合实现,一般是在模拟电路上产生函数信号波形,而用数字方式改变信号的频率和幅度。如采用D/A装换器与压控电路改变信号频率,用数控放大器或数控衰减器改变信号幅度等。 方案二:模拟电路实现,全采用模拟电路,可用正弦波发生器产生正弦波信号,然后过零比较产生方波,再经积分电路产生三角波。这种方法电路简单,并具有良好的正弦波和方波信号。但要通过积分器电路产生同步的三角波信号,存在较大难度。原因是积分电路的积分时间常数通常不变,而随着方波频率改变,积分器输出的三角波幅度将同时改变。若要保持三角波幅度,就得同时改变积分时间长度的大小,要实现这点会很难。 方案三:数字电路实现,采用DDS方法,任何频率的波形都可看做由一系列的取样点所组成,可事先将各波形的数据点存储在ROM中,再通过时钟的控制顺序从ROM中读出,再经D/A转化器进行逐点恢复。这种方案的波形精度主要取决于函数信号波形的存储点数、D/A转换器的转换速度、以及整个电路的时序处理等。 其信号频率的高低,是通过改变D/A转换器输入数字量的速率或是取点数量来实现的。这种方案在信号频率较低时,具有较好的波形质量。随着信号频率提高,需要提高输入数字量的速率,或减少波形点数。波形点数的减少,将直接影响函数型号波形的质量,而数字量的输入速率的提高也是有限。 方案选择:经上各方案比较,为切合本次课题,故采用方案三。 数字电路实现,采用DDS方法,任何频率的波形都可看做由一系列的取样点所组成,可事先将各波形的数据点存储在ROM中,再通过时钟的控制顺序从ROM中读出,再经D/A转化器进行逐点恢复。这种方案的波形精度主要取决于函数信号波形的存储点数、D/A转换器的转换速度、以及整个电路的时序处理等。总体方案设计框图如下:
3.设计实现 3.1实验器材 STM32F407ZGT6单片机、2.8寸TFTLCD显示屏,配置有Keil uVision5工程环境的PC机一台、外部硬件放大电路和负载电路。 3.2设计框图 本设计由四个模块组成:MCU控制模块、按键模块、信号输出模块和LCD显示模块。 3.2系统框图 3.2.1 MCU控制模块 系统的MCU采用STM32F407ZGT6作为控制模块,主要完成按键扫描、信号输出、LCD显示等。STM32系列单片机具有内置DAC转换器和DMA控制器,并有最高72MHz的主频,可完成较高频率信号的稳定输出。 3.2.2 按键控制模块 系统采用一个键盘来控制输出波形的特征。“Hz”按键调节频率且单位为Hz,“kHZ” 按键调节频率且单位为kHz,“10mv”按键调节幅度且单位为10mv,“duty”按键调节占空比,“ChangeWave”按键调节输出波形,数字“0-9”调节频率、幅度、占空比的数值,“X”清除当前已输入的数字串,“-”清除数字串最后输入的一个数字符。 3.2.3 信号输出模块 单片机的DAC外设、DMA控制器和定时器共同协作完成信号波形的输出。信号输出采用定时器触发DMA传输数据到DAC寄存器的方式,可大大降低信号输出对CPU的占用率并提高波形的精准性。 3.2.4 LCD显示模块 本设计通过TFTLCD显示屏显示波形信息,MCU与TFTLCD显示屏显示屏通过串行方式传输数据,当波形发生变化时立即更新LCD显示信息,实现了人机界面的交互。 3.3程序流程图 程序流程图主要完成的任务有:按键扫描、LCD显示和D/A转换。在主程序中对各个模块进行初始化。 3.2程序流程图框图
3.3.1 外部中断流程图和定时器中断流程图 3.3.1 外部中断流程图 3.3.1 定时器中断流程图
3.3.2 D/A转换流程图 3.3.2 D/A转换流程图
4.硬件电路 4.1设计方案 方案一:使用晶体三极管多级放大电路设计 将stm32f4开发板DAC输出端接入放大电路第一级——射极输出器(共集电极电路)。射极输出器作为第一级使得多级放大电路的输入电阻增加,减少电路对输入信号的影响。 三极管多级放大电路第二级采用基极分压式共射极放大电路。主要为放大输入信号,优点为通过电阻Re的反馈使得静态工作点稳定。 三极管多级放大电路第三极再次采用射极输出器,使得输出电阻变小,增加电路的带负载能力,输出电压受负载改变变化小,以达到题目要求。 该方案优点:电路每个部分可控,调试清晰明了,元件易替换; 该方案缺点:电路很复杂。 方案二:使用LM324运算放大器搭建放大电路 LM324内部中集成四个运算放大器,使用一个LM324即可设计出与方案一功能相同的多级放大电路。运放多级放大电路第一级采用电压跟随器,增大输入电阻;第二级采用反相比例放大电路,对输入信号进行放大;第三极再次采用电压跟随器,减少输出电阻,增加带负载能力。 该方案优点:电路设计简单,且相比方案一更稳定。 该方案缺点:只能通过外接元器件调试电路,芯片内部出现问题不易诊断及调试。 方案确定:经过对内商讨,出于电路稳定性及简洁性,采用方案二设计硬件放大电路。在电路输出到地间接入串联的开关和10kΩ负载,当开关断开时即负载无穷大。 4.2Multisim仿真图 4.2 Multisim仿真图 4.3PCB原理图 4.3 PCB原理图 4.4PCB板布线图 4.4 PCB板布线图 4.5电路调试 4.5.1 问题一: 在放大电路没通电的情况下,DAC输出信号一接入放大电路输入端口,测试电路输入端口信号,信号衰减了一半。通上电后,电路输入端信号基本衰减消失。 原因:查看电路后发现,输入信号直接接入运放的反相比例放大电路时已存在串联负反馈,使得输入信号被抑制,在放大电路通上电压工作后,这种负反馈更大,使得输入信号完全被抑制。 调试解决:在信号输入反相比例放大电路之前先经过电压跟随器,增加电路输入电阻,使得输入信号在输入端受负反馈影响小。 4.5.2 问题二: 电路调整完后,输出信号达到要求,但依然存在交越失真,且在频率增大时交越失真更严重。 原因:LM324芯片本身存在的问题。 调试解决:在第一级电压跟随器和第二级放大电路的各输出引脚到地(采用单电源供电,即接到11引脚)接入1kΩ负载,交越失真完全消失。 5.设计验证 在Keil uVision5工程环境编写程序,连接好电脑、STM32开发板、仿真器、示波器还有硬件电路。代码编译无误后下载到开发板,用示波器观察D/A输出波形。通过相关的键盘操作,改变波形的各项参数,并观察示波器对应的波形参数是否与操作一致。 5.1测试数据及波形截图 5.1.1 默认参数(500Hz、2.00V、50%)正弦波、三角波、锯齿波、方波 图1 500Hz、2.00V 正弦波 图2 500Hz、2.00V 三角波 图3 500Hz、2.00V 锯齿波 图4 500Hz、2.00V、50% 方波 5.1.2 输出波形频率范围100Hz-20kHz,重复频率可调,频率步进间隔≤100Hz (1)100Hz 图1 100Hz、2.00V 正弦波 图2 100Hz、2.00V 三角波 图3 100Hz、2.00V 锯齿波 图4 100Hz、2.00V、50% 方波 (2)5kHz 图1 5kHz、2.00V 正弦波 图2 5kHz、2.00V 三角波 图3 5kHz、2.00V 锯齿波 图4 5kHz、2.00V 方波 (3)20kHz 图1 20kHz、2.00V 正弦波 图2 20kHz、2.00V 三角波 图3 20kHz、2.00V 锯齿波 图4 20kHz、2.00V、50% 方波 (4)频率步进≤100Hz 图1 500HZ到550Hz,步进50HZ 图2 550Hz到560Hz,步进10Hz 图3 560Hz到565Hz,步进5Hz 5.1.3 输出波形幅度范围0-5V(峰峰值),可按步进0.1V(峰峰值)调整 图1 1kHz、3.10V 正弦波 图2 1kHz、4.20V 正弦波 图3 1kHz、5.00V 正弦波 5.1.4 具有显示输出波形的类型、重复频率和幅度的功能 5.1.5 用键盘调节方波占空比 5.2结果分析 通过调节各功能按键,选择波形,可在示波器上观察相应的波形输出,也可以改变输出波形的幅值及频率和方波的占空比,波形输出与设置的参数基本保持一致。由于开发板最大输出电压为3.3V,必须外接一个放大电路保证输出电压能够达到5V,接入放大电路后,经过测试达到了项目的要求。输出频率范围能够扩展至200kHz,但由于开发板硬件配置的限制,导致输出波形有失真。稳幅输出功能,当负载变化时,输出电压幅度变化在误差范围内。 6.总结 波形发生器的设计圆满结束,意味着我们最后一个实训的结束。在经历了前面两次的CDIO实训之后,我们的综合技能,不仅仅只是局限于课本上的内容。这一次的实训任务是要求我们自己设计一个波形发生器,在经过组内的讨论之后我们选择用STM32开发板来完成,这样,在上次实训中所学到的关于STM32的知识就派上了用场。 采用DDS的方法实现波形发生器,充分考验了我们的软件编程能力以及对于开发板、波形发生器原理的熟悉程度。这其中会遇到许多问题,关于按键的布控、波形的产生、信号的输出以及如何达到所要求的输出幅度等等。通过组员的分工合作,网上查找资料,最后取得进展,实现了键盘各个模块的功能,并通过外部放大电路达到了题目要求的输出幅度。通过这一次实训,我们深有体会,即便以后从事和本专业不同的职业,我们这次实训所收获的解决问题的能力、思考问题的方法、以及遇到困难不放弃的精神都会使我们受益终身。
以上内容Word格式文档51黑下载地址:
|