电磁信号放大检波方案对比

01 放大检波


一、背景介绍

  今天看到同学们留言询问关于电磁组信号调理电路的问题。 在这个电路中,运放采用了单电源输出轨到轨放大器形式。 当零偏置LC谐振电压信号输入放大器之后, 运放的输出信号是放大后的半波整流信号。 因此后面的倍压整流电路 实际上就没有作用了, 只需通过一个RC低通滤波电路,便可以获得放大后直流信号了。

  对于这个电路来说, 所使用的运放型号为OPA340。 这是TI公司出品的CMOS轨到轨运算放大器。 这是官网给出的工作范围。 运放工作电压范围从2.7V到5.5V, 频带宽度为5.5MHz, 输入输出电压范围都可以满足轨到轨。  因此这颗芯片还是比较和适用于电磁信号放大检波的。

  但这里留下一个问题, 那就是这个集成了半波放大与倍压整流的电路是否属于脱了裤子放屁,多此一举呢?它的实际效果如何呢? 下面通过仿真来测试一下。

二、初步仿真

  这是利用AD824在LTspice搭建半波放大电路, 输入幅值0.1V,20kHz正弦波,它的输出的确是放大11倍的半波正弦。 将运放型号改为LT1677, 对应的放大波形正半周信号更大一些。 下面就在此基础上搭建被压检波电路。

▲ 图1.2.1 基于LT1677半波放大整流电路

▲ 图1.2.2 仿真后的输入输出波形

  这是在前面半波放大检波电路之后增加了两组电路, 一个是对半波信号进行倍压整流, 另一个是对检波信号直接进行滤波。 下面对比两者所能够得到的信号特点。 这是LTspice给出的仿真信号。 蓝色是半波信号, 绿色是倍压整流后的直流信号信号, 橙色是直接滤波后的直流信号。 可以看到倍压整流后的信号是直接滤波直流信号幅值大约3倍。 因此,利用背压整流还是有一定的优势的。

▲ 图1.2.3 测试仿真电路

▲ 仿真电路中的波形

三、动态范围

  那么问题来, 这两种方案, 究竟哪一种更优呢? 如果从电路实现上来看, 显然直接滤波电路会更加简单,只需要一个电阻和电容即可。 如果觉得这种方案输出电压增益不够,可以通过改变前级放大倍数来弥补。 下面我们通过逐步增加输入电压幅值, 来绘制出两种方案对应的输入输出检波曲线。 从而可以获得两种检波方案动态范围, 然后进行性能对比分析。

  这是仿真结果,橙色曲线是倍压检波输出直流信号,蓝色是阻容滤波直流信号。 可以看两者具有大体相同的线性建波范围,在0.02V到0.45V之间,输出电压与输入交流信号幅值大体呈现线性关系。 在小信号下,倍压检波有一个死区,大约为20mV左右。 中间部分,倍压检波放大倍数较大。 当输入信号比较大时,可以看到倍压检波输出饱和了,而直接滤波的输出电压则呈现较为温和的上升。 从这一点来讲,直接滤波对于输入信号动态范围要比倍压检波更宽。这是它的优点。 但直接滤波方法, 它的输出电压最高之比2V多一点,因此对于3.3V,或者更高单片机ADC输入范围来讲,直接滤波后的信号进行一级2倍的放大效果会更好一些。 反而对于倍压检波,如果对于3.3V的ADC输入则需要进行限幅处理。 可以看到两种方法各自具有不同的优缺点。

1、仿真结果

(1)处理TXT文件的程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# EXEC1.PY                     -- by Dr. ZhuoQing 2022-12-16
#
# Note:
#============================================================from headm import *txtfile = r'D:\Temp\AmplifyRect.txt'tdim = []
out1dim = []
out2dim = []
outdim = []
vdim = []
ldim = []with open(txtfile, 'r') as f:t = []v1 = []v2 = []v = []for l in f.readlines():if l.find('time') >= 0: continueif l.find('Step Information:') >= 0:#------------------------------------------------if len(t) > 0:ldim.append(len(t))tdim.extend(t)out1dim.extend(v1)out2dim.extend(v2)outdim.extend(v)t = []v1 = []v2 = []v = []#------------------------------------------------id = l.find('V=')if id >= 0:value = l[id+2:].split(' ')[0]ratio = 1.0if value[-1] == 'm':ratio = 1e-3value = value[:-1]vval = float(value) * ratiovdim.append(vval)printf(vval)continuelseg = l.split()t.append(float(lseg[0]))v1.append(float(lseg[1]))v2.append(float(lseg[2]))v.append(float(lseg[3]))#------------------------------------------------------------
tspsave('measure2', vdim=vdim, ldim=ldim, t=tdim, out1=out1dim, out2=out2dim, out=outdim)
printf('\a')#------------------------------------------------------------
#        END OF FILE : EXEC1.PY
#============================================================

(2)绘制仿真结果

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# PROC1.PY                     -- by Dr. ZhuoQing 2022-12-16
#
# Note:
#============================================================from headm import *vdim, ldim, t, out1, out2, out = tspload('measure1', 'vdim', 'ldim', 't', 'out1', 'out2', 'out')printf(vdim, ldim)
#------------------------------------------------------------
def segdata(sid):if sid < 0 or sid >= len(vdim): return [],[],[],[]startid = sum(ldim[:sid])endid = sum(ldim[:sid+1])#    printf(startid, endid)return t[startid:endid], out1[startid:endid], out2[startid:endid], out[startid:endid]#------------------------------------------------------------
'''
t,o1,o2,o = segdata(20)printf(t)plt.plot(t, o1, label='Out1')
plt.plot(t, o2, label='Out2')
plt.plot(t, o, label='Out')plt.xlabel("Time(s)")
plt.ylabel("Output(V)")
plt.grid(True)
plt.tight_layout()
plt.legend(loc='upper right')
plt.show()
'''
#------------------------------------------------------------
vindim = []
v1dim = []
v2dim = []
for i in range(len(vdim)-1):t,o1,o2,o = segdata(i)seglen = len(o1)//8v1 = mean(o1[-seglen:-1])v2 = mean(o2[-seglen:-1])vindim.append(vdim[i])v1dim.append(v1)v2dim.append(v2)printff(v1,v2)plt.plot(vindim, v1dim, label='Out1')
plt.plot(vindim, v2dim, label='Out2')plt.xlabel("Input(V)")
plt.ylabel("Output(V)")
plt.grid(True)
plt.legend(loc="upper right")
plt.tight_layout()
plt.show()#------------------------------------------------------------
#        END OF FILE : PROC1.PY
#============================================================

▲ 图1.3.1 第一次仿真结果

▲ 图1.3.2 第二次仿真结果

▲ 图1.3.3 第三次测量结果

※ 总  结 ※


  本文对于20kHz电磁导航信号放大检波两种方案进行仿真对比, 可以看到它们各自有不同的优缺点。 直接滤波方案电路简单,检测信号动态范围较大,但输出直流信号较低; 倍压检波则输出直流信号范围大,但电路复杂,小信号下有死区。 好的检测硬件方案还需要配合后期的处理软件才能够发挥更大的优势。


● 相关图表链接:

  • 图1.2.1 基于LT1677半波放大整流电路
  • 图1.2.2 仿真后的输入输出波形
  • 图1.2.3 测试仿真电路
  • 仿真电路中的波形
  • 图1.3.1 第一次仿真结果
  • 图1.3.2 第二次仿真结果
  • 图1.3.3 第三次测量结果

电磁信号检波方案:是否多此一举?相关推荐

  1. 企业自助分析难以推动?我用这套四步走方案解决了这个难题

    最近构建自助分析方案被越来越多的企业纳入到了企业数字化建设的战略规划中,但很多企业在推动自助分析方案的时候都遇到了屏障,比如IT不愿意放权,业务又受传统思维限制,认为这应该是IT的工作,导致企业的自助 ...

  2. 智能车竞赛技术报告 | 电磁越野组 - 哈尔滨工业大学 - 紫丁香三队

    简 介: 本文详细介绍了我们为了十六届全国大学生智能车大赛室外越野组准备的车模.车模采用Infineon公司的TC377芯片作为控制器,通过电感采集数据,并离线训练神经网络,后使用nnom部署到单片机 ...

  3. 智能车竞赛技术报告 | 基础四轮组 - 哈尔滨工程大学 - 济海追风5队

    简 介: 本文详细介绍了哈尔滨工程大学"济海追风5队"在第十六届全国大学生智能汽车竞赛基础四轮组中的系统方案.本次比赛采用大赛组委会指定的B3型车模,以英飞凌半导体公司生产的32位 ...

  4. 智能车竞赛技术报告 | 单车拉力组 - 哈尔滨工业大学 - 紫丁香

    简 介: 本设计以第十六届全国智能车大赛为背景,采用大赛组委会统一指定的K型车模,以16位单片机STC16F为核心控制器,实现电单车的平衡并能通过指定赛道元素.以Keil为开发环境,利用陀螺仪获取车模 ...

  5. 基于TPF111芯片的交流信号幅值检测

    简 介: 利用TPF111视频的自动低电平保持的功能来对于输入的交流信号进行幅值检测.的确是一个非常聪明的想法,那么效果怎么样呢?看看文中的实验结果吧. 关键词: TPF111,幅值检测,智能车竞赛, ...

  6. 节能信标无线感应定位测试:200kHz

    ▌01 无线定位 1.背景介绍 电磁定位 在很多工业定位领域都有广泛应用,比如在 六自由度电磁跟踪与定位 .在 第十六届全国大学生智能车 中的 竞赛比赛 里有一个 节能信标组 ,它利用给节能车模提供无 ...

  7. 基于Redis实现分布式锁之前,这些坑你一定得知道

    开头 基于Redis的分布式锁对大家来说并不陌生,可是你的分布式锁有失败的时候吗?在失败的时候可曾怀疑过你在用的分布式锁真的靠谱吗?以下是结合自己的踩坑经验总结的一些经验之谈. 你真的需要分布式锁吗? ...

  8. 2017年电赛国赛H题《远程幅频特性测试装置》训练总结(信号接收采集部分)

    系列文章链接目录 一.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(DDS信号源部分) 二.2017年电赛国赛H题<远程幅频特性测试装置>训练总结(放大器部分) 三. ...

  9. Redis分布式锁需要考虑的这些事!

    基于 Redis 的分布式锁对大家来说并不陌生,可是你的分布式锁有失败的时候吗?在失败的时候可曾怀疑过你在用的分布式锁真的靠谱吗?以下是结合自己的踩坑经验总结的一些经验之谈. 对不起,网上的那些 Re ...

最新文章

  1. memset初始化内存
  2. Gastroenterology:住院期间COVID-19患者肠道菌群的变化
  3. 弗罗里达州收税人接受比特币、比特币现金支付
  4. SFB 项目经验-30-SFB与SFB联盟-IM-正常-状态-不正常
  5. python:类的空间问题 类与类之间的关系
  6. 括号生成Python解法
  7. IE Mobie6清除浮动
  8. 学习日报 1027 自动类型转换 运算符
  9. CustomValidator,客户端,服务器端验证
  10. 什么样的人最适合创业?
  11. HPC高性能运算的发展应用场景以及高性能计算技术总结
  12. Centos7静默安装Weblogic12C
  13. response.setContentType(“text/html;charset=utf-8“)后依然乱码的解决方法
  14. 360压缩电脑版_震惊!360竟然出了一款这么良心的软件
  15. Java编程:约瑟夫问题——单向环形链表
  16. anjuta 连接mysql_anjuta的基本使用方法(包括如何设置MYSQL)
  17. 随机过程(联合平稳随机过程)
  18. 8、鼠标控制与32位模式切换
  19. VUEX和filer过滤器的定义
  20. 游戏鼠标的dpi测试软件,教你自己测试鼠标的DPI

热门文章

  1. 流媒体之MP4码流解析。
  2. 《HFSS电磁仿真设计从入门到精通》一第1章 HFSS概述
  3. 移动端的touch事件(touchstart、touchmove)以及如何取得滑过元素的id
  4. 读李嘉诚财智人生,历练人生精华
  5. POJ 1654 乱搞题?
  6. android测试环境搭建
  7. 使用Qiskit学习量子计算_4数学基础(上)
  8. Vue3 使用 百度地图
  9. java日志:三、JCL使用
  10. 申请ISO13485认证的周期及费用