找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5740|回复: 4
打印 上一主题 下一主题
收起左侧

100Hz~200kHz波形发生器设计 MCU控制

[复制链接]
跳转到指定楼层
楼主
ID:610090 发表于 2019-9-10 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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黑下载地址:
CDIO三级培训——波形发生器报告.docx (13.52 MB, 下载次数: 51)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:501228 发表于 2019-11-10 14:27 | 只看该作者
有程序包吗
回复

使用道具 举报

板凳
ID:421805 发表于 2019-11-13 05:58 来自手机 | 只看该作者
很有用,谢谢分享
回复

使用道具 举报

地板
ID:598535 发表于 2020-8-31 14:38 | 只看该作者
用STM32103的话可以做出来吗
回复

使用道具 举报

5#
ID:598535 发表于 2020-8-31 14:38 | 只看该作者
用STM32F103的话,能做吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表