找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11593|回复: 10
打印 上一主题 下一主题
收起左侧

放大器非线性失真研究装置设计资料

  [复制链接]
跳转到指定楼层
楼主
这个是我电赛的时候做的一个小玩意,希望对大家有所帮助。第一次发,不知道为啥电路图显示不出来?大家可以下载下面的文档看一下


本设计为放大器非线性失真研究装置,外接信号源输出频率1kHz,峰峰值20mV正弦波作为晶体管放大器的输入电压,能够输出无明显失真和四种失真的波形,且输出波形的峰峰值不低于2V.
本设计由晶体管放大模块、单片机控制模块两个模块组成。晶体管放大电路采用单级共射放大电路进行放大,来实现放大的要求;单片机控制部分采用51单片机进行控制和采集测量,然后显示总谐波失真(THD),达到无明显失真和四种失真波形和单片机自动控制和测量显示。
本设计从理论上进行了详细的方案论证,设计了合理的实现框图,并给出了具体的电路设计及相关程序设计方法。经测试,本设计实现了要求的电压放大倍数、无明显失真波形和四种失真波形,实现单片机控制的THD自动测量。

一、     系统方案

1.1设计要求
要求设计并制作一个放大器非线性失真研究装置,能够示波器显示无明显失真波形和四种失真信号的波形,并且单片机能够自动测量总谐波失真。研究装置如图1。
图1 放大器非线性失真研究装置组成框图


放大器能够输出的四种失真信号分别是顶部失真、底部失真、双向失真和交越失真。要求输入接信号频率为1kHz,峰峰值为20mV,输出信号电压峰峰值至少为2V。各种波形要求如图二。

图2 无明显失真及四种具有非线性失真的uo 示意波形
1.2方案设计
晶体管放大电路有共射放大电路和共基放大电路两种设计方法,共射放大电路和共基放大电路都选择采用一级放大的方案来实现要求的放大倍数,由于本设计要求的输入低频小信号,幅值小且频率较低,因此可以采用比较符合要求的共射放大电路,共射放大电路适用于低频信号,且容易实现较高的放大倍数,失真较小,符合题目要求。
1)  方案一:共射放大电路
       共射放大电路,输入回路和输出回路以晶体三极管发射极为公共端,输入信号通过电容进入晶体管的基极,引起基极电流的变化,从而使集电极的电流发生变化,Uce的变化量经过耦合电容送到输出端,当电路选择的参数合适时,可得到输入信号的电压放大,从而得到放大的目的。选择共射放大电路因为它电路结构简单,且能轻易达到较高的电压放大倍数,输入和输出电阻适中,不会太大或者太小,设置合适的静态工作点,可以输出无明显失真的输出信号,而四种失真波形可以通过调整静态工作点来实现。具有较大的电压增益和适合低频小信号的特点。
2)  方案二:共基放大电路
采用共基放大电路,输入信号从晶体管的发射极和基极两端输入,再由晶体管的集电极和基极输出,基极共地所以称为共基放大电路。共基放大电路具有高电压增益的特点,符合题目要求的放大增益,另外共基放大电路输入阻抗很小,会使输入信号严重衰减,题目要求的输入小信号,它不适合做电压放大器,这样效果会很差。它的输出电阻也很大,在输出会有一个很低的分压。另外它适用于高频电路,而题目输入的是低频信号,所以共基放大电路不太适合这个题目,还是共射放大电路更好。

二、    理论分析与计算

2.1理论分析
①.截止失真原理分析
由二极管的伏安特性曲线可知,只有加到发射结上的电压高子(开启电压:硅管为0.7V;锗管为0.2V)时,发射结才有电流通过,而当发射结被加反向电压时(只要不超过其反向击穿电压),只有很小的反向电流通过,我们认为这种情况下三极管处于截止状态,而在实际应用中,我们会遇到各种各样的信号需要放大,有较强的信号,有较弱的信号,也有反向的信号,根据PN节的特性,当加到发射结上的信号为较弱的信号(小于开启电压),或者是反向信号时,发射结是截止的,三板管不能起到放大的作用,输出的信号,也会出现严重的失真,此种失真称为截止失真。如图(三极管的输出特性曲线)所示,此时,晶体三极管工作在三极管输出特性曲线的做止区,呈现截止失真现象。

②.饱和失真原理分析

我们知道,当三极管的发射结被加正向电压且(开启电压)时,三极管的发射结有电流通过。发射区通过扩散运动向基区发射电子,形成发射极电流;其中一小部分与基区的空穴复合,形成基极电流,又由于集电极加反向电压,所以从发射极出来的大部分电子在集电极电压作用下通过漂移运动到达集电极,形成集电极电流。当集电极上加不同电压时,有以下三种情况:

1).当集电结加反向电压时,集电结反偏。此时,集电极有能力收集从发射极发射出的电子,三极管处于稳定的放大状态。此时,晶体三极管工作在输出特性曲线的放大区,能够正常放大信号。

2).当集电极加正向电压,集电极正偏。此时,发射极虽发射电子,但由于集电极收集电子能力不足,即使基极电流增大,发射极发射电子电流增大,集电极电流也不会增大,这种情况称为三极管的饱和导通。饱和导通时,三极管对信号也失去了放大作用,此时三极管的失真称为饱和失真。可见,饱和失真时晶体三极管工作在输出特性曲线的饱和区,输出信号呈现饱和失真。

3).当集电结所加电压为零,即=0时,三极管处于饱和放大的临界状态。
③.双向失真原理分析

由以上分析可知,三极管对信号的放大倍数是有限的。调整电路使三极管工作在合适的静态工作点,即是放大信号在三极管输出特性曲线的放大区。选取合适的输入信号可以得到正常的放大波形,当增加输入信号的幅度时,放大信号的幅度也成倍增加,此时放大信号的幅度过大,导致放大信号的峰部超出三极管输出特性曲线的放大区,一部分在饱和区,一部分在截止区,于是出现了双向失真。换-种说法,也可以解释为放大信号同时出现了饱和失真和截止失真。
双向失真是指即在三极管输出特性曲线的饱和区失真又在截止区失真,三极管有饱和状态又有 截止状态,向上达到饱和状态,向下到达截止状态,出现这种非线性失真不是由于电路中某个电路元件选择的不合适,而是由于信号源输入的信号过大导致三极管在放大时出现了双向失真。

④.交越失真原理分析

失真的机理:
交越失真是乙类推挽放大器所特有的失真,在推挽放大器中,由2只品体管分别在输入信号的正、负半周导通,对正、负半周信号进行放大,而乙类放大器的特点是不给晶体管建立静态偏置,使其导通的时间恰好为信号的半个周期,但是,由于晶体管的输入特性曲线在VBE较小时是弯曲的,晶体管基本上不导通,即存在死区电压Vr、当输入信号电压小于死区电压时,2只品体管基本上都不导通.这样当输入信号为正弦波时,输出信号将不再是正弦波,即产生了失真,因此在正、负半周交替过零处会出现一些失真,这个失真称为交越失真。


2.2理论计算
我们采用射极偏置电路
增益为:

晶体管放大电路图
交越失真电路图
Q点过低会出现截止失真
Q点过高会出现饱和失真

对于射级偏置电路,当静态工作点太低时,导致输出波形失真,则为截止失真; 当静态工作点太高时,导致输出波形失真,则为饱和失真:当输入信号太大时,可能使被放大的信号同时在饱和区与截止区,这就产生了双向失真。由于晶体管的门限电压不为零,比如一般的硅三极管,NPN型在0.7V以上才导通,这样在0-0.7就存在死区,不能完全模拟出输入信号波形,PNP型小于-0.7V才导通,比如当输入的交流的正弦波时,在-0.7-0.7之间两个管子都不能导通,输出波形对输入波形来说这就存在失真,即为交越失真。


三、    电路与程序设计

I.  系统组成
本数字信号分析仪共分为两部分:分别为晶体管放大电路和单片机控制模块,通过示波器来观察失真和无失真波形,单片机显示总谐波失真近似值。

II. 原理框图与各部分的电路图
总体框图:
晶体管放大电路:
交越失真电路:
单片机原理图:

四、    测试方案与测试结果
硬件测试:
通过示波器观察失真和不失真的各种波形,结果如下图。
1.无明显失真波形
2.底部失真波形
3.顶部失真波形
4.双向失真波形
5.交越失真波形

软件仿真测试
1.    无失真波形
2.    底部失真波形
3.    顶部失真波形
4.    双向失真波形
5.    交越失真波形


