微控制器 PWM 如何输出更高效地驱动负载

控制/MCU

1877人已加入

描述

  大多数微控制器至少有一个脉冲宽度调制 (PWM) 外设,以方波形式生成多个波形。这些 PWM 输出可用于驱动同步负载,例如机械系统中的步进电机和电源转换器的功率 MOSFET。对于这些负载,要使目标负载正常工作,PWM 波形必须精确同步,这一点非常重要。

  如果 PWM 外设未经过仔细编程,它可能偶尔会在波形之间产生相位延迟,从而导致在波形边沿未正确对齐时失去同步。这些相位延迟将会降低负载的驱动效率,从而浪费功率并可能产生过多的热量。对于常见的 PWM 外设,可以启用或禁用某个 PWM,但同时会导致其他 PWM 输出发生相位延迟。

  这对于小规格电池供电型物联网 (IoT) 应用而言尤其是个问题。在此类应用中,单个具有 16 或 32 路输出的 PWM 外设被用于控制多个外部负载。这类物联网应用中的相位延迟可能浪费电池电量。而且,由于未检测到相位延迟,物联网端点的网络诊断可能会遗漏这些延迟。

  本文将讨论微控制器 PWM 外设的一些应用,以及在这类应用中,哪些情况下使 PWM 波形保持同步非常重要。然后介绍 Maxim Integrated 的一款微控制器,其中具有一个专为防止这类应用中丢失波形同步的脉冲串外设,最后讨论如何配置此外设以确保目标负载得到高效的驱动。

  微控制器 PWM 外设及其目标负载

  大多数通用微控制器至少有一个 PWM 外设,用于生成规则的重复方波。PWM 驱动可用于许多负载——从简单负载到更复杂的机械驱动系统。

  发光二极管 (LED) 是可通过 PWM 信号高效驱动的简单负载示例之一,尤其是在需要对彩色 LED 进行调光的应用中。与通过改变正向直流电流来为 LED 调光相比,PWM 调光可以更精确地保持光线质量,而不会明显改变颜色。一个 PWM 外设可以轻松驱动一个或多个 LED。如果将这些 LED 用作操作员的视觉指示灯,则两个或多个 LED 之间的相位差不太明显。但如果将这些 LED 用于更复杂的应用,例如多个 LED 以光调制的形式将数据传输到受光器,则 LED 同步可能是非常重要的设计考虑因素。

  微控制器 PWM 的另一种简单负载是通过电机驱动器 IC 驱动的直流电机。尽管通过改变直流电机两端的电压可以轻松改变直流电机的速度,但 PWM 控制可以更精确地控制电机旋转。如果将速度传感器用于闭环控制系统,则可以更精确地保持电机速度。如果使用两个或更多个直流电机并且它们必须一起运行,则可能有必要对 PWM 波形进行同步,以便在电机之间保持精确的速度控制。

  驱动双极步进电机

  当驱动双极步进电机时,设计情况变得更加复杂。双极步进电机由两个可逆的电流绕组驱动(图 1)。每个绕组需要两个 PWM,因此需要四个 PWM。

双极步进电机

图 1:双极步进电机由两个电流绕组(表示为红色和绿色线圈)驱动旋转,这两个绕组可承载每个方向上的电流。通过控制绕组中电流的相位和持续时间,可以轻松控制电机的速度和位置。(图片来源:Digi-Key)

  如图 1 所示,红色和绿色线圈表示的两个电流绕组必须按正确的顺序驱动,才能使电机正常工作。在每个波形变化时,图 2 所示的序列驱动双极步进电机一整步。

双极步进电机

图 2:双极步进电机上的两个线圈必须根据上图进行分别驱动,才能使电机在每次波形变化时运动一整步。首先在一个方向上驱动每个线圈中的电流;接下来线圈空闲;然后以相反方向驱动电流。(图片来源:Digi-Key)

  电机的每一步都从每个波形转换开始。如图 2 所示,绕组两端的电压极性以及因此流过每个绕组的电流,在每一步都会发生变化。任何 PWM 信号中的相位延迟都可能导致电机打滑,从而造成扭矩损失,尤其在低速运转时。

  当微控制器具有仅使用四个输出的 PWM 外设时,可以轻松控制步进电机,只需适度留意维持同步。但如果使用同一 PWM 外设来控制多个负载,则情况会变得更加复杂。例如,一个 16 输出 PWM 可能将四个 PWM 输出分配给步进电机,而将其他 PWM 输出分配给其他负载,例如直流电机或 LED。使用适当的寄存器配置 PWM 输出的频率和占空比后,将在每个 PWM 的启用/禁用寄存器中设置一个位。在 Arm® 微控制器中,固件可通过使用位绑定来设置相应的位。但是,位绑定会对目标寄存器执行读取/修改/写入 (RMW) 操作。如果有其他 PWM 输出编程为在 RMW 操作期间开始或结束,则可能导致无法预测的结果,在某些情况下,甚至可能按与固件控制相反的方式启用或禁用 PWM。

  Maxim Integrated 利用以 120 兆赫兹 (MHz) 频率运行的 MAX32650 Arm Cortex®-M4F 微控制器解决了这一问题。它具有广泛的外设,包括三个标准 SPI 接口、一个四通道 SPI、三个 UART、两个 I2C 端口、一个带物理层 (PHY) 的 USB 2.0 高速接口、六个 32 位定时器,以及一个 AES-256 加密单元(图 3)。

双极步进电机

