不可能用簡單的RC電路制作逆變器,我們注意到逆變器的重要性,因為這些設(shè)備在光伏系統(tǒng)中至關(guān)重要。不幸的是,重現(xiàn)一個完美的正弦波形(頻率f0 = 50/60 Hz)非常困難,甚至是不可能的。這意味著必然存在與f0成倍的諧波,如果系統(tǒng)沒有適當(dāng)屏蔽,這些頻率將產(chǎn)生電磁輻射,從而干擾其他傳輸/接收設(shè)備。
積分電路
練習(xí)1:考慮施加在具有時間常數(shù)τ = RC的積分器電路上的以下輸入:

其中:A = 10 V,τ0 = 1 s是特征時間,T = 8 s是周期。信號行為如圖1所示。該輸入是具有時間常數(shù)τ0的阻尼RLC電路的輸出,該電路每8秒回到初始狀態(tài)。因此,輸入信號的頻率為f0 = 1/8 Hz。
編寫一個Wolfram機(jī)器程序,可以重構(gòu)輸出信號,區(qū)分τ ≠ τ0和τ = τ0的情況。用這樣的設(shè)備能否制造逆變器?

解析解
這個練習(xí)的(表面)困難在于R和C值未知,但它們的乘積RC = τ(自由參數(shù))。在之前的教程中,我們看到由基爾霍夫第二定律導(dǎo)出的微分方程包含時間常數(shù)τ和電阻值R,我們還必須添加電荷的初始條件,該條件可能是非零的(在這種情況下,電容器初始是充電的,因為它經(jīng)歷了先前的瞬態(tài))。
通過解析地解決問題,在最后一步,即計算輸出信號時,變量R消失,因此問題得到解決。然而,直接寫出一個微分方程,其中未知函數(shù)不是電容器板上的電荷q(t),而是它們之間的電勢差,即輸出vout,這在計算上更簡單。
這是由于電荷和電容器電容之間的線性關(guān)系:q = Cvout。我們邀請讀者執(zhí)行所有步驟,這些步驟并不復(fù)雜,以得出上述必須用顯然的初始條件vout(0) = Cq(0) ≡ v(0)來解決的微分方程。
然而,有趣的情況是電容器初始未充電的情況,此時vout(0) = 0。這樣,僅在初始值下此問題的唯一解在圖2中給出,從中可以看出“積分器電路”這一表達(dá)的含義,因為輸入通過一個積分進(jìn)行處理。

這里出現(xiàn)一個問題:當(dāng)積分器電路的時間常數(shù)與輸入的時間常數(shù)重合時,vout(t)的解析表達(dá)式不能使用,因為該表達(dá)式返回不確定形式0/0。如所周知,在這種情況下,微分方程在τ = τ0時被重寫,然后進(jìn)行積分。
在圖3中,我們比較了輸出的趨勢與輸入的趨勢,對于以下τ值,四舍五入到小數(shù)點后三位:τ = 0.002,1.002,2.002,3.002 s。注意,第二個值接近τ0。我們因此看到,當(dāng)τ趨近于零時,輸出趨近于輸入。在相反的極限(τ → +∞)中,輸出趨近于完全為零的信號,正如預(yù)期中那樣,因為在這個極限下,電阻或電容趨近于+∞。

關(guān)于實現(xiàn)逆變器的可能性,答案是否定的,因為這需要一個更復(fù)雜的設(shè)備。從積分函數(shù)的符號(圖2)可以看出這一點,該符號顯然是正的。根據(jù)定積分的已知性質(zhì),我們得到這樣的符號在[0, t]內(nèi)定義了積分。
重置微分方程為τ = τ0并求解,我們得到圖4和圖5,其中我們首先在周期性區(qū)間比較vout(t)與vin(t),然后在[0, 80 s]內(nèi)進(jìn)行比較。


使用Mathematica的解法
一旦設(shè)置了適當(dāng)?shù)腤olfram機(jī)器微分方程,將τ作為自由參數(shù),如果我們嘗試?yán)L制τ = τ0的解,內(nèi)核將嘗試通過執(zhí)行除以0的操作來消除不確定形式0/0,隨之而來的是錯誤消息。我們可以將WM分成兩個不同的WM,一個用于τ ≠ τ0,另一個用于τ = τ0,但更優(yōu)雅的做法是設(shè)置一個IF循環(huán),如圖6的屏幕截圖所示,我們突出了相應(yīng)Mathematica代碼的一些重要方面。

關(guān)于整個代碼的PDF格式,我們參考文獻(xiàn)1。首先,不能使用延遲賦值“:=”,這告訴內(nèi)核僅在新輸入調(diào)用時確定相應(yīng)的表達(dá)式(函數(shù)、指令、其他)。這種類型的賦值用于遞歸程序和緩存技術(shù),但在處理導(dǎo)數(shù)等時會產(chǎn)生問題。
例如,如果我們使用延遲賦值來確定某個函數(shù)f(x)的導(dǎo)數(shù),然后詢問在某個特定點x0的導(dǎo)數(shù)值,內(nèi)核首先在f(x)的解析表達(dá)式中替換x0的值,然后再計算導(dǎo)數(shù),隨之而來的是明顯的錯誤消息(實際上應(yīng)該為零,因為常數(shù)的導(dǎo)數(shù)為零)。可以使用強(qiáng)大的Evaluate指令,或者更簡單地使用直接賦值“=”。
對于微分方程而言,情況更復(fù)雜,僅使用直接賦值是不夠的,而需要插入Evaluate,我們在后綴表示法中使用它以避免括號的過度使用。代碼被正確解釋,我們通過與解析結(jié)果進(jìn)行比較進(jìn)行了若干檢查。
關(guān)于IF循環(huán),眾所周知,它是傳統(tǒng)編程語言的典型特征,在Mathematica中,其語法如下(*之間的字符串是被內(nèi)核忽略的注釋條目):
If[ (*condition*) expr, (*then*),
t (*else*) p
]
也就是說,如果expr為真,內(nèi)核執(zhí)行t,否則執(zhí)行p。例如:
復(fù)制In[1]=test[x_] := If[ x^3 > 14,
Print[“正確答案。結(jié)果為:” , x^3], Print[“錯誤答案”]
]
In[2]=test[2]
錯誤答案
In[3]=test[3]
錯誤答案
正確答案。結(jié)果為:216
結(jié)論
盡管“封裝”軟件如Mathematica/Maple、Maxima等表現(xiàn)得像一個黑箱,因為它們不允許直接訪問代碼,但在許多應(yīng)用中,它們極其靈活,允許用幾行代碼解決復(fù)雜問題(這種情況是傳統(tǒng)編程語言如Fortran或C無法實現(xiàn)的)。
-
逆變器
+關(guān)注
關(guān)注
291文章
4819瀏覽量
209226 -
RC電路
+關(guān)注
關(guān)注
2文章
165瀏覽量
30580
發(fā)布評論請先 登錄
相關(guān)推薦
評論