移相电路就是对输入信号(一般是正弦波)进行相位控制,而不改变其幅度,本推文以移相电路为例,展示模拟电路的反馈设计技巧与方法:
一、全通滤波器实现移相


以上是两种移相电路 的原理,其输出幅度保持不变,移动的相位随R3和C而改变,在C和R3确定时其移相是arctan函数,非线性的,当WR3C较小时,近似线性arctan(x)=x,|x|<=0.5,仿真伯德特的相位如下:

上图可见,在WR3C较小时,是线性相移,即确定最最高频率Wmax后可以反向计算R3C<=0.5/Wmax,确定线性相移应用的时间常数R3C。

二、反馈控制设计举例
现在需要设计一个电路,实现输入频率在一定范围内变化、输入信号的初始相位变化时,输出信号始终超前输入信号90°,而输出信号幅度保持与输入信号幅度相同。这该如何实现?
应用前述的全通滤波器,好像有希望实现,关键是要能调整C与R3,而且要刚好调整到对输入信号移相90°,这是问题的关键。我们把问题细分一下:
1)如何改变C或R3?
2) 如何检测相位差?这其实就是要根据相位差来反馈控制C或R3的变化,可以采用模拟控制也可用数字控制方式。

先说1),改变C当然不能人去手动调节,要用电信号自动调节,首先想到的就是反向偏置的变容二极管,本推文我们不选择改变C,如果是改变R3那么如何做?当然不能用普通电位器了,我们还是需要能电控改变阻值的东东:
a)不少人可能首先想到的是数字电位器,这个有些问题:首先太复杂,意味着你要使用单片机,而且数字电位器都是离散电阻值,假设一步对应100欧姆,1.5khz时需要900欧姆,刚好合适,而1.525khz输入频率,如果需要923.56欧,就完了,因为一步对应100欧姆的数字电位器只有900欧姆、1000欧姆,没有923.56欧姆,会影响控制精度,所以数字电位器不是最佳方案。那么你非要使用数字电位器又该怎么办?那也不是没有办法,只是精度差一些:比如,你可以参考PWM控制的思路,在20次控制中,1000*(20-x)/20+900*x/20=923.56,计算出x次选择900欧,剩下(20-x)选择1000欧。
b)还有就是选择JFET管,工作在可变电阻区,这是非常好的方案,只是要控制JFET的工作电压和扩展JFET的线性

再说2),这里关键是需要一个鉴相器,来检测相位差,二极管鉴相器、二极管平衡环状鉴相器、乘法器…都可以做鉴相器,这里为了简单选择乘法器做鉴相器
先给出整体仿真电路和仿真实验结果:

仿真演示:

移相

这个电路的基本思想:就是检测90°相位差,以此对R3形成反馈控制,最终实现输出严格超前输入90°的效果,很多貌似神奇的电路设计其实基本思想都很简单,都是围绕反馈做文章!可以说能灵活应用反馈的思想和技巧,模拟电路的天下如果一分为四,你已得其一,这个设计也是临时起意而做,目的就是演示反馈控制在模拟电路设计中得重要性!

反馈跟踪控制电路由鉴相器和JFET可变电阻构成:
1)鉴相器这里采用的是乘法器,把输出信号Asin(wt+Po)与输入信号Asin(wt+P1)相乘,sinasinb=-0.5[cos(a+b)-cos(a-b)],当两者差90°时结果只有cos2wt 二倍频分量,无直流分量,而非90°相位差时,会有一个直流分量0.5cos(Po-P1), 推文中使用一个一阶RC取出直流分量,然后对直流分量进行积分,这个积分器是必须的,其作用就是如果误差没有消除就不断增强调节作用,此处如果换成放大器就没有持续调节作用了,其实这就是PID控制中的积分环节,目的就是消除最终的稳态误差!此电路只是临时起意设计的,参数还没有优化计算。

2)JFET可变电阻
JFET的输出电流ID与VGS(栅源电压)、VDS(漏源电压)关系如下,可以推导出其输出导纳gDS

现在如下图所示,通过R3/R2引入对Vds信号的反馈,目的是减小JFET输出电阻的非线性,造成非线性的原因从上图的gDS公式可见其还是Vds的函数,因此我们的做法还是负反馈!引入对Vds信号的负反馈来抑制Vds对ID的影响!

失真补偿以后,失真度降为0.022%,这改善非常明显,记住善于应用负反馈者,如果模拟电路世界的天下一分为四,你已得其一!是不是有点当年诸葛大神的隆中对三分天下的意思?

这种JFET低失真可变电阻很有用,例如下图的低失真系数的正弦波振荡器:

红色区域左下角的1:1运放就是为了隔离R8/R9/VR对R4的负载效应; TL071也是反馈控制中的积分环节,目的一样是消除稳态误差;D2/D3构成主要的信号幅度信息提取网络,采用半波整流电路取出正半周信号,通过积分器其实就是半波整流输出信号的平均直流分量,该分量与正弦波的幅度成比例:

二极管半波整流虽然简单而且不精确,但是和积分器搭配却是很常见的信号幅度提取与反馈控制的手段!

简约却不简单,平凡但不平庸,
出奇不意的设计,实实在在的技巧
关注微信公众号: RiscV与IC设计

精确移相电路的设计举例相关推荐

  1. 一阶电路中的时间常数_精确移相电路的设计举例

    移相电路就是对输入信号(一般是正弦波)进行相位控制,而不改变其幅度,本推文以移相电路为例,展示模拟电路的反馈设计技巧与方法: 一.全通滤波器实现移相 以上是两种移相电路 的原理,其输出幅度保持不变,移 ...

  2. 一阶电路误差分析_精确移相电路的设计举例

    移相电路就是对输入信号(一般是正弦波)进行相位控制,而不改变其幅度,本推文以移相电路为例,展示模拟电路的反馈设计技巧与方法: 一.全通滤波器实现移相 以上是两种移相电路 的原理,其输出幅度保持不变,移 ...

  3. 汇编语言---子程序设计举例(两组数据相加)

    汇编语言---子程序设计举例(两组数据相加) 配置环境 要求 编辑程序 运行程序 后续 配置环境 首先双击下载程序进行下载.(没有安装程序的,可以下载我为大家准备的安装文件.) 不会安装的可以看一下文 ...

  4. 计算机械转速,机械制造装备设计举例-计算转速.ppt

    <机械制造装备设计举例-计算转速.ppt>由会员分享,可在线阅读,更多相关<机械制造装备设计举例-计算转速.ppt(4页珍藏版)>请在人人文库网上搜索. 1.计算转速:如图所示 ...

  5. 大白书 1.3节 高效算法设计举例

    大白书 1.3节 高效算法设计举例 例题 17 UVA 11462 简单题,注意那个数值的范围是100以内就可以了. #include <cstdio> #include <cstr ...

  6. 三相逆变器双pi控制器参数如何调节_Boost 变换器 PI参数设计举例

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 905723370 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢迎 ...

  7. 模块递归拆分法: 设计模式 设计原则,复杂层次设计举例。系统重构 装饰模式,门面模式,代理模式

    程序员最牛逼的能力是模块拆分能力, 然后才能利用模块依赖的工具,java 9 或者 runtime期的osgi ,其他maven插件,maven build期. 其他idea插件,类似阿里云的代码规范 ...

  8. linux与非门版图设计,版图设计举例: TTL五管单元与非门电路图

    (1)决定隔离区数目 此电路共有5个隔离区(压焊块除外),如图中虚线所示,如包括10个引出端压焊块,则共要15个隔离区. (2)确定端头的排列及引出端数 对所有的电路来说,输入.输出.电源.接地这些引 ...

  9. 软件系统测试用例设计,手机软件系统测试用例设计举例.doc

    文档介绍: 由安博测试空间技术中心./提供一.等价类分析法等价类划分方法针对手机状态大致可以归几个大类:1.按键类(等价法):有效输入和无效输入(有效输入指UM和菜单指示;无效输入指测试菜单功能此时没 ...

最新文章

  1. Thinkphp 打印最近执行的一条SQL语句
  2. windows tomcat 升级openssl_Linunx开发环境配置——Tomcat
  3. 计算机网络学习笔记(27. Email应用概述)
  4. 将cron表达式解析成中文,方便客户理解
  5. Django常见面试题总结(一)
  6. 目前全网最详细的树莓派 Pico入门指南!
  7. android 蓝牙打印代码,分享一个b4a下安卓操作蓝牙打印机的代码
  8. 【Android+Kotlin】自适应CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout与Palette
  9. 1020:Anniversary Cake
  10. 多线程系列学习:ABA问题
  11. RTSP协议网络摄像头如何实现内网到公网的无插件直播,同时支持微信扫码直播观看?
  12. 全球及中国布瑞加替尼片行业供需现状及发展前景预测报告(2022-2027)
  13. codeforces 1546B AquaMoon and Stolen String
  14. 使用easyUI 动态改变datagrid的columns
  15. Hive - 增删改 Hive 表字段
  16. [开源作品] 译文管理系统
  17. js 向数组前、后 添加元素
  18. 一个完整的网络项目,如何根据需求配置交换机?值得收藏学习
  19. QMS-云质-质量管理软件-QMS软件-如何选择质量管理软件?
  20. 社会生活-社会生活十大著名法则:社会生活十大著名法则

热门文章

  1. VS BUG(5) error C2491: “****“: 不允许 dllimport 函数 的定义
  2. 8、程序设计语言与语言处理程序基础
  3. python安装错80072ee2_更新Win10系统出现0x80072ee2错误的解决方法
  4. git 命令行忽略提交_Git忽略提交的3种方法及Git忽略规则
  5. [C++]-网络库mongoose简介
  6. C语言程序设计CAP——C语言学习笔记(七) 上
  7. 致敬一个时代的谢幕||老佛爷Karl Lagerfeld
  8. 采用sql存储的方法保存所爬取的豆瓣电影
  9. 牛客_数轴机器人移动
  10. BigDecimal 往左移动两位小数_人教版小学数学四年级下册小数点位置移动引起小数大小的变化公开课优质课课件教案视频...