【发布时间】:2011-06-29 13:52:56
【问题描述】:
我总是在微控制器中看到 PWM 引脚,比如在 PIC 中它有什么用途?
【问题讨论】:
我总是在微控制器中看到 PWM 引脚,比如在 PIC 中它有什么用途?
【问题讨论】:
它代表脉冲宽度调制。这是一种使用数字设备发送模拟信号模拟的方法,因此您可以模拟介于高电压和低电压之间的电压。
我所知道的只是点亮 Arduino 上的 LED :-)
【讨论】:
脉冲宽度调制,它在电机速度控制中使用得相当多。任何需要不是高电压或低电压的电压。
【讨论】:
PWM 的主要用途是控制电机。您(通常)这样做是为了控制电机运行的速度。有两个因素有助于这项工作。首先,电机具有相当大的物理惯性,因此当您打开和关闭电压时,它不会减速或加速非常快。其次,当电压流过线圈时产生的磁场也具有一定程度的“惯性”——即,当你关闭电流时,磁场需要一点时间才能崩溃,而它又需要一段时间才能恢复。当你打开电流时。
这些意味着您可以在相当宽的范围内改变电机的速度,并且在您更改 PWM 信号的占空比时,它仍然会相当平稳地运行,而不是做太多的加速/减速。
但是请注意,在大多数情况下,您确实需要一个单独的驱动芯片来运行比真正的微型电机更多的东西——尽管 PWM 允许您生成正确类型的信号来控制一个电机很好,典型的微控制器不是用来提供或吸收那种电流来运行电机的。
【讨论】:
虽然 PWM 确实用于电机控制,但我想说 PWM 的主要用途是数模转换,以防 MCU 没有片上 DAC(它们通常没有)。如果将 PWM 输出连接到运算放大器,则 PWM 占空比可用于表示模拟值。这是各种应用程序中相当常见的设计。
大多数调节某些东西的系统都使用 PWM + 运算放大器来提供模拟输出,可用于控制某种硬件。然后这个模拟输出可以通过模数转换器读回 MCU,MCU 可以相应地改变 PWM 占空比。
【讨论】:
一种常见的用法是伺服电机控制。 PWM信号的宽度将控制伺服输出的程度。
【讨论】:
某些设备(例如电机和 LED)在特定输入电压下运行效率更高(或根本没有),因此当您想要改变速度或亮度时,改变模拟电压通常不是令人满意的解决方案,而且也更复杂使用数字设备实现。在这些情况下,通常使用 PWM。
如果您确实需要来自 PWM 的模拟电压,则可以在输出上应用低通滤波器,但这不会产生真正 DAC 输出的线性响应。
【讨论】:
无论是用于电机控制、调整 LED 亮度等,本质上它都是用作 1 位 DAC。如果您有理想情况下需要直流电压的东西,但系统中的某些东西反应不是很快(例如您的眼睛看着 LED 或电机上的转子),如果您给它提供波形(通常是正弦波或 pwm),您基本上会得到积分。 pwm 不像您在立体声系统中看到的那样花哨(一位 dac 是当时 cd 播放器的广告功能),您不会使用它来更改 per 的输出周期基础,但在许多 pwm 周期。如果您认为方波是 50% 占空比一半高一半低,取其平均值或积分,您可以想象它有一半时间高于高电压和低电压之间的中点。如果你有一个 pwm 输出,它在周期的 3/4 处高,那么在周期的低 1/4 处,平均值现在是低电压和高电压之间差异的 3/4。如果你给直流电机或 LED 或类似的东西供电,你会得到看起来是你将输出设置为高压时的输出的 3/4。 25% 高,75% 低会给你 25% 的电压,依此类推。
所以是的,PWM 主要用作 DAC,但作为 DAC,它用于驱动电机、背光灯和 LED 以及其他可能需要电压控制的东西以及系统中的某处,无论是集成的电容器,具有物理响应时间限制的电机或看不到 LED 闪烁的人眼。所以主要用作DAC和主要用于电机控制都是正确的陈述。
出于这个原因,您会在微控制器上找到它们,想想您使用微控制器的地方,并找到您也想用 pwm 控制某些东西的地方。
【讨论】:
在所有好的答案中,PWM 的另一个新颖用法是简单的,也许是低保真声音生成。最简单的方法是转换原始声音信号的幅度,并将其映射到 PWM 输出的占空比。
此页面是一个很好的示例,但它适用于 Atmel AVR 微控制器,而不是 PIC 微控制器。 http://aquaticus.info/pwm-music
【讨论】:
您可以使用可编程 PWM 来创建方波。
在更大的微控制器(LM3s9l97 等)上,您可以处理非常复杂的波形。
基本上,您可以为计数器的每个周期获取四到六个事件(零、A、B、加载,以及在上下模式下 A 和 B 的另外两个),您可以决定对每个事件执行什么操作:切换输出,将输出设置为低电平并将输出设置为高电平。
你可以用它做一些非常漂亮的事情。
【讨论】: