首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
用STC单片机制作D类功放电路
来源:本站整理  作者:佚名  2011-04-14 09:07:22



  在各类功放中,D类功放以极高的效率着称,因而更符合绿色革命的潮流,也因此越来越引起各方面的重视。笔者在参考了相关资料后,决定尝试用单片机和功率三极管来DIY一款简单有趣的D类功放。对笔者来说,这个DIY既有模拟电路方面的知识,也有数字电路方面的知识,特别是PCB出图时,在对AD采样中对地的处理、双声道采样最佳时序处理和PWM输出,是一种锻炼和提高。

  D类功放是放大元件处于开关工作状态的一种放大模式。无信号输入时放大器处于截止状态,不耗电。工作时,靠输入0或1信号让晶体管进入饱和或截至状态,晶体管相当于一个开关,把电源与负载直接接通或截止。理想晶体管没有饱和压降,不耗电,实际的晶体管总会有很小的饱和压降,因而会消耗部分电能。由于这种耗电只与管子的特性有关,而与信号输出的大小无关,所以特别适用于超大功率的场合。在理想情况下,D类功放的效率约为100%。

  下图是DIY的D类功放方案,分为AD转换、D类功放、低通滤波三部分。

  1.AD转换
  
  利用单片机的AD转换功能将输入的模拟信号转换为占空比随模拟信号电压变化的PWM信号。这里选用价格低廉的STCl2C5202AD单片机。该单片机运行速度是普通8051单片机的数倍,并且司以使用高达40MHz的外部晶振。AD采样速率可达250kHz。与使用运放+三角波形作为基准信号源产生PWM的方法相比,此方案更容易产生波形、频率稳定准确的PWM波。

  由于一般音源的输出信号较为微弱,在AD采样前要加预放(如没有设计预放而会引起输出功率偏低)。为适应单片机+5V的工作模式,还需要在模拟信号上叠加+2.5V直流电压。若音频输入信号为零、直流偏置为单片机AD采样基准电压的1/2,则单片机输出方波的占空比为1:1。当有音频信号输入时,在信号的正半周期间,单片机输出方波高电平的时间比低电平长,占空比大于1:1;在信号的负半周期间,由于还有直流偏置,所以单片机采样脚的电平仍然大于零,方波占空比小于1:1。这样,单片机输出的就是一个脉冲宽度被音频信号幅度调制后的波形,即PWM(PulseWidthModulation脉宽调制)。

  顺便提一下,PWM和PDM(PulseDurationModulation脉冲持续时间调制)还是有区别的,PDM是高电平宽度固定低电平宽度随调制信号变化的方波,即单位时间内“标准脉冲”个数可以被信号调制。其好处是高频能量分布在更广的频率范匪内,而不是像PWM那样,由于载频固定,高频能量集中在载频倍频的音调中。

  下面介绍AD转换和PWM程序设计方法。

  方法1:在主程序中左右声道PWM开始的同时,进行左右声道AD采样,在AD采样子程序中一次采样左右声道,完成后等待一段时间再刷新左右声道PWM0、PWMl的CCAPL0、CCAPLL比较寄存器,作为下一次PWM的数据。这样做的好处是,在PWM的同时可以进行AD转换,充分利用CPU时间,其缺点是AD采样时可能会引入PWM噪声,并且不能准确控制刷新PWM比较寄存器的时间,波形见下图。

  方法2:与方法1 相似,只要是使能PWM 中断,在中断处理程序中刷新左右声道PWMO、PVMl的CCAPL0、CCAPLl 比较寄存器。

  方法3:在主程序中开启左右声道PWM,并使能PWM 中断,进入无限循环。在中断处理程序中进行AD 采样,然后刷新PWM 比较寄存器。其缺点是:PWM 完成后才进行AD 转换,令采样频率变低。

  经反复比较后,选用了方法2,部分程序如下:

  主程序:

  void main(void){Init_System 0;CR=1;///开始PWMwhile(1){DA 0;DA();DA();DA();DA();DA();DA();DA 0;DA ();DA ();WDT_CONTR=0x3C;////喂狗}}

  AD 采样子程序:

  voidAD(void) ////方法2{//采样左声道8.4μ,s//ADC_CONTR=0xEC;∥选择通道p1.4 并开始转换。

  _nop_();_nop_();_op_();_nop_();_nop_0;while(ADC_CONTR!=OxF4);/////等待AD 转换完成ADC_CONTR=0xE4;AD_resuIt_LEFT=(0xFF-ADC_DATA) ;////STCl2C5202AD 单片机PWM 默认CCAPLO 小于待比较值时输出低电平,且此模式不像MEGA 系类单片机那样可以设置。为了PWM 和采样值一致,需与OxFF 做差值。

  //采样右声道8.4μs//ADC_CONTR=0xEE;//选择通道p1.6 并开始转换。

  _nop_();_nop_();-nop_();_nop_();_nop_0;while(ADC_CONTR!=0xF6);/////等待AD 转换完成ADC_CONTR=0xE6;AD_result_RIGHT=(OxFF-ADC_DATA);)

  PWM 中断子程序:

  voidPCA_nt(void)interrupt 7/////2///3{CF=0;//清空溢出标志CCAPOH=AD_result_LEFT;////PWM0//刷新比较寄存器的数据CCAPlH=AD_result RIGHT;////PWMl}

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:20,277.34000 毫秒