如何同步微控制器 PWM 輸出,以更高效率驅動負載

作者:Bill Giovino

資料提供者:DigiKey 北美編輯群

多數的微控制器至少具有一個脈寬調變 (PWM) 周邊裝置,用以產生多個方形波。這些 PWM 輸出能用來驅動同步負載,例如機械系統的步進馬達及電力轉換器的功率 MOSFET。對這些負載來說,精準地同步 PWM 波形很重要,如此目標負載才能正確地運轉。

如果 PWM 周邊裝置編程不當,波形間可能出現偶發性的相位延遲,使得波形邊緣未能正確對齊而造成同步損失。這些相位延遲將使得負載無法有效地驅動,不但浪費功率,還可能產生過多熱量。一般的 PWM 周邊裝置都能啟用或停用 PWM,但會造成其他 PWM 輸出的相位延遲。

對於電池供電型小尺寸物聯網 (IoT) 應用而言,這尤其是個問題,因為這些應用會使用 16 個或 32 個輸出的單一周邊裝置來控制多個外部負載。對於這些 IoT 應用,相位延遲會浪費電池電力。此外,由於這些相位延遲未被偵測到,因此會被 IoT 端點的網路診斷疏漏掉。

本文將討論一些微控制器 PWM 周邊裝置應用,以及在這些應用中,PWM 波形在何種情況下維持同步非常重要。接著,本文將探討 Maxim Integrated 的一款微控制器,此產品具有專為預防這些應用發生波形同步損失的脈衝列周邊裝置;同時還要探討確保此周邊裝置能有效驅動目標負載的設定方法。

微控制器 PWM 周邊裝置及其目標負載

多數的一般用途微控制器至少具有一個 PWM 周邊裝置,可用以產生規則且重複的方形波。從簡單的負載到較複雜的機械驅動系統,PWM 驅動對許多的負載都有優勢。

發光二極體 (LED) 是簡易負載的範例之一,使用 PWM 訊號即可非常有效率地驅動,是特別為需要彩色 LED 調光的應用而設計。與使用改變正向 DC 電流的 LED 調光相比,PWM 調光能以更高的精確度維持燈光品質,而且顏色不會有顯著改變。一個 PWM 周邊裝置能輕易驅動一個或更多個 LED。如果 LED 是作為操作人員的視覺指示器,則兩個或更多 LED 間的相位差會不太明顯。不過,如果將 LED 用於更複雜的應用,例如多個 LED 是透過燈光調變向光學接收器傳送資料,則同步 LED 在設計考量上就很重要。

透過馬達驅動器 IC 驅動 DC 馬達,是微控制器 PWM 的另一種簡易負載。雖然 DC 馬達轉速能輕易地藉由改變馬達兩個端子間的電壓來改變,但是 PWM 控制功能可以較精準地控制馬達旋轉。如果封閉迴路控制系統使用速度感測器,則可以更精準地維持馬達轉速。如果使用兩個或更多 DC 馬達且它們必須一起運轉,則可能必須同步 PWM 波形,以便在這些馬達之間精準地控制轉速。

驅動雙極步進馬達

如果是驅動雙極步進馬達,設計情況會變得更複雜。雙極步進馬達是由兩個可逆電流繞組驅動 (圖 1)。每個繞組需要兩個 PWM,因此需要四個 PWM。

雙極步進馬達由兩個電流繞組轉動的示意圖圖 1:雙極步進馬達是由兩個電流繞組 (以紅色和綠色線圈表示) 來轉動,這些繞組用於承載每個方向的電流。藉由控制繞組中電流的相位和時間長度,即可輕易地控制馬達的轉速和位置。(圖片來源:DigiKey)

如圖 1 所示,以紅色和綠色線圈表示的兩個電流繞組必須以正確的順序驅動,才能讓馬達運轉。在每次波形改變時,以圖 2 顯示的順序,以完整步階驅動雙極步進馬達。

驅動雙極步進馬達上兩個線圈的示意圖圖 2:雙極步進馬達上兩個線圈,都必須依照上方的示意圖驅動,才能在每個波形改變時讓馬達轉動一個完整步階。每個線圈的電流會先以一個方向驅動,接著該線圈進入閒置,然後電流以相反方向驅動。(圖片來源:DigiKey)

