D题:带啸叫检测与抑制的音频功率放大器—改(另存)解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014年TI杯竞赛陕西赛区设计报告封面
参赛队编号(参赛学校填写)
学校编号组(队)编号选题编号0 5 1 6 D
说明
1.本页作为竞赛设计报告的封面和设计报告一同装订;
2. “参赛队编号”由参赛学校编写,其中“学校编号”应按照巡视员提供的组
委会统一编排的编号填写,“组(队)编号”由参赛学校根据本校参赛队数按顺序编排,“选题编号”由参赛队员根据所选试题编号填写,例如:“0105B”或“3367F”。
5. 本页允许各参赛学校复印。
带啸叫检测与抑制的音频功率放大器(D题)
本科组
摘要
本系统为一个基于TPA3112D1的带啸叫检测与抑制的音频功率放大器,由拾音电路、啸叫检测电路、啸叫抑制电路、功率放大电路组成,拾音电路通过台式
麦克风完成对音频信号的输入,由LM386进行放大,再经过由TLC2274C构成的带通滤波器完成对所需频率响应信号的截取;啸叫是一种回授音,不可控,话筒
拾音的音响系统,都有反馈啸叫的可能。
话筒啸叫的危害很大,需要进行必要的
检测和抑制,抑制可以从过载量,距离,角度,频率这四个方面考虑;功率放大
电路由基于TI的功率放大器芯片TPA3112D1组成,对所得的频率响应信号进行放大,可通过MSP430G2553对数字电位器进行编程从而控制输出功率。
整个系统完成了对台式麦克风音频信号进行放大,通过功率放大电路送喇叭输出,达到了设
计要求,工作可靠。
关键字:TPA3112D1 LM386 TLC2274C 啸叫检测与抑制MSP430G2553
目录
一、方案论证 (1)
1.拾音电路的论证与选择 (1)
1.1前级放大电路的论证与选择 (1)
1.2 带通滤波电路的论证与选择 (1)
2.啸叫检测电路的论证与选择 (2)
3.啸叫抑制电路的论证与选择 (2)
4.功率放大电路的论证与选择 (2)
二、理论分析与计算 (3)
1.前级放大电路的分析 (3)
2.带通滤波器的分析与计算 (5)
3. 功率放大电路的分析 (6)
三、电路与程序设计 (7)
1.电路的设计 (7)
1.1 系统总体框图 (7)
1.2 前级放大电路原理图 (7)
1.3 带通滤波电路原理图 (8)
1.4 功率放大电路原理图 (9)
1.5 电源电路原理图 (9)
2.程序的设计 (10)
2.1 程序功能描述与设计思路 (10)
2.2 程序流程图 (10)
四、测试方案与测试结果 (11)
1.测试方案 (11)
1.1 硬件测试 (11)
1.2 硬件软件联调 (11)
2.测试条件与仪器 (12)
3.测试结果及分析 (12)
3.1 测试结果(数据) (12)
3.2 数据分析 (13)
五、结论 (13)
1.设计总结 (13)
2.心得体会 (13)
六、参考文献 (14)
附录 (15)
附录1:电路原理图 (15)
附录2:波形图 (17)
附录3:源程序 (20)
一、方案论证
本系统主要由拾音电路、啸叫检测与抑制电路、功率放大电路组成,如下图,下面分别论证这几个模块的选择。
1. 拾音电路的论证与选择
1.1 前级放大电路的论证与选择
方案一:分立三极管VT8050。
选用VT8050中功率管,其功率大,可直接将音频信号放大,但其放大的是电流信号,本系统需要放大电压信号,故不适合本系统。
方案二:TLC2274C 放大。
TLC2274C 内含四运放,使用起来比较方便,但由TLC2274C 构成的前级放大电路,经测试效果不是很好。
方案三:LM386放大。
LM386是一种音频集成功放,具有自身功率低、电压增益可调整、外接元件和总谐波失真小等优点,广泛应用于录音机和收音机中,实际测试效果也不错,可以使用。
综合以上三种方案,选择方案三。
1.2 带通滤波电路的论证与选择
方案一:由电容和电阻构成的无源带通滤波器,其电路简单,但带负载能力差。
啸叫检测 啸叫抑制 拾音电路 接信号源 功率放大电路 A B K1 音频功率放大器 K2 D C R L 8 V o
方案二:由LM324构成的带通滤波器,输入信号先经低通滤波,再经高通滤波,完成所需频段的频率响应,但其仿真效果不是很好。
方案三:TLC2274C构成带通滤波电路,信号经二级低通滤波,再经二级高通滤波,其效果不错。
综合以上三种方案,选择方案三。
2. 啸叫检测电路的论证与选择
方案一:由于啸叫时整个系统输出功率将达到峰值,电压也将长时间停留在一个较高的值,可以通过电压实现啸叫检测,但由于耗能较大不予考虑。
方案二:通过频率检测来实现啸叫的检测,如果单片机检测高频波则启动判断,此方案不仅实现了频率的实时显示,又将啸叫检测加入其中,并未增加其他多余电路,通过实际的方案论证,此方案可以满足设计要求。
综合以上两种方案,选择方案二。
3. 啸叫抑制电路的论证与选择
方案一:将啸叫通过一个反向比例放大器再用加法运算放大器按照一定比例添加到输入端,能量相互抵消以后即可减弱啸叫,但由于啸叫采样较为复杂,无法使用一只全向麦克风来采样到理想的啸叫,所以此方案无法满足设计要求。
方案二:通过降低输出功率来减小音响与话筒的相互作用,通过单片机通过调节数字电位器来控制TPA3112的PLIMIT脚的值来控制功率输出,将功率控制在不产生啸叫的范围之内,此方案会对最后的功率输出产生一定的影响,但是由于控制迅速有效并且不外加电路不会产生额外的功耗所以选用此方案。
综合以上两种方案,选择方案二。
4. 功率放大电路的论证与选择
方案一:LM3886放大电路。
在额定工作电压下最大可达68W的连续不失真平均功率,同样具有比较完善的过压过流过热保护功能,最可贵的是它具有自动抗开关机时的电流冲击的功能,使扬声器能够安全的工作,但由于题目选型限制
要求,不适合本系统。
方案二:TPA3112D1放大电路。
经过实际应用测试后,效果非常好,可以使用。
综合以上两种方案,选择方案二。
二、理论分析与计算
1. 前级放大电路的分析
电子学中放大的目的在于将微弱的变化信号放大成较大的信号,放大电路可以用有输入口和输出口的四端网络表示,如图:
电压放大倍数u A :
i
o u U U A =,u A 是复数,反映了输出和输入的幅值比与相位差。
i
o u U U A =,i U 和o U 分别是输入和输出电压的有效值。
LM386内部电路如图1:
图 1 LM386内部电路
第一级差分放大电路(双入单出),第二级共射放大电路(恒流源作有源负载),第三级OTL 功放电路,输出端应外接输出电容后再接负载。
电阻R7从输出端连接到T2的发射极形成反馈通道,并与R5和R6构成反馈网络,引入深度电压串联负反馈。
LM386的电压放大倍数:
1.当引脚1和8之间开路时2/65U U U U f R R f ≈+=;
2.当引脚1和8之间外接电阻R 时可调整增益在20倍到200倍之间变化;
3.当引脚1和8之间对交流信号相当于短路时20027≈≈R R A u ;
4.在引脚1和5之间外接电阻,也可改变电路的电压放大倍数;
结论:电压放大倍数可以调节,调节范围为20~200。
LM386引脚图如图2所示:
图2 LM386引脚图 R R R R A u 6
57
)//(2+≈ 2. 带通滤波器的分析与计算 带通滤波器是一个允许特定频段的波通过同时屏蔽其他频段的设备。
比如RLC 振荡回路就是一个模拟带通滤波器。
也就是说带通滤波器是指能通过某一频率范围内的频率分量、但将其他范围的频率分量衰减到极低水平的滤波器,与带阻滤波器的概念相对。
一个模拟带通滤波器的例子是电阻-电感-电容电路(RLC circuit)。
这些滤波器也可以用低通滤波器同高通滤波器组合来产生。
一个理想的带通滤波器应该有一个完全平坦的通带,在通带内没有放大或者衰减,并且在通带之外所有频率都被完全衰减掉,另外,通带外的转换在极小的频率范围完成。
实际上,并不存在理想的带通滤波器。
滤波器并不能够将期望频率范围外的所有频率完全衰减掉,尤其是在所要的通带外还有一个被衰减但是没有被隔离的范围。
这通常称为滤波器的滚降现象,并且使用每十倍频的衰减幅度的dB 数来表示。
通常,滤波器的设计尽量保证滚降范围越窄越好,这样滤波器的性能就与设计更加接近。
在频带较低的剪切频率f1和较高的剪切频率f2之间是共振频率,这里滤波器的增益最大,滤波器的带宽就是f2和f1之间的差值。
中心频率fo :通带频率范围的中心频率点,在中心频率上滤波器对信号的抑制作用最弱,所以信号通过滤波器的损耗,即插入损耗最小(插损最小点)。
品质因数Q :B
f o Q = , B 为带通滤波器的带宽
截止频率f
c :
C
R
pi
f
c*
*
*
2
1
由所给的截止频率范围可算出相关参数。
3. 功率放大电路的分析
PLIMIT控制参数和程序
通过TPA3112技术手册可知PLIMIT的典型电压值为6.95V时输出功率为最大值,0.77V时输出功率为最小值,本系统通过数字电位器进行分压,控制PLIMIT 的电压为6.95V、1.87V、1.50V、1.15V、0.77V五个功率档位。
由于数字电位器本身的设计不能达到理想的0Ω即最小增益,本系统采用两个电磁继电器来控制前级放大来实现50mW的最低功率和5W的最高功率。
由于继电器在仅使用MSP430单片机的情况下无法使用,所以采用一个S8050三极管进行扩流,如图3:
图 3 继电器驱动电路
图中R1为2K,R2为5.1K,二极管使用1N4148。
三、电路与程序设计
1. 电路的设计
1.1 系统总体框图
系统总体框图如图4所示:
图4 系统总体框图
1.2 前级放大电路原理图
前级放大电路由LM386实现,电路图如图5:
信号输入
前级放大 带通滤波 功率放大 信号输出
啸叫抑制
啸叫检测
图5 LM386前级放大电路
1.3 带通滤波电路原理图
带通滤波电路由TLC2274C先经过低通滤波,再经过高通滤波组成,其电路图如图6(a)和图6(b):
图6(a) 低通滤波
图6(b) 高通滤波
1.4 功率放大电路原理图
功率放大电路由TPA3112D1及其外围电路组成,其原理图如图7:
图7 TPA3112D1功率放大电路
1.5 电源电路原理图
电源电路由+12V直流单电源输入,经过7805三端稳压芯片,为整个系统提供+5V电源,确保电路的正常稳定工作。
这部分电路比较简单,其电路图如图8:
图8 稳压电源电路
2. 程序的设计
2.1 程序功能描述与设计思路
1. 程序功能描述
本程序用来调节数字电位器,通过调节数字电位器的阻值来控制功率放大器的输出功率,使输出功率范围为50mW~5W,从而满足题目需要。
2. 程序设计思路
本程序通过按键来对数字电位器进行调节,每按一下按键程序响应一次来程控数字电位器增加或减少一定的步距,从而有不同的输出功率。
2.2 程序流程图
程序流程图如图9所示:
开始
输入
是否键入
判断执行命
令
输出
结束
图9 程序流程图
四、测试方案与测试结果
1. 测试方案
1.1 硬件测试
将硬件电路按模块进行测试,测试前确保连线供电正确。
首先确保各模块工作正常,功能完善;其次按照信号传播方向逐个加入后续电路进行测量,确保各模块共地,并将测量参数记录成表,进行电路数据分析。
1.2 硬件软件联调
将单片机的控制引脚与相应电路连接并确保连线无误,运行程序,根据具体电路实际调整程序。
2. 测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:数字示波器,信号发生器,稳压电源,学生电源,数字万用表,交流毫伏表。
3. 测试结果及分析
3.1 测试结果(数据)
输入音频信号有效值为20mV时,功率放大器的最大不失真功率测试如下表1:
表1 功率放大器的最大不失真功率测试
功率限制电位器调节输出电压
(V)
输出功率
(W)
误差
(%)
第一次 6.34 5.024 0.48
第二次 6.57 5.396 7.2
第三次 6.40 5.12 2.4
输入音频信号有效值为20mV时,程控设置功率放大器的输出功率测试如下表2:
表2 程控设置功率放大器的输出功率测试
按键控制功率计数次数输出电压
(V)输出功率(W)
第一次0.65 0.0528 第二次0.83 0.0861 第三次 1.81 0.410 第四次 3.00 1.125 第五次 4.11 2.120 第六次 5.07 3.213 第七次 5.82 4.234 第八次 6.34 5.024 第九次 6.57 5.396
通过调节数字电位器X9C103负载两端电压波形变化过程见附录二。
3.2 数据分析
通过测试,所得数据满足题目要求,当输入音频信号有效值为20mV时,满足功率放大器的最大不失真功率为5W,误差小于10%,误差在合理的范围内;通过程控数字电位器X9C103,从而调节功率放大器的输出功率,使功率在50mW~5W范围之内,满足要求。
五、结论
1. 设计总结
分立元件组成的功放,如果电路选择的好,参数选择恰当,元件性能优良,设计和调试的好,则性能也很优良。
许多优质功放均是分立功放,但只要其中一个环节出现问题,则性能会低于一般集成功放,且为了不致过载、过流、过热等损坏元件,需要加以复杂的保护电路,在分立元件组成的功放中由二极管、电阻、电容等器件组成的核心电路,提供了自由调整的余地,集成功放电路成熟,低频性能好,内部设计具有复合保护电路,可以增加其工作的可靠性,尤其集成厚膜器件参数稳定,无须调整,信噪比较小,而且电路布局合理,外围电路简单,保护功能齐全,还可外加散热片解决散热问题。
2. 心得体会
通过本次比赛,使我们更加扎实的掌握了有关音频方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考、讨论,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我们在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
在整个系统设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
此次比赛即将结束,在设计中遇到的很多问题,都是一些微小、容易被忽视却又容易出现的错
误。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功地做成想做的事,才能在今后的道路上披荆斩棘。
六、参考文献
[1]童诗白,华成英. 模拟电子技术基础(第四版)[M]. 北京:高等教育出版社,2006.
[2] 运算放大器及其应用彭军编著
[3]Texas Instruments Inc. LM324 -0.4-V to 26-V Input Quadruple Operational Ampli fiers /cn/lit/ds/symlink/lm324.pdf
[4]Texas Instruments Inc. TLC227x, TLC227xA: Advanced LinCMOS Rail-to-Rail Op Amps /cn/lit/ds/symlink/tlc2274.pdf
附录
附录1:电路原理图
图5 LM386前级放大电路
图6(a) 低通滤波
图6(b) 高通滤波
图7 TPA3112D1功率放大电路
附录2:波形图
附录3:源程序
程序1:数字电位器
#include<msp430g2553.h>
//CSP1.1
//INCP1.2
//U/DP1.3
#define NOKEY 0 //未按下状态
#define KEY_one 1 //按键1按下状态
#define KEY_two 2 //按键2按下状态unsigned char KEY=0; //按zzz键状态处理unsigned int B=5 ;//初始化NB
void X9C103_Dec_N_Step(unsigned char n); void X9C103_Inc_N_Step(unsigned char n); void Delay(unsigned int t);
void X9C103_up_N_Step(unsigned char n); void X9C103_down_N_Step(unsigned char n); void Delay(unsigned int t)
{
unsigned int i;
for(i=0;i<t;i++);
}
void X9C103_up_N_Step(unsigned char n) {
unsigned char i=0;
P1OUT&=~BIT1;
Delay(3);
for(i=n;i>0;i--)
{
P1OUT|=BIT3;
Delay(600);
P1OUT|=BIT2;
Delay(2);
P1OUT&=~BIT2;
}
Delay(2);
P1OUT|=BIT1;
P1OUT|=BIT2;
}
void X9C103_down_N_Step(unsigned char n)
{
unsigned char i=0;
P1OUT&=~BIT1;
Delay(3);
for(i=n;i>0;i--)
{
P1OUT&=~BIT3;
Delay(600);
P1OUT|=BIT2;
Delay(2);
P1OUT&=~BIT2;
}
Delay(2);
P1OUT|=BIT1;
P1OUT|=BIT2;
}
void GPIO()
{
P1DIR|=(BIT1+BIT2+BIT3);
P2DIR&=~(BIT2+BIT3);
P2REN|=BIT2; //配置p2.2上拉电阻
P2REN|=BIT3; //配置p2.3上拉电阻
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
BCSCTL1= CALBC1_1MHZ; //1M内部时钟
DCOCTL = CALDCO_1MHZ;
GPIO();
TACCTL0 |= CCIE; // 进中断
TACCR0 =2500; //计到2.5K,约20ms
TACTL = TASSEL_2+ID_3+MC_1+TACLR; //设置TIMERA的时钟源为SMCLK(1M),8分频后(125K),计数模式为up,到CCR0再自动从0开始计数
_BIS_SR(GIE); //开总中断
TACCTL0 |= CCIE; // 进中断while(1)
{
switch( KEY) //按键动作
{
case 1: //按键1状态时进行按键处理
{
X9C103_down_N_Step(B);
KEY=0;
}
break;
case 2: //按键2状态时进行操作
{
X9C103_up_N_Step(B);
KEY=0;
}
break; //必须要,需要退出循环
}
}
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
TACCTL0&=~ CCIE; //关中断
static unsigned char KEY_State=0; //按键的状态变量
if ((P2IN&BIT2)==0)
{
__delay_cycles(500);
if ((P2IN&BIT2)==0)
{
while((P2IN&BIT2)==0);
KEY_State=KEY_one;//按下按键1后,进入按下状态
KEY= KEY_State;
}
}
else if((P2IN&BIT3)==0)
{
__delay_cycles(500);
if((P2IN&BIT3)==0)
{
while((P2IN&BIT3)==0);
KEY_State=KEY_two;//按下按键2后,进入按下状态
KEY= KEY_State;
}
}
TACCTL0|= CCIE ; //开中断}。