通过单片机控制正弦波信号的方法和结构设计 点击:653 | 回复:0



工控小黄狗

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:51帖 | 0回
  • 年度积分:0
  • 历史总积分:167
  • 注册:2017年8月28日
发表于:2017-09-19 15:13:03
楼主

本系统以MSP430为控制核心设计并制作一个正弦波和脉冲波信号源。本 实验分为四大模块,分别是键盘扫描模块,正弦波产生模块,脉冲波产生模块和液晶显示模块。正弦产生部分采用DDS芯片AD9851产生频率可控的正弦波,在实践测试中得之从AD9851输出的正弦波幅值会随频率变化,最后通过软件编程明显减少了幅值误差。脉冲产生部分采用Verilog编程在FPGA内部产生占空比可调的脉冲波,解决了由将正弦波变成方波再送FPGA产生脉冲波的不稳定性。本系统工作可靠稳定,较好地完成了基本部分和发挥部分的要求。

一. 总体方案

本系统要求在给定±15V电源电压条件下设计出一个能产生正波和脉冲波的信号源。信号频率为20Hz~20kHz,频率能程控步进调整(步长为5Hz),脉冲波的占空比在2%~98%之间能程控步进调整(步长2%),两路信号均要求幅值在100mv到3V步进可调(步长为100mv),要求性能良好(频率稳度高,非线性失真小等),方案考虑如下:

正弦波产生

方案一:采用单片函数信号发生器(如8038),8038可同时产生正弦波。脉冲波,方法简单易行,用D/A转换器的输出来改变调制电压,可以实现数控调整频率,但步长难以满足要求,且频率稳定度不高。

方案二:采用锁相式频率合成器,利用锁相环,将压力变送器(vco)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂,不适于产生低频信号。

方案三:采用直接数字频率合成芯片AB9851,可以很方便地生成正弦波和脉冲波。DDS特别适合于生成频率低、频带宽、频率稳定性和准确度较高及波形复杂的场合。

脉冲波产生

方案一:由D/A转换器产生占空比相应的电压,将之与正弦信号进行比较就可得到所需占空比方波。但这种方法精度较差,难以达到2%的步进要求。

方案二:先把正弦波变换为锯齿波或三角波,然后进行比较。这样一来虽然可以提高精度,但电路复杂,成本高,调试也困难。

方案三:采用计数定时方法,先将正弦波变换为方波送入FPGA,再用它的上升沿触发一计时电路,该电路在计时期间输出为高电平,计时终止后输出为低电平, 从而实现脉冲波的占空比步进可调,占空比由单片机传输给FPGA。此方案构成的两模块有影响,形成信号源不稳定。

方案四:在单片机MSP430的控制下,通过软件编程直接在FPGA内部产生可控占空比脉冲波,实现比较容易,产生信号源十分稳定。

根据以上分析,选用如下方案:

(1)正弦波采用DDS芯片AD9851用动态生成程序的方法来实现。

(2)方波的产生方波由编程在FPGA内部生成。

信号源系统的原理框图如图所示:

 

图1 系统总体框图

二. 系统设计

2.1 硬件设计

2.1.1 正弦波产生电路

DDS单片频率合成器AD9851的ROM中已预先存入正弦函数表,其幅度按二进制分辨率量化,其相位一个周期360o按2∏/232的分辨率设立相位取样点。然后存入ROM相应地址中。工作时,用单片机送入频率码。输入采用并行方式,8位一个字节,分5次输入,其中32位是频率码,另8位中的5位是初始相伴控制码,3位是掉电控制码。改变读取ROM的数目,即可改变输出频率。

输出频率的一般表达式为 fout=kfc/232

式中,k为频率码,是个32位的二进制数。fc为系统时钟频率,即25MHz。

频率变化范围为20Hz~20kHz,周期变化范围为50ms~50us。时钟周期Tc=0.04us.当输出频率最高,即fomax=20 kHz,则Tomin=50us,

步进宽度为: △T=Tomin×2%=50×2%=1us

 

图2

2.1.2 正弦波幅值可调电路

采用16位串行DA器件DAC8831来实现正弦波的幅度步进。将DDS生成的正弦波接到DAC8831的基准输入端,通过单片机调整DA输入数字量,从而完成正弦波100mv的步进和涡街流量计的幅值预置。

 

图3

2.1.3 脉冲波形成电路

在单片机的控制下通过verilog编程在FPGA内部产生可控脉冲波。

 

图4

2.1.4 脉冲波幅值步进调整电路:

本部分采用16串行DA器件DAC8831,接口简单,且精度较高。电路图与图3-2相同。

2.2 软件设计

2.2.1 基本思路

单片机控制AD9851产生频率和相位都可控的正弦波,频率量由键盘设定,步进量为5Hz,AD9851频率分辨率为0.006985Hz,完全能够满足要求。正弦信号送入DAC8831的基准输入端,单片机控制DA的数字量调节其幅值,设置按键调整幅值可实现100mv的步进。在单片机的控制下编程在FPGA内部产生占空比可调的脉冲波,单片机向FPGA送入占空比值和频率值,FPGA通过计数值从而改变铂铑热电偶的输出脉冲波的占空比和频率,设置按键调整占空比和幅值。正弦信号送入DAC8831的基准输入端,单片机控制DA的数字量调节其幅值,设置按键调整幅值可实现100mv的步进。

2.2.2 软件流程图

 

图5 软件流程图

三、测试结果与分析

3.1 正弦波测试结果

表一:

 

图6

3.2 脉冲波测试结果

表二:

 

图7

3.3 相对误差统计

表三:

 

图8

3.4 误差分析

(1)DAC8831的量化误差 DAC8831为16串行输入的D/A转化器,会引入一定的误差。

(2)由于条件有限,采用手工焊接电路影响了整个电路的布局与走线,从而引入了一定的噪声与干扰。

四、总结

在实现此项项目过程中,很快实现了对于产生可控的正弦波并在液晶上显示的基本要求与发挥部分,DDS芯片AD9851产生频率可控的正弦波,在实践测试中得之从AD9851输出的正弦波幅值会随频率变化,最后通过软件编程明显减少了幅值误差。关键部分就在于产生占空比可控的脉冲波,起初的思路是由AD9851产生的正弦波经过滞回比较器生成方波送到FPGA产生可控的脉冲波,但最后产生的脉冲波频率与正弦波频率不对应且影响正弦波的稳定度,两个模块之间有影响,最后讨论改变方案,在MSP430送入控制信号的前提下在FPGA内部产生可控的脉冲波,结果很理想,基本达到了实验要求和发挥的部分。



热门招聘
相关主题

官方公众号

智造工程师