带啸叫检测与抑制的音频功率放大器报告综述Word文件下载.docx
《带啸叫检测与抑制的音频功率放大器报告综述Word文件下载.docx》由会员分享,可在线阅读,更多相关《带啸叫检测与抑制的音频功率放大器报告综述Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
方案三:
采用NE5532这种双运放高性能低噪声运算放大器。
其有很好的输出驱动能力和噪声能力。
该方案具有噪声小,音质好,功耗低,稳定性好且方案间单成本低。
故选择方案三。
1.2程控放大电路方案选择
宽带电压增益控制放大器VCA822的控制电压输入端VG的电压范围为一1V〜1V,可以用含有电位器的电路来调节,其优点是电压连续可调,缺点是精确调节较难另外也与本设计要求不符。
用TPA3112D作为音频放大模块。
TPA3112D是一个25W单声道,无需外加滤波器的D类音频放大器,其供电的范围为8V~26V采用H桥作为功率输出级,使得其可在没输出没有传统的LC滤波器的情况下直接驱动感性负载;
输入的音频信号可以是差分形式,其中在24V供电情况下,满负载驱动8的桥接式扬声器,声音失真率仅为0.1%。
所以选择方案二。
1.3啸叫抑制电路方案选择。
频率均衡法由于传声器拾音和发声设备的频率曲线不是理想平坦的直线,特别是一些质量比较差的放音设备,由于厅堂声场的声学往往都有谐振作用,使频率响应起伏很大。
可以用频率均衡器补偿扩声曲线,把系统的频率响应调成近似的直线,使各频段的频响基本一致进而提高系统的传声增益,这种方法也叫做宽带陷波法。
通常应该使用21段以上的均衡器,在要求比较高的场合还应该配置参量均衡器,要求更高时,则可采用反馈抑制器。
实际上扩声系统在出现反馈自激时,频率只是固定在某一点上的纯音,只要用一个频带很窄的陷波器将此频率切除,即可进行有效抑制。
选择频率特性比较平直的传声器和扬声器,减
少由于峰值易引起的自激。
移相方式抑制啸叫:
顾名思义,移相就是移动相位。
在前面我们曾提到过“相位”一词,在空中某点,当反馈回来的声音和原始声音同时压缩或扩张了该点空气,我们称反馈声与原始声相位“同相”,该点声音增大;
相反,女口果一个声音压缩该点空气的同时另一个声音却扩张了该点的空气,我们称这两个声音相位“反相”,该点声音减弱。
可见当原始声和反馈声(或直达声和反射声)在空中相遇后到底使音量增大了呢、还是减小了呢,这与其之间的相位紧密相关。
移相器正是基于通过改变输入信号的相位来破坏房间峰点和啸叫的累积建立过程,从而破坏构成声反馈条件,最终达到防止啸叫的目的。
1.4显示电路的选择
用ATMEL89C5单片机来进行信号的采集和取样同时进行数据的显示。
可以仿真63K程序空间,接近64K的16位地址空间;
可以仿真64Kxdata空间,全部64K的16位地址空间;
可以真实仿真全部32条10脚;
完全兼容keilC51UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作;
可以使用C51语言或者ASM汇匚编语言进行调试;
可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值;
可选使用用户晶振,支持0—40MHZ晶振频率;
片上带有768字节的xdata,您可以在仿真时选使用他们,进行xdata的仿真;
,可以仿真双DPTR指针;
有430单片机来进行信号采集和取样同时进行显示。
MSP430系列单片机的各系列都集成了较丰富的片内外设。
它们分别是看门狗(WDT、模拟比较器A定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UARTSPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC16位艺-△ADCDMAI/O端口、基本定时器(BasicTimer)、实时时钟(RTC和USB控制器等若干外围模块的不同组合。
其中,看门狗可以使程序失控时迅速复位;
模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D转换器;
16位定时器
(Timer_A和Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM等;
由于在峰峰值检测时其需要高速的AD和DA采样,所以需要强大的处理功能。
故选择方案二。
2硬件的设计
电源
喇叭
拾音电路
►
啸叫检测
*
程控放大
舗
滤波
4
抑制啸叫
2.1拾音电路的硬件设计
拾音电路的设计主要以NE5532集成块为基础,通过两级放大之后再通过一系列滤波电路的整合,经全相麦克风测试,拾音效果十分清晰,当电脑喇叭相隔20cm功放喇叭背离麦克风100cm时,拾音结果也还是很清晰,没有啸叫。
当麦克风正对功放喇叭且相隔100cm时,产生明显啸叫。
其电路图如下:
此电路的话筒偏置是采用了由R2与c3、c9构成R-c滤波器来衰减偏置电压带来的噪声,并将话筒靠近放大电路输入端安装来减少噪音的影响。
Rp
I,R10,R9为驻极体话筒提供偏置电压。
通过调节Rpl使驻极体话筒得到所需要2〜3v的偏置电压,该偏压的大小也调整了电路的灵敏度。
该电路中实现放大作用的主要是由运放IC2构成放大电路来完成的。
IC2A与IC2B之间通过由R12R13、R14、R5构成的惠斯通电桥进行耦合。
该电路中IC2A构成钓电压放大器采用了同相输入的形式,对话筒而言相当于一个“较轻”的负载,这样对话筒的影响较小,该级的电压放大倍由式?
R4+Rp3、决定。
电LI十
一J足1I路中IC2B构成的电流放大器只是R14的参上和s类放大电路不
2.2电源模块设计
此电子设计大赛所要用到的有+5V电源和+12V电源,我们组就简单设计了一个正负5V和正负12V的电源,以备后用。
下图为正负5V电路设计。
经过变压,整流,滤波,稳压和保护等基本电路模块构成,其中稳压部分用的是LM780侨口
LM790电源稳压芯片来进行稳压;
其中正负12V电源设计与正负5V类似,用的是LM781和LM791稳压芯片,效果明显。
(1)变压:
电网供电电压交流220V(有效值)50Hz,要获得低压直流输出,首先必须采用电源变压器将电网电压降低获得所需要交流电压。
(2)整流:
降压后的交流电压,通过整流电路变成单向直流电,但其幅度变化大(即脉动大)。
(3)滤波:
脉动大的直流电压须经过滤波电路变成平滑,脉动小的直流电,即将交流成份滤掉,保留其直流成份。
(4)稳压:
滤波后的直流电压,再通过稳压电路稳压,便可得到基本不受外界影响的稳定直流电压输出,供给负载RL。
(5)保护:
过压和过流保护,限流保护电路和截流保护电路或利用稳压管的反向击穿稳压进行过压保护。
经测试后,电源可以正常工作。
2.3程控放大电路的设计
程控放大电路采用TPATPA3112D是一款具有SpeakerGuard的25W单声道、无需外加滤波器的D类音频放大器,运用在电视和消费类音频设备中。
该芯片供电范围为8V到26V,采用H桥作为功率输出级,使得其可在输出没有传统的LC
滤波器的情况下直接驱动感性负载;
输入的音频信号可以是差分形式,其中在24V供电情况下,满负载驱动8欧姆的桥接式扬声器,声音失真率仅为0.1%。
图1H桥
2.4峰峰值检测电路
峰峰值检测电路可以是通过设置低通率滤波器的截止频率fH为6kHz,高通
滤波器的截止频率fL为20Hz即可。
通过实验证明其电路的检测峰峰值的检测效果很好,误差较小。
2.5啸叫抑制电路
移相法是利用相同频率而不同相位的声波生产干涉,导致相互消弱甚至抵消的原理,抑制正反馈,提高音质。
其原理图。
Q1采用分压式电流负反馈偏置电路,由于R4的电流负反馈作用,所以该级的静态工作点较为稳定,由于R3和R4的阻值相等,所以Q1的发射极,集电极输出的信号也大小近似相等,相位刚好相反,从而完成了对输入信号的倒相作用。
Q2和Q1的集电极通过电容C4交流接地,构成了射级输出级,故面当移相电路中的阻值改变时,对放大电路的影响较小。
PCB图:
DI9
血2oa<
sl5Ot
}QR13°
<
=^
JP3
o
ooo
JP1
C5
□q
or—roas
RU
Q2
C2
R8R14QO
J?
R3°
l
2E
R2
4.r
cn
I5
pi
OQ
R6
oito
3软件设计部分
4.系统测试
4.1系统测试的方法是利用示波器测试输出电压的峰峰值用DDS函数发生器
来产生其输入的波形。
然后将其各个模块通过原理图来进行连接,最后给所需的
模块供电来进行测试。
4.2测试结果和分析。
因为在输入音频信号有效值为20mV时,功率放大器的最大不失真功率(仅考虑限幅失真)为5W,误差小于10%。
pl=p110%=5110%=5.5
p2=p90%=590%=4.5
p2乞p<
p1
4.5_p_5.5
u仁■pR
R=8
6_u2_6.63
k二u2“u1
u1=0.02
300Ek乞331
由于我们选择的功率放大器的放大倍数为61,则其拾音电路的放大倍数为:
5_A1_5.527
记录的数据
输入的电压(mV
输出的电压(V)
20
6.11
40
12.35
60
18.46
80
25.01
5.设计总结
该设计通过实验证明是一种效果较好的带啸叫检测与抑制的音频功率放大器
6.参考文献
1、黄正瑾、田良•电子设计竞赛赛题解析•东南大学出版社•2004年•第一版
2、黄智伟、陈文光•全国大学生电子设计竞赛训练教程•电子工业出版社・2005年•第一版
3、王松武•电子创新设计与实践•国防工业出版社•2005年•第一版
4、童诗白、华成英•模拟电子技术基础•高等教育出版社•2000年•第二版
14|
*ii
/
tr
jtr
7附页
1.界面显示模块
#include<
msp430x14x.h>
#include"
Cry12864.c"
Cry12864.h"
ucharh1[]={"
2014年电子竞赛"
};
inOLF-:
--HtlElsI
UJOTIl^dLl
「rd
ucharh2[]={"
所选题目:
"
ucharh3[]={"
音频功率放大器
ucharh4[]={"
参赛人员:
ucharh5[]={"
XXX
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);
Disp_HZ(0x80,h8,8);
Disp_HZ(0x90,h9,8);
Disp_HZ(0x88,h10,8);
2.频率检测程序
#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捕获中断子程序
__interruptvoidTimerAI(void)
厂
switch(TAIV)
case2:
//比较/捕获模块1中断
period=TA_ov_num*65536+TACCR1-old_cap;
old_cap=TACCR1;
TA_ov_num=0;
break;
case4:
〃比较/捕获模块2中断未用
case10:
TA_ov_num++;
3.电压和功率显示模块
#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+MS打开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<
Num_of_Results;
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[O]]);
Write_Data(shuzi[ptr[1]]);
Write_Data(shuzi[ptr[2]]);
Write_Data(shuzi[ptr[3]]);
Pout=(Curr_Volt*Curr_Volt)/(2*RI);
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#defineuintunsignedintexternconstunsignedcharshuzi_table[];
数据口方向设置为输入数据口方向设置为输出
#defineLCD_DataInP2DIR=0x00//#defineLCD_DataOutP2DIR=0xff//#defineLCD2MCU_DataP2IN
#defineMCU2LCDDataP2OUT
#defineLCD_CMDOut
P6DIR|=0x38
〃P6
#defineLCD_
_RS_
H
P6OUT|=BIT3
//P6.3
L
P6OUT&
=~BIT3
_RW
_H
P6OUT|=BIT4
//P6.4
_L
=~BIT4
_EN_
P6OUT|=BIT5
//P6.5
#defineLCD
EN
=~BIT5
口的低三位设置为输出
/*******************************************
函数名称:
Delay_1ms
功能:
延时约1ms的时间
参数:
无返回值:
无
********************************************
voidDelay_1ms(void)
for(i=150;
i>
0;
i--)_NOP();
Delay_Nms
延时N个1ms的时间
n--延时长度返回值:
********************************************/
voidDelay_Nms(uintn)
uinti;
for(i=n;
i--)Delay_1ms();
Write_Cmd
向液晶中写控制命令
cmd--控制命令
返回值:
voidWrite_Cmd(ucharcmd)
ucharlcdtemp=0;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do//判忙
LCD_EN_H;
_NOP();
lcdtemp=LCD2MCU_Data;
LCD_EN_L;
while(lcdtemp&
0x80);
LCD_DataOut;
LCD_RW_L;
MCU2LCD_Data=cmd;
LCD_EN_L;
Write_Data
功能:
向液晶中写显示数据