jjzjj

正弦波产生电路_文氏桥振荡

仙不悔 2024-02-16 原文

文章目录

文氏桥振荡电路产生正弦波(双电源和单电源)

图1:1Khz正弦波产生电路



一、振荡原理

图2:正弦波振荡原理图示

产生振荡信号的2个重要条件:

  • 正反馈组件不能产生任何相移。即反馈回同相放大器的信号与输出信号同相。

  • 振荡器的闭环增益必须为1。即如果同相放大器的增益为 A v A_{v} Av,则正反馈组件的增益必须为 1 A v \frac{1}{A_{v}} Av1,这样才能使闭环增益为1。

此处利用了运算放大器上电即产生白噪声,将该白噪声进行放大,从中通过特定的反馈组件进行选频并放大。过程图示如图 3 所示:

图3:选频放大图示



二、选频及正反馈组件增益设置

本文选用了超前-滞后电路来实现选频及 1 A v \frac{1}{A_{v}} Av1

①超前及滞后电路

图4:RC超前及滞后电路

将两个电路组合得到“超前-滞后”电路

图5:超前-滞后电路及其幅频、相频特性

谐振频率公式
f r = 1 2 π R 1 R 2 C 1 C 2 = 1 2 π R C f_{r}=\frac{1}{2 \pi \sqrt{R_{1} R_{2} C_{1} C_{2}}}=\frac{1}{2 \pi R C} fr=2πR1R2C1C2 1=2πRC1

通过设置 R C RC RC的参数,从而可以实现选频的目的。

对于该“超前滞后”电路在运放中加入反馈,计算正反馈组件的放大倍数(并非同相端反馈),其中 R 1 = R 2 = R ; C 1 = C 2 = C R_{1}=R_{2}=R;C_{1}=C_{2}=C R1=R2=R;C1=C2=C

图6:RC振荡电路计算讲解图

设: C 1 、 C 2 C_{1}、C_{2} C1C2之间电压为 V p V_{p} Vp

则: V p = Z p Z p + Z S V o V_{p}=\frac{Z_{p}}{Z_{p}+Z_{S}} V_{o} Vp=Zp+ZSZpVo

R 2 R_{2} R2 C 1 C_{1} C1并联阻抗: Z p = R ∥ ( 1 2 π f C j ) Z_{p}=R \|\left(\frac{1}{2 \pi f C j}\right) Zp=R(2πfCj1)

R 1 R_{1} R1 C 2 C_{2} C2串联阻抗: Z S = R + 1 2 π f C j Z_{S}=R+\frac{1}{2 \pi f C j} ZS=R+2πfCj1

代入得到正反馈增益: B = V o V p = 1 3 + j ( f f r − f r f ) B=\frac{V_{o}}{V_{p}}=\frac{1}{3+j\left(\frac{f}{f_{r}}-\frac{f_{r}}{f}\right)} B=VpVo=3+j(frfffr)1

A为同相增益,所以整个电路增益为
T ( j f ) = A B = 1 + R f R 3 3 + j ( f f r − f r f ) T_{(j f)}=A B=\frac{1+\frac{R_{f}}{R_{3}}}{3+j\left(\frac{f}{f_{r}}-\frac{f_{r}}{f}\right)} T(jf)=AB=3+j(frfffr)1+R3Rf

该式峰值会出现于 f = f r f=f_{r} f=fr处,得到 T ( j f ) = 1 + R f R 3 3 T_{(j f)}=\frac{1+\frac{R_{f}}{R_{3}}}{3} T(jf)=31+R3Rf

其中为 T ( j f ) T_{(j f)} T(jf)为实数,净相移为0。


为了稳定振荡,依据巴克豪森稳定性准则,电子振荡器系统信号由输入到输出再反馈到输入的相差为360°,且增益为1。因此同相反馈端的增益和正反馈的增益乘积 T ( j f ) = 1 T_{(j f)}=1 T(jf)=1,即为 T ( j f ) = 1 + R f R 3 3 = 1 T_{(j f)}=\frac{1+\frac{R_{f}}{R_{3}}}{3}=1 T(jf)=31+R3Rf=1,解得 R f R 3 = 2 \frac{R_{f}}{R_{3}}=2 R3Rf=2

所以要确保在低信号时能够起振,需要使得整体增益大于1,换言之为了起振,初始的 R f R 3 > 2 \frac{R_{f}}{R_{3}}>2 R3Rf>2,但是为了稳定输出,最终又需要 R f R 3 = 2 \frac{R_{f}}{R_{3}}=2 R3Rf=2

此外确保低信号的起振速度和高信号的限幅减小的速度相差不大的同时能够自动限制幅值(正弦波上升和下降的对称度),本制作使用了两个反向并联稳压管串联一个电阻来实现。

图7:振荡电路的自稳定网络

①当输出小信号时,二极管截止,次数只有 R 5 R_5 R5回路导通,同相增益 V o V i = 1 + R 5 R 1 = 1 + 27 10 = 3.7 \frac{V_{o}}{V_{i}}=1+\frac{R_{5}}{R_{1}}=1+\frac{27}{10}=3.7 ViVo=1+R1R5=1+1027=3.7,总增益为 T ( j f ) = 1 + R 5 R 1 3 = 1.2333 T_{(j f)}=\frac{1+\frac{R_{5}}{R_{1}}}{3}=1.2333 T(jf)=31+R1R5=1.2333

②当输出大信号时,两二极管分别充分导通,使得增加 R 2 R_2 R2,同相增益 V o V i = 1 + R 5 ∥ R 2 R 1 = 1 + 17.5325 10 = 2.75 \frac{V_{o}}{V_{i}}=1+\frac{R_{5} \| R_{2}}{R_{1}}=1+\frac{17.5325}{10}=2.75 ViVo=1+R1R5R2=1+1017.5325=2.75,总增益为 T ( j f ) = 1 + R 5 ∥ R 2 R 1 3 = 0.5844 T_{(j f)}=\frac{1+\frac{R_{5} \| R_{2}}{R_{1}}}{3}=0.5844 T(jf)=31+R1R5R2=0.5844

调节 R 2 R_2 R2可以调节自稳定的程度,总之要使得放大倍数小于3。

此处实测振荡所产生的正弦波限幅限制减小需要小的增益才能匹配起振。

注:倘若出现削波失真,注意一下同相放大倍数是不是调太高了(不是正反馈组件



三、单电源应用电路(加偏置)

运放供电一般为正负电源供电,倘若只有正电源的话,以上电路产生的正弦波只会有正半周输出,所以只有正电源供电时,需要考虑加偏置,修正电路如下:

图8:单电源供电电路

新增 R 7 R_{7} R7,取值看自己需要的偏置电压,这个直流偏置就看 R 7 R_{7} R7 R 4 R_{4} R4的比值,此处决定了蓝色位置的直流电压,在计算交流频率时,这时需要把 R 7 R_{7} R7 R 4 R_{4} R4并联计算,公式为: f r = 1 2 π R 1 R 2 C 1 C 2 f_{r}=\frac{1}{2 \pi \sqrt{R_{1} R_{2} C_{1} C_{2}}} fr=2πR1R2C1C2 1

新增 C 4 C_{4} C4,利用电容的“隔直通交”,在直流时,此处断开,反相输入端电压等于蓝色圈的电压,运放这部分电路等效于电压跟随器,输出蓝色圈电压的直流偏置。而交流回路和之前一样。但需要注意的是,电容存在容抗,此处需要计算的,我倾向于取 C 1 C_{1} C1 C 2 C_{2} C210倍值,实测此电容值会影响输出正弦波的频率(计算谐振频率时千万不要忘记 R 7 R_{7} R7),但取10倍时频率就会和接近理论计算值,这里我懒得计算了,所以就这样吧哈哈哈。

再者,因为加了 R 7 R_{7} R7,所以“超前-滞后”电路的衰减也不再是 1 3 \frac{1}{3} 31了😆,需要计算一下,串并联网络发生变化,故同相放大这里的阻值也需要更换以匹配,很好理解。
最后输出位置我们串联一个电容,将直流成分滤除,电路为:

图9:单电源滤除直流成分的正弦波发生电路


图10:波形对比

图11:实际波形(还行)

图示电路输出频率因为加了 R 7 R_{7} R7,所以振荡频率不再是 1 K h z 1Khz 1Khz,需要重新调整相应数值,设计电路时按需选择并计算,不再叙述😆😏。


2021.12.3 作 / 灵感来源于某小孩的课设

有关正弦波产生电路_文氏桥振荡的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. ruby - 猴子修补 float 中缀运算符产生意想不到的结果 - 2

    重新定义Float#/似乎没有效果:classFloatdef/(other)"magic!"endendputs10.0/2.0#=>5.0但是当另一个中缀运算符Float#*被重新定义时,Float#/突然采用了新的定义:classFloatdef/(other)"magic!"enddef*(other)"spooky"endendputs10.0/2.0#=>"magic!"我很想知道是否有人可以解释这种行为的来源,以及其他人是否得到相同的结果。ruby:ruby2.0.0p353(2013-11-22)[x64-mingw32]要快速确认错误,请运行thisscript.

  3. ruby - 为什么 Gemfile 语义版本控制运算符 (~>) 会产生与一个数字不一致的结果? - 2

    gemspec语义版本控制运算符~>(又名twiddle-wakka,又名pessimistic运算符)允许限制gem版本但允许进行一些升级。我经常看到它可以读作:"~>3.1"=>"Anyversion3.x,butatleast3.1""~>3.1.1"=>"Anyversion3.1.x,butatleast3.1.1"但是有了一个数字,这条规则就失效了:"~>3"=>"Anyversionx,butatleast3"*NOTTRUE!*"~>3"=>"Anyversion3.x"*True.Butwhy?*如果我想要“任何版本3.x”,我可以只使用“~>3.0”,这是一致的。就

  4. ruby - 为什么 openssl 在 windows 上产生错误但在 centos 上不产生错误:PKCS12_parse: mac verify failure (OpenSSL::PKCS12::PKCS12Error) - 2

    require'openssl'ifARGV.length==2pkcs12=OpenSSL::PKCS12.new(File.read(ARGV[0]),ARGV[1])ppkcs12.certificateelseputs"Usage:load_cert.rb"end运行它会在Windows上产生错误,但在Linux上不会。错误:OpenSSL::PKCS12::PKCS12Error:PKCS12_parse:macverifyfailurefrom(irb):21:ininitializefrom(irb):21:innewfrom(irb):21fromC:/Ruby192/

  5. 1个串口用1根线实现多机半双工通信+开机控制电路 - 2

    功能需求:主机使用一个串口,与两个从机进行双向通信,主机向从机发送数据,从机能够返回数据,由于结构限制,主机与从机之间只有3根线(电源、地、数据线),并且从机上没有设物理的电源开关,需要通过与主机连接的数据线来控制开机,总结如下:1、数据线只有1根2、能够双向通信3、主机能够控制从机开机4、主机可以单独向1个从机发数据,也可以同时向两个从机发送数据根据需求,设计出如下电路:工作原理分析:VCC_24V_IN、GND、LINE_L(LINE_R)三根线接线连接到从机,电源开启电路是从机内部的电源控制。开机的逻辑:*主机先上电,LINE_L因为主机的R1上拉而有高电平,使Q6导通,Q5的G极电压被

  6. Ruby 要求 'tk' 产生 LoadError : no such file to load -- tk - 2

    我无法让ruby​​成功地require'tk'。我正在使用rvm、ruby2.0.0、ActiveTcl-8.6和Ubuntu12.04LTS。我已经运行了随ActiveTcl一起提供的wish,它似乎正在运行。我查看了RVM网站http://rvm.io/integration/tk和几个像这样的StackOverflow问题RVMRubywithTKinstallation(OSX).我在不同版本的ruby​​上多次尝试rvmreinstall2.0.0--enable-shared--enable-pthread--with-tk--with-tcl但没有成功。有什么想法吗?当

  7. ruby - 将字符串插入数组中的数组会产生意外结果 - 2

    我在Ruby中有一个包含5个空数组的数组。我正在尝试使用运算符将字符串插入第一个数组,但结果是字符串被插入所有数组。请帮助我理解这一点。预期的输出是:#=>[["car"],[],[],[],[]]但我得到:#=>[["car"],["car"],["car"],["car"],["car"]]IRB转储:1.9.3-p194:001>output=Array.new(5,[])=>[[],[],[],[],[]]1.9.3-p194:002>output.inspect=>"[[],[],[],[],[]]"1.9.3-p194:003>output[0].inspect=>"[]"

  8. ruby - 在没有机架的情况下运行 Capybara 在使用 url 参数时会产生错误 - 2

    这是我的设置,基于此建议:HowtogetCucumber/Capybara/Mechanizetoworkagainstexternalnon-railssite在我将参数添加到URL之前它一直有效。对解决这个问题有什么建议吗?require'rspec'require'capybara/rspec'require'capybara/dsl'@test_url="test"RSpec.configuredo|config|config.includeCapybara::DSLendCapybara.configuredo|config|config.run_server=falsec

  9. ruby-on-rails - 杀死工头产生的进程 - 2

    我有以下Procfile:web:bundleexecunicorn-p$PORT-c./config/unicorn.rbredis:bundleexecredis-server/usr/local/etc/redis.confworker:bundleexecsidekiq运行$foremanstart启动Unicorn、Redis和Sidekiq,但我应该如何停止它们?杀死工头会使这三个人都离开。我可以使用ps看到这个:$psaux|grepredis|grep-vgrepme615600.00.025067841740s000S+9:36am0:01.28redis-serve

  10. ruby - 产生多个参数的链接枚举器 - 2

    我正在尝试弄清楚Ruby如何处理产生多个参数的链式枚举器。看看这个片段:a=['a','b','c']a.each_with_index.select{|pr|ppr}#prints:#["a",0]#["b",1]#["c",2]a.each_with_index.map{|pr|ppr}#prints:#"a"#"b"#"c"为什么select将参数作为数组生成,而map将它们作为两个单独的参数生成? 最佳答案 尝试:a.each_with_index.map{|pr,last|p"pr:#{pr}last:#{last}"}m

随机推荐