一種安全可調的穩壓器設計

作者 : Peter Demchenko,University of Vilnius

可調穩壓器在需要調整其輸出電壓時的典型使用…

1顯示了LM350 (LM317)可調穩壓器在需要調整其輸出電壓時的典型應用。

圖1:LM350 (LM317)可調穩壓器在需要調整輸出電壓時的典型使用。

該電壓在此給出的大約為:

eo = Vref * (R2/R1 + 1)

電位器R2通常是電路中最不可靠的部份。如上面的等式所示,電位計的擊穿(例如,觸點丟失、開路)會使R2的有效值最大化,而使輸出電壓也達到最大值——僅比輸入電壓低約1.5V。

當很少進行調整且負載的安全性不重要時,這可能不是一個很大的問題。但是,當我們想要進行頻繁調整,或者事先不知道負載時(例如在實驗室電源的情況下),2a中的電路可能是更好的選擇。

圖2a:可調穩壓器的安全改進版本。

然而,該電路不能將其輸出電壓調節到下限Vref,這是它的局限性。

有幾種安全可調穩壓器的替代配置,它們或多或少地避免了越界的危險。最安全的情況是讓輸出電壓下降到非常接近Vref,這需要3或4個額外的元件(即電阻器和電晶體),因此,讓我們看一下2b中具有更多折衷的配置。

圖2b:安全可調穩壓器的替代配置。

該電路可以將其輸出電壓調節到下限Vref。輸出電壓(如果電位器Rp發生擊穿)約為2…5V,這是一個折衷值。

由於2b中的電路計算不是很簡單,因此此處將以Python程式碼的形式提供一些計算路徑。

該電路有兩個輸出電壓範圍:從eo11到eo12,以及從eo21到eo22 (見3程式碼)。該範圍是由開關Sw (例如nJFET、nFET或任何良好的機械簧片繼電器)進行選擇的。

請注意:如果電阻器R11和Rp太大而無法提供穩壓器IC所需的最小負載(最大10mA),那麼如果總負載太輕,輸出就可能會失控。

為了避免這種情況,開始計算時為R11選擇任何合適的值可能更明智。

還必須提供Rp值和範圍。

3中的程式碼給出了R22和R23的計算。

#-code-begins
R11=560   # Ohm
Rpot=2180  # Ohm</p/>eo11=1.25  #V
eo12=5.6   #V
eo21=5.4    #V
eo22=23.0   #VVref=1.25  #V
print()# Let
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1
Rp = Rpot

from math import sqrt

def checkEq(R11, R22, R23):
Rx=R11 – Ra/K12
if Rx != 0: print(“Err R11:”, Rx)

Rx=R22*R23/(R22+R23) – K21*(Rp+R11)
if Rx != 0:  print(“Err (2):”, Rx)

Rx=R11 – (R22*(Rp+R23)/(R22+Rp+R23) / K22)
if Rx != 0:  print(“Err (3):”, Rx)
return

def par(r1,r2): return(r1*r2/(r1+r2))

eo=eo12
R1 = R11
R2 = R1*((eo/Vref) -1)
R22 = R2*Rpot / (Rpot – R2)

eo=eo21   #5.1V
#R1 = R11 + R21*Rpot / (R21 + Rpot)
#R2 = R1*(eo/Vref -1)
#R23 = R2

#eo=eo22   #24V ??

#R1 = R11
#R2 = R23 + R22*Rpot / (R22 + Rpot)
#eo = Vref*(R2/R1 + 1)
#eo22 = eo

#Let  
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1
Rp = Rpot
Ra = par(Rp,R22)

w3=K22/K21
A=w3*(R22 – K21*Rp) – R22
B=w3*R22*(R22+Rp) – Rp*(w3*K21*(Rp+R22)-R22) – R22*R22
C=Rp*R22*(0-w3*K21*(R22+Rp)-R22)

Q=B*B – 4*A*C
#print(A, B, C, Q)
if Q<0: exit(” Exit: Q<0, try another values for R11, Rpot, or ranges”)

R23_1 = (0-B + sqrt(Q)) /2/A
R23_2 = (0-B – sqrt(Q)) /2/A
print(”   R23_1, R23_2=”, R23_1, R23_2)
# since R23 should be > 0:  
if R23_1>0:  R23=R23_1
elif R23_2>0:  R23=R23_2
else:  print(“Error: both R23_1, R23_2 are not positives”)

# recalc eoij for a coherence check
eo12=Vref*(par(Rp,R22)/R11 +1)
eo21=Vref*(par(R23,R22)/(Rp+R11) +1)
eo22=Vref*(par(R22,R23+Rp)/R11 +1)
# update
K12 = eo12/Vref – 1
K21 = eo21/Vref – 1
K22 = eo22/Vref – 1

print(“Fig2c:”, f” eo12={eo12:.2f}”, f” eo21={eo21:.2f}”, f” eo22={eo22:.2f}”)
print(“Fig2c:”, f” Rpot={Rpot:.1f}”, f” R11={R11:.1f}”, f” R22={R22:.1f}”, f” R23={R23:.1f}”)
checkEq(R11, R22, R23)

# since the solution we got may be very sensitive due to a possible presence of a singular point in its vicinity (i.e. a small deviation of a resistor’s value can have large impact on the voltage) – hence 2 conclusions follows:
# – tolerances of resistors R11, R22, R23 have to be not worse than 1%;
# – the solution above has to be considered as a preliminary one, so we’ll make it more precise by the following code:  
R23lim=100*R23
R23=R23/3
while R23 < R23lim:
eo21_x=Vref*(par(R23,R22)/(Rp+R11) +1)
eo22_x=Vref*(par(R22,R23+Rp)/R11 +1)
if eo21_x – eo21 > 0.2: break
if abs(eo22 – eo22_x) < 0.1: break    # if eo22-x – eo22 < 0.1: break
R23 += 10   # +10 Ohm
else:  exit(“full cycle”)  
print( f” eo21={eo21_x:.2f}”, f” eo22={eo22_x:.2f}”,  f” R23={R23:.1f}”)

#-end-of-code-  

圖3:R22和R23計算程式碼。

來自調節端的50μA (典型值)電流iA (代表誤差項),將在R23上產生壓降。連同標稱1.25V參考電壓Vref,此壓降決定了電位器Rp發生擊穿時的輸出電壓:

eoBreak = iA * R22 + Vref

因此,當降低R22的值時,可以在某種程度上降低eoBreak的值。

(參考原文:A safe adjustable regulator,by Peter Demchenko)

本文同步刊登於EDN Taiwan 2023年4月號雜誌

活動簡介

從無線連接、更快的處理和運算、網路安全機制、更複雜的虛擬實境(VR)到人工智慧(AI)等技術,都將在未來的每一個嵌入式系統中發揮更關鍵功能。「嵌入式系統設計研討會」將全面涵蓋在電子產業最受熱議的「智慧」、「互連」、「安全」與「運算」等系統之相關硬體和軟體設計。

會中將邀請來自嵌入式設計相關領域的研究人員、代表廠商以及專家,透過專題演講、產品展示與互動交流,從元件、模組到系統,從概念設計到開發工具,深入介紹嵌入式系統設計領域的最新趨勢、創新和關注重點,並深入分享關於嵌入式系統設計的經驗、成果以及遇到的實際挑戰及其解決方案。

贊助廠商

加入LINE@,最新消息一手掌握!

發表評論