模拟Delta-Sigma的差分原理做的PWM C51程序

11 篇文章 0 订阅
URL: http://www.daxia.com/bibis/moredata30_988327_74648.shtml
原理尚未看懂,且先保留
 
我一直在寻求一种不用太快的中断就可以得到高精度的PWM,尝试了许多种方法,发现有一种方法可以。
我模拟 Delta-Sigma的差分原理做了PWM,效果不错,只是在边沿的线性稍差。
这种方法适用于用RC滤波得到直流信号,而不适用于驱动马达。
这种方法可以使用比较小的RC值,在中点输出频率为中断频率的一半。
这段程序要放在 Timer中断中执行。
例程为100us中断,步进为1/5000,量程为5000,对应5V分辨率为1mV。

/****** 定义 **********/
sbit     P_PWM=P1^0;        //输出端口
#define D_PWM_DUTY     5000    //量程

#if     D_PWM_DUTY < 256
uchar     PWM_CNT,PWM=100;    //初始化PWM值
#else
uint PWM_CNT,PWM=2000;        //初始化PWM值
#endif

/****** 放Timer中断 **********/
if(PWM_CNT<PWM)
{    P_PWM=0;
    PWM_CNT=D_PWM_DUTY-PWM+PWM_CNT;
}

else
{    P_PWM=1;
    PWM_CNT=PWM_CNT-PWM;
}
/******************************/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值