數(shù)字鎖相環(huán)介紹
占一樓。先說鎖相環(huán)中最基本的過零點(diǎn)鎖相的原理,后面我會(huì)給出相關(guān)的軟件代碼實(shí)現(xiàn)方法。過零點(diǎn)鎖相主要原理是,通過硬件采樣比較電路將電網(wǎng)信號(hào)轉(zhuǎn)化成方波信號(hào),由DSP或者單片機(jī)通過捕獲相應(yīng)的上升沿或者下降沿信號(hào),計(jì)算相鄰兩個(gè)上升沿(或者下降沿)的時(shí)間即可得到電網(wǎng)周期。
此時(shí),對(duì)于DSP來說,信號(hào)的頻率是鎖相環(huán)(PLL)唯一的輸入信息。得到了頻率信息以后,可以確定了,鎖相環(huán)的輸出信號(hào)的頻率一定會(huì)等于電網(wǎng)采用信號(hào)頻率。那么我們?nèi)绾文軌虻玫诫娋W(wǎng)相位信息呢。假設(shè)電網(wǎng)電壓采樣信號(hào)函數(shù)為sin(2*PI*f*t + Φ1),鎖相環(huán)輸出信號(hào)為sin(2*PI*f*t + Φ2),當(dāng)Φ1=Φ2時(shí),即完成了鎖相。那么這個(gè)過程是如何實(shí)現(xiàn)的呢?
在介紹鎖相過程之前,有幾個(gè)基本要用到的基本概念簡單的闡述一下,不是從事數(shù)字電源的朋友可能不是很了解。
1、 DSP定時(shí)器的/頻率/周期及中斷的產(chǎn)生
時(shí)器:學(xué)過單片機(jī)的朋友都懂,不作詳細(xì)介紹了??梢赃M(jìn)行加計(jì)數(shù),也可以進(jìn)行減計(jì)數(shù)。具體模式需要對(duì)相關(guān)寄存器進(jìn)行配置。在數(shù)字電源中一般配置成加減計(jì)數(shù)。定時(shí)器在一個(gè)控制周期內(nèi)由0先加計(jì)數(shù)到周期,在從周期值減計(jì)數(shù)到0,周而復(fù)始。如下圖:
DPTR = fclk/fl/2
fclk--------定時(shí)器的時(shí)鐘頻率
fl----------我們想要設(shè)置的控制頻率
DPTR---------定時(shí)器周期寄存器值
舉個(gè)例子,定時(shí)器配置的時(shí)鐘頻率假設(shè)為150MHZ,控制頻率為20KHZ,可以算出DPTR為3750.表示定時(shí)器從0計(jì)數(shù)到3750,需要花費(fèi)25us.看看上面的圖,像不像一個(gè)20KHZ的三角形載波?
現(xiàn)在假設(shè)我們?cè)O(shè)定載波頻率為20KHZ,一般情況下我們的控制頻率等于載波頻率(當(dāng)然也可以不等)?,F(xiàn)在我們?cè)O(shè)定DSP定時(shí)器每計(jì)數(shù)到3750就會(huì)進(jìn)入一次中斷,表示每過50US會(huì)進(jìn)入一次定時(shí)器周期中斷。如果我們需要輸出一個(gè)50HZ的正弦電壓信號(hào)。表明在一個(gè)周期20ms的時(shí)間內(nèi),DSP產(chǎn)生了400次定時(shí)器周期中斷?,F(xiàn)在可以看出在20ms的時(shí)間內(nèi),我們的鎖相環(huán)輸出一個(gè)完整的正弦信號(hào)需要用400個(gè)點(diǎn)來構(gòu)成。換句話說,我們鎖相環(huán)的輸出是一個(gè)由400個(gè)點(diǎn)構(gòu)成的周期離散信號(hào)序列。取400個(gè)點(diǎn)放到excel中畫圖,會(huì)顯示一個(gè)完整周期的正弦信號(hào)。
2、 DSP產(chǎn)生的捕獲中斷,或者稱之為過零點(diǎn)中斷。
通過寄存器的相關(guān)設(shè)置,可以讓DSP的IO口在捕捉到上升沿或者下降沿信號(hào)時(shí)進(jìn)入中斷,執(zhí)行相關(guān)代碼。這里我們舉例在DSP捕獲到上升沿時(shí)進(jìn)入中斷??梢钥吹矫窟^一個(gè)電網(wǎng)周期就會(huì)進(jìn)入一次捕獲中斷服務(wù)子程序,執(zhí)行相關(guān)代碼。
3、 正弦表
我們的DSP會(huì)存儲(chǔ)一個(gè)周期的正弦表。點(diǎn)數(shù)越多,我們通過Excel畫出的正弦信號(hào)就越接近連續(xù)信號(hào)。鎖相環(huán)的輸出也相對(duì)更精確。下面是一個(gè)DSP存儲(chǔ)的400個(gè)點(diǎn)的正弦表序列。太長了,只貼出前100個(gè)點(diǎn)。
0 257 515 772 1029 1285 1542 1798 2053 2309 2563 2817 3070 3322 3574 3825 4075 4323 4571 4818 5063 5307 5550 5791 6031 6270 6507 6742 6976 7208 7438 7667 7893 8118 8340 8561 8779 8995 9209 9421 9630 9837 10042 10244 10444 10641 10835 11027 11216 11402 11585 11766 11943 12118 12290 12458 12624 12787 12946 13102 13255 13405 13551 13694 13833 13970 14102 14232 14357 14480 14598 14713 14825 14932 15036 15137 15233 15326 15415 15501 15582 15660 15733 15803 15869 15931 15989 16044 16094 16140 16182 16221 16255 16285 16311 16333 16352 16366 16376 16382
說到這里,大家可能明白了,鎖相環(huán)的輸出就是這個(gè)正弦表。只是這個(gè)正弦表在任意時(shí)間的值完全由我們所控制。當(dāng)DSP捕捉到上升沿過零點(diǎn)信號(hào)時(shí)。我們知道此時(shí)電網(wǎng)的相位是0度。若我們?cè)陔娋W(wǎng)過零時(shí)刻以控制頻率20K(即在上面說的定時(shí)器中斷服務(wù)子程序中)開始輸出正弦表,第1次為第1個(gè)點(diǎn),第二次為第2個(gè)點(diǎn),以此類推,這樣20ms的電網(wǎng)周期時(shí)間內(nèi),我們輸出了400個(gè)點(diǎn),正好輸出了一個(gè)完整的正弦信號(hào),且和電網(wǎng)采樣信號(hào)同頻同相。這時(shí)有的朋友可能看出來了,若此時(shí)電網(wǎng)信號(hào)不是標(biāo)準(zhǔn)的50HZ呢。鎖相環(huán)的輸出還是50HZ啊,而且會(huì)產(chǎn)生相差啊。
下面我們就要詳細(xì)介紹鎖相的過程了。因?yàn)殒i相有很多種方法,我不可能全部詳細(xì)的介紹給大家。就算過零點(diǎn)鎖相也有好幾種處理方法,只是拋出某種思路給大家。由于本人表達(dá)能力有限,表達(dá)的可能不是很清楚,歡迎大家就問題提出討論,共同進(jìn)步。
寫的很詳細(xì)呀,繼續(xù)繼續(xù)
哥們把這個(gè)改為參賽帖吧~
由于電網(wǎng)相位,和逆變器的相位是會(huì)一直飄動(dòng),產(chǎn)生累積誤差,所以第一次鎖相OK后,還需要實(shí)時(shí)跟蹤市電相位和頻率,要做到每個(gè)周期都鎖相。
如果電網(wǎng)為49HZ,此時(shí)要去鎖定這個(gè)49HZ的頻率和相位,兄弟你該怎么辦呢?是調(diào)整SPWM的頻率還是點(diǎn)數(shù)跟著調(diào)整呢?
