大多數微控制器至少有一個(gè)脈沖寬度調制 (PWM) 外設,以方波形式生成多個(gè)波形。這些 PWM 輸出可用于驅動(dòng)同步負載,例如機械系統中的步進(jìn)電機和電源轉換器的功率 MOSFET。對于這些負載,要使目標負載正常工作,PWM 波形必須精確同步,這一點(diǎn)非常重要。
如果 PWM 外設未經(jīng)過(guò)仔細編程,它可能偶爾會(huì )在波形之間產(chǎn)生相位延遲,從而導致在波形邊沿未正確對齊時(shí)失去同步。這些相位延遲將會(huì )降低負載的驅動(dòng)效率,從而浪費功率并可能產(chǎn)生過(guò)多的熱量。對于常見(jiàn)的 PWM 外設,可以啟用或禁用某個(gè) PWM,但同時(shí)會(huì )導致其他 PWM 輸出發(fā)生相位延遲。
這對于小規格電池供電型物聯(lián)網(wǎng) (IoT) 應用而言尤其是個(gè)問(wèn)題。在此類(lèi)應用中,單個(gè)具有 16 或 32 路輸出的 PWM 外設被用于控制多個(gè)外部負載。這類(lèi)物聯(lián)網(wǎng)應用中的相位延遲可能浪費電池電量。而且,由于未檢測到相位延遲,物聯(lián)網(wǎng)端點(diǎn)的網(wǎng)絡(luò )診斷可能會(huì )遺漏這些延遲。
本文將討論微控制器 PWM 外設的一些應用,以及在這類(lèi)應用中,哪些情況下使 PWM 波形保持同步非常重要。然后介紹 Maxim Integrated 的一款微控制器,其中具有一個(gè)專(zhuān)為防止這類(lèi)應用中丟失波形同步的脈沖串外設,最后討論如何配置此外設以確保目標負載得到高效的驅動(dòng)。
微控制器 PWM 外設及其目標負載
大多數通用微控制器至少有一個(gè) PWM 外設,用于生成規則的重復方波。PWM 驅動(dòng)可用于許多負載——從簡(jiǎn)單負載到更復雜的機械驅動(dòng)系統。
發(fā)光二極管 (LED) 是可通過(guò) PWM 信號高效驅動(dòng)的簡(jiǎn)單負載示例之一,尤其是在需要對彩色 LED 進(jìn)行調光的應用中。與通過(guò)改變正向直流電流來(lái)為 LED 調光相比,PWM 調光可以更精確地保持光線(xiàn)質(zhì)量,而不會(huì )明顯改變顏色。一個(gè) PWM 外設可以輕松驅動(dòng)一個(gè)或多個(gè) LED。如果將這些 LED 用作操作員的視覺(jué)指示燈,則兩個(gè)或多個(gè) LED 之間的相位差不太明顯。但如果將這些 LED 用于更復雜的應用,例如多個(gè) LED 以光調制的形式將數據傳輸到受光器,則 LED 同步可能是非常重要的設計考慮因素。
微控制器 PWM 的另一種簡(jiǎn)單負載是通過(guò)電機驅動(dòng)器 IC 驅動(dòng)的直流電機。盡管通過(guò)改變直流電機兩端的電壓可以輕松改變直流電機的速度,但 PWM 控制可以更精確地控制電機旋轉。如果將速度傳感器用于閉環(huán)控制系統,則可以更精確地保持電機速度。如果使用兩個(gè)或更多個(gè)直流電機并且它們必須一起運行,則可能有必要對 PWM 波形進(jìn)行同步,以便在電機之間保持精確的速度控制。
驅動(dòng)雙極步進(jìn)電機
當驅動(dòng)雙極步進(jìn)電機時(shí),設計情況變得更加復雜。雙極步進(jìn)電機由兩個(gè)可逆的電流繞組驅動(dòng)(圖 1)。每個(gè)繞組需要兩個(gè) PWM,因此需要四個(gè) PWM。

圖 1:雙極步進(jìn)電機由兩個(gè)電流繞組(表示為紅色和綠色線(xiàn)圈)驅動(dòng)旋轉,這兩個(gè)繞組可承載每個(gè)方向上的電流。通過(guò)控制繞組中電流的相位和持續時(shí)間,可以輕松控制電機的速度和位置。(圖片來(lái)源:Digi-Key)
如圖 1 所示,紅色和綠色線(xiàn)圈表示的兩個(gè)電流繞組必須按正確的順序驅動(dòng),才能使電機正常工作。在每個(gè)波形變化時(shí),圖 2 所示的序列驅動(dòng)雙極步進(jìn)電機一整步。