图 3:Maxim Integrated 的 MAX32650 基于 120 MHz Arm Cortex-M4F,具有面向高性能物联网边缘计算应用的全系列外设和存储器选项。(图片来源:Maxim Integrated)

  MAX32650 具有 3 MB 的闪存和 1 MB 的 SRAM,面向需要边缘计算的复杂物联网 (IoT) 端点。MAX32650 还具有一个 16 输出脉冲串外设,可以生成复杂的 PWM 信号。它可以生成具有可配置频率和 50% 占空比的方波,以及基于长度可达 32 位的可编程位模式的脉冲串。

  防止相位延迟

  脉冲串发生器可以使用 32 位 PTG_ENABLE 寄存器单独启用或禁用 16 个 PWM 输出中的任何一个。向任意位位置写入 1 将启用该脉冲串,使其按配置运行。写入 0 将停止脉冲串时钟和逻辑,将输出冻结在当前逻辑状态。该寄存器与大多数微控制器中的启用/禁用寄存器具有相同的 RMW 限制,因此不建议使用位绑定。

  为了保持波形之间的相位同步,MAX32650 的脉冲串外设支持一种独特的功能,当使用 32 位寄存器 PTG_SAFE_EN 时称为“安全启用”,而当使用 32 位寄存器 PTG_SAFE_DIS 时则称为“安全禁用”。其中每个寄存器的高 16 位均未使用,建议这些未使用的位置始终写入零。

  为了安全地启用任何输出,固件会将 1 写入 PTG_SAFE_EN 中的相应位位置。这还会立即设置这些输出在 PTG_ENABLE 中的位位置,从而启动 PWM 输出。向 PTG_SAFE_EN 中的任何位位置写入 0 对任何脉冲串输出都没有影响。

  为了安全地禁用任何输出,固件会将 1 写入 PTG_SAFE_DIS 中的相应位位置。这还会立即清除这些输出在 PTG_ENABLE 中的位位置,从而停止 PWM 输出。向 PTG_SAFE_DIS 中的任何位位置写入 0 对任何脉冲串输出都没有影响。

  写入这些寄存器不会执行 RMW。安全启用/禁用功能允许立即启动或停止一个或多个脉冲串,同时保证任何其他脉冲串都不会受到影响。PTG_SAFE_EN 和 PTG_SAFE_DIS 寄存器不支持位绑定。

  再次参考图 1 中的双极步进电机,脉冲串输出 0 和 1 可用于 A 和 B 对应的绿色电流绕组,脉冲串输出 2 和 3 则可以用于 C 和 D 对应的红色电流绕组。由于图 2 中的波形包含死点,因此适合使用脉冲串功能来编程一种模式,并能配置为在没有固件干预的情况下重复任意次数。

  设置后,可通过将 0000000Fh 写入 PTG_SAFE_EN 来启动电机。这会同时启动脉冲串输出 0 到 3,在不影响任何其他正在运行的脉冲串输出的情况下启动电机。通过将 0000000Fh 写入 PTG_SAFE_DIS,可停止电机。这两项操作都不会影响任何其他正在运行的脉冲串。

  如果需要启用或禁用其他 12 个脉冲串输出中的任意一个,也可以使用这两个寄存器安全地控制它们。只要不将 1 写入这些寄存器的低四位位置,步进电机的操作就不会受到影响。这与使用具有 RMW 的标准启用寄存器完全不同,使用 RMW 时,输出可能会卡顿,从而引起相移,这可能对扭矩产生不利影响。安全启用/禁用功能类似于一种原子操作,因此可确保步进电机高效运行,不会浪费功率,并始终保持最大扭矩。

  微控制器输出引脚没有足够的能力驱动步进电机,因此需要电机驱动器或 H 桥。Allegro MicroSystems 的 A3909GLYTR-T 是双 H 桥驱动器,可驱动需要 4 至 18 伏电压以及每个电流绕组高达 1 安培 (A) 电流的电机(图 4)。

双极步进电机

图 4:Allegro MicroSystems 的 A3909 是双 H 桥驱动器,可为步进电机线圈提供高达 1 A 的拉出和灌入电流。(图片来源:Allegro MicroSystems)

  A3909 具有热关断保护、过流保护和短路保护功能。每个输入 (INx) 驱动相应的输出 (OUTx)。MAX32650 PWM 可以将脉冲串输出 0 和 1 连接到输入 IN1 和 IN2(绿色),以通过 OUT1 和 OUT2 驱动绿色线圈,以及将脉冲串输出 2 和 3 连接到 IN3 和 IN4(红色),以通过 OUT3 和 OUT4 驱动红色线圈。这使 A3909 能够直接驱动步进电机。

  A3909 还支持有用的高阻抗功能。如果 H 桥的两个输入均为逻辑 0 的时间超过一毫秒 (ms),则两个输出都将置于高阻抗状态。这适用于允许电机惯性滑行的情况,或任何要求输出为高阻抗的步进电机步阶。再次参考图 2,任何处于空闲状态的波形部分都将因置于高阻抗状态而获益。这可防止电流线圈在电机由另一个电流线圈步进时干扰电机的运行,因此会提高效率。

  如果所有四个输入(两对)均保持低电平的时间超过 1 ms,那么很显然,两个输出对都将进入如上所述的高阻抗状态。规格书中称此为休眠模式,因为同时还有一些内部电路也会处于低功耗状态。

  总结

  常见的微控制器外设往往包括用于驱动外部负载(例如电机和功率 MOSFET)的 PWM 功能。但由于某些情况下在 PWM 启用寄存器上执行位操作可能会导致不可预测的结果,因此微控制器供应商正在使用新的 PWM 外设来解决此问题,这些外设提供的功能可以安全地启用和禁用单个 PWM 输出,而不会干扰其他 PWM 输出,从而防止偶尔出现相位延迟和失去同步。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分