文氏桥正弦震荡电路
Wien Bridge Oscillator Tutorial and Theory
维恩桥振荡电路
一、前言
今天看到LTspice 中的一个测试电路, 维恩桥正弦波振荡电路。 这是仿真电路图。 核心部分是一运放LT1001构成的同相放大器,配合外围RC电路构成维恩桥正弦波振荡器。 下面是构成自动增益控制电路, 将输出信号进行检波后, 施加在耗尽型场效应管Q1的栅极, 增加它导通阻抗,进而降低运放电路的增益。 是的输出信号波形达到稳定。下面初步分析一下这个电路。
▲ 图1.1.1 Wein Bridge Oscillator Circuit
二、原理分析
在维恩振荡电路中, 是有这两对RC参数决定了震荡频率。 这是有RC串联并联组成的分压电路, 通常情况下, 两个电阻和两个电容采用相同的数值。 此时, 电路的传输频率特性就呈现一种个数的关系, 当频率达到特征频率时, 对应的传输比率达到最大值,为三分之一。 相位差恰好为0。 此时,如果电路的放大倍数超过3, 则会形成正反馈放大电路, 电路开始震荡。 下面对该电路进行仿真。 这里给出了输入输出之间的拉普拉斯变换公式。 经过化简,可以得到电路传输函数。 为了得到电路的频率特性, 将 s 被 j,omiga 替换。 可以计算出电路传输函数的幅度和相位曲线, 这里的R取10k欧姆, C取1nF。 可以看到在15.9kHz左右增益达到最大,最大值为 0.333 左右, 响应曲线恰好过零。
▲ 图1.2.1 维恩桥正弦震荡电路原理分析
from headm import *
from sympy import symbols,simplify,expand,print_latex
from sympy import *
s,C,R = symbols('s,C,R')
Xc = 1/s/C
RC = R*Xc/(R+Xc)
result = RC/(R+Xc+RC)
result = simplify(result)
print_latex(result)
_=tspexecutepythoncmd("msg2latex")
clipboard.copy(str(result))
根据前面得到的RC分压电路的传递函数, 推导一下对应震荡频率公式。 将 s 替换成 j, omiga, 可以看到当分母中的实部等于0, 分子分母都是虚数,约去 j,omiga, 便可以得到实数三分之一。 对应网络相移为0。 根据分母实部为0的条件, 可以得到对应的振荡频率公式。 这里是根据相移为 0 得到震荡频率公式。
▲ 图1.2.2 震荡公式推导
三、振荡频率
为了验证上面推导公式, 下面对于LTspice仿真数据进行处理。 仿真电路中的RC取值分别为 10k 欧姆以及 0.01 微法。 根据震荡频率公式, 可以计算出电路振荡频率应该为1.592kHz。
将仿真后的数据读入, 对该数据进行FFT, 可以看到数据频谱有一个峰值, 对应的频率为1578Hz。 这个数值比理论计算数值 1592Hz 略小。
四、增益控制
电路中增益控制是通过Q1 完成的。 改变R2的数值,可以改变运放初始的放大倍数。 这是将R2从原来的4.9k欧姆,增加到4.94k欧姆, 可以看到输出信号的幅值减少了。 如果继续增加到4.95k欧姆,电路无法震荡了。 这是将R2的阻值减少到4.8k欧姆, 震荡的幅值增加了。 继续减少R2, 输出幅值继续增加, 这是将R2减少到4.7k欧姆, 震荡出现不稳定。
※ 总 结 ※
本文对于LTspice中的维恩桥正弦波震荡电路进行了分析。 通过LTspice对电路震荡频率和AGC电路进行验证。
幅频特性推导
利用PYTHON符号推导工具求文氏桥谐振频率
前言
文氏电桥是文氏桥正弦波振荡器的核心反馈网络。 下面在两个电阻和电容取值相同的情况下推导网络幅频特性的最大值公式。 首先列写输入输出之间的传递函数。 这是对应的结果。 由于后期求解会涉及到很多公式推导, 下面利用Python 中的数学符号推理工具包协助推导。 这是Python程序。 引入 sympy 工具包以及其中应用到的一些函数。 请注意,这里使用 omega 来生成 o 对应的希腊字符。 利用 diff 函数完成对传递函数幅值函数的求导。 最后利用 print_latex 将结果转换成 latex 格式进行显示。
推导过程
根据文氏桥电路传递函数, 将其中的 s 替换成 j omega。 求传递函数的幅值, 然后对 omega 进行求导。 最终为了求导数的零点, 化简上面分式的分子。 最终等于 负 C 五次方 R 五次方 omega 五次方, 加上 C R。 因此分子的零点 可以由这个方程求得。 对应的解等于 C 乘以 R 的倒数。 这个过程可以使用 Python 中的符号推导工具包来帮助完成。
from headm import *
from sympy import symbols,simplify,expand,print_latex
from sympy import *
s,C,R = symbols(u"s,C,R")
o = symbols(r'\omega')
Hs = C*R*o/(C**4 * R**4 * o**4 + 7 * C**2 * R**2 * o**2 + 1)**(1/2)
dHs = diff(Hs,o)
result = simplify(dHs)
print_latex(result)
_=tspexecutepythoncmd("msg2latex")
clipboard.copy(str(result))
▲ 图2.1.1 文氏桥幅频特性最大值推导过程
下面是文氏电桥的传递函数, 将其中的 s s s 替换成 j ω j\omega jω 。
H ( s ) = C R ⋅ j ω ( 1 − C 2 R 2 ω 2 ) + 3 C R ⋅ j ω H\left( s \right) = {{CR \cdot j\omega } \over {\left( {1 - C^2 R^2 \omega ^2 } \right) + 3CR \cdot j\omega }} H(s)=(1−C2R2ω2)+3CR⋅jωCR⋅jω
求传递函数的幅频特性:
∣ H ( s ) ∣ = C R ω ( 9 C 2 R 2 ω 2 + 1 − 2 C 2 R 2 ω 2 + C 4 R 4 ω 4 ) 1 2 \left| {H\left( s \right)} \right| = {{CR\omega } \over {\left( {9C^2 R^2 \omega ^2 + 1 - 2C^2 R^2 \omega ^2 + C^4 R^4 \omega ^4 } \right)^{{1 \over 2}} }} ∣H(s)∣=(9C2R2ω2+1−2C2R2ω2+C4R4ω4)21CRω = C R ω ( C 4 R 4 ω 4 + 7 C 2 R 2 ω 2 + 1 ) 1 2 = {{CR\omega } \over {\left( {C^4 R^4 \omega ^4 + 7C^2 R^2 \omega ^2 + 1} \right)^{{1 \over 2}} }} =(C4R4ω4+7C2R2ω2+1)21CRω
求取幅频特性对于 ω \omega ω 的导数:
∣ H ( s ) ∣ ω ′ = C R ω ( − 2.0 C 4 R 4 ω 3 − 7.0 C 2 R 2 ω ) ( C 4 R 4 ω 4 + 7 C 2 R 2 ω 2 + 1 ) 1.5 + C R ( C 4 R 4 ω 4 + 7 C 2 R 2 ω 2 + 1 ) 0.5 \left| {H\left( s \right)} \right|^\prime _\omega = {{CR\omega \left( { - 2.0C^4 R^4 \omega ^3 - 7.0C^2 R^2 \omega } \right)} \over {\left( {C^4 R^4 \omega ^4 + 7C^2 R^2 \omega ^2 + 1} \right)^{1.5} }} + {{CR} \over {\left( {C^4 R^4 \omega ^4 + 7C^2 R^2 \omega ^2 + 1} \right)^{0.5} }} ∣H(s)∣ω′=(C4R4ω4+7C2R2ω2+1)1.5CRω(−2.0C4R4ω3−7.0C2R2ω)+(C4R4ω4+7C2R2ω2+1)0.5CR
上面表达式的分子为:
N H ( s ) = C R ω ( − 2 C 4 R 4 ω 3 − 7 C 2 R 2 ω ) + C R ( C 4 R 4 ω 4 + 7 C 2 R 2 ω 2 + 1 ) N_{H\left( s \right)} = CR\omega \left( { - 2C^4 R^4 \omega ^3 - 7C^2 R^2 \omega } \right) + CR\left( {C^4 R^4 \omega ^4 + 7C^2 R^2 \omega ^2 + 1} \right) NH(s)=CRω(−2C4R4ω3−7C2R2ω)+CR(C4R4ω4+7C2R2ω2+1)
= − C 5 R 5 ω 4 + C R = - C^5 R^5 \omega ^4 + CR =−C5R5ω4+CR
最终求解幅频特性对于 ω \omega ω 的导数零点为: ω = 1 C ⋅ R \omega = {1 \over {C \cdot R}} ω=C⋅R1
■ 相关文献链接:
● 相关图表链接: