带啸叫检测与抑制的音频功率放大器报告综述.docx
《带啸叫检测与抑制的音频功率放大器报告综述.docx》由会员分享,可在线阅读,更多相关《带啸叫检测与抑制的音频功率放大器报告综述.docx(23页珍藏版)》请在冰豆网上搜索。
![带啸叫检测与抑制的音频功率放大器报告综述.docx](https://file1.bdocx.com/fileroot1/2023-1/14/9f7abdca-d3e5-4f23-8bf0-74e307ae0213/9f7abdca-d3e5-4f23-8bf0-74e307ae02131.gif)
带啸叫检测与抑制的音频功率放大器报告综述
带啸叫检测与抑制的音频功率放大器(D题)
摘要:
该设计是基于功率放大器TPA3112D1的带啸叫检测与抑制功能的音频放大器。
其音频放大器是由五个模块构成即拾音电路模块,啸叫抑制模块,功率放大器电路模块,MSP430控制与显示模块,音频输出模块。
其能产生优质的放大音量并能有效的抑制啸叫。
关键字:
拾音电路,功率放大,啸叫检测和抑制。
目录
1.方案设计与论证...................................3
1.1拾音电路的方案设计............................3
1.2功率放大电路方案设计..........................3
1.3啸叫抑制电路方案设计..........................3
1.4显示控制电路方案设计..........................4
2.硬件的设计........................................4
2.1拾音电路的设计.................................4
2.2电源模块设计...................................5
2.3程控放大电路...................................6
2.4峰峰值检测.....................................7
2.5啸叫抑制电路....................................7
3.软件的设计..........................................7
4.系统测试............................................9
4.1测试方案.........................................9
4.2测试结果与分析...................................9
5.设计总结............................................9
6.参考文献............................................9
7.附件...............................................10
1.方案设计与论证
1.1拾音电路的方案选择
方案一:
采用Maxim公司生产的一款高性能放大器MAX9814,具有自动增益控制(AGC)和低噪声麦克风偏置,器件具有低噪声前端放大器,可变增益放大器(VGA)输出放大器,麦克风偏置电压发生器和AGC控制电路。
低噪声前置放大器具有12dB固定增益;VGA增益根据输出电压和AGC门限在20dB至0dB间自动调节。
输出放大器提供可选择的8dB,18dB和28dB增益。
在未压缩的情况下,放大器的级联增益为40dB,50dB和60dB。
输出放大器增益由一个三态数字输入编程。
AGC门限由一个外部电阻分压器控制,动作/释放时间由单个电容编程。
动作/释放时间比由一个三态数字输入设置。
AGC保持时间固定为30ms。
低噪声麦克风偏置电压发生器可为绝大部分驻极体麦克风提供偏置。
但电路设计难度大且成本高。
方案二:
采用TI公司生产的双功放LM358通过外接电阻电路构成一个能放大拾音电路,运放的两个输出端接入降噪芯片的左右声输入通道。
LM358内部包括有两个独立的,高增益,内部频率补偿的双运放放大器。
电路设计和制造较难。
方案三:
采用NE5532这种双运放高性能低噪声运算放大器。
其有很好的输出驱动能力和噪声能力。
该方案具有噪声小,音质好,功耗低,稳定性好且方案间单成本低。
故选择方案三。
1.2程控放大电路方案选择
方案一:
宽带电压增益控制放大器VCA822的控制电压输入端VG的电压范围为-1V~1V,可以用含有电位器的电路来调节,其优点是电压连续可调,缺点是精确调节较难另外也与本设计要求不符。
方案二:
用TPA3112D1作为音频放大模块。
TPA3112D1是一个25W单声道,无需外加滤波器的D类音频放大器,其供电的范围为8V~26V;采用H桥作为功率输出级,使得其可在没输出没有传统的LC滤波器的情况下直接驱动感性负载;输入的音频信号可以是差分形式,其中在24V供电情况下,满负载驱动8的桥接式扬声器,声音失真率仅为0.1%。
所以选择方案二。
1.3啸叫抑制电路方案选择。
方案一:
频率均衡法由于传声器拾音和发声设备的频率曲线不是理想平坦的直线,特别是一些质量比较差的放音设备,由于厅堂声场的声学往往都有谐振作用,使频率响应起伏很大。
可以用频率均衡器补偿扩声曲线,把系统的频率响应调成近似的直线,使各频段的频响基本一致进而提高系统的传声增益,这种方法也叫做宽带陷波法。
通常应该使用21段以上的均衡器,在要求比较高的场合还应该配置参量均衡器,要求更高时,则可采用反馈抑制器。
实际上扩声系统在出现反馈自激时,频率只是固定在某一点上的纯音,只要用一个频带很窄的陷波器将此频率切除,即可进行有效抑制。
选择频率特性比较平直的传声器和扬声器,减少由于峰值易引起的自激。
方案二:
移相方式抑制啸叫:
顾名思义,移相就是移动相位。
在前面我们曾提到过“相位”一词,在空中某点,当反馈回来的声音和原始声音同时压缩或扩张了该点空气,我们称反馈声与原始声相位“同相”,该点声音增大;相反,如果一个声音压缩该点空气的同时另一个声音却扩张了该点的空气,我们称这两个声音相位“反相”,该点声音减弱。
可见当原始声和反馈声(或直达声和反射声)在空中相遇后到底使音量增大了呢、还是减小了呢,这与其之间的相位紧密相关。
移相器正是基于通过改变输入信号的相位来破坏房间峰点和啸叫的累积建立过程,从而破坏构成声反馈条件,最终达到防止啸叫的目的。
1.4显示电路的选择
方案一:
用ATMEL89C51单片机来进行信号的采集和取样同时进行数据的显示。
可以仿真63K程序空间,接近64K的16位地址空间;可以仿真64Kxdata空间,全部64K的16位地址空间;可以真实仿真全部32条IO脚;完全兼容keilC51UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作;可以使用C51语言或者ASM汇编语言进行调试;可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值;可选使用用户晶振,支持0-40MHZ晶振频率;片上带有768字节的xdata,您可以在仿真时选使用他们,进行xdata的仿真;,可以仿真双DPTR指针;
方案二:
有430单片机来进行信号采集和取样同时进行显示。
MSP430系列单片机的各系列都集成了较丰富的片内外设。
它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-ΔADC、DMA、I/O端口、基本定时器(BasicTimer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。
其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D转换器;16位定时器(Timer_A和Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM等;
由于在峰峰值检测时其需要高速的AD和DA采样,所以需要强大的处理功能。
故选择方案二。
2硬件的设计
2.1拾音电路的硬件设计
拾音电路的设计主要以NE5532集成块为基础,通过两级放大之后再通过一系列滤波电路的整合,经全相麦克风测试,拾音效果十分清晰,当电脑喇叭相隔20cm,功放喇叭背离麦克风100cm时,拾音结果也还是很清晰,没有啸叫。
当麦克风正对功放喇叭且相隔100cm时,产生明显啸叫。
其电路图如下:
此电路的话筒偏置是采用了由R2与c3、c9构成R-c滤波器来衰减偏置电压带来的噪声,并将话筒靠近放大电路输入端安装来减少噪音的影响。
Rpl,RIO,R9为驻极体话筒提供偏置电压。
通过调节Rpl使驻极体话筒得到所需要2~3v的偏置电压,该偏压的大小也调整了电路的灵敏度。
该电路中实现放大作用的主要是由运放IC2构成放大电路来完成的。
IC2A与IC2B之间通过由R12、R13、R14、R5构成的惠斯通电桥进行耦合。
该电路中IC2A构成钓电压放大器采用了同相输入的形式,对话筒而言相当于一个“较轻”的负载,这样对话筒的影响较小,该级的电压放大倍由式⋯R4+Rp3、决定。
电Ll十一J足1l路中IC2B构成的电流放大器只是R14的参上和s类放大电路不一致,其放大能力采用与s类放大电路类似。
s放大电路参数的选择使电桥处于平衡状态,即:
R12XRl4=R13XR5。
2.2电源模块设计
此电子设计大赛所要用到的有+5V电源和+12V电源,我们组就简单设计了一个正负5V和正负12V的电源,以备后用。
下图为正负5V电路设计。
经过变压,整流,滤波,稳压和保护等基本电路模块构成,其中稳压部分用的是LM7805和LM7905电源稳压芯片来进行稳压;其中正负12V电源设计与正负5V类似,用的是LM7812和LM7912稳压芯片,效果明显。
(1)变压:
电网供电电压交流220V(有效值)50Hz,要获得低压直流输出,首先必须采用电源变压器将电网电压降低获得所需要交流电压。
(2)整流:
降压后的交流电压,通过整流电路变成单向直流电,但其幅度变化大(即脉动大)。
(3)滤波:
脉动大的直流电压须经过滤波电路变成平滑,脉动小的直流电,即将交流成份滤掉,保留其直流成份。
(4)稳压:
滤波后的直流电压,再通过稳压电路稳压,便可得到基本不受外界影响的稳定直流电压输出,供给负载RL。
(5)保护:
过压和过流保护,限流保护电路和截流保护电路或利用稳压管的反向击穿稳压进行过压保护。
经测试后,电源可以正常工作。
2.3程控放大电路的设计
程控放大电路采用TPATPA3112D1是一款具有SpeakerGuard的25W单声道、无需外加滤波器的D类音频放大器,运用在电视和消费类音频设备中。
该芯片供电范围为8V到26V,采用H桥作为功率输出级,使得其可在输出没有传统的LC滤波器的情况下直接驱动感性负载;输入的音频信号可以是差分形式,其中在24V供电情况下,满负载驱动8欧姆的桥接式扬声器,声音失真率仅为0.1%。
2.4峰峰值检测电路
峰峰值检测电路可以是通过设置低通率滤波器的截止频率fH为6kHz,高通滤波器的截止频率fL为20Hz即可。
通过实验证明其电路的检测峰峰值的检测效果很好,误差较小。
2.5啸叫抑制电路
移相法是利用相同频率而不同相位的声波生产干涉,导致相互消弱甚至抵消的原理,抑制正反馈,提高音质。
其原理图。
Q1采用分压式电流负反馈偏置电路,由于R4的电流负反馈作用,所以该级的静态工作点较为稳定,由于R3和R4的阻值相等,所以Q1的发射极,集电极输出的信号也大小近似相等,相位刚好相反,从而完成了对输入信号的倒相作用。
Q2和Q1的集电极通过电容C4交流接地,构成了射级输出级,故面当移相电路中的阻值改变时,对放大电路的影响较小。
PCB图:
3软件设计部分
4.系统测试
4.1系统测试的方法是利用示波器测试输出电压的峰峰值用DDS函数发生器来产生其输入的波形。
然后将其各个模块通过原理图来进行连接,最后给所需的模块供电来进行测试。
4.2测试结果和分析。
因为在输入音频信号有效值为20mV时,功率放大器的最大不失真功率(仅考虑限幅失真)为5W,误差小于10%。
由于我们选择的功率放大器的放大倍数为61,则其拾音电路的放大倍数为:
记录的数据
输入的电压(mV)
输出的电压(V)
20
6.11
40
12.35
60
18.46
80
25.01
5.设计总结
该设计通过实验证明是一种效果较好的带啸叫检测与抑制的音频功率放大器。
6.参考文献
1、黄正瑾、田良·电子设计竞赛赛题解析·东南大学出版社·2004年·第一版
2、黄智伟、陈文光·全国大学生电子设计竞赛训练教程·电子工业出版社·2005年·第一版
3、王松武·电子创新设计与实践·国防工业出版社·2005年·第一版
4、童诗白、华成英·模拟电子技术基础·高等教育出版社·2000年·第二版
7附页
1.界面显示模块
#include
#include"Cry12864.c"
#include"Cry12864.h"
ucharh1[]={"2014年电子竞赛"};
ucharh2[]={"所选题目:
"};
ucharh3[]={"音频功率放大器"};
ucharh4[]={"参赛人员:
"};
ucharh5[]={"×××"};
ucharh6[]={"×××"};
ucharh7[]={"×××"};
ucharh8[]={"电压:
V"};
ucharh9[]={"频率:
Hz"};
ucharh10[]={"功率:
W"};
voiddisplay()
{
Disp_HZ(0x80,h1,8);
Disp_HZ(0x90,h2,8);
Disp_HZ(0x88,h3,8);
Delay_Nms(6000);
Write_Cmd(0x01);
Disp_HZ(0x80,h4,8);
Disp_HZ(0x90,h5,8);
Disp_HZ(0x88,h6,8);
Disp_HZ(0x98,h7,8);
Delay_Nms(6000);
Write_Cmd(0x01);
Disp_HZ(0x80,h8,8);
Disp_HZ(0x90,h9,8);
Disp_HZ(0x88,h10,8);
2.频率检测程序
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharshu[]={"0123456789"};
unsignedintold_cap=0;//捕获的旧值
unsignedlongintperiod=0;//信号周期
unsignedcharTA_ov_num=0;//定时器计数溢出次数
voidcap_init()
{
P1SEL|=BIT2;//设置P1.2为第二功能引脚TA1
P1DIR&=~BIT2;//设置P1.2为输入引脚
TACTL=TASSEL_2+ID_3+MC_2+TAIE;//计数时钟为1MHz,计数方式为连续计数
CCTL1|=CAP+CM_1+SCS+CCIS_0+CCIE;
TACCR1=0;
}
#pragmavector=TIMERA1_VECTOR//捕获中断子程序
__interruptvoidTimerA1(void)
{
switch(TAIV)
{
case2:
//比较/捕获模块1中断
period=TA_ov_num*65536+TACCR1-old_cap;
old_cap=TACCR1;
TA_ov_num=0;
break;
case4:
break;//比较/捕获模块2中断未用
case10:
TA_ov_num++;
break;
}
}
3.电压和功率显示模块
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineNum_of_Results32
ucharptr[4];
unsignedintmax=0,c=0;
ucharshuzi[]={"0123456789."};
staticuintresults[Num_of_Results];
voidTrans_val(uintHex_Val);
voidInit_ADC();
voidInit_ADC()
{
P6SEL|=0X01;
ADC12CTL0=ADC12ON+SHT0_8+MSC;//打开ADC,设置采样时间
ADC12CTL1=SHP+CONSEQ_2;//使用采样定时器
ADC12IE=0X01;//使能ADC中断
ADC12CTL0|=ENC;//使能ADC转换
ADC12CTL0|=ADC12SC;//开始转换
}
#pragmavector=ADC_VECTOR
__interruptvoidADC12ISR(void)
{
staticuintindex=0;
results[index++]=ADC12MEM0;
if(index==Num_of_Results)
{
uchari;
index=0;
for(i=0;i{
if(results[i]>max)
{
max=results[i];
}
}
c=2*max;//(Vpp值)
}
}
voidTrans_val(uintHex_Val)
{
unsignedlongcaltmp;
uintCurr_Volt;
uchart1;
unsignedlongPout;
uchart[4];
ucharRl=8;
caltmp=Hex_Val;
Curr_Volt=((caltmp*330)/4095)-75;//caltmp=Hex_Val*33
ptr[0]=Curr_Volt/100;
t1=Curr_Volt-(ptr[0]*100);
ptr[2]=t1/10;
ptr[3]=t1-(ptr[2]*10);
ptr[1]=10;
Write_Cmd(0x83);
Write_Data(shuzi[ptr[0]]);
Write_Data(shuzi[ptr[1]]);
Write_Data(shuzi[ptr[2]]);
Write_Data(shuzi[ptr[3]]);
Pout=(Curr_Volt*Curr_Volt)/(2*Rl);
t[0]=Pout/1000;//Hex->Dec变换
t[2]=Pout%1000/100;
t[3]=Pout%1000%100/10;
t[4]=Pout%10;
t[1]=10;//shuzi表中第10位对应符号"."
//在液晶上显示变换后的结果
Write_Cmd(0x8b);
Write_Data(shuzi[t[0]]);
Write_Data(shuzi[t[1]]);
Write_Data(shuzi[t[2]]);
Write_Data(shuzi[t[3]]);
Write_Data(shuzi[t[4]]);
Delay_Nms(1000);
}
4.12864显示模块
voidDelay_1ms(void);
voidDelay(unsignedintn);
voidWrite_Cmd(unsignedcharcod);
voidWrite_Data(unsignedchardat);
voidIni_Lcd(void);
voidDisp_HZ(unsignedcharaddr,constunsignedchar*pt,unsignedcharnum);
#include
#defineucharunsignedchar
#defineuintunsignedint
externconstunsignedcharshuzi_table[];
#defineLCD_DataInP2DIR=0x00//数据口方向设置为输入
#defineLCD_DataOutP2DIR=0xff//数据口方向设置为输出
#defineLCD2MCU_DataP2IN
#defineMCU2LCD_DataP2OUT
#defineLCD_CMDOutP6DIR|=0x38//P6口的低三位设置为输出
#defineLCD_RS_HP6OUT|=BIT3//P6.3
#defineLCD_RS_LP6OUT&=~BIT3//P6.3
#defineLCD_RW_HP6OUT|=BIT4//P6.4
#defineLCD_RW_LP6OUT&=~BIT4//P6.4
#defineLCD_EN_HP6OUT|=BIT5//P6.5
#defineLCD_EN_LP6OUT&=~BIT5//P6.5
/*******************************************
函数名称:
Delay_1ms
功能:
延时约1ms的时间
参数:
无
返回值:
无
********************************************/
voidDelay_1ms(void)
{
uchari;
for(i=150;i>0;i--)_NOP();
}
/*******************************************
函数名称:
Delay_Nms
功能:
延时N个1ms的时间
参数:
n--延时长度
返回值:
无
********************************************/
voidDelay_Nms(uintn)
{
uinti;
for(i=n;i>0;i--)Delay_1ms();
}
/*******************************************
函数名称:
Write_Cmd
功能:
向液晶中写控制命令
参数:
cmd--控制命令
返回值:
无
********************************************/
voidWrite_Cmd(ucharcmd)
{
ucharlcdtemp=0;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do//判忙
{
LC