首页 冯博组 低频三相函数信号发生器

冯博组 低频三相函数信号发生器

举报
开通vip

冯博组 低频三相函数信号发生器低频三相函数信号发生器技术论文 Hefei University 作品名称:          低频三相函数信号发生器              参赛队员:            冯博  张翔  郭强                    指导教师:              姚红  汪济洲                    完成时间:            11年6月26日                  摘要    3 关键字    3 一、题目理解与分析    3 方案一    4 方案二...

冯博组 低频三相函数信号发生器
低频三相函数信号发生器技术论文 Hefei University 作品名称:          低频三相函数信号发生器              参赛队员:            冯博  张翔  郭强                    指导教师:              姚红  汪济洲                    完成时间:            11年6月26日                  摘要    3 关键字    3 一、题目理解与分析    3 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 一    4 方案二    4 方案三    5 二、模块方案 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计     5 2.1 单片机的选择    5 2.2 正弦波发生器的设计方案    6 2.3 电源设计方案    6 2.4 显示模块的设计方案    7 2.5 键盘设计方案    8 三、硬件电路设计    8 3.1 倍频放大电路    8 3.2 低通滤波电路    9 3.3移位和调幅电路设计    10 3.4 有效值转换电路设计    11 四、程序设计    11 液晶显示函数所有子函数    12 频率计算相位差延时函数    15 正弦波产生子函数    15 矩形波可调占空比产生函数    16 步进函数子函数    17 程控滤波子函数    19 总体程序主函数    19 五、系统测试    21 5.1 测试仪器    21 5.2 系统测试    22 六、 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf     23 七、参考文献    23 摘要:函数信号发生器是电子设计以及教学、科研中应用最广泛的仪器之一。如果能用相对简单的实现方式和较少的成本产生具有优秀稳定度和精确度的常用波形,无疑将会在这些领域中得到广泛的应用。本系统基于STC89C52单片机控制产生脉冲波,在经过倍频放大电路,将频率放大到要求值,后经过低通滤波电路将矩阵波变成正弦波,放大后进入有效值转换电路最终输出脉冲,组成低频函数信号发生器。通过键盘控制达到电压预置、频率预置和占空比预置等功能,电压值、频率值和占空比都可用LCD12864显示,实现友好的人机界面。 关键字:单片机  倍频电路  函数信号  LPF 一、题目理解与分析 题目要求设计并制作一台低频三相函数信号发生器,通过分析和理解,把题目功能要求及指标要求以下 表格 关于规范使用各类表格的通知入职表格免费下载关于主播时间做一个表格详细英语字母大小写表格下载简历表格模板下载 形式列出。 序号 功能要求 指标要求 1 完成一路正弦波信号输出 频率范围20Hz~20kHz,频率稳定度优于10-5,用示波器观察无明显失真 2 能够频率设置和频率步进 频率步进10Hz 3 能够输出电压幅度 在10kΩ负载电阻上的电压峰-峰值Vopp≥20V 4 数字显示正弦波的电压有效值、频率等 电压有效值精度5%,频率精度0.1% 5 正弦波输出信号扩展到三相输出 波形无明显失真,频率可调范围扩展到1Hz~30kHz,频率步进1Hz 6 在频率范围1Hz~30kHz内,任两相间的相位差在0°~359°范围内可任意预置 相位差步进1° 7 在1Hz~30kHz频率范围内,增加方波输出信号,频率可任意预置 频率步进2Hz,频率精度0.05% 8 矩形波信号的占空比可以预置 占空比步进1/360,并且当占空比为1/4时,误差≤±2/360 9 能输出载波频率约为10kHz的调频信号输出 调制信号频率在100Hz~1kHz范围内可变,观察载波信号无明显失真       方案一:基于DDS函数发生噐的设计 由单片机、D/A转换器及波形数据存储器等组成系统,单片机控制正弦波波形的合成、相位的改变,以及所有的逻辑和时序控制等工作。此方案除了要求单片机完成基本的处理分析以外,还需要完成信号波数据的存储、按键的处理、信号显示等控制与变换工作。其优点在于系统规模小,有较大的灵活性,但单片机内部资源和处理速度不容易满足要求。 方案二:基于IP核技术的FPGA 由带有IP核的FPGA来完成采集、存储、显示及D/A转换等功能,由IP核实现人机交互及信号输出分析等功能。FPGA内部可以容纳上百万个晶体管,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。这种方案的优点在于系统高度集成、结构紧凑、操作方便;缺点是调试过程繁琐、难度大,难以在短时间内完成系统设计。 方案三:采用单片机控制 运用51单片机产生不同的脉冲波,随后运用倍频放大电路,低通滤波电路,相移和放大电路,最终产生输出脉冲。本方案总体设计全部由基础电路完成,分模块实现各个部分所要求的功能,但由于是使用单片机产生的脉冲波,因为延时函数的影响,会使最终的输出波形产生一点的误差。 综合分析以上三种方案,并结合实际,采用方案三来完成低频三相函数发生器的制作。 二、模块方案设计 2.1 单片机的选择 方案一:采用凌阳系列单片机 凌阳系列单片机指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持。低功耗,低损耗。另外,它的工作电压范围大,能在低电压供电时正常工作。采用32MHz的外部晶振,能满足题目要求,但是操作处理比较慢且价格较贵。 方案二:采用51系列单片机 MCS-51系列单片机,具有的集成度高、处理功能强、可靠性高、系统结构简单、价格低廉等优点。采用STC89C52单片机,外接11.0592MHz晶振,勉强能够满足题目要求,但是它的缺点是处理速度较慢。 综合比较,考虑成本及功能采用方案二。 2.2 正弦波发生器的设计方案 方案一:采用传统的直接频率合成法直接合成 利用单片机产生不同频率的脉冲波,后经倍频电路产生所需频率,最终经过低通滤波器产生规则正弦波,本方案优点在于可以节约成本,缺点在于产生的正弦波频率存在误差。不能达到很高的精度。 方案二:采用直接数字式频率合成(简称DDS) 用随机读/写存储器RAM存储所需波形的量化数据,按照不同频率要求,以频率控制字K为步进对相对增量进行累加,以累加相位值作为地址码读取存放在存储器内的波形数据,经D/A转换和幅度控制,再滤波即可得到所需波形。由于DDS具有相对带宽很宽,频率转换时间极短,频率分辨率高等优点,以及输出相位连续,频率、相位和幅度均可实现程控,因此可以完成题目要求。但要求是3相输出,所以需要3个DDS,成本较高。 综合比较选择方案一。 2.3 电源设计方案 本系统需要多个电源,单片机的工作电压为5V,低通滤波芯片S3528B的工作电压为正负5V,提供给OP37的工作电压为±15V。因此,采用三端稳压器7815、7915、7805和7905制作稳压电源,提供各器件电压。总体电路设计如下图所示: 图2.3 电源模块电路原理图 2.4 显示模块的设计方案 方案一:采用LED数码管显示 虽然功耗低,控制简单,但是只能显示数字和一些简单的字符,没有较好地人机界面。 方案二:采用LCD液晶显示 LCD12864可以显示所有字符和自定义字符,并能同时 显示多组数据、汉字,字符清晰。自身具有控制器,不仅可以减轻主单片机的负担,而且可以实现菜单驱动方式的显示效果,达到友好人机界面。用LCD液晶显示,能解决LED只能显示数字等几个简单字符的缺点,性能好,效果多,控制方便,显示方式多。 比较以上两种方案,采用方案二。 2.5 键盘设计方案 由于单片机I/O口足够,因此采用4×4矩阵键盘和两个独立键盘完成即可。4×4矩阵键盘的电路原理图如下图所示: 图2.5 键盘电路图 三、硬件电路设计 3.1 倍频放大电路 由于单片产生单位脉冲波,程序设计的频率为2HZ到2KHZ,为满足题目要求,所以设计中采用倍频放大电路,将频率放大为20HZ到20KHZ,完成稳定输出,该模块由锁相环CD4046和10位的计数器CD4518组成。具体实现电路如下图所示: 图4.1 倍频放大电路原理图 3.2 低通滤波电路 本模块采用可编程低通滤波芯片S3528,S3528 是采用CMOS 工艺制造的双列直插式开关电容低通滤波器。它由输入/ 输出运放、锁存 器、内部ROM、可编程分频器及低通滤波器组成。该模块的总体电路设计如下图所示: 图3.2  低通滤波电路 3.3移位和调幅电路设计 滤波电路的输出正弦波并不是标准的正弦波函数,它的幅值都大与零,并且因此要计算输出电压的有效值,需要先将波形整体向下移位,由于输出的正弦波峰峰值较小,所以同样要经过一个放大电路。波形移位和幅值放大电路原理如图4.2.1所示。 图3.3  移位(左)和调幅(右)电路 3.4 有效值转换电路设计 由于显示内容要求有有效值显示,所以在输出端加上了有效值转换电路,该模块由AD736芯片实现,在给定的频率内,将正弦波转换成有效值输出,具体电路设计如下图所示 图3.4 有效值转换电路 四、程序设计 本系统的所有程序均采用C语言编写。程序各部分分别做成模块,主程序做成不同的界面,各模块按主程序调用子程序的方式执行。软件的关键在于如何控制STC98S52的工作方式和控制字,以及如何控制低通滤波器的截至频率,最终达到各个模块的数控和液晶显示效果。 软件实现的功能有:(1)输出三路脉冲波信号;(2)步进控制;(3)频率设置;(4)低通滤波器截至频率设置;(5)方波占空比预置。 整个系统软件由主程序和多个功能子程序构成。软件基本按照主程序调用子程序的方法执行。 总体程序如下: 液晶显示函数所有子函数 void v_Lcd12864CheckBusy_f( void )      //忙检测函数 { unsigned int nTimeOut = 0 ; SET_INC SET_READ CLR_EN SET_EN while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ; CLR_EN SET_INC SET_READ } void v_Lcd12864SendCmd_f( unsigned char byCmd )      //发送命令 { v_Lcd12864CheckBusy_f() ; SET_INC SET_WRITE CLR_EN io_LCD12864_DATAPORT = byCmd ; _nop_(); _nop_(); SET_EN  _nop_(); _nop_(); CLR_EN SET_READ SET_INC } void v_Lcd12864SendData_f( unsigned char byData )    //发送数据 { v_Lcd12864CheckBusy_f() ; SET_DATA SET_WRITE CLR_EN io_LCD12864_DATAPORT = byData ; _nop_(); _nop_(); SET_EN  _nop_(); _nop_(); CLR_EN SET_READ SET_INC } void v_DelayMs_f( unsigned int nDelay )              //延时 { unsigned int i ; for( ; nDelay > 0 ; nDelay-- ) { for( i = 125 ; i > 0 ; i-- ) ; } } void v_Lcd12864Init_f( void )                  //初始化 { LCD_PSB = 1; //并行 v_Lcd12864SendCmd_f( 0x30 ) ;              //基本指令集 v_DelayMs_f( 50 ) ; v_Lcd12864SendCmd_f( 0x01 ) ;              //清屏 v_DelayMs_f( 50 ) ; v_Lcd12864SendCmd_f( 0x06 ) ;              //光标右移 v_DelayMs_f( 50 ) ; v_Lcd12864SendCmd_f( 0x0c ) ;              //开显示 } void v_Lcd12864SetAddress_f( unsigned char x, y )  //地址转换 { unsigned char byAddress ; switch( y ) { case 0 :    byAddress = 0x80 + x ; break; case 1 :    byAddress = 0x90 + x ; break ; case 2 :    byAddress = 0x88 + x ; break ; case 3 :    byAddress = 0x98 + x ; break ; default : break ; } v_Lcd12864SendCmd_f( byAddress ) ; } void v_Lcd12864PutString_f( unsigned char x, unsigned char y, unsigned char *pData ) { v_Lcd12864SetAddress_f( x, y ) ; while( *pData != '\0' ) { v_Lcd12864SendData_f( *pData++ ) ; } } void v_Lcd12864Putshuzi_f1( unsigned char x, unsigned char y, unsigned long Data ) { uchar i; d[0]=Data%100000/10000+0x30; d[1]=Data%10000/1000+0x30; d[2]=Data%1000/100+0x30; d[3]=Data%100/10+0x30; d[4]=Data%10+0x30; v_Lcd12864SetAddress_f( x, y ); for(i=0;i<5;i++) { v_Lcd12864SendData_f(d[i]); } } void v_Lcd12864Putshuzi_f2( unsigned char m, unsigned char n, unsigned long Data1 ) { uchar i; d[0]=Data1%1000/100+0x30; d[1]=Data1%100/10+0x30; d[2]=Data1%10+0x30; v_Lcd12864SetAddress_f( m, n ); for(i=0;i<3;i++) { v_Lcd12864SendData_f(d[i]); } 频率计算相位差延时函数 if(flag==3) { plv=(float)s1/10; sj=1/(plv+0.00001); if(plv>1800&&plv<=2000) bb=(uint)(sj*28000); else if(plv>1500&&plv<=1800) bb=(uint)(sj*28000); else if(plv>1200&&plv<=1500)    bb=(uint)(sj*28000); else if(plv>1000&&plv<=1200) bb=(uint)(sj*28000); else if(plv>800&&plv<=1000) bb=(uint)(sj*26000); else if(plv>400&&plv<=800) bb=(uint)(sj*28000); else if(plv>200&&plv<=400) bb=(uint)(sj*29000); else if(plv>=120&&plv<=200) bb=(uint)(450*sj*40000);         else if (plv<=120) bb=(uint)(sj*1450); aa=(uint)((360/bb+0.0001)*s2); cc=bb-aa; } 正弦波产生子函数 if(keyscan()==16&&flag==3)                { EA=1; EX1=1; IT1=0; num=0; flag1=1; if    (plv>=120) { while(flag1) { zx1=1; delay(aa); zx2=1; delay(cc); zx1=0; delay(aa); zx2=0; delay(cc); } v_Lcd12864SendCmd_f( 0x93) ; v_Lcd12864Putshuzi_f1( 3, 1,0 ); v_Lcd12864SendCmd_f( 0x8c) ; v_Lcd12864Putshuzi_f2( 4, 2,0 ); }  else if(plv<120) { while(flag1) { zx1=1; delayms(aa); zx2=1; delayms(cc); zx1=0; delayms(aa); zx2=0; delayms(cc); } v_Lcd12864SendCmd_f( 0x93) ; v_Lcd12864Putshuzi_f1( 3, 1,0 ); v_Lcd12864SendCmd_f( 0x8c) ; v_Lcd12864Putshuzi_f2( 4, 2,0 ); } flag=1; } 矩形波可调占空比产生函数 if(keyscan()==16&&flag==4)             { EA=1; EX1=1; IT1=0; num=0; flag1=1; while(flag1) { zx1=1; delay(s2); zx1=0; delay(n); } v_Lcd12864SendCmd_f( 0x8c) ; v_Lcd12864Putshuzi_f2( 4, 2,0 );  flag=2; } } } 步进函数子函数 /*void rgaj() {        key=keyscan(); num=0; if(key==14&&flag==1) { if(s1==20000) s1=20; else s1=s1+10;    } if(key==15&&flag==1) { if(s1==20) s1=20000; else s1=s1-10; } if(key!=0) { key=0; v_Lcd12864SendCmd_f( 0x93) ; v_Lcd12864Putshuzi_f1( 3, 1,s1 ); } } void rgaj3() {        key=keyscan(); num=0; if(key==14&&flag==2) { if(s2==100) s2=0; else s2=s1+1;    } if(key==15&&flag==2) { if(s2==0) s2=100; else s2=s2-1; } if(key!=0) { key=0; v_Lcd12864SendCmd_f( 0x8c) ; v_Lcd12864Putshuzi_f2( 4, 2,s2 ); } } void rgaj2() {        key=keyscan(); num=0; if(key==3&&flag==1) { if(s2==360) s2=0; else s2=s1+1;    } if(key==4&&flag==1) { if(s2==0) s2=360; else s2=s2-1; } if(key!=0) { key=0; v_Lcd12864SendCmd_f( 0x8c) ; v_Lcd12864Putshuzi_f2( 4, 2,s2 ); }      }    程控滤波子函数 void cklb()    {    if(s1>=0&&s1<44)        P1=0x00;    else if(s1>=44&&s1<100)        P1=0x01;    else if(s1>=100&&s1<300)        P1=0x03;    else if(s1>=300&&s1<799)        P1=0x08;    else if(s1>=799&&s1<2183)        P1=0x22;    else if(s1>=2183&&s1<4474)        P1=0x2d;    else if(s1>=4474&&s1<9943)        P1=0x3c;    else if(s1>=9943&&s1<17897)        P1=0x3e;    else if(s1>=17897&&s1<=22372)        P1=0x3f;} 总体程序主函数 void main( void ) {      EA=1; EX1=1; IT1=0; //    wela=0; //    dula=0;    v_Lcd12864Init_f() ;  v_Lcd12864PutString_f( 3,0, "纠结组") ; v_Lcd12864PutString_f( 0,1, " welcome to you") ; v_Lcd12864PutString_f( 1,2, "请输入密码") ; v_Lcd12864PutString_f( 2,3, "……") ; while(1) { if(mm()==123456) { v_Lcd12864PutString_f( 2,3, "******") ; delay(1000); break; } else { v_Lcd12864SendCmd_f( 0x01 ) ; v_Lcd12864PutString_f( 1,1, "pass is wrong!") ; v_Lcd12864PutString_f( 1,2, "请重新输入") ; } } //    TR0=1; v_Lcd12864SendCmd_f( 0x01 ) ;//清屏 v_Lcd12864PutString_f( 4,0, "IS OK") ; v_Lcd12864PutString_f( 1,1, "进入中……") ; delay(1000); v_Lcd12864SendCmd_f( 0x01 ) ;//清屏 v_Lcd12864PutString_f( 0,0, " welcome to you") ; v_Lcd12864PutString_f( 0,1, "sinbo 输入1") ; v_Lcd12864PutString_f( 0,2, "juxbo 输入2") ; v_Lcd12864PutString_f( 2,3, "……") ; while(1) {    if(keyscan()==2) { num=0; flag=1; v_Lcd12864SendCmd_f( 0x01 ); v_Lcd12864PutString_f( 0,0, " welcome to you"); v_Lcd12864PutString_f( 0,1, "频率: _____HZ"); v_Lcd12864PutString_f( 0,2, "相位差: ___^"); v_Lcd12864PutString_f( 0,3, "有效值: ____V"); } else if(keyscan()==3) { num=0; flag=2; v_Lcd12864SendCmd_f( 0x01 ) ; v_Lcd12864PutString_f( 0,0, " welcome to you") ; v_Lcd12864PutString_f( 0,1, "波形:juxbo") ; v_Lcd12864PutString_f( 0,2, "占空比: ___%") ; } else if(keyscan()==12&&flag==0)  //返回模式选着 { num=0; v_Lcd12864SendCmd_f( 0x01 ) ; v_Lcd12864PutString_f( 0,0, " welcome to you") ; v_Lcd12864PutString_f( 0,1, "sinbo 输入1") ; v_Lcd12864PutString_f( 0,2, "juxbo 输入2") ; v_Lcd12864PutString_f( 2,3, "……") ; } /*rgaj();//步进加减 rgaj2(); rgaj3(); */ if(keyscan()==11&&flag==1)    //相位和频率输入函数 {    s1=0; s2=0; num=0; shuru(); shuru2(); flag=3; } else if(keyscan()==11&&flag==2)    //占空比输入 { s2=0; num=0; shuru2(); flag=4; n=100-s2; } 五、系统测试 5.1 测试仪器 序号 仪器名称 仪器规格 数量 备注 1 数字示波器 TDS2012 C044955 1 泰克科技(中国)有限公司 2 万用表 DT9205A+ 1 山创/H.NEYTEK           5.2 系统测试 测试说明:按键12:清零; 按键16:确认; 按键1到10:0到9输入; 按键11:输入。 系统测试主要用示波器测试预置频率,接10KΩ负载电压峰峰值的准确性与稳定性。正弦波测量结果如表5.2.1所示。 表5.2.1 正弦波有关参数测量结果 项目 频率预置 频率步进 波形峰峰值(10k电阻) 设置频率 输出频率 误差/% 步进 步进频率值 1 100Hz 100.02Hz 0.2 10Hz 100.01Hz 20.02V  2 1KHz 1000.1Hz 0.1 10Hz 1010.1Hz 20.01V 3 15KHz 15000.2Hz 0.2 10Hz 15010.1Hz 20.02V               用示波器测试结果如表5.2.2所示。 表5.2.2 方波占空比测量结果 预置 0/360 60/360 120/360 180/360 240/360 300/360 显示 1 1/4 3/8 1/2 5/8 3/4               六、总结 本课题花费了八天时间,从总体方案选择上,从追求更多的锻炼的角度出发,我们选择了纯单片机配外部电路的总体实现方案,由于本身方案的缺陷性,导致了高频路波段的高误差,同样在实现10HZ步进时,同样存在着很大的误差,在外部电路中,由于分属模块较多,在电路仿真和制作及各种芯片的选择与应用上,我们得到了很大的锻炼。由最初的脉冲波到倍频放大产生高频路的脉冲波,到后面的滤波电路产生对应的正弦波经过位移和放大后产生最终输出波形。同样该过程由于经过的外围电路较多,容易产生失真与误差。本课题最终虽然没有实现高精度,但在制作过程中我们得到了很大的锻炼,感谢老师这一个多星期的指导与支持! 七、参考文献 【1】康华光.  电子技术基础 数字部分. 高等教育出版社,2009 【2】 魏伟 胡玮 王永清 《51单片机C语言开发与应用技术案例详解》  北京 化工工业出版社 2010版 【3】康华光. 电子技术基础(模拟部分)(第五版). 高等教育出版社,2009 【4】黄智伟.全国大学生电子设计竞赛系统设计.北京航空航天大学出版社,2006 【5】普艾克  《数字信号处理(第四版)》  电子工业出版社 2007版
本文档为【冯博组 低频三相函数信号发生器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_668482
暂无简介~
格式:doc
大小:89KB
软件:Word
页数:0
分类:互联网
上传时间:2019-01-18
浏览量:19