三相正弦波发生器.docx
《三相正弦波发生器.docx》由会员分享,可在线阅读,更多相关《三相正弦波发生器.docx(23页珍藏版)》请在冰豆网上搜索。
三相正弦波发生器
嵌入式系统综合实训
说明书
题目:
三相正弦波发生器
院(系):
信息与通信学院
专业:
电子信息工程
学生姓名:
闫朝明
学号:
1100220429
指导教师:
孙安青
2015年1月10日
基于DDS的正弦波发生器
摘要DDS(DirectDigitalSynthesizer)是直接数字频率合成器技术。
基于Altera公司的cycloneII利用DDS技术实现正弦波发生器是一种新的频率合成技术,它主要是通过相位累加器、波形ROM构成,与传统的相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。
通过正弦波发生器还可以拓展出任意波形器。
关健词:
DDSnuc-140ROMmodelsim
SineWaveGeneratorBasedonDDS
Abstract
DDS(DirectDigitalSynthesizer)istheDirectDigitalfrequencySynthesizertechnology.BasedonAlteracorporationcycloneIIusingDDStechnologytorealizethesinewavegeneratorisakindofnewfrequencysynthesistechnology,itmainlythroughthephaseaccumulator,waveformROMcomposition,comparedwiththetraditional,DDShaslowcost,lowpowerconsumption,andtheadvantagesofhighresolutionandfastconversiontime,widelyusedinthefieldoftelecommunicationsandelectronicinstruments,isoneofthekeytechnologiestorealizefulldigitalequipment.Throughsinewavegeneratorcanalsoexpandthearbitrarywaveform.
Keywords:
DDSnuc-140ROMmodelsim
目录
引言…………………………………………………………………………1
1设计目的及意义 ………………………………………………………3
1.1设计目的……………………………………………………………………………3
1.2设计意义……………………………………………………………………………4
2设计方案………………………………………………………………6
2.1设计要求……………………………………………………………………………6
2.2设计思路………………………………………………………………………………6
3硬件电路设计 ………………………………………………………10
3.1开发板及主要芯片介绍 ……………………………………………………………10
3.2硬件框图…………………………………………………………………………11
3.3硬件模块说明…………………………………………………………………………12
4软件设计 ……………………………………………………………12
4.1程序流程图 ………………………………………………………………………12
4.2正弦波的产生过程 ………………………………………………………………12
5结论……………………………………………………………………13
谢辞………………………………………………………………………14
参考文献…………………………………………………………………15
附录………………………………………………………………………16
引言
波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。
函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。
近年来,波形发生器在各种领域中得到越来越广泛的应用。
本系统主要通过开发板NuMicro™NUC140,外加D/A转换芯片等其它器件,进行硬件设计和软件编程,完成正弦波的形成。
波形频率的变化和振幅可以自行选择,即通过改变定时器的初值来改变输出波形相邻两点的时间间隔,从而实现波形频率的改变。
此次课程设计是为了提高我们的动手能力,实践能力,创新能力而开设的一门实践,它充分利用了学校实验室所能提供的各种仪器及器材,根据学生所掌握的知识,从实际情况出发而制定的实践项目。
课程设计是一项重要的实践性教育环节,是学生在完成本专业所有课程学习后必须接受的一项结合本专业方向的、系统的、综合的工程训练。
1设计目的及意义
1.1设计目的
(1)利用所学嵌入式系统以及单片机的理论知识进行软硬件整体设计,锻炼学生理论联系实际,提高我们的综合应用能力。
(2)我们这次的课程设计是以NuMicro™NUC140开发板为基础,设计并开发能输出正弦波且频率可变的函数发生器,可增强对微控制器的学习及运用能力。
(3)掌握各种芯片(如DAC0832等)的功能特性及接口方法。
(4)在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。
因此,缺乏一种系统的设计锻炼。
在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。
(5)通过这一个函数发生器的设计,使得我对系统的整个框架的设计有了一个很好的锻炼。
这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家对知识的应用能力。
1.2设计意义
波形发生器作为一种常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源,由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察、测量被测仪器的输出响应,以分析确定它们的性能参数。
信号发生器是电子测量领域中最基本、应用最广泛的一类电子仪器。
它可以产生多种波形信号,如正弦波,三角波,方波等,因而广泛用于通信、雷达、导航、宇航等领域。
2设计方案
2.1设计要求
(1)具有产生正弦波波形的功能;
(2)可改变波形的振幅以及频率;
(3)输出波形的频率可调,频率步进为2Hz。
(4)输出波形幅度范围可按步进0.2V(峰—峰值)调整。
(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
2.2设计思路
根据题目的要求,经过仔细的考虑各种要素,制定了整体方案:
以NuMicro™NUC140开发板为基础,P0口接DAC0832信号输入并进行数模转换,P1口接矩阵键盘,P2口接液晶显示器LCD1602,由程序控制P0口产生波形,再由按键及按键次数控制产生波形的频率和幅值在一定范围内可调,并且能够按任意键实现波形频率和幅值的设定(不通过步进按键设定来控制)。
由运放OP07实现DAC0832输出电流到电压的转换,即实现数字信号到模拟信号的转换。
在LCD上实时的显示波形的频率和幅值,波形在示波器上产生。
其波形的存储方式,我们通过按键确定,一旦按键按下后,就把当时的波形对应的参数存储起来,例如幅度值,频率值等参数。
波形的合成:
为了波形的合成,我们在采样的时候,对正弦波,三角波,方波都只取乐20个点;因为点越少,其频率达到的值就会越大;合成时就是对幅值点进行一个叠加后赋给DAC0832输出一组波形。
红外,通过外部中断高低电平的延时的时间来进行解码。
3硬件电路设计
3.1NuMicro™NUC140开发板及主要芯片介绍
本次设计用到的硬件资源主要有NuMicro™NUC140开发板以及DAC0832芯片
3.1.1NuMicro™NUC140开发板简介
(1)NuMicro™NUC140是32位的内嵌ARM®Cortex™-M0核的微控制器,适用于工业控制和需要丰富的通信接口的应用领域,Cortex™-M0是ARM最新的32位嵌入式处理器,拥有与传统8051单片机之匹敌的价格优势。
NuMicro™NUC140ConnectivityLine带全速USB2.0和CAN功能,内嵌Cortex™-M0内核,最高可运行至50MHz,内建32K/64K/128K字节的Flash存储器,以及4K/8K/16K字节SRAM,4K字节用于存储ISP引导代码的ROM,和4K字节的数据Flash存储器。
另外还有丰富的外设,如定时器,看门狗定时器,RTC,PDMA,UART,SPI,I2C,I2S,PWM定时器,GPIO,LIN,CAN,PS/2,USB2.0FS设备,12位ADC,模拟比较器,低电压复位控制和欠压检测功能。
其主要性能特征有:
•内核
–ARM®Cortex™-M0内核最高运行50MHz
–一个24-位系统定时器
–支持低功耗睡眠模式
–单周期32位硬件乘法器
–嵌套向量中断控制器(NVIC)用于控制32个中断源,每个中断源可设置为4个优先级
–支持串行线调试(SWD)带2个观察点/4个断点
•内建LDO,宽电压工作范围2.5V到5.5V
•Flash存储器
–32K/64K/128K字节Flash用于存储程序代码
–4KBflash用于存储ISP引导代码
–支持在系统编程(ISP)方式更新应用程序
–支持512字节单页擦除
–在128K字节系统中可配置数据FLASH地址和大小,在32K字节和64K字节系统中固定为
4K字节数据
–通过SWD/ICE接口,支持2线ICP升级方式
–支持外部编程器并行高速编程模式
•SRAM存储器
–4K/8K/16K字节内建SRAM
–支持PDMA模式
•PDMA(PeripheralDMA)
–支持9通道PDMA用于SRAM和周边设备的自动数据传输
•时钟控制
–针对不同应用可灵活选择时钟
–内部22.1184MHz高速振荡器可用于系统运行
–内部低功耗10KHz低速振荡器用于看门狗及掉电模式唤醒等功能
–支持一组PLL,高至50MHz,用于高性能的系统运行
–外部4~24MHz晶振输入用于USB和精准的定时操作
–外部32.768kHz晶振输入用于RTC及低功耗模式操作
•GPIO
–四种I/O模式:
准双向模式、推挽输出模式、开漏输出模式、高阻输入模式
–TTL/Schmitt触发输入可选
–I/O引脚可被配置为边沿/电平触发模式的中断源
–支持大电流驱动和灌入I/O模式
•Timer
–支持4组32位定时器,每个定时器有一个24位向上计数定时器和一个8位预分频计数器
–每个定时器有独立的时钟源
–提供one-shot,periodic,toggleandcontinuous计数操作模式
–支持事件计数功能
–支持输入捕捉功能
(2)NuMicro™NUC140管脚图
3.1.2DAC0832简介
DAC0832DAC0832是8分辨率的D/A转换集成芯片。
与微处理器完全兼容。
这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。
D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式。
DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832引脚功能说明:
DI0~DI7:
数据输入线,TLL电平。
ILE:
数据锁存允许控制信号输入线,高电平有效。
CS:
片选信号输入线,低电平有效。
WR1:
为输入寄存器的写选通信号。
XFER:
数据传送控制信号输入线,低电平有效。
WR2:
为DAC寄存器写选通输入线。
Iout1:
电流输出线。
当输入全为1时Iout1最大。
Iout2:
电流输出线。
其值与Iout1之和为一常数。
Rfb:
反馈信号输入线,芯片内部有反馈电阻.
Vcc:
电源输入线(+5v~+15v)
Vref:
基准电压输入线(-10v~+10v)
AGND:
模拟地,摸拟信号和基准电源的参考地.
DGND:
数字地,两种地线在基准电源处共地比较好.
3.2硬件框图
3.3硬件模块说明
3.3.1显示接口模块
功能:
驱动LCD液晶显示、扫描按钮。
由LCD1602液晶显示器和矩阵按键组成。
当某一按键按下时,扫描程序扫描到之后,通过P2口将数字信号发送到LCD1602,LCD1602液晶专门用于显示字母、数字、符号等点阵式LCD,其外接电压时5V。
扫描利用软件程序实现,当某一按键按下时,扫描立即检测到,随即调用子程序,执行相应的功能。
其与单片机连接如图4所示:
3.3.2波形转换(D/A)电路
功能:
将波形样值得编码转换成模拟值,完成波形的输出。
由一片DAC0832和LF356运放组成。
DAC0832是一个具有两个输入数据寄存器的8位DAC。
目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加电路就可以直接与微型计算机接口。
另一类芯片内没有数据寄存器,输出信号随数据输入线的状态的变化而变化,因此不能直接与微型计算机接口,必须通过并行口与微型计算机接口。
DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,股不需要外加电路。
DAC0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以用运算放大器LF356实现。
单片机想DAC0832发送数字编码,产生不同的输出。
先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,经过D/A转换后输出就可以得到波形。
假如N个点构成波形的一个周期,则DAC0832输出N个样点值后,样值点形成运动轨迹,即,一个周期。
重复输出N个点后,成为第二个周期。
利用单片机的晶振控制输出周期的速度,也就是控制输出的波形的频率。
这样就控制了输出波形的及其幅值和频率,例如:
正弦波
3.3.3复位模块
复位电路的工作原理是:
单片机的复位电路在刚接通电时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。
正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正 常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。
3.3.4独立按键模块
图八为用独立按键来控制不同的输出波形
3.3.5串口通信模块
图中通过MAX232进行TTL电平和232电平转换,从而单片机和上位机之间通信提供通道。
4软件设计
4.1程序流程图
4.2正弦波的产生过程
正弦波的实现需要查表,每查一次表,输出一个数值,之后查下一个数值继续
输出,当一个波形的256个数值全部输出之后,从头开始继续输出。
DDS的工作原理是以相位累加器和ROM为核心的将要输出的波形的数据取样、量化、编码,形成函数表,逐步存储在ROM里,然后在系统标准时钟下,按照一定的顺序从ROM中读取数据,再经过D/A转换和滤波后,得到一定频率的输出波形。
本论文中只涉及到软件仿真不讲解D/A转换和滤波。
DDS原理框图:
5结论
通过这次对波形发生器的设计与制作,让我熟悉了NuMicro™NUC140开发板的组成和使用,了解了设计电路的程序,也让我了解了关于波形发生的原理与设计理念。
此次课程设计所用到的程序全系独立编写,通过这一课程设计,使得对课堂上所学习的知识的应用能力获得了大的提高,也极大的增强了编写调试程序和硬件连接的能力。
编程工作是一项繁重,系统的脑力劳动,需要编程者具有足够的耐心和毅力,耐心细致的工作态度和严谨务实的工作作风。
本次所编写的多功能波形发生器的源程序总共将近一千行,系统庞大而且繁杂,在编写过程中,所遇到的问题非常多,整个编写过程就是一个不断面临问题,不断解决问题的过程,这一过程充满了挑战性,也充满了各种困难,但不断的追踪错误的来源也是很有趣味的一件事情。
总而言之,这使我对嵌入式实时操作系统、c语言的理解和掌握上有了很大的进步,以前所了解的东西仅限于一些片面的知识,通过这次编程,将这些零零碎碎的知识汇集起来,编写出了一个完整的系统,并且对知识的应用能力有了极大的提高,对于硬件接口的问题也有了深刻的了解,体会到了的独具一格的思想,也让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
谢辞
在这次课程设计过程中,得到了许多朋友,同学的帮助,如果没有他们,设计过程将会更加地困难。
在此感谢在课设期间每位帮助过我的同学,他们和我分享了很多以往的经验,让我少走很多弯路。
还要感谢所有传授我知识的老师,是他们的悉心教导使我有了一定的专业课知识,这也是课设能够得以完成的基础。
再次感谢传授给我知识以及给我帮助和鼓励的老师,同学和朋友,谢谢。
参考文献
[1] 卢有亮. 嵌入式实时操作系统. 北京:
电子工业出版社.2014
[2]高士友等.基于FPGA的DDS信号发生器的设计[J].现代电子技术,2009(16):
35-40.
[3]赵洪华.基于DDS技术的数字频率信号发生器的设计[J].客机创新导报,2010(24):
96-97.
[4]谭浩强.C语言程序设计(第二版)[M],北京:
清华大学出版社,1991.
[5]赵曙光,郭万有,杨颂华.可编程逻辑器件原理开发与应用[M],西安:
西安电子科技大学,2000.
[6]候伯亨.VHDL硬件描述语言与数字逻辑电路设计[M],西安:
西安电子科技大学出版社,1999.
[7]欧伟明,周春临,瞿遂春.电子信息系统设计[M],西安电子科技大学出版社,2005.9.
[8]贾立新,王涌.电子系统设计与实践[M],北京:
清华大学出版社,2007.
[9]徐金龙,刘宇红,刘娇.基于DDS原理的任意波形发生器的设计[J].现代机械,2006(4):
74-76.
[10]彭文标,黄悦华.基于DDS技术的信号源设计与实现[J].微计算机信息,2007(20):
271-272.
附录
程序:
#include"stdio.h"
#include"NUC1xx.h"
#include"GPIO.h"
#include"SYS.h"
#include"Seven_Segment.h"
#include"Scankey.h"
#include"LCD.h"
#defineONESHOT0//countingandinterruptwhenreachTCMPRnumber,thenstop
#definePERIODIC1//countingandinterruptwhenreachTCMPRnumber,thencountingfrom0again
#defineTOGGLE2//keepcountingandinterruptwhenreachTCMPRnumber,touttoggled(between0and1)
#defineCONTINUOUS3//keepcountingandinterruptwhenreachTCMPRnumber
staticuint16_tTimer0Counter=0;
staticuint16_tTimer1Counter=0;
staticuint16_tTimer2Counter=0;
staticuint16_tcount=0;
staticfloatAmplitude=1.5;
staticfloatCount=0.455;
staticuint16_tFrequency=300;
unsignedcharsin[]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,
0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,
0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,
0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,
0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,
0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0