圖 2:雙極步進(jìn)電機上的兩個(gè)線(xiàn)圈必須根據上圖進(jìn)行分別驅動(dòng),才能使電機在每次波形變化時(shí)運動(dòng)一整步。首先在一個(gè)方向上驅動(dòng)每個(gè)線(xiàn)圈中的電流;接下來(lái)線(xiàn)圈空閑;然后以相反方向驅動(dòng)電流。(圖片來(lái)源:Digi-Key)
電機的每一步都從每個(gè)波形轉換開(kāi)始。如圖 2 所示,繞組兩端的電壓極性以及因此流過(guò)每個(gè)繞組的電流,在每一步都會(huì )發(fā)生變化。任何 PWM 信號中的相位延遲都可能導致電機打滑,從而造成扭矩損失,尤其在低速運轉時(shí)。
當微控制器具有僅使用四個(gè)輸出的 PWM 外設時(shí),可以輕松控制步進(jìn)電機,只需適度留意維持同步。但如果使用同一 PWM 外設來(lái)控制多個(gè)負載,則情況會(huì )變得更加復雜。例如,一個(gè) 16 輸出 PWM 可能將四個(gè) PWM 輸出分配給步進(jìn)電機,而將其他 PWM 輸出分配給其他負載,例如直流電機或 LED。使用適當的寄存器配置 PWM 輸出的頻率和占空比后,將在每個(gè) PWM 的啟用/禁用寄存器中設置一個(gè)位。在 Arm® 微控制器中,固件可通過(guò)使用位綁定來(lái)設置相應的位。但是,位綁定會(huì )對目標寄存器執行讀取/修改/寫(xiě)入 (RMW) 操作。如果有其他 PWM 輸出編程為在 RMW 操作期間開(kāi)始或結束,則可能導致無(wú)法預測的結果,在某些情況下,甚至可能按與固件控制相反的方式啟用或禁用 PWM。
Maxim Integrated 利用以 120 兆赫茲 (MHz) 頻率運行的 MAX32650 Arm Cortex®-M4F 微控制器解決了這一問(wèn)題。它具有廣泛的外設,包括三個(gè)標準 SPI 接口、一個(gè)四通道 SPI、三個(gè) UART、兩個(gè) I2C 端口、一個(gè)帶物理層 (PHY) 的 USB 2.0 高速接口、六個(gè) 32 位定時(shí)器,以及一個(gè) AES-256 加密單元(圖 3)。

圖 3:Maxim Integrated 的 MAX32650 基于 120 MHz Arm Cortex-M4F,具有面向高性能物聯(lián)網(wǎng)邊緣計算應用的全系列外設和存儲器選項。(圖片來(lái)源:Maxim Integrated)
MAX32650 具有 3 MB 的閃存和 1 MB 的 SRAM,面向需要邊緣計算的復雜物聯(lián)網(wǎng) (IoT) 端點(diǎn)。MAX32650 還具有一個(gè) 16 輸出脈沖串外設,可以生成復雜的 PWM 信號。它可以生成具有可配置頻率和 50% 占空比的方波,以及基于長(cháng)度可達 32 位的可編程位模式的脈沖串。
防止相位延遲
脈沖串發(fā)生器可以使用 32 位 PTG_ENABLE 寄存器單獨啟用或禁用 16 個(gè) PWM 輸出中的任何一個(gè)。向任意位位置寫(xiě)入 1 將啟用該脈沖串,使其按配置運行。寫(xiě)入 0 將停止脈沖串時(shí)鐘和邏輯,將輸出凍結在當前邏輯狀態(tài)。該寄存器與大多數微控制器中的啟用/禁用寄存器具有相同的 RMW 限制,因此不建議使用位綁定。
為了保持波形之間的相位同步,MAX32650 的脈沖串外設支持一種獨特的功能,當使用 32 位寄存器 PTG_SAFE_EN 時(shí)稱(chēng)為“安全啟用”,而當使用 32 位寄存器 PTG_SAFE_DIS 時(shí)則稱(chēng)為“安全禁用”。其中每個(gè)寄存器的高 16 位均未使用,建議這些未使用的位置始終寫(xiě)入零。
為了安全地啟用任何輸出,固件會(huì )將 1 寫(xiě)入 PTG_SAFE_EN 中的相應位位置。這還會(huì )立即設置這些輸出在 PTG_ENABLE 中的位位置,從而啟動(dòng) PWM 輸出。向 PTG_SAFE_EN 中的任何位位置寫(xiě)入 0 對任何脈沖串輸出都沒(méi)有影響。
為了安全地禁用任何輸出,固件會(huì )將 1 寫(xiě)入 PTG_SAFE_DIS 中的相應位位置。這還會(huì )立即清除這些輸出在 PTG_ENABLE 中的位位置,從而停止 PWM 輸出。向 PTG_SAFE_DIS 中的任何位位置寫(xiě)入 0 對任何脈沖串輸出都沒(méi)有影響。
寫(xiě)入這些寄存器不會(huì )執行 RMW。安全啟用/禁用功能允許立即啟動(dòng)或停止一個(gè)或多個(gè)脈沖串,同時(shí)保證任何其他脈沖串都不會(huì )受到影響。PTG_SAFE_EN 和 PTG_SAFE_DIS 寄存器不支持位綁定。
再次參考圖 1 中的雙極步進(jìn)電機,脈沖串輸出 0 和 1 可用于 A 和 B 對應的綠色電流繞組,脈沖串輸出 2 和 3 則可以用于 C 和 D 對應的紅色電流繞組。由于圖 2 中的波形包含死點(diǎn),因此適合使用脈沖串功能來(lái)編程一種模式,并能配置為在沒(méi)有固件干預的情況下重復任意次數。
設置后,可通過(guò)將 0000000Fh 寫(xiě)入 PTG_SAFE_EN 來(lái)啟動(dòng)電機。這會(huì )同時(shí)啟動(dòng)脈沖串輸出 0 到 3,在不影響任何其他正在運行的脈沖串輸出的情況下啟動(dòng)電機。通過(guò)將 0000000Fh 寫(xiě)入 PTG_SAFE_DIS,可停止電機。這兩項操作都不會(huì )影響任何其他正在運行的脈沖串。
如果需要啟用或禁用其他 12 個(gè)脈沖串輸出中的任意一個(gè),也可以使用這兩個(gè)寄存器安全地控制它們。只要不將 1 寫(xiě)入這些寄存器的低四位位置,步進(jìn)電機的操作就不會(huì )受到影響。這與使用具有 RMW 的標準啟用寄存器完全不同,使用 RMW 時(shí),輸出可能會(huì )卡頓,從而引起相移,這可能對扭矩產(chǎn)生不利影響。安全啟用/禁用功能類(lèi)似于一種原子操作,因此可確保步進(jìn)電機高效運行,不會(huì )浪費功率,并始終保持最大扭矩。
微控制器輸出引腳沒(méi)有足夠的能力驅動(dòng)步進(jìn)電機,因此需要電機驅動(dòng)器或 H 橋。Allegro MicroSystems 的 A3909GLYTR-T 是雙 H 橋驅動(dòng)器,可驅動(dòng)需要 4 至 18 伏電壓以及每個(gè)電流繞組高達 1 安培 (A) 電流的電機(圖 4)。