馬達的每個步階始於每個波形轉換時。如圖 2 所示,橫跨繞組的電壓極性,以及由此流過每個繞組的電流,會在每個步階改變。任何 PWM 訊號產生相位延遲會造成馬達抖動,導致扭力損失,在轉速低時特別明顯。

當微控制器使用僅有四個輸出的 PWM 周邊裝置時,只要適度留意以維持同步要求,即可輕易地控制步進馬達。但如果使用相同的 PWM 周邊裝置控制一個以上的負載,情況就會更複雜。舉例來說,一個 16 個輸出的 PWM 可能有四個 PWM 輸出是指定給步進馬達,其他 PWM 輸出則指定給其他負載,例如 DC 馬達或 LED。使用適當的暫存器設定 PWM 輸出的頻率和工作週期後,可為每個 PWM 的啟用/停用暫存器中設置一個位元。在 Arm® 微控制器中,韌體會使用位元帶設置正確的位元。但是位元帶會在目標暫存器上執行讀取/修改/寫入 (RMW) 的動作。如果透過編程在 RMW 操作期間啟動或停止其他 PWM 輸出,則會導致無法預期的結果,而在某些情況下,可能會以相反於韌體控制的方式啟用或停用 PWM。

Maxim Integrated 已利用執行速度達 120 MHz 的 MAX32650 Arm Cortex®-M4F 微控制器解決了這個問題。此微控制器具備各式各樣的周邊裝置,包括三個標準 SPI 介面、一個四通道 SPI、三個 UART、兩個 I2C 連接埠、一個具備實體層 (PHY) 的 USB 2.0 高速介面、六個 32 位元計時器和一個 AES-256 加密單元 (圖 3)。

