方波,正弦波,三角波信号是如何产生的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了方波,正弦波,三角波信号是如何产生的相关的知识,希望对你有一定的参考价值。

参考技术A 信号发生器一般区分为函数信号发生器及任意波形发生器,而函数波形发生器在设计上又区分出模拟及数字合成式。众所周知,数字合成式函数信号源无论就频率、幅度乃至信号的信噪比(S/N)均优于模拟,其锁相环(PLL)的设计让输出信号不仅是频率精准,而且相位抖动(phaseJitter)及频率漂移均能达到相当稳定的状态,但毕竟是数字式信号源,数字电路与模拟电路之间的干扰,始终难以有效克服,也造成在小信号的输出上不如模拟式的函数信号发生器。
谈及模拟式函数信号源,结构图如下:
这是通用模拟式函数信号发生器的结构,是以三角波产生电路为基础经二极管所构成的正弦波整型电路产生正弦波,同时经由比较器的比较产生方波。
而三角波是如何产生的,公式如下:
换句话说,如果以恒流源对电容充电,即可产生正斜率的斜波。同理,右以恒流源将储存在电容上的电荷放电即产生负斜率的斜波,电路结构如下:
当I1=I2时,即可产生对称的三角波,如果I1>>I2,此时即产生负斜率的锯齿波,同理I1<<I2即产生正斜率锯齿波。
再如图二所示,开关SW1的选择即可让充电速度呈倍数改变,也就是改变信号的频率,这也就是信号源面板上频率档的选择开关。同样的同步地改变I1及I2,也可以改变频率,这也就是信号源上调整频率的电位器,只不过需要简单地将原本是电压信号转成电流而已。
而在占空比调整上的设计有下列两种思路:
1、频率(周期)不变,脉宽改变,其方法如下:
改变电平的幅度,亦即改变方波产生电路比较器的参考幅度,即可达到改变脉宽而频率不变的特性,但其最主要的缺点是占空比一般无法调到20%以下,导致在采样电路实验时,对瞬时信号所采集出来的信号有所变动,如果要将此信号用来作模数(A/D)转换,那么得到的数字信号就发生变动而无所适从。但不容否认的在使用上比较好调。
2、占空比变,频率跟着改变,其方法如下:
将方波产生电路比较器的参考幅度予以固定(正、负可利用电路予以切换),改变充放电斜率,即可达成。
这种方式的设计一般使用者的反应是“难调”,这是大缺点,但它可以产生10%以下的占空比却是在采样时的必备条件。
以上的两种占空比调整电路设计思路,各有优缺点,当然连带的也影响到是否能产生“像样的”锯齿波。
接下来PA(功率放大器)的设计。首先是利用运算放大器(OP),再利用推拉式(push-pull)放大器(注意交越失真Cross-distortion的预防)将信号送到衰减网路,这部分牵涉到信号源输出信号的指标,包含信噪比、方波上升时间及信号源的频率响应,好的信号源当然是正弦波信噪比高、方波上升时间快、三角波线性度要好、同时伏频特性也要好,(也即频率上升,信号不能衰减或不能减太大),这部分电路较为复杂,尤其在高频时除利用电容作频率补偿外,也牵涉到PC板的布线方式,一不小心,极易引起振荡,想设计这部分电路,除原有的模拟理论基础外尚需具备实际的经验,“TryError”的耐心是不可缺少的。
PA信号出来后,经过π型的电阻式衰减网路,分别衰减10倍(20dB)或100倍(40dB),此时一部基本的函数波形发生器即已完成。(注意:选用π型衰减网络而不是分压电路是要让输出阻抗保持一定)。
一台功能较强的函数波形发生器,还有扫频、VCG、TTL、TRIG、GATE及频率计等功能,其设计方式在此也顺便一提:
1.扫频:一般分成线性(Lin)及对数(Log)扫频;
2.VCG:即一般的FM,输入一音频信号,即可与信号源本身的信号产生频率调制;
上述两项设计方式,第1项要先产生锯齿波及对数波信号,并与第2项的输入信号经过多路器(Multiplexer)选择,然后再经过电压对电流转换电路,同步地去加到图二中的I1、I2上;
3.TTL同步输出:将方波经三极管电路转成0(Low)、5V(High)的TTL信号即可。
但注意这样的TTL信号须再经过缓冲门(buffer)后才能输出,以增加扇出数(FanOut),通常有时还并联几个buffer。而TTLINV则只要加个NOTGate即可;
4.TRIG功能:类似OneShot功能,输入一个TTL信号,则可让信号源产生一个周期的信号输出,设计方式是在没信号输入时,将图二的SWI接地即可;
5.Gate功能:即输入一个TTL信号,让信号源在输入为Hi时,产生波形输出,直到输入为LOW时,图二SWI接地而关掉信号源输出;
6.频率计:除市场上简易的刻度盘显示之外,无论是LED数码管或LCD液晶显示频率,其与频率计电路是重叠的,方块图如下:
2.任意波形发生器,仿真实验的最佳仪器
任意波形发生器是信号源的一种,它具有信号源所有的特点。我们传统都认为信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。可见信号源在电子实验和测试处理中,并不测量任何参数而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。
信号源有很多种,包括正弦波信号源,函数发生器、脉冲发生器、扫描发生器、任意波形发生器、合成信号源等。一般来讲任意波形发生器,是一种特殊的信号源,综合具有其它信号源波形生成能力,因而适合各种仿真实验的需要。
一、函数功能,仿真基础实验室设计人员的环境
函数信号源是使用最广的通用信号源,它能提供正弦波、锯齿波、方波、脉冲串等波形,有的还同时具有调制和扫描能力,众所周知,在我们的基础实验中(如大学电子实验室、科研机构研究实验室、工厂开发实验室等),我们设计了一种电路,需要验证其可靠性与稳定性,就需要给它施加理想中的波形以辨别真伪。如我们可使用信号源的DC补偿功能对固态电路控制DC偏压电平;我们可对一个怀疑有故障的数字电路,利用信号源的方波输出作为数字电路的时钟,同时使用方波加DC补偿产生有效的逻辑电平模拟输出,观察该电路的运行状况,而证实故障缺陷的地方。总之利用任意波形发生器这方面的基础功能,能仿真您基础实验室所必须的信号。
二、任意波形,仿真模拟更复杂的信号要求
众所周知,在我们实际的电子环境所设计的电路在运行中,由于各种干扰和响应的存在,实际电路往往存在各种信号缺陷和瞬变信号,例如过脉冲、尖峰、阻尼瞬变、频率突变等(见图1,图2),这些情况的发生,如在设计之初没有考虑进去,有的将会产生灾难性后果。例如图1中的a处过尖峰脉冲,如果给一个抗冲能力差的电路,将可能会导致整个设备“烧坏”。确认电路对这样一个状况敏感的程度,我们可以避免不必要的损失,该方面的要求在航天、军事、铁路和一些情况比较复杂的重要领域尤其重要。
由于任意波形发生器特殊的功能,为了增强任意波形生成能力,它往往依赖计算机通讯输出波形数据。在计算机传输中,通过专用的波形编辑软件生成波形,有利于扩充仪器的能力,更进一步仿真模拟实验。同时由于编辑一个任意波形有时需要花费大量的时间和精力,并且每次编辑波形可能有所差异这样有的任意波形发生器,内置一定数量的非易失性存储器,随机存取编辑波形,有利于参考对比;或通过随机接口通讯传输到计算机作更进一步分析与处理。
三、下载传输,更进一步实时仿真
在一些军事、航空、交通制造业等领域中,有些电路运行环境很难估计,在实验设计完成之后,在现实环境还需要作更进一步实验,有些实验的成本很高或者风险性很大(如火车高速实验时铁轨变换情况、飞机试机时螺旋桨的运行情况等),人们不可能长期作实验判断所设计产品(例如高速火车、飞机)的可行性和稳定性等;我们就可利用有些任意波形发生器波形下载功能,在作一些麻烦费用高或风险性大的实验时,通过数字示波器等仪器把波形实时记录下来,然后通过计算机接口传输到信号源,直接下载到设计电路,更进一步实验验证。
综上所述,任意波形发生器是电子工程师信号仿真实验的最佳工具。我们选购时除关心传统信号源的缺陷——频率精度、频率稳定度、幅度精度、信号失真度外,更应关心它编辑与波形生存和下载能力,同时也要注意它的输出通道数,以便同步比较两信号的相移特性,更进一步达到仿真实验状态。
图1有尖脉冲的数字信号
图2有频率突变的方波
参考技术B 回答

