普通的IO口为什么可以模拟PWM信号?

用户2992346320282


单片机的GPIO口可以产生PWM信号,可以使用定时器来实现。使用定时器控制GPIO口的高电平和低电平的翻转时间即可实现输出方波的频率控制和占空比控制。

1

单片机输出PWM信号的思路

所谓PWM信号是指脉冲宽度调制信号,通过改变高电平持续时间和低电平持续时间实现信号的调节。如果单片机的GPIO口输出高电平持续的时间为1秒钟,然后输出低电平持续时间也是1秒钟,则该信号的周期就为2秒钟,占空比为50%。所以只需要改变高电平持续的时间或者低电平持续的时间,就可以实现脉冲宽度的调制。这里就需要用到定时器来控制GPIO口的定时翻转。

假设单片机输出高电平所持续的时间为T1,翻转为低电平后持续的时间为T2,那么周期就为T1+T2,占空比就为T1/(T1+T2),所以如果保持频率不变只改变占空比,就只修改T1,且保证T1+T2不变。

2

PW<strong>M基本参数及用途

PWM在使用时,具有两个非常重要的参数:频率/周期,占空比。前文提过占空比就是在一个周期中高电平所占用的比例,而频率和周期是互为倒数的。PWM信号非常有用,平时所讲的电机调速、电机驱动都是通过PWM来实现的。

在PWM调速时,占空比越大电机转速越快,占空比越小电机转速越慢。占空比为100%时即为持续的高电平;为0%时即为持续的低电平。在BLDC驱动中,也通过PWM来控制电机的转动和调速。

以上就是这个问题的回答,感谢留言、评论、转发。更多电子设计、硬件设计、单片机等内容请关注本头条号:玩转嵌入式。感谢大家。


玩转嵌入式


通过单片机定时器中断实现软件模拟而非硬件模块实现的pwm。

具体的流程如下:

1.根据产品功能分析需要的pwm功能的频率,以及占空比可以调节的档位数。

比如对led进行调光,为了让人眼不感觉到闪烁,我们选择100Hz的频率,根据功能我们要提供10档的亮度调节。

2.根据公式pwm/档位数得到定时器的中断频率,以1中提到的例子,定时器中断周期=1/100/10s=1ms。

3.将定时器的中断周期设置为2所计算出的周期,定义两个全局变量,一个对中断次数进行计数。

在定时器中断中,计算变量a++,当变量大于等于档位数时,变量a清零,同时io口置高,当变量a大于变量b时,io口置低。

需要注意的是,输出的占空比会抖动,原因是程序中断保护现场花费的时间每次进出中断都有偏差,主程序为了做变量访问互斥可能会关闭中断,这里也会导致偏差,另外当有多个中断时,特别是同级以及更高优先级的中断不能打断,当定时器中断到来时,必须要等待其他同优先级正在执行的中断执行完成,也会导致偏差。

所以必须计算所有这些导致的偏差,特别要注意要把所有同优先级以及更高优先级的中断的执行时间,评估总的偏差是否会影响功能,比如led会不会闪烁。


IT自动化交流


PWM英文全拼就是PlUSE WIDTH MODE也就是脉冲宽度调制。它的参数就是有频率和占空比,当然还有峰值电压。

然而单片机的IO口,一般都具有高低电平输出的功能。然而要控制输出一个PWM信号,输出变化的高低电平就可以。但是通过程序只能控制频率和占空比。脉冲的幅度单片机是控制不了的。只能通过外围电路。如图所示。单片机一般供电3.3V或5V如果要控制一个12V电压驱动一个N沟道MOS就需要外围电路了有用芯片驱动的,也有直接用MOS驱动的。

要控制输出稳定的频率和占空比PWM信号有三种方法。

一、通过延时指令nop。也就是空指令,如图所示。

二、用单片机定时器,如图所示TIM1定时器中断函数。在中段中处理IO口输出。

三、有部分单片机的定时器有PWM输出功能。如图所示STM8S中间对齐输出脉冲模式设置和PWM初始化函数设置。








电子芯库


PWM(Pulse Width Modulation)是脉冲宽度调制

PWM有两个指标:占空比和频率,普通的IO只要能控制高低电平变化就可以模拟PWM信号了

什么叫占空比

高电平时间占整个周期时间的比例叫占空比,比如一个周期为100ms,高电平部分占了40ms,那么占空比就是40%

什么叫频率

每秒种的周期数叫做频率,假如每秒产生50个波形,那么频率就是50Hz

MCU怎么用普通IO模拟PWM信号?

只要用定时器产生周期性的时间计数,按设计要求,让IO循环输出指定的高低电平信号就可以了。因为受MCU时钟和IO电平转换速度的限制,频率很高的PWM信号是没法用普通IO模拟,需要选用带PWM外设的MCU。

欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣!关注我,成为朋友,一起交流一起学习

  • 记得点赞和评论哦!非常感谢


分享到:


相關文章: