打印

如何滤除方波的毛刺

[复制链接]
6540|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ysisi2006 于 2013-5-27 14:45 编辑



我用PIC16LF1508的pwm3模块(17脚,RA2)产生的一个38K方波,然后接一个三极管去驱动一个红外发射二极管。结果测得波形有很多的毛刺很不稳定。驱动电路见图
该如何滤除毛刺呢,在单片机输出脚和地之间加104电容也不行,三极管集电极和发射管的阴极间串磁珠也不行,单片机输出脚和限流的1K电阻之间串磁珠也不行,该如何路出毛刺啊?
还有,在不需要产生方波的时候关闭了pwm模块之后,我将RA2置0,可是RA2脚输出始终为1,这又是为什么呢?
PWM相关部分程序:
void port_init()
{
     //PORTA端口的设置
     nWPUEN=1;//所有端口的弱上拉功能都被禁止
     WPUA1=0;//RA1端口的弱上拉功能被禁止
     ADCON0|=0x30;//不连接任何AD通道;
     ADCON0&=0xb2;//不连接任何AD通道,ADON=0;
     ADCON2&=0x0f;//未选择任何自动转换触发源;
     
   
     ANSA2=0;//数字I/O。引脚被配置为端口或数字特殊功能。
     RA2=0;//RA2红外管的IO线;PWM3引脚
     TRISA2=0;
   
}

void pwm3_init()//pwm3初始化,开始输出38kHz的方波
{
     TRISA2=1;//通过将相关的TRIS位置1,禁止PWMx 引脚输出驱动器。
     PWM3CON=0;//清零PWMxCON 寄存器。
     PR2=25;//将PWM 周期值装入PR2 寄存器,周期为26us
     PWM3DCH=0;//清零PWMxDCH 寄存器和PWMxDCL 寄存器的bit <7:6>。
     PWM3DCL=0;
     //配置Timer2:
     TMR2IF=0;//清零PIR1 寄存器的TMR2IF 中断标志位
     T2CON=0;//用Timer2 预分频值配置T2CON 寄存器的T2CKPS 位。
     TMR2=0;
     TMR2ON=1;//通过将T2CON 寄存器的TMR2ON 位置1 来使能Timer2。
     PWM3CON=0xd0;//使能PWM 输出引脚
     while(TMR2IF==0);//等待直到Timer2 溢出
     RA2=0;//未开启方波发送,先送0
     TRISA2=0;//通过将关联的TRIS位清零//将PWMxCON寄存器的PWMxOE 位置1,使能PWMx 引脚输出驱动器。
     PWM3OE=1;//将PWMxCON寄存器的PWMxOE 位置1,使能PWMx 引脚输出驱动器。
     PWM3DCH=0x0d;//设置占空比
     PWM3DCL=0;
}
void pwm3_close()
{
TMR2ON=0;
     TMR2=0;
     TMR2IF=0;
     PWM3CON=0x10;
     RA2=0;
}
沙发
huangxz| | 2013-5-27 14:18 | 只看该作者
哪里的波形?

使用特权

评论回复
板凳
ysisi2006|  楼主 | 2013-5-27 14:21 | 只看该作者
huangxz 发表于 2013-5-27 14:18
哪里的波形?

三极管的基极的波形和集电极的波形都有毛刺

使用特权

评论回复
地板
huangxz| | 2013-5-27 15:25 | 只看该作者
ysisi2006 发表于 2013-5-27 14:21
三极管的基极的波形和集电极的波形都有毛刺

是不是电源本身就不干净啊

使用特权

评论回复
5
第四维思想| | 2013-5-30 21:06 | 只看该作者
请问你是自制的电源供电还是实验室台位上的供电呢,如是前者可能是电源本身的纹波作用,如果是后者,就可能是你的后级电路没有接输出耦合电容

使用特权

评论回复
6
mei326| | 2013-5-31 12:01 | 只看该作者
把波形图传上来就好了~再者,上拉电阻应该接在限流电阻的另一端

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

1

粉丝