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

来源:互联网 发布:php框架怎么用 编辑:程序博客网 时间:2024/05/01 10:08
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 < 256uchar     PWM_CNT,PWM=100;    //初始化PWM值#elseuint 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 0
原创粉丝点击