JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

PWM、壓控振盪器,與鎖相迴路初探

你現在會讓一個訊號振盪了。最後這篇把這項本領折出三種用法:一個用工作週期承載資訊的方波(PWM)、一個你能用電壓去操舵的振盪器(壓控振盪器),以及把游移的壓控振盪器鎖定到穩如磐石的參考上的回授迴路(鎖相迴路)。

PWM:一個大多開著或大多關著的開關

在第 4 篇你搭了一個 555 無穩態電路,也認識了工作週期——輸出在每個週期裡保持高態的時間比例。脈寬調變(PWM)把這個概念再推一步,讓工作週期本身成為訊息。頻率維持固定(這是載波),但你把高脈衝的寬度上下滑動,藉此編碼一個數值。想像你把水龍頭一下全開、一下全關,反覆地、非常快地切換:每個週期讓它開久一點,水桶就彷彿被一道穩定的半流量灌滿,儘管那龍頭其實永遠只是全開或全關。

PWM 訊號真正代表的數,是它的平均值,而算式美妙地簡單:平均電壓 = 工作週期 times 電源電壓。在 5 V 電源上 30% 的工作週期,平均為 0.30 times 5 = 1.5 V;75% 的工作週期平均為 3.75 V。要把這個平均值還原成平滑的類比準位,你把方波送進一個低通濾波器——讓緩慢的平均值通過、把快速的載波擋下——正是你一路用到現在的那個樸實 RC 分壓。

做出 PWM:一個比較器加一道斜坡

產生 PWM 最乾淨的方法,是給一個比較器餵兩樣東西:一道穩定的三角波或鋸齒斜坡,以及一個你想編碼的參考準位。比較器在每一瞬間只問一件事:斜坡是不是低於參考?只要是,輸出就為高;斜坡一爬過參考,輸出就立刻翻低。把參考往上滑,斜坡每個週期裡低於它的時間就更多,於是高脈衝變寬——工作週期自動跟著你的參考電壓走。斜坡的頻率設定了載波;參考則設定了工作週期。

  PWM = compare a ramp against a reference level

  ramp        /|  /|  /|  /|        (sawtooth, fixed frequency)
             / | / | / | / |
  ref ......./..|/..|/..|/..|....   (slide me up or down)

  out = HIGH while (ramp < ref), LOW while (ramp > ref)

    ref low   ->  _|‾|____|‾|____|‾|___   duty ~ 20%
    ref mid   ->  _|‾‾‾|__|‾‾‾|__|‾‾‾|_   duty ~ 50%
    ref high  ->  _|‾‾‾‾‾|_|‾‾‾‾‾|_|‾‾‾   duty ~ 90%

  average out = duty x supply
    duty 0.30, supply 5 V  ->  0.30 x 5 = 1.5 V
把參考調高就把高脈衝拉寬,於是工作週期(以及濾波後的平均值)跟著它一起上升。同樣的把戲,就藏在馬達驅動器、調光器與 D 類放大器裡面。

555 也能做這件事——它的控制腳(第 5 腳)讓一個電壓去推動充電門檻、進而調變寬度——而每一顆現代微控制器都內建硬體 PWM,由一個計數器加一個比較暫存器,以數位形式做著一模一樣的「斜坡對參考」工作。不論你用哪一種,有一條規則很重要:把載波頻率選在遠高於訊號最快變化之上,這樣平均化濾波器才能把載波抹平、又不致把資訊也抹糊。

把 PWM 平滑成真正的類比電壓,是窮人的 數位類比轉換器:把低通截止頻率選在遠低於載波之處。用一個 1 kHz 的載波,你可能會用 R = 16 k、C = 100 nF 在大約 100 Hz 濾波,因為 f = 1 / (2 times pi times 16000 times 100 times 10^-9) 約為 100 Hz。誠實的代價是那個永恆的取捨:溫和的濾波器會在載波處留下看得見的漣波,而較硬的濾波器雖把漣波清乾淨,卻加入了延遲,使輸出無法跟上快速變化的工作週期。沒有又免費、又即時、又零漣波的平均值。

為什麼 PWM 無所不在

PWM 的超能力是效率。一個完全導通的開關幾乎不掉任何電壓,而一個完全關斷的開關幾乎不流任何電流——而浪費掉的功率等於「跨在開關上的電壓 times 流過開關的電流」,所以不論在哪一種狀態,開關浪費的都極少。這正是你在電源篇遇過的切換式穩壓器背後的原理,也是為什麼當你既要控制、又要低損耗時,是由 PWM、而不是浪費的線性串接元件,去控制馬達轉速或加熱器功率。

負載常常免費替你做平均。用每秒幾百次去切換一顆 LED 來調光,你的眼睛慢到看不見閃爍,只感受到平均亮度——工作週期直接變成亮度,完全不用濾波器。馬達的機械慣性把 PWM 平滑成平順的扭矩;D 類音訊放大器以每秒數十萬次切換電源,讓喇叭與你的耳朵充當低通。每一次的把戲都一樣:一個快速的開關切換,加上下游某個慢到足以對它平均的東西。

誠實的代價是雜訊。那些有效率的銳利邊緣富含高頻,會輻射出去、耦合進鄰近電路,所以一個 PWM 級需要良好的去耦、緊湊的電流迴路與細心的佈線——正是電源篇與電磁相容篇所傳的那套紀律。而且載波永遠不會完全消失:平滑後的輸出上總騎著一點漣波。當負載能吞下或濾掉載波時,PWM 是對的工具;當你需要輸出端是一個真正乾淨、無載波的訊號時,它就是錯的工具。

壓控振盪器:一個你用電壓操舵的頻率

到目前為止,你搭的每個振盪器都跑在由它的零件所決定的單一頻率上。壓控振盪器(VCO)多裝了一個方向盤:一個設定輸出頻率的輸入電壓。它的關鍵規格是調諧斜率,常稱為 VCO 增益,單位是赫茲每伏特。一個增益為 10 kHz/V、中心在 1 MHz 的 VCO,當你把控制電壓升高 2 V,輸出就上移到約 1.02 MHz;降低 2 V,就下移到約 0.98 MHz。餵它一個緩慢變化的電壓,輸出頻率就隨之起舞。

建造它有兩種日常做法。在射頻領域,拿第 3 篇的 LC 振盪器,把它的調諧電容換成一顆變容二極體——一種接面電容會隨著你把它反向偏壓得越重而縮小的二極體——於是控制電壓直接調諧那個共振槽路。在較低頻率,拿一個弛張振盪器(或一顆 555),讓控制電壓去設定充電門檻或充電電流,這會改變每一道斜坡所需的時間、進而改變週期。兩者都把電壓變成頻率;它們只是分別倚靠共振與 RC 計時。

鎖相迴路初探

現在把上一節兩難的兩半合起來。VCO 靈活卻會漂移、會抖動;晶體穩如磐石卻被釘在單一頻率。鎖相迴路(PLL)用負回授把它們撮合:它不斷操舵一個 VCO,使其相位鎖定到一個乾淨的參考上。把它想成頻率的定速巡航,或一位看著舞伴、調整每一步以保持合拍的舞者——VCO 一漂移,迴路就把它修正回來。

三個方塊在做事。一個鑑相器把參考與 VCO 的輸出相比較,送出一個與兩者漂移程度成正比的誤差。一個迴路濾波器(一個低通)把那個誤差平滑成穩定的控制電壓。那個電壓餵給 VCO。負回授把相位誤差逼向零,於是 VCO 最終精準地跟隨參考。在回授路徑裡塞進一個除 N 計數器,迴路就必須讓 VCO 跑快 N 倍才跟得上:輸出頻率 = N times 參考。一個 1 MHz 的石英晶體搭配 N = 100,產生一個與晶體一樣穩定的 100 MHz 輸出——這就是頻率合成,也是 CPU 如何用一顆便宜的幾兆赫晶體做出它的數 GHz 時脈。

對它的限制要保持誠實,因為鎖相迴路是一個回授迴路,而回授迴路可能出包。把迴路濾波器設計得不好,它就振鈴、甚至振盪——運算放大器篇那些關於相位裕度的憂慮,在這裡同樣適用。鎖相迴路只能捕捉它的捕捉範圍之內的參考,也只能在它(更寬的)鎖定範圍之內把它穩住。迴路頻寬是個貨真價實的取捨:把它做窄,輸出乾淨但鎖定慢,且會讓 VCO 自身高頻偏移的抖動漏出來;把它做寬,鎖定快卻會忠實地複製參考的抖動。安定要花真實的時間,而輸出永遠不會完美無抖動——只是好到足以勝任工作而已。