數字鎖相環介紹
占一樓。先說鎖相環中最基本的過零點鎖相的原理,后面我會給出相關的軟件代碼實現方法。過零點鎖相主要原理是,通過硬件采樣比較電路將電網信號轉化成方波信號,由DSP或者單片機通過捕獲相應的上升沿或者下降沿信號,計算相鄰兩個上升沿(或者下降沿)的時間即可得到電網周期。
此時,對于DSP來說,信號的頻率是鎖相環(PLL)唯一的輸入信息。得到了頻率信息以后,可以確定了,鎖相環的輸出信號的頻率一定會等于電網采用信號頻率。那么我們如何能夠得到電網相位信息呢。假設電網電壓采樣信號函數為sin(2*PI*f*t + Φ1),鎖相環輸出信號為sin(2*PI*f*t + Φ2),當Φ1=Φ2時,即完成了鎖相。那么這個過程是如何實現的呢?
在介紹鎖相過程之前,有幾個基本要用到的基本概念簡單的闡述一下,不是從事數字電源的朋友可能不是很了解。
1、 DSP定時器的/頻率/周期及中斷的產生
時器:學過單片機的朋友都懂,不作詳細介紹了。可以進行加計數,也可以進行減計數。具體模式需要對相關寄存器進行配置。在數字電源中一般配置成加減計數。定時器在一個控制周期內由0先加計數到周期,在從周期值減計數到0,周而復始。如下圖:
DPTR = fclk/fl/2
fclk--------定時器的時鐘頻率
fl----------我們想要設置的控制頻率
DPTR---------定時器周期寄存器值
舉個例子,定時器配置的時鐘頻率假設為150MHZ,控制頻率為20KHZ,可以算出DPTR為3750.表示定時器從0計數到3750,需要花費25us.看看上面的圖,像不像一個20KHZ的三角形載波?
現在假設我們設定載波頻率為20KHZ,一般情況下我們的控制頻率等于載波頻率(當然也可以不等)。現在我們設定DSP定時器每計數到3750就會進入一次中斷,表示每過50US會進入一次定時器周期中斷。如果我們需要輸出一個50HZ的正弦電壓信號。表明在一個周期20ms的時間內,DSP產生了400次定時器周期中斷。現在可以看出在20ms的時間內,我們的鎖相環輸出一個完整的正弦信號需要用400個點來構成。換句話說,我們鎖相環的輸出是一個由400個點構成的周期離散信號序列。取400個點放到excel中畫圖,會顯示一個完整周期的正弦信號。
2、 DSP產生的捕獲中斷,或者稱之為過零點中斷。
通過寄存器的相關設置,可以讓DSP的IO口在捕捉到上升沿或者下降沿信號時進入中斷,執行相關代碼。這里我們舉例在DSP捕獲到上升沿時進入中斷。可以看到每過一個電網周期就會進入一次捕獲中斷服務子程序,執行相關代碼。
3、 正弦表
我們的DSP會存儲一個周期的正弦表。點數越多,我們通過Excel畫出的正弦信號就越接近連續信號。鎖相環的輸出也相對更精確。下面是一個DSP存儲的400個點的正弦表序列。太長了,只貼出前100個點。
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
說到這里,大家可能明白了,鎖相環的輸出就是這個正弦表。只是這個正弦表在任意時間的值完全由我們所控制。當DSP捕捉到上升沿過零點信號時。我們知道此時電網的相位是0度。若我們在電網過零時刻以控制頻率20K(即在上面說的定時器中斷服務子程序中)開始輸出正弦表,第1次為第1個點,第二次為第2個點,以此類推,這樣20ms的電網周期時間內,我們輸出了400個點,正好輸出了一個完整的正弦信號,且和電網采樣信號同頻同相。這時有的朋友可能看出來了,若此時電網信號不是標準的50HZ呢。鎖相環的輸出還是50HZ啊,而且會產生相差啊。
下面我們就要詳細介紹鎖相的過程了。因為鎖相有很多種方法,我不可能全部詳細的介紹給大家。就算過零點鎖相也有好幾種處理方法,只是拋出某種思路給大家。由于本人表達能力有限,表達的可能不是很清楚,歡迎大家就問題提出討論,共同進步。
寫的很詳細呀,繼續繼續
哥們把這個改為參賽帖吧~
由于電網相位,和逆變器的相位是會一直飄動,產生累積誤差,所以第一次鎖相OK后,還需要實時跟蹤市電相位和頻率,要做到每個周期都鎖相。
如果電網為49HZ,此時要去鎖定這個49HZ的頻率和相位,兄弟你該怎么辦呢?是調整SPWM的頻率還是點數跟著調整呢?