麦科信示波器演示方波、正弦波、锯齿波、三角波 您搜索一下麦科信示波器演示方波

因为我这里发不了视频

提问

只要工作原理就行

回答

由于电子在磁场里受到洛伦兹力额作用发生偏转,在横纵两个方向上加上磁场,电子就会偏转,由于运动时间的不同,轨迹也不尽相同

提问

要的是机器工作原理啊

回答

3.1.6参数设计(1)输出幅度由图可知,稳压管两端电压为UZ,积分电路的输出电压Uo往正方向线性增长,此时U+也随着增长,当增长至U+=U-=0时,滞回比较器的输出电压U O1发生跳变,而发生跳变时的U O值是使三角波的最大值U om。将条件U O1=-U Z,U+=0和U o=U om代入下式可得:0=R1R1+R2(-U z)+R2R1+R2U om可解的三角波的输出幅度为:U om =R1R2U z(2)占空比当忽略二极管的导通电阻时经分析可知:T 1=(R 6+R 10)C ㏑(1+2R1R2 )T 2=(R 6+R 9)C ㏑(1+2R1R2)输出波形的震荡周期为:T=T 1+T 2=(2R 6+R 8)C ㏑(1+2R1R2 )占空比为:D=T1T =R6+R102R6+R8

参考技术C 电磁 参考技术D 制造的! 第5个回答  2006-05-18 一楼真是愚公移山啊!!!!!!!

