三相信号源设计资料Word下载.docx
《三相信号源设计资料Word下载.docx》由会员分享,可在线阅读,更多相关《三相信号源设计资料Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
第三周
完成三相信号发生器设计硬件电路调试和软件程序调试,编写设计说明书。
提交硬件设计作品及硬件课程设计说明书,完成硬件课程设计面试。
2013.5.6-2013.5.10
五、指导教师评语及学生成绩
指导教师评语:
2013年5月11日
成绩
指导教师(签字):
引言
在现代电子系统的测试和应用中,信号源是必不可少的。
根据不同系统对信号的不同要求,人们希望信号源输出波形信号的幅值、频率可调,且频率准确、稳定;
甚至在一些情况下还希望信号源能够输出相位关系确定的多路信号。
因此,传统的模拟信号源已经远远不能满足目前的电子设计要求,而是直接采用数字化合成技术产生的全数字化信号源。
以数字化为基础的智能信号源,不仅在性能上有质的飞跃,功能上也更强大,操作更简单。
经过考虑,我决定设计一台三相信号源,来代替电网的高压三相电,满足部分电力系统实验的模拟和研究,同时,还可以用做测试信号。
第一章系统设计方案与论证
1.1总体方案选择
方案一:
利用模拟开关和电阻网络产生阶梯波,从而拟合出正弦信号。
但为了准确的增益阶跃,选取精密电阻十分困难,而且为了消除模拟开关导通电阻的影响,需要加电位器微调,即麻烦,又不能达到精度要求。
方案二:
以单片机为控制核心,利用单片机片发出数字量通过DAC转换器输出所需波形。
控制单片机写入到数模转换器的数字量,即可控制其输出的模拟电压值。
波形发生程序控制单片机输出到DAC模块的数据,使其产生所需波形的模拟电压。
改变更新输出数据的时间间隔,控制输出波形的频率。
可将一个周期正弦波分为72个时段,每时段起始正弦值存入数组,DAC用该数组数据拟合正弦波。
当单片机的两路DAC输入数据在所存数组中相差24个单元,即可保证DAC0和DAC1输出正弦波相位相差120°
。
设DAC0和DAC1对应三相正弦交流电中的uA和uB相电压,相电压uC=-(uA+uB)。
因此,可将DAC0和DAC1输出经反相加法器合成为相电压uC,使信号发生器同时输出三相基波信号。
此方案输出信号稳定,电路设计也相对简单。
方案三:
从电网引入三相交流电,通过变压器降压,再通过滤波电路滤去高频杂波,得到三相信号。
再通过一些后续电路实现频率及其幅值的调整,以达到设计要求。
此方案得到的信号频率固定,后续调整较为麻烦。
综合考虑我们选择方案二。
1.2器件的选择
1.2.1控制芯片选择
采用目前比较通用的51系列单片机。
此单片机的运算能力强,软件编程灵活,自由度大。
虽然该系统采用单片机为核心,能够实现对外围电路的智能控制,但核心控制部件使用89C51时,为达到设计的要求,外围电路必须加上D/A芯片,这就使得整个系统硬件电路变得复杂,而且D/A器件价格较高,使得系统的性价比偏低。
采用MSP430F169单片机。
此单片机功能较强,性价比高、集成度高、易扩展、可靠性高、功耗小及具有较高的数据处理和运算能力。
由于MSP430F169单片机内部集成了D/A转换器,不需外加D/A。
这种方案既能实现智能化的特点,简化硬件电路,提高测量精度,这给调试、维护和功能的扩展、性能的提高,带来了极大的方便。
鉴于上面考虑,我们采用方案二。
1.2.2显示器选择
采用LED显示,把测量所得到的高度通过数码管显示。
数码管亮度高,体积小,重量轻。
再配上74HC164(串行输入转并行输出),使其不需要时时更新吧,节省CPU资源,而且可以使数据稳定,以达到静态显示的目的。
采用12864LCM点阵显示器,点阵显示界面友好,显示信息量丰富,接口电路简单,可以和单片机直接相连。
考虑到本题显示信息较少,只需要显示三相信号的频率,12864LCM点阵显示器性价比较差,所以,我们决定选择LED数码管作为本系统的显示模块。
1.2.3键盘模块选择
采用普通按键模式,通过点阵显示器索显示的信息对系统进行控制,方便快捷,易于实现。
采用4×
4矩阵键盘,其优点是按键数目较多,方便数据输入,但需要单片机对其进行动态扫描,耗电量较高,编程较难。
考虑到本系统的输入信息较少,我们选择普通按键作为本系统的键盘模块。
第二章系统硬件电路设计
本设计采用MSP430F169单片机作为系统控制单元,单片机通过按键或上位机读取用户设置的输出信号频率,再通过D/A转换发出给定值,并通过滤波和放大产生A相和B相信号,再将A相和B相信号反向求和得到B相信号,设置及输出信号参数通过LED显示屏显示。
系统结构框图如图2-1所示。
图2-1系统结构框图
2.1单片机小系统设计
采用MSP430F169单片机作为系统控制单元,外配4MHz主晶振和32768Hz的辅助晶振、复位电路、按键电路、LM12864显示器构成单片机小系统,MSP430F169单片机小系统电路如图2-2所示。
图2-2MSP430F169单片机小系统电路
2.1.1MSP430F169单片机及内部模块介绍
MSP430F169是TI公司进入中国市场的MSP430F系列单片机中功能最强的芯片。
内部模块如下:
(1)CPU(中央处理单元):
执行程序,处理16位二进制数据,自动执行。
(2)振荡器系统时钟:
与外电路配合产生方波时钟信号,驱动CPU按时钟节拍工作。
(3)JTAG接口:
与计算机系统连接,下载、仿真运行程序,自动执行。
(4)只读存储器(ROM):
容量64KB,存储程序、常数数据,执行过程中不能改动,掉电不丢失。
下载时自动完成。
MSP430F413的F是指该单片机采用FLASH型只读存储器。
(5)随机存储器(RAM):
容量64KB,存储数据,执行过程中可改动,掉电丢失。
自动执行。
(6)上电复位:
与芯片58脚(/RST-RESET)配合,芯片供电后引脚电平由低到高,CPU开始工作,自动执行。
(7)PIO端口:
并行(8条引脚对应8位二进制数)输入输出接口,实现微控制器与外电路连接。
P1至P6输入输出功能相同,但P1和P2具有中断功能。
(8)看门狗定时器:
实现定时功能,。
(9)增计数模式:
捕获/比较寄存器CCR0用作Timer_A增计数模式的周期寄存器,因为CCR0为16位寄存器,所以该模式适用于定时周期小于65536的连续计数情况。
计数器TAR可以增计数到CCR0的值,当计数值与CCR0的值相等(或定时器值大于CCR0的值)时,定时器复位并从0开始重新计数。
增计数模式的计数过程如图2-3所示。
通过改变CCR0值,可重置计数周期。
图2-3增计数模式示意图
2.1.2复位电路设计
当系统一上电先经RC电路对电容充电,电容电压不能跃变,为低电平,单片机自动复位,当电容充电过1/2VCC时,为逻辑高电平,单片机完成复位,开始正常工作状态。
当出现紧急情况需要复位时,按下按键,电容对地放电,当电容电压低于1/2VCC时,单片机复位,松开按键,再重复上过程。
我还配以保护二极管用以钳制引入单片机的电压不大于5V,从而保护单片机。
2.1.3按键电路设计
按键引入经过二极管的电源电压VCC1,再经下拉电阻接地,当按键没有按下时,单片机读入低电平,当按键按下时读入高电平,大约4.3V。
2.2A相信号输出电路
单片机DA转换器产生的A相信号经过RC滤波电路,产生正弦信号,由电压跟随器送入反向比例放大电路放大输出,如图2-4所示。
图2-4A相信号输出电路
2.2.1隔直滤波电路设计
单片机DAC输出电压范围0—2.5V(峰—峰值),中心轴(偏移量)对应1.25V,没有负压。
所以必须经过隔直滤波,将DAC输出的信号整体下移1.25V,使中心轴对应0V,从而模拟产生正弦信号。
我设计选用RC隔直滤波。
2.2.2放大电路设计
由于经过隔直滤波产生的电压信号是幅值为1.25V的正弦信号,幅值和要求的比较太小,需要功率放大,我选用同向比例放大电路将幅值放大。
放大比例关系如式2-2-2。
(2-2-2)
为了避免隔直滤波电路和放大电路之间的干扰,再在两者之间加电压跟随器,将两者隔离。
2.3B相信号输出电路
单片机的另一路DA转换器产生B相信号,原理和电路设计和A相完全相同,电路设计如图2-5所示。
图2-5B相信号输出电路
2.4C相信号输出电路
由三相交流电的基本特性uC=-(uA+uB),将产生的A,B两相信号引入反相加法器求和,再经放大电路放大输出,电路如图2-6所示。
图2-6C相信号输出电路
2.4.1求和电路设计
MSP430F169单片机只有两路DAC,没办法产生C相信号,所以,我考虑用A,B两相信号合成并取反产生。
并设计选择了A,B两相通过反向比例求和电路产生C相。
合成产生C相信号关系式如式2-4-1
(2-4-1)
2.4.2放大电路设计
同A相完全一样。
(略)
2.5显示电路设计
LED显示模块与单片机连接电路如图2-7所示。
图2-7LED显示模块与单片机连接电路
由单片机的P4.0发出数据,P1.0发出移位时钟信号,从而驱动74HC164,完成串行输入转并行输出用以驱动LED数码管。
74HC164芯片内部结构如图2-8所示。
图2-874HC164芯片内部结构
2.6电源电路设计
为了给三相信号源系统供电,电源电路如图2-9所示,输出±
5V直流电压。
图2-9电源电路
2.6.1单相桥式整流电路
变压器的作用是将交流电网电压u变成整流电路要求的交流电压;
四只整流二极管D1~D4接成电桥的形式,固有桥式整流电路之称。
在电源电压u的正、负半周内电流通过负载方向相同,属全波整流,将交流电变为脉动。
2.6.2滤波电路
滤波电路用于滤去整流输出电压中的纹波,一般由电抗元件组成,如在负载电阻两端并联电容器C,或在整流电路输出端与负载间串联电感器L,以及由电容、电感组合而成的各种滤波电路。
对小负载的电源,仅采用电容虑波即可。
2.6.3稳压电路
稳压电路是将不稳定的直流电压变为稳定的直流电压的集成电路,一般均采用稳压芯片制作稳压电路。
由于稳压芯片具有稳压精度高、工作稳定可靠、外围电路简单、体积小、重量轻等显箸优点,在各种电源电路中得到了普遍的应用。
常用的稳压芯片有78XX和79XX系列,其中78XX系列为正电压输出,79XX系列为负电压输出,输出电压有±
5V、±
9V、±
12V、±
15V、±
18V等规格,最大输出电流为1.5A。
它的内部含有限流保护、过热保护和过压保护电路,采用了噪声低、温度漂移小的基准电压源,工作稳定可靠,使用十分方便。
第三章程序设计
3.1程序部分参数计算
DAC输出电压范围0—2.5V(峰—峰值),对应输入数字量范围0—0FFFH;
中心轴(偏移量)对应1.25V(数字量800H);
最大值1.25V(数字量800H)。
若将一个正弦周期分为72个点,个点对应的DAC输入数值计算公式如下:
(再变为十六进制数)。
其中N为各时段序号,Din为DAC输入数值。
逐段求出后基波数据后,转换成十六进制数用常量数组存入单片机(常量数组占用ROM)。
定时中断时间常数计算公式:
其中:
Buf_TB是MSP430F169单片机定时器B定时中断时间常数;
F是单片机定时器B所选时钟频率(8MHz);
N1是一个基波周期所分时段数;
N2是基波频率数。
3.2各程序流程图
3.2.1主程序流程图
图3-1主程序流程图
3.2.2看门狗定时器流程图
图3-2看门狗定时器流程图
第四章测试数据及测试结果分析
4.1测试工具
本设计采用频率计,示波器,万用表等进行测试。
4.2测试数据
(1)测定输出信号频率
测试数据如下:
设定信号频率(HZ)
10
20
30
45
50
53
60
75
99
输出信号频率(HZ)
结果分析
经测量我们得到上面的数据,当设定输出为正弦波信号频率时,输出信号的频率误差小于0.02Hz,达到了题目要求。
误差引起的因素包括硬件电路的设计,外界的干扰,算法的选择以及测量工具本身灵密度造成的测量误差等。
结论
本设计能够输出正弦波信号,输出频率范围10~99Hz可调,步进1Hz,能够通过LED数码管显示输出信号参数。
从这次的电子竞赛中,我真正地意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,知识只有在经常的温习使用的过程中才能提高升华。
还有要锻炼自己的动手能力,不能一味地去学习理论而不实践。
随着科学的迅猛发展,新技术的广泛应用,会有很多领域是我们未曾接触过的,只有敢于去尝试才能有所突破,有所创新。
也不仅仅是通过几项工种所要求我们锻炼的几种能力,更多的则需要我们每个人在竞赛结束后根据自己的情况去感悟,去反思。
只有勤奋自勉,才能有所收获。
参考文献
[1]胡大可.MSP430系列FLASH型超低功耗16位单片机.北京:
北京航空航天大学出版社,2001
[2]秦龙.MSP430单片机常用模块与综合系统.北京:
电子工业出版社,2007
[3]曹磊.MSP430单片机C程序设计与实践.北京:
北京航空航天大学出版社,2007
[4]康华光.电子技术基础模拟部分.北京:
高等教育出版社.2002
[5]时景荣,李立春.C语言程序设计.北京:
中国铁道出版社.2007
附录
/***********************************************************
*MSP430F169双路正弦波发生器程序清单
************************************************************/
#include<
msp430x16x.h>
*双路正弦波数据表,存入ROM区
constintNUM_SIN0[72]={//正弦波数据表
0x800,0x8b2,0x963,0xa12,0xabc,0xb61,0xc00,0xc96,0xd24,0xda8,0xe20,0xe8d,//0_55度
0xeed,0xf40,0xf84,0xfba,0xfe0,0xff8,0xfff,0xff8,0xfe0,0xfba,0xf84,0xf40,//60_115度
0xeed,0xe8d,0xe20,0xda8,0xd24,0xc96,0xc00,0xb61,0xabc,0xa12,0x963,0x8b2,//120_175度
0x800,0x74d,0x69c,0x5ed,0x543,0x49e,0x400,0x369,0x2db,0x257,0x1df,0x172,//180_235度
0x112,0x0bf,0x07b,0x045,0x01f,0x007,0x000,0x007,0x01f,0x045,0x07b,0x0bf,//240_295度
0x112,0x172,0x1df,0x257,0x2db,0x369,0x400,0x49e,0x543,0x5ed,0x69c,0x74d};
//300_355度
constintNUM0[8]={0X00,0X00,0X80,0X80,0X80,0X80,0X80,0X80};
constunsignedshortintN1=72;
//一个周期分组数
intxs[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
constunsignedlongintF=8000256;
//高速时钟频率
shortintBuf_TB,N_sin,N_sin1;
//定时器中断周期、sin分组数
unsignedintxdata=50,indata,setdata,aindata,setadata,N2=50,i,a,b;
unsignedinta1,a2,b1,b2,i;
/***************************************************************
*串行输入转并行输出(数码管驱动显示)子程序
***************************************************************/
voidczb(void)
{
a1=xdata/10;
a2=xdata%10;
b1=xs[a1];
b2=xs[a2];
i=0;
while(i<
16)
{if(i<
8)
{P4OUT=b1&
0x01;
P1OUT=0x01;
P1OUT=0x00;
b1=b1/2;
}
if(i>
7)
{P4OUT=b2&
b2=b2/2;
i++;
}
*设置TimerB输出PWM的工作模式
voidinit_TB(void)
{
Buf_TB=(int)(F/(N1*N2));
TBCCR0=Buf_TB;
TBCTL=TBSSEL_2+TBCLR+SHR_0;
//SMCLK,clearTBR,
TBCCTL0=CCIE;
//中断使能CCR0
TBCTL|=MC0;
//设置递增模式
*TimerB0中断服务程序
#pragmavector=TIMERB0_VECTOR//中断程序入口地址
__interruptvoidtimer_B(void)
//interrupt[TIMERB0_VECTOR]voidTimer_B(void)
DAC12_0DAT=NUM_SIN0[N_sin];
//ccr1Pwmcycle
N_sin1=N_sin+24;
if(N_sin1>
71)
{N_sin1=N_sin1-72;
DAC12_1DAT=NUM_SIN0[N_sin1];
N_sin=N_sin+1;
if(N_sin==72)
{N_sin=0;
_NOP();
*WDT中断服务程序
#pragmavector=WDT_VECTOR//中断程序入口地址
__interruptvoidwatchdog_timer(void)
//interrupt[WDT_VECTOR]voidwatchdog_timer(void)
indata=P2IN&
0x07;
if(indata!
=0)
{
switch(indata)
case1:
xdata=xdata+1;
if(xdata>
99){xdata=10;
}break;
case2:
xdata=xdata-1;
if(xdata<
10){xdata=99;
case4:
setdata=xdata;
N2=setdata;
init_TB();
break;
czb();
main函数
***********************************************************/
voidmain(void)
WDTCTL=WDT_ADLY_250;
//WDT间隔时间为250ms(ACLK)
BCSCTL1=~XT2OFF+SELS;
//清零位=高频xtalon
BCSCTL2=SELS;
//选择SMCLK=HFxtal
P4DIR|=0x01;
P4OUT=0x00;
P1DIR|=0x01;
ADC12CTL0=REF2_5V+REFON;
//内部2.5V参考源接通
DAC12_0CTL=DAC12IR+DAC12AMP_5+DAC12ENC;
//内部参考源为1
DAC12_1CTL=DAC12IR+DAC12AMP_5+DAC12ENC;
DAC12_0DAT=0x800;
//1.25V
DAC12_1DAT=0x800;
IE1|=WDTIE;
//使能WDT中断
_EINT();
//使能中断
xdata=50;
a1