大多数微控制器至少有一个脉冲宽度调制 (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 输出,从而防止偶尔出现相位延迟和失去同步。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)