附件
单片机源程序
1.  #include<reg52.h>
2.  #include"Delay.h"
3.  #include<KEY_FUNCTION_DEFINE.H>
4.  #include<measure_define.h>
5.  #include"AD.h"
6.  #include"LCD.h"
7.  extern uchar disp_value[5];
8.  extern uchar key_number;
9.  extern ucharcode  DC_disp3[];
10. uchar code AC_disp[]="AC VOLMeasure ";
11. uchar codeAC_disp2[]="value=        ";
12. void AC_VOL_measure(void)                              //交流电压测量函数
13. {
14.                uchar  ADTemp,num;
15.                float ValueTemp;
16.                WriteCom(0x01);                                                     //清屏
17.              WriteCom(0x80);                                                 //显示
18.                for(num=0;AC_disp[num]!='\0';num++)
19.                {
20.                       WriteData(AC_disp[num]);                        
21.                       Delay(10);        
22.                }
23.                WriteCom(0x80+0x40);                                 //显示
24.                for(num=0;AC_disp2[num]!='\0';num++)
25.                {
26.                       WriteData(AC_disp2[num]);                        
27.                       Delay(10);        
28.                }               
29.                        
30.                do{                                                                 
31.                            s1=0;                                    //选择200v最高档
32.                           s2=0;
33.                           s3=1;
34.                               Delay(50);
35.                ADTemp=ADSample(AC_VOL_adder);               
36.                if(ADTemp>253)                                   //当超过量程时,显示为1
37.                {        WriteCom(0x80+0x46);                              //显示
38.                       for(num=0;DC_disp3[num]!='\0';num++)
39.                        {
40.                               WriteData(DC_disp3[num]);
41.                                       Delay(10);
42.                        }
43.                }         
44.                else               
45.                        {
46.                       ValueTemp=ValueConver(ADTemp);       //测量的电压值转换         
47.                   ValueTemp=ValueTemp*100;                //电压值乘以档位        
48.                               FloatToChar(ValueTemp);             //电压值转换为字符串
49.                          WriteCom(0x80+0x46);              //第二行显示电压值         
50.                               for(num=0;num<5;num++)
51.                               {
52.                                      WriteData(disp_value[num]);                  
53.                                       Delay(10);      
54.                               }
55.                        WriteData('V');
56.                       WriteData(' ');                              
57.                        
58.                        }
59.                                                                                
60.               }  while((ADTemp>20)&&(key_number==2));
61.  
62.                 do
63.                {                                                                 
64.                           s1=0;                                          //选择20v档
65.                           s2=1;
66.                           s3=0;
67.                               Delay(50);                                             
68.                ADTemp=ADSample(AC_VOL_adder);            //起动AD进行采样
69.                ValueTemp=ValueConver(ADTemp);                //AD进行转换
70.                ValueTemp=ValueTemp*10;                        //电压乘以档位         
71.                FloatToChar(ValueTemp);                         //电压转换为字符串
72.             WriteCom(0x80+0x46);                               //第二行显示所测电压值
73.                for(num=0;num<5;num++)
74.                {
75.                       WriteData(disp_value[num]);
76.                                Delay(10);
77.                }
78.                WriteData('V');
79.                WriteData(' ');                                       
80.            } while((ADTemp>24)&&(ADTemp<253)&&(key_number==2));      
81. do
82.           {
83.                           s1=1;                                           //选择2V档
84.                           s2=0;
85.                           s3=0;
86.                               Delay(50);
87.                ADTemp=ADSample(AC_VOL_adder);               //起动AD进行采样
88.                ValueTemp=ValueConver(ADTemp);                //电压值转换为字符串
89.        FloatToChar(ValueTemp);
90.           WriteCom(0x80+0x46);
91.                for(num=0;num<5;num++)
92.                {
93.                       WriteData(disp_value[num]);
94.                        Delay(15);      
95.                }
96.                WriteData('V');      
97.                WriteData(' ');
98.         } while((ADTemp<253)&&(key_number==2));
99.  
100.   }
总电路图

pdf格式文档51黑下载地址:
QS002-放大器非线性失真的研究装置(E题).pdf (1.87 MB, 下载次数: 231)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶4 踩
回复

使用道具 举报

沙发
ID:830688 发表于 2021-1-12 09:38 | 只看该作者
千言万语两个字————牛逼
回复

使用道具 举报

板凳
ID:820972 发表于 2021-3-20 20:26 | 只看该作者
吐了,搞了半天,没有头文件添加
回复

使用道具 举报

地板
ID:719764 发表于 2021-3-22 21:24 | 只看该作者
千言万语两个字————牛逼
回复

使用道具 举报

5#
ID:893320 发表于 2021-4-7 17:31 | 只看该作者
有没有实物展示
回复

使用道具 举报

6#
ID:925048 发表于 2021-5-21 17:23 | 只看该作者
这个包含了电赛的所有实验的原理非常好,顶
回复

使用道具 举报

7#
ID:925048 发表于 2021-5-21 17:30 | 只看该作者
太厉害了,全网最牛版本
回复

使用道具 举报

8#
ID:818024 发表于 2021-6-14 10:14 | 只看该作者
哈哈,我也做过这题,当时傻傻的用两个晶体管搭放大电路,结果调了半天不是不稳定就是放大倍数不对
回复

使用道具 举报

9#
ID:944873 发表于 2021-6-26 21:10 | 只看该作者
请问一下有头文件吗
回复

使用道具 举报

10#
ID:997749 发表于 2021-12-28 11:15 | 只看该作者
思路清晰 厉害 刚好我也遇到这个考题
回复

使用道具 举报

11#
ID:447463 发表于 2022-1-5 18:30 | 只看该作者
正想找这类资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表