大多數(shù)微控制器至少有一個脈沖寬度調(diào)制 (PWM) 外設(shè),以方波形式生成多個波形。這些 PWM 輸出可用于驅(qū)動同步負(fù)載,例如機(jī)械系統(tǒng)中的步進(jìn)電機(jī)和電源轉(zhuǎn)換器的功率 MOSFET。對于這些負(fù)載,要使目標(biāo)負(fù)載正常工作,PWM 波形必須精確同步,這一點(diǎn)非常重要。
如果 PWM 外設(shè)未經(jīng)過仔細(xì)編程,它可能偶爾會在波形之間產(chǎn)生相位延遲,從而導(dǎo)致在波形邊沿未正確對齊時失去同步。這些相位延遲將會降低負(fù)載的驅(qū)動效率,從而浪費(fèi)功率并可能產(chǎn)生過多的熱量。對于常見的 PWM 外設(shè),可以啟用或禁用某個 PWM,但同時會導(dǎo)致其他 PWM 輸出發(fā)生相位延遲。
這對于小規(guī)格電池供電型物聯(lián)網(wǎng) (IoT) 應(yīng)用而言尤其是個問題。在此類應(yīng)用中,單個具有 16 或 32 路輸出的 PWM 外設(shè)被用于控制多個外部負(fù)載。這類物聯(lián)網(wǎng)應(yīng)用中的相位延遲可能浪費(fèi)電池電量。而且,由于未檢測到相位延遲,物聯(lián)網(wǎng)端點(diǎn)的網(wǎng)絡(luò)診斷可能會遺漏這些延遲。
本文將討論微控制器 PWM 外設(shè)的一些應(yīng)用,以及在這類應(yīng)用中,哪些情況下使 PWM 波形保持同步非常重要。然后介紹 Maxim Integrated 的一款微控制器,其中具有一個專為防止這類應(yīng)用中丟失波形同步的脈沖串外設(shè),最后討論如何配置此外設(shè)以確保目標(biāo)負(fù)載得到高效的驅(qū)動。
微控制器 PWM 外設(shè)及其目標(biāo)負(fù)載
大多數(shù)通用微控制器至少有一個 PWM 外設(shè),用于生成規(guī)則的重復(fù)方波。PWM 驅(qū)動可用于許多負(fù)載——從簡單負(fù)載到更復(fù)雜的機(jī)械驅(qū)動系統(tǒng)。
發(fā)光二極管 (LED) 是可通過 PWM 信號高效驅(qū)動的簡單負(fù)載示例之一,尤其是在需要對彩色 LED 進(jìn)行調(diào)光的應(yīng)用中。與通過改變正向直流電流來為 LED 調(diào)光相比,PWM 調(diào)光可以更精確地保持光線質(zhì)量,而不會明顯改變顏色。一個 PWM 外設(shè)可以輕松驅(qū)動一個或多個 LED。如果將這些 LED 用作操作員的視覺指示燈,則兩個或多個 LED 之間的相位差不太明顯。但如果將這些 LED 用于更復(fù)雜的應(yīng)用,例如多個 LED 以光調(diào)制的形式將數(shù)據(jù)傳輸?shù)绞芄馄?,則 LED 同步可能是非常重要的設(shè)計(jì)考慮因素。
微控制器 PWM 的另一種簡單負(fù)載是通過電機(jī)驅(qū)動器 IC 驅(qū)動的直流電機(jī)。盡管通過改變直流電機(jī)兩端的電壓可以輕松改變直流電機(jī)的速度,但 PWM 控制可以更精確地控制電機(jī)旋轉(zhuǎn)。如果將速度傳感器用于閉環(huán)控制系統(tǒng),則可以更精確地保持電機(jī)速度。如果使用兩個或更多個直流電機(jī)并且它們必須一起運(yùn)行,則可能有必要對 PWM 波形進(jìn)行同步,以便在電機(jī)之間保持精確的速度控制。
驅(qū)動雙極步進(jìn)電機(jī)
當(dāng)驅(qū)動雙極步進(jìn)電機(jī)時,設(shè)計(jì)情況變得更加復(fù)雜。雙極步進(jìn)電機(jī)由兩個可逆的電流繞組驅(qū)動(圖 1)。每個繞組需要兩個 PWM,因此需要四個 PWM。
圖 1:雙極步進(jìn)電機(jī)由兩個電流繞組(表示為紅色和綠色線圈)驅(qū)動旋轉(zhuǎn),這兩個繞組可承載每個方向上的電流。通過控制繞組中電流的相位和持續(xù)時間,可以輕松控制電機(jī)的速度和位置。(圖片來源:Digi-Key)
如圖 1 所示,紅色和綠色線圈表示的兩個電流繞組必須按正確的順序驅(qū)動,才能使電機(jī)正常工作。在每個波形變化時,圖 2 所示的序列驅(qū)動雙極步進(jìn)電機(jī)一整步。
圖 2:雙極步進(jìn)電機(jī)上的兩個線圈必須根據(jù)上圖進(jìn)行分別驅(qū)動,才能使電機(jī)在每次波形變化時運(yùn)動一整步。首先在一個方向上驅(qū)動每個線圈中的電流;接下來線圈空閑;然后以相反方向驅(qū)動電流。(圖片來源:Digi-Key)
電機(jī)的每一步都從每個波形轉(zhuǎn)換開始。如圖 2 所示,繞組兩端的電壓極性以及因此流過每個繞組的電流,在每一步都會發(fā)生變化。任何 PWM 信號中的相位延遲都可能導(dǎo)致電機(jī)打滑,從而造成扭矩?fù)p失,尤其在低速運(yùn)轉(zhuǎn)時。
當(dāng)微控制器具有僅使用四個輸出的 PWM 外設(shè)時,可以輕松控制步進(jìn)電機(jī),只需適度留意維持同步。但如果使用同一 PWM 外設(shè)來控制多個負(fù)載,則情況會變得更加復(fù)雜。例如,一個 16 輸出 PWM 可能將四個 PWM 輸出分配給步進(jìn)電機(jī),而將其他 PWM 輸出分配給其他負(fù)載,例如直流電機(jī)或 LED。使用適當(dāng)?shù)?a href="http://www.wenjunhu.com/tags/寄存器/" target="_blank">寄存器配置 PWM 輸出的頻率和占空比后,將在每個 PWM 的啟用/禁用寄存器中設(shè)置一個位。在 Arm? 微控制器中,固件可通過使用位綁定來設(shè)置相應(yīng)的位。但是,位綁定會對目標(biāo)寄存器執(zhí)行讀取/修改/寫入 (RMW) 操作。如果有其他 PWM 輸出編程為在 RMW 操作期間開始或結(jié)束,則可能導(dǎo)致無法預(yù)測的結(jié)果,在某些情況下,甚至可能按與固件控制相反的方式啟用或禁用 PWM。
Maxim Integrated 利用以 120 兆赫茲 (MHz) 頻率運(yùn)行的 MAX32650 Arm Cortex?-M4F 微控制器解決了這一問題。它具有廣泛的外設(shè),包括三個標(biāo)準(zhǔn) SPI 接口、一個四通道 SPI、三個 UART、兩個 I2C 端口、一個帶物理層 (PHY) 的 USB 2.0 高速接口、六個 32 位定時器,以及一個 AES-256 加密單元(圖 3)。
圖 3:Maxim Integrated 的 MAX32650 基于 120 MHz Arm Cortex-M4F,具有面向高性能物聯(lián)網(wǎng)邊緣計(jì)算應(yīng)用的全系列外設(shè)和存儲器選項(xiàng)。(圖片來源:Maxim Integrated)
MAX32650 具有 3 MB 的閃存和 1 MB 的 SRAM,面向需要邊緣計(jì)算的復(fù)雜物聯(lián)網(wǎng) (IoT) 端點(diǎn)。MAX32650 還具有一個 16 輸出脈沖串外設(shè),可以生成復(fù)雜的 PWM 信號。它可以生成具有可配置頻率和 50% 占空比的方波,以及基于長度可達(dá) 32 位的可編程位模式的脈沖串。
防止相位延遲
脈沖串發(fā)生器可以使用 32 位 PTG_ENABLE 寄存器單獨(dú)啟用或禁用 16 個 PWM 輸出中的任何一個。向任意位位置寫入 1 將啟用該脈沖串,使其按配置運(yùn)行。寫入 0 將停止脈沖串時鐘和邏輯,將輸出凍結(jié)在當(dāng)前邏輯狀態(tài)。該寄存器與大多數(shù)微控制器中的啟用/禁用寄存器具有相同的 RMW 限制,因此不建議使用位綁定。
為了保持波形之間的相位同步,MAX32650 的脈沖串外設(shè)支持一種獨(dú)特的功能,當(dāng)使用 32 位寄存器 PTG_SAFE_EN 時稱為“安全啟用”,而當(dāng)使用 32 位寄存器 PTG_SAFE_DIS 時則稱為“安全禁用”。其中每個寄存器的高 16 位均未使用,建議這些未使用的位置始終寫入零。
為了安全地啟用任何輸出,固件會將 1 寫入 PTG_SAFE_EN 中的相應(yīng)位位置。這還會立即設(shè)置這些輸出在 PTG_ENABLE 中的位位置,從而啟動 PWM 輸出。向 PTG_SAFE_EN 中的任何位位置寫入 0 對任何脈沖串輸出都沒有影響。
為了安全地禁用任何輸出,固件會將 1 寫入 PTG_SAFE_DIS 中的相應(yīng)位位置。這還會立即清除這些輸出在 PTG_ENABLE 中的位位置,從而停止 PWM 輸出。向 PTG_SAFE_DIS 中的任何位位置寫入 0 對任何脈沖串輸出都沒有影響。
寫入這些寄存器不會執(zhí)行 RMW。安全啟用/禁用功能允許立即啟動或停止一個或多個脈沖串,同時保證任何其他脈沖串都不會受到影響。PTG_SAFE_EN 和 PTG_SAFE_DIS 寄存器不支持位綁定。
再次參考圖 1 中的雙極步進(jìn)電機(jī),脈沖串輸出 0 和 1 可用于 A 和 B 對應(yīng)的綠色電流繞組,脈沖串輸出 2 和 3 則可以用于 C 和 D 對應(yīng)的紅色電流繞組。由于圖 2 中的波形包含死點(diǎn),因此適合使用脈沖串功能來編程一種模式,并能配置為在沒有固件干預(yù)的情況下重復(fù)任意次數(shù)。
設(shè)置后,可通過將 0000000Fh 寫入 PTG_SAFE_EN 來啟動電機(jī)。這會同時啟動脈沖串輸出 0 到 3,在不影響任何其他正在運(yùn)行的脈沖串輸出的情況下啟動電機(jī)。通過將 0000000Fh 寫入 PTG_SAFE_DIS,可停止電機(jī)。這兩項(xiàng)操作都不會影響任何其他正在運(yùn)行的脈沖串。
如果需要啟用或禁用其他 12 個脈沖串輸出中的任意一個,也可以使用這兩個寄存器安全地控制它們。只要不將 1 寫入這些寄存器的低四位位置,步進(jìn)電機(jī)的操作就不會受到影響。這與使用具有 RMW 的標(biāo)準(zhǔn)啟用寄存器完全不同,使用 RMW 時,輸出可能會卡頓,從而引起相移,這可能對扭矩產(chǎn)生不利影響。安全啟用/禁用功能類似于一種原子操作,因此可確保步進(jìn)電機(jī)高效運(yùn)行,不會浪費(fèi)功率,并始終保持最大扭矩。
微控制器輸出引腳沒有足夠的能力驅(qū)動步進(jìn)電機(jī),因此需要電機(jī)驅(qū)動器或 H 橋。Allegro MicroSystems 的 A3909GLYTR-T 是雙 H 橋驅(qū)動器,可驅(qū)動需要 4 至 18 伏電壓以及每個電流繞組高達(dá) 1 安培 (A) 電流的電機(jī)(圖 4)。
圖 4:Allegro MicroSystems 的 A3909 是雙 H 橋驅(qū)動器,可為步進(jìn)電機(jī)線圈提供高達(dá) 1 A 的拉出和灌入電流。(圖片來源:Allegro MicroSystems)
A3909 具有熱關(guān)斷保護(hù)、過流保護(hù)和短路保護(hù)功能。每個輸入 (INx) 驅(qū)動相應(yīng)的輸出 (OUTx)。MAX32650 PWM 可以將脈沖串輸出 0 和 1 連接到輸入 IN1 和 IN2(綠色),以通過 OUT1 和 OUT2 驅(qū)動綠色線圈,以及將脈沖串輸出 2 和 3 連接到 IN3 和 IN4(紅色),以通過 OUT3 和 OUT4 驅(qū)動紅色線圈。這使 A3909 能夠直接驅(qū)動步進(jìn)電機(jī)。
A3909 還支持有用的高阻抗功能。如果 H 橋的兩個輸入均為邏輯 0 的時間超過一毫秒 (ms),則兩個輸出都將置于高阻抗?fàn)顟B(tài)。這適用于允許電機(jī)慣性滑行的情況,或任何要求輸出為高阻抗的步進(jìn)電機(jī)步階。再次參考圖 2,任何處于空閑狀態(tài)的波形部分都將因置于高阻抗?fàn)顟B(tài)而獲益。這可防止電流線圈在電機(jī)由另一個電流線圈步進(jìn)時干擾電機(jī)的運(yùn)行,因此會提高效率。
如果所有四個輸入(兩對)均保持低電平的時間超過 1 ms,那么很顯然,兩個輸出對都將進(jìn)入如上所述的高阻抗?fàn)顟B(tài)。規(guī)格書中稱此為休眠模式,因?yàn)橥瑫r還有一些內(nèi)部電路也會處于低功耗狀態(tài)。
總結(jié)
常見的微控制器外設(shè)往往包括用于驅(qū)動外部負(fù)載(例如電機(jī)和功率 MOSFET)的 PWM 功能。但由于某些情況下在 PWM 啟用寄存器上執(zhí)行位操作可能會導(dǎo)致不可預(yù)測的結(jié)果,因此微控制器供應(yīng)商正在使用新的 PWM 外設(shè)來解決此問題,這些外設(shè)提供的功能可以安全地啟用和禁用單個 PWM 輸出,而不會干擾其他 PWM 輸出,從而防止偶爾出現(xiàn)相位延遲和失去同步。
評論
查看更多