Maxim Integrated 的 MAX32650 示意圖 (按此放大)圖 3:Maxim Integrated 的 MAX32650 是以 120 MHz 的 Arm Cortex-M4F 為架構,具備針對高效能 IoT 邊緣運算應用的全系列周邊裝置和記憶體選項。(圖片來源: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 時稱為安全啟用 (Safe Enable),當使用 32 位元暫存器 PTG_SAFE_DIS 時稱為安全停用 (Safe Disable)。這類暫存器的 16 個高位元均未使用,建議永遠將這些未用的位置以零寫入。

為了安全地啟用任何輸出,韌體會在 PTG_SAFE_EN 的對應位元位置寫入 1。此動作也會立即設置 PTG_ENABLE 的輸出位元位置,開始輸出 PWM。將 0 寫入 PTG_SAFE_EN 的任何位元位置,不會影響任何脈衝列輸出。

為了安全地停用任何輸出,韌體會在 PTG_SAFE_DIS 的對應位元位置寫入 1。此動作也會立即清除 PTG_ENABLE 的輸出位元位置,停止輸出 PWM。將 0 寫入 PTG_SAFE_DIS 的任何位元位置,不會影響任何脈衝列輸出。

寫入這些暫存器不會執行 RMW。安全啟用/停用功能可允許立即啟用或停止一個或更多脈衝列,同時保證不會影響任何其他脈衝列。PTG_SAFE_EN 和 PTG_SAFE_DIS 暫存器不支援位元帶。

再次參考圖 1 的雙極步進馬達,綠色電流繞組的 A 和 B 可以使用脈衝列輸出 0 和 1;紅色電流繞組的 C 和 D 可以使用脈衝列輸出 2 和 3。由於圖 2 的波形有死點,因此適合使用脈衝列功能來編程一種模式,並能設定為在沒有韌體介入時可無限制重複。

設置完成後,即可藉由將 0000000Fh 寫入 PTG_SAFE_EN 來啟動馬達。如此將同時啟動脈衝列輸出 0 至 3,令馬達啟動而不影響其他任何執行中的脈衝列輸出。將 0000000Fh 寫入 PTG_SAFE_DIS 可停止馬達。這兩項操作都不影響任何其他執行中的脈衝列。

如果需要啟用或停用其他 12 個脈衝列中的任何一個,可以使用這兩個暫存器進行安全的控制。只要寫入這些暫存器最前面四個位元位置的值不是 1,就不影響步進馬達運轉。相反地,如果使用具有 RMW 的標準啟用暫存器,輸出可能會斷續,造成移相,反而會對扭力有不良影響。安全啟用/停用功能類似原子操作,因此可確保步進馬達有效率地運轉,不會浪費功率,並全程保持最大扭力。

僅靠微控制器輸出的引腳無法驅動步進馬達,還需要馬達驅動器或全橋。Allegro MicroSystemsA3909GLYTR-T 是一款雙全橋驅動器,能操作要求 4 至 18 V 及每個電流繞組要求最大 1 A 的馬達 (圖 4)。

Allegro MicroSystems 的 A3909 雙全橋驅動器示意圖圖 4:Allegro MicroSystems 的 A3909 是一款雙全橋驅動器,能讓最大 1 A 的電流流入及流出步進馬達線圈。(圖片來源:Allegro MicroSystems)

A3909 具備熱關斷保護、過電流保護和短路保護功能。每個輸入 (INx) 可驅動對應的輸出 (OUTx)。MAX32650 PWM 可將脈衝列輸出 0 和 1 連接至輸入 IN1 和 IN2 (綠色),經由 OUT1 和 OUT2 驅動綠色線圈;也將脈衝列輸出 2 和 3 連接至 IN3 和 IN4 (紅色),經由 OUT3 和 OUT4 驅動紅色線圈。A3909 可藉此直接驅動步進馬達。

A3909 也支援實用的高阻抗功能。如果全橋的兩個輸入都是邏輯 0 且持續 1 ms 以上,則兩個輸出都會進入高阻抗狀態。對於允許馬達自由旋轉,或對任何要求高阻抗輸出的步進馬達來說,這是相當實用的功能。再次參考圖 2,波形的任何閒置部分可藉由進入高阻抗狀態而獲益。此時,透過防止馬達正由其他電流線圈進行步進時,電流線圈干擾馬達的運作,便可提升效率。

如果所有四個輸入 (兩對) 持續保持在低位超過 1 ms,兩對輸出顯然會完全如上所述,進入高阻抗狀態。規格書將此稱為「睡眠模式」,因為此外仍有部分內部電路斷電。

結論

常見的微控制器周邊裝置經常包含 PWM 功能,用以驅動馬達和功率 MOSFET 等外部負載。由於在 PWM 啟用暫存器上執行位元操作的作業,在某些情況下會造成不可預期的結果,因此微控制器供應商使用新的 PWM 周邊裝置來解決問題;此種周邊裝置可提供安全啟用和停用個別的 PWM 輸出的功能,又不會干擾到其他的 PWM 輸出,藉此防止偶發性的相位延遲和同步損失。

DigiKey logo

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。

關於作者

Image of Bill Giovino

Bill Giovino

Bill Giovino 是電子工程師,擁有美國雪城大學的電機工程學士學位,也是少數從設計工程師跨足現場應用工程師,再到技術行銷領域的成功典範之一。

Bill 過去 25 年來熱衷於向科技和非科技業的對象推廣新技術,包括 STMicroelectronics、Intel 和 Maxim Integrated 等多家企業。Bill 在 STMicroelectronics 任職期間,曾協助領導該公司順利進軍微控制器領域。在 Infineon 任職時,則策劃出該公司首款在美國汽車業大受歡迎的微控制器設計。Bill 目前是他個人公司 CPU Technologies 的行銷顧問,曾協助諸多企業讓表現不佳的產品重獲市場青睞。

Bill 更是採用物聯網的先驅,包括在微控制器中首次納入完整的 TCP/IP 堆疊。Bill 致力於推廣「用教育促成銷售」的理念,也認可在線上推銷產品時有清楚完整文字說明的重要性。他在 LikedIn 熱門的半導體銷售和行銷群組中擔任管理員,也擁有深厚的 B2E 知識。

關於出版者

DigiKey 北美編輯群