圖 4:Allegro MicroSystems 的 A3909 是雙 H 橋驅動(dòng)器,可為步進(jìn)電機線(xiàn)圈提供高達 1 A 的拉出和灌入電流。
A3909 具有熱關(guān)斷保護、過(guò)流保護和短路保護功能。每個(gè)輸入 (INx) 驅動(dòng)相應的輸出 (OUTx)。MAX32650 PWM 可以將脈沖串輸出 0 和 1 連接到輸入 IN1 和 IN2(綠色),以通過(guò) OUT1 和 OUT2 驅動(dòng)綠色線(xiàn)圈,以及將脈沖串輸出 2 和 3 連接到 IN3 和 IN4(紅色),以通過(guò) OUT3 和 OUT4 驅動(dòng)紅色線(xiàn)圈。這使 A3909 能夠直接驅動(dòng)步進(jìn)電機。
A3909 還支持有用的高阻抗功能。如果 H 橋的兩個(gè)輸入均為邏輯 0 的時(shí)間超過(guò)一毫秒 (ms),則兩個(gè)輸出都將置于高阻抗狀態(tài)。這適用于允許電機慣性滑行的情況,或任何要求輸出為高阻抗的步進(jìn)電機步階。再次參考圖 2,任何處于空閑狀態(tài)的波形部分都將因置于高阻抗狀態(tài)而獲益。這可防止電流線(xiàn)圈在電機由另一個(gè)電流線(xiàn)圈步進(jìn)時(shí)干擾電機的運行,因此會(huì )提高效率。
如果所有四個(gè)輸入(兩對)均保持低電平的時(shí)間超過(guò) 1 ms,那么很顯然,兩個(gè)輸出對都將進(jìn)入如上所述的高阻抗狀態(tài)。規格書(shū)中稱(chēng)此為休眠模式,因為同時(shí)還有一些內部電路也會(huì )處于低功耗狀態(tài)。
總結
常見(jiàn)的微控制器外設往往包括用于驅動(dòng)外部負載(例如電機和功率 MOSFET)的 PWM 功能。但由于某些情況下在 PWM 啟用寄存器上執行位操作可能會(huì )導致不可預測的結果,因此微控制器供應商正在使用新的 PWM 外設來(lái)解決此問(wèn)題,這些外設提供的功能可以安全地啟用和禁用單個(gè) PWM 輸出,而不會(huì )干擾其他 PWM 輸出,從而防止偶爾出現相位延遲和失去同步。 |