我想使用单片机定时器输出3路pwm波,这三路pwm波的频率为100Hz;相位之差和为360。大神 帮帮忙

 我来答
hcxllhz3
推荐于2017-09-08 · 超过16用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:34.1万
展开全部
3路PWM波,频率100HZ,周期为10ms,这个应该很简单吧,用定时器进行定时0.1ms中断一次,100次为一循环,这样周期为10ms。相位差和为360,最简单的是,第1个方波比第2个差120,第2个比第3个差120,第3个比第1个差120。也就是说在第0ms第1个方波启动,第3.3333...ms第2个方波启动,6.66666ms第3个方波启动,而到10ms第1个方波第二个周期又开始启动。这只是最简单的,其实只要满足a b c三个方波启动时间刚好加起来等于10ms就可以。
回到定时器,程序你设定3个变量,a b c,其中a b c的初值分别用来表示第1 2 3方波的相位差,判断a b c的范围来确认三个方波的占空比。设置0.1ms中断,变量初值a=0 b=33 c=66每次中断a b c 分别++,当a=100 b=100 c =100,a=0 b=0 c=0。
主函数,设置3个IO口,PWM1 PWM2 PWM3,if(0<a<50);(PWM1==1);else;PWM1==0; if(0<b<50);(PWM2==1);else;PWM2==0; if(0<c<50);(PWM3==1);else;PWM3==0;其中a b c的取值范围就是占空比的值(1~99)。
注:1、因为a b c初值不同,所以相位差在初值就体现出来了。2、也可不用中断,判断定时器溢出位也可。3、想要更精确可以定时0.01ms,变量设定1000个。

以上也是我自己凭空想的,没实际实验,你可以试试!
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式