信号发生器的设计(期末课程设计)

题目:信号发生器的设计

设计一个信号源,可以输出三种波形(正弦波,方波,三角波),通过按键可以改变输出波形,也可以改变波形的频率,并且频率可以通过数码管显示出来(频率显示到个位,大概正确就好,不用太准确)。

1、实现正弦波的输出,并且能够改变频率,5

(1)实现正弦波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

2、实现方波的输出,并且能够改变频率,5

(1)实现方波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

3、实现三角波的输出,并且能够改变频率,5

(1)实现三角波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

提问环节:教师提问有关信号源的3个问题,根据学生回答情况给分,每个问题5,满分15

使用的单片机:

技术图片

注意事项:

1.频率只显示到个位,所以在周期 t上做了一些限制(见代码注释)。
2.按按钮时,按下要停一段时间(等待一个周期走完),按钮才会起作用。

参考代码:

说明:次程序用单片机上的LED灯来模拟波的输出。

     K1:切换输出波
     K2:频率降低
     K3:频率提高
     默认频率:方波f1=5, 三角波f2=1, sin正弦波f3=1

  1 //hill20200709
  2 #include<reg52.h> //头文件
  3 #include<intrins.h> //左右移函数头文件
  4 #define uchar unsigned char 
  5 #define uint unsigned int
  6 sbit K1=P3^4; //按键声明
  7 sbit K2=P3^5; 
  8 sbit K3=P3^6;  
  9 
 10 int t1=100; //单位为ms
 11 int t2=2;
 12 int t3=2;
 13 
 14 uchar code table[]={
 15 0x3f,0x06,0x5b,0x4f,
 16 0x66,0x6d,0x7d,0x07,
 17 0x7f,0x6f,0x77,0x7c,
 18 0x39,0x5e,0x79,0x71};
 19 
 20 sbit DU =P2^6;
 21 sbit WE =P2^7; 
 22 
 23 
 24 uchar code tosin[256]=
 25 {0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,
 26     0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,
 27     0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd ,
 28     0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,
 29     0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,
 30     0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,
 31     0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,
 32     0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00 ,
 33     0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,
 34     0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e , 
 35   0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 }; 
 36 
 37 char n;
 38 
 39 void delayms(uint ms)    
 40 {
 41     uint k,l;
 42     for(k=ms;k;k--)    
 43         for(l=110;l;l--);    //约1ms
 44 }
 45 
 46 void dispFre(uint flag){ //显示频率
 47 
 48     int f,num;
 49 
 50     if(flag==0){
 51         f=1000/((2*t1)); //自动类型转化为整形
 52     }
 53     else if(flag==1){
 54         f=1000/(400*t2);
 55     }
 56     else{
 57         f=1000/(256*t3);
 58     }
 59 
 60     num=f%10; //只要个位
 61 
 62     DU=1;
 63     P0=table[num]; 
 64     DU=0;
 65     WE=1;      
 66     P0=0xdf;      //1101 1111
 67     WE=0;
 68     delayms(2);
 69 }
 70 
 71 
 72 void square() //方波
 73 {
 74         P1=0; //全灭
 75         delayms(t1);
 76 
 77         P1=255; //全亮
 78         delayms(t1);
 79 }
 80 
 81 void triangle() //三角波
 82 {
 83     int a,x,y;
 84     for(x=200;x;x--)
 85     {
 86         a++;
 87         delayms(t2);
 88         P1=a;
 89     }
 90     for(y=200;y;y--)
 91     {        
 92         a--;
 93         delayms(t2);
 94         P1=a;
 95     }
 96 }
 97 
 98 void sin() //正弦波
 99 {
100     int i;
101     for(i=0;i<=255;i++)
102     {
103         P1=tosin[i];
104         delayms(t3);
105     }
106 }
107 
108 void key_switch() //定义按键函数
109 {
110     if(K1==0) //定义负责K1的函数
111     {
112         delayms(10);
113         if(K1==0){
114             n++;
115             if(n==3){
116                 n=0;
117             }
118             while(!K1); //K1按下去了就一直运行空循环
119         }
120     }    
121 }
122 void key_plus(){ //定义负责K2的函数
123     if(K2==0){
124         delayms(10);
125         if(t1<520){      //t1=500时,f=1; 等于520时f=0
126             t1=t1+20;
127         }
128         else{     //f减到0时,自动复位到初始的5
129             t1=100;
130         }
131         if(t2<3){ //t2加到3时 f=0
132             t2++;
133         }
134         else{
135             t2=2;
136         }
137         if(t3<4){ //t3加到4时 f=0
138             t3++;
139         }
140         else{
141             t3=2;
142         }
143         while(!K2);
144     }
145 }
146 void key_minus(){ //定义负责K3的函数 减t 加f
147     if(K3==0){ //时间出现负数的时候程序会卡死
148         delayms(10);
149         if(t1>60){      //t1=60时,f=8; 等于40时f=12
150             t1=t1-20;
151         }
152         else{     //f加到8时,自动复位到5
153             t1=100;
154         }
155         if(t2>0){ //t2
156             t2--;
157         }
158         else{
159             t2=2;
160         }
161         if(t3>0){ //t3
162             t3--;
163         }
164         else{
165             t3=2;
166         }
167         while(!K3);
168     }
169         
170 }
171 
172 void main()
173 {
174 
175     while(1)
176     {
177         key_switch();
178         key_plus();
179         key_minus();
180         dispFre(n);
181         if(n==0){
182             square(); //方波
183             
184         }
185         else if(n==1){
186             triangle(); //三角波
187             
188         }
189         else{
190             sin(); //正弦波
191             
192         }
193         
194     }
195 }

 本人单片机初学者,多多关照!文章内容肯定有不当之处,敬请指出改正。

以上是关于方波,正弦波,三角波信号是如何产生的的主要内容,如果未能解决你的问题,请参考以下文章

急!!!用运算放大器设计一个方波、正弦波、三角波的信号发生器

如何将方波、三角波发生器电路进行改进,使之产生占空比可调的矩形波和锯齿波信号

如何讲正弦波转化为方波?频率不变。

急求正弦波转为方波的方法(利用单片机测1Hz~3MHz的正弦波)

利用运放怎样实现由方波变成正弦波

正弦波转变为方波?