ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Multisim仿真ADC接口:电平抬升与峰值采样电路设计全解析

Multisim仿真ADC接口:电平抬升与峰值采样电路设计全解析 前两天有人拿了块板子来问我说MCU里的ADC采样值永远都是满量程4095查了半天没头绪。我一看原理图就明白了传感器输出的是±1V的交流信号被直接塞到了0~3.3V的ADC引脚上负半周压根没法量化超压的部分还容易把输入端打穿。这就是典型的ADC接口电路没做好。正常的ADC接口要处理的事情远不止把线焊上范围要对得上、阻抗要匹配、信号时序要配合得上像交流信号峰值测量这类场景还得有峰值采样或者采样保持电路另外双极性信号必须做电平抬升才能喂给单极性ADC。在焊板子之前花半小时用Multisim把电路仿真跑通是模拟电路设计里最划算的一笔时间投资。这篇文章我从Multisim软硬件环境那些坑讲起把电平抬升、峰值采样这两块核心电路拆开最后给出一整套能从信号源一直看到ADC输入端的仿真链路。1. 开工前的准备工作装好软件、理清元件库与数据库报错的根因1.1 主数据库路径与访问数据库错误的真相很多人在Multisim安装完第一次启动时会撞上一个报错大意是无法访问National Instruments主数据库或者直接弹窗提示数据库错误。这个问题被搜索的频率极高因为它恰好发生在最想开始干活的时刻特别打击心情。这个错误的根因其实不玄乎。Multisim的元件模型数据并不放在安装目录里而是默认放在用户公共文档目录下典型路径是C:\Users\Public\Documents\National Instruments\Circuit Design Suite\database。软件启动之后通过一个配置文件去索引这个数据库文件夹一旦这个路径失效主数据库就加载失败。路径失效的原因我总结过最常见的有三类系统迁移或重装系统后原来公共文档里的NI文件夹没跟过来。Windows用户目录改成了中文名导致路径解析异常。部分安全软件把公共文档里的文件当成垃圾清掉了或者安装过程中被杀软拦了文件写操作。修复的思路按顺序来先用管理员身份运行一次Multisim让软件尝试重建索引接着打开Options - Global Preferences - Paths检查Database相关路径是否指向那个公共文档目录发现不对就手动指回去如果这个目录里的文件确实已经缺失最稳妥的方式是运行NI官方修复工具或者重新安装不要手动去改库文件。说实话装完软件后把Paths页面截图存一份等出错时能省去很多排查时间。1.2 汉化与元件库到底要不要折腾Multisim汉化这个问题长期占据搜索榜前列。我非常理解大家想看中文界面的心情但作为一个常年用Multisim做仿真的用户我的建议是尽量保留英文界面。原因很实在你在中文汉化环境里搜索元件比如想找采样保持芯片LF398不太确定汉化版有没有把它翻成采样保持器搜索效率反而更差而英文界面下直接输入元件型号配合数据库搜索基本秒出结果。另外有不少汉化补丁是通过替换语言文件或者修改数据库索引来实现的一旦和当前版本不匹配就会出现元件库没了的现象。我遇到过好几次元件库突然空了的求助仔细一问真正原因不是元件库文件被删了而是界面右侧的Components工具箱面板被误关了。解决办法很简单View菜单里找到Toolbox把Components项勾上面板就会回来。如果勾上还是空白再按上一节的数据库路径排查。多说一句工程软件的使用习惯界面保持英文元器件型号、参数和Datasheet对照起来会顺畅很多。后面所有仿真步骤我也会用英文界面路径来描述这样不管你的版本是14.3还是其他都能对上。2. ADC前端为什么需要电平抬升从双极性信号到单极性数字世界的换算2.1 双极性信号与单极性ADC之间的鸿沟ADC的输入范围几乎都是单极性的常见的是0~Vref比如0~3.3V或者0~5V。但传感器输出却经常是双极性信号麦克风信号有正有负交流电流互感器输出是正弦波很多运放构成的交流放大电路输出也是围绕0V上下摆动的。这两个世界的接口矛盾就在这里。直接把±1V的信号接到0~3.3V的ADC通道上负半周完全落在ADC的输入范围之外MCU读到的数字根本不能反映原始波形的形状和大小。更麻烦的是负电压超过引脚允许范围时可能会触发芯片内部ESD结构长期使用会累计损伤。电平抬升的本质就是把双极性信号整体平移到单极性区间。假设信号是±1V的正弦波给它加上2V的直流偏置就变成1V~3V的正弦波这个范围正好落在ADC输入范围内。如此负半周不再丢失正半周也不会削顶。2.2 同相加法器方案四只电阻加一个运放为什么够用实现电平抬升有不少办法我推荐同相加法器理由有两个输入阻抗高不会给前面的信号源增加额外负载结构规律元件数量极少Multisim里放起来也快。电路结构是这样的输入信号V1接电阻R1到运放正输入端。直流参考电压Vref接电阻R2到运放正输入端。输出通过Rf反馈到运放负输入端Rg从运放负输入端接地。四个电阻我统一取10kΩ后面推导就非常清爽。先算运放正输入节点电压用叠加定理得到Vp (V1/R1 Vref/R2) × (R1//R2)因为R1R210kΩ所以(R1//R2)5kΩ代入后Vp (V1 Vref)/2再看负输入节点运放反馈会把它钳位到和Vp相同而负输入节点到输出之间是电阻分压Vn Vo × Rg/(Rf Rg)Rf和Rg也是各10kΩ所以Vn Vo/2。联立就得到Vo V1 Vref这个结果非常直观同相加法器把输入信号和参考电压做了加法。举例来说V1是1kHz、幅值1V的正弦波Vref设成2V则Vo从1V摆动到3V双极性问题就解决掉了。Multisim里用虚拟运放或LM358都能搭出这个电路仿真结果可以验证这条公式。2.3 抬升目标电压怎么定留裕量而不是顶格设计新手尤其容易犯一个错误ADC满量程是0~3.3V那就把信号刚好抬到0~3.3V觉得这样才能用满分辨率。我在实际设计里通常会建议留5%到10%的裕量比如把信号调整到0.1V~3.2V而不是顶着0V和3.3V。原因是多方面的多数运放输出级并不是轨到轨的正负饱和电压离电源轨都有一定距离常见的是0.05V到0.3V输入信号本身带着噪声和毛刺如果波形峰值刚好压在满量程边界ADC很可能偶尔削出平台再加上ADC参考电压和运放供电的温漂顶格设计就相当于把误差预算全部用光。所以设计时先按理论幅值算出Vref再在Multisim里改变Vref做几次简单扫描看看实际输出波形的上下边缘离电位轨还有多少余量留出安全距离。3. 峰值采样电路选型精密峰值检波、采样保持方案怎么选3.1 峰值采样到底在采什么在ADC接口场景里峰值采样其实有两条技术路线。一条是峰值检波器专门捕捉波形的最大值并输出一个保持住的直流电压常用于交流信号幅度检测、包络检测、自动增益控制这类场景另一条是采样保持电路在特定时刻把模拟电压抓下来并保持住供ADC完成转换。这两种功能有时候会同时出现在一条信号链里先用峰值检波拿到波峰幅度再用采样保持把该幅度稳定一个周期让慢速ADC慢慢转换。3.2 用LM358搭精密峰值检波器Multisim里不建议用理想二极管组合蒙混过关Multisim里做峰值检波不要用理想二极管加理想电容草草了事真实芯片的细节会影响你对电路行为的判断。我常用一片LM358来搭之所以选LM358是因为它双运放封装、单电源和双电源都能工作、输出电流足够驱动二极管和电容而且Multisim库里的LM358模型自带输出摆幅和非线性特性仿真结果更接近实际。电路连接如下运放U1B正输入接被检波信号。运放U1B输出接二极管D1阳极。D1阴极接保持电容C1正端C1负极接地。运放U1B负输入也接在D1阴极和C1正端这个节点上。再用同一个封装里的另一个运放U1A接成电压跟随器正输入接C1正端输出就是缓冲后的峰值电压。工作原理是这样的当输入电压高于电容上的电压时运放输出为高二极管导通电流给电容充电当输入电压回落到电容电压以下运放输出变低但二极管反偏电容上的电荷没有放电回路电压就保持住了。需要特别说明二极管压降问题。如果用普通二极管直接做整流峰值检测1N4148那0.6V左右的压降会直接反映成峰值误差。但在这个电路里二极管处在运放的反馈环路内部运放的高增益会自动补偿二极管压降让电容节点电压精确等于输入峰值所以它叫精密峰值检波器。别看D1阳极波形会和阴极相差0.6V那正是运放在想办法抵消压降。3.3 峰值检波和采样保持如何选型我做了个对照表方便根据实际需求抓方案。应用场景推荐方案优点注意点测正弦波幅值、包络检测精密峰值检波器LM358 1N4148 电容无需时钟电路简单反馈补偿二极管误差保持之后只能靠自然放电或复位开关恢复ADC逐点采样、同步转换LF398采样保持芯片采样窗口由逻辑电平控制方便同步ADC启动信号需要方波驱动逻辑控制脚引脚多高频窄脉冲峰值捕捉高速比较器 高速采样保持器上升时间短能捕捉窄脉冲电路复杂度高Multisim里需要精细调参Multisim元件库里有LF398N使用逻辑相对简单逻辑控制脚接高电平时输出跟随输入接低电平时输出保持。保持电容接在两个专用引脚之间典型值1nF到100nF需要根据保持时间和跌落指标折中。对大多数ADC前端来说先把峰值检波器跑通理解波形行为再结合LF398做采样保持是比较稳的学习路径。4. 完整仿真链路搭建从信号源到示波器的7个步骤4.1 元件清单和关键参数现在进入正题在Multisim里搭一条完整的信号链函数发生器产生双极性正弦波经过电平抬升级变单极性再经过峰值检波器输出直流峰值最后送示波器和虚拟万用表观察验证。我按14.3版本的界面路径给操作指引其他版本也大同小异。打开Multisim新建一个Design在顶部菜单Place - Component打开元件放置窗口搜索以下元件元件搜索关键词参数/备注函数发生器Function Generator界面右侧虚拟仪器正弦波运算放大器LM358N双运放封装需要确认用哪两个单元二极管1N4148开关二极管电容C10nF到100nF先放100nF电阻R10kΩ共4个另外再放1kΩ保护电阻直流电压源DC_POWERVref2V示波器Oscilloscope界面右侧虚拟仪器虚拟万用表Multimeter界面右侧虚拟仪器函数发生器双击打开面板波形选正弦Sine频率设1kHz幅度Amplitude设1VOffset设0V。这正好是±1V的双极性信号。4.2 电平抬升级和峰值检波级的连线细节电平抬升级的连线顺序我建议这样函数发生器正输出接到R1一端R1另一端接到U1正输入V2直流源正极接到R2一端R2另一端也接到U1正输入U1输出接到Rf一端Rf另一端接到U1负输入Rg接在U1负输入和地之间。这样U1输出端就得到了抬升后的单极性信号理论波形范围是1V到3V。峰值检波级从U1输出端继续往下U1输出接到第二个运放单元U2的正输入U2输出接D1阳极D1阴极接C1正端和U2负输入C1负极接地。为了给峰值输出提供一个不泄放电容电荷的低阻抗测量点用同一片LM358里的另一个运放单元U3接成电压跟随器正输入接C1正端输出接示波器通道和万用表。注意LM358是一片双运放封装所以这里其实需要两片LM358或者你用虚拟四运放模型也行。线路连好后把示波器A通道接到电平抬升输出B通道接到峰值检波输出。4.3 示波器上到底应该看到什么波形按下仿真开关示波器默认界面可能不理想需要调节时间轴设1ms/div这样可以完整看到约两个周期的1kHz正弦波A通道幅度设2V/divB通道幅度设2V/div触发方式选上升沿。正常情况下A通道显示的是被抬到2V基准线上的正弦波波形峰值大约3V、谷值大约1V。B通道显示的是从0V快速上升并稳定在3V左右的一条直流线这就是峰值采样后的保持电压。用示波器底部的游标功能勾选Cursors拖动T1和T2分别放到波形峰和谷读出两点的差值应该接近2V对应原始正弦波的峰峰电压。4.4 用虚拟万用表验证直流电平放一个虚拟万用表模式切到直流电压并联在峰值检波输出端。如果电路参数和我上面一致读数应该稳定在3V附近允许轻微偏差。接下来做一次验证性修改把Vref从2V改成1.5V重新运行仿真峰值输出会降低到2.5V附近。这个变化说明电平抬升级确实把参考电压线性叠加进了信号通道而不是电路刚好巧合输出3V。5. 仿真结果与理论偏差运放摆幅、二极管压降和电容漏电在哪里露馅5.1 为什么波形下限不是0V运放输出摆幅的现实很多人在仿真里遇到一个困惑理论上电平抬升范围算得好好的结果波形底部被切平了或者下限就是降不到计算值。这往往不是电路结构出错而是运放输出级摆幅限制在作怪。以LM358为例它在单电源5V供电下输出下限通常在0.02V到0.05V左右输出上限大概在3.5V到3.6V距离电源轨各有几十毫伏甚至几百毫伏的距离。如果信号抬升范围是0V到3.3VLM358在单电源5V下根本送不出0V底部会被截住。换成±12V双电源供电后输出摆幅范围扩大这个现象就会缓解。所以判断仿真波形异常时第一条检查项是运放的电源电压和输出摆幅别急着怀疑连线。Multisim里给运放供电时建议先确认V和V-都接对了避免接反导致波形彻底不对。5.2 二极管压降到底有没有被补偿掉普通二极管检波器里1N4148的导通压降会造成明显误差但精密峰值检波器通过把二极管放进反馈环路来处理这个问题。仿真时用示波器同时看D1阳极和阴极两个节点会发现阳极波形比阴极高出0.6V左右这说明运放确实在用自己的输出去补偿二极管压降。这个设计的代价是二极管必须工作在正向导通区间所以运放需要输出毫安级电流。LM358的输出级灌电流能力是够用的。如果换用某些输出电流能力极弱的微功耗运放大电容充电过程会变得非常慢峰值建立时间拉长这是选型时要留意的点。5.3 电容参数选择保持时间、建立时间和纹波的三角博弈保持电容C1的大小直接影响三个指标电容越大保持期间电压跌落越慢输出纹波越小电容越大充电时间常数越大峰值建立得越慢对快速信号的响应变差电容越大仿真时初始充电阶段观察到的上升坡度越缓。我在仿真里习惯先放100nF跑通逻辑再尝试1nF和1uF对比波形。1nF时B通道跟随输入变化更快但纹波肉眼可见1uF时B通道是一条几乎笔直的线但需要等好几个毫秒才能爬到最终值。Multisim里电容模型是理想的漏电阻无穷大所以保持阶段超级平稳实物中要注意选漏电流小的电容类型聚丙烯膜电容和C0G陶瓷电容都适合做保持电容电解电容漏电偏大不适合放在这个位置。6. 老问题汇总Multisim仿真速度、数据库报错和示波器占空比测量6.1 仿真慢的元凶非线性模型与仿真步长不少人在跑带LM358的电路时发现进度条走得极慢因为真实运放模型包含大量非线性器件SPICE内部会根据收敛情况动态调小仿真步长导致计算量暴涨。想提速可以从几个方向动手。在Simulate - Analyses and Simulation - Transient Analysis里找到最大步长设置把默认值适当调大。比如1kHz信号周期是1ms设置20us到50us的最大步长能明显减少时间点数量波形精度依然足够。把不需要精确建模的部分替换成虚拟理想运放。Multisim的虚拟库里有OPAMP_3T_VIRTUAL这类理想模型收敛性远好于LM358。在做架构验证阶段我会先用理想运放把信号链调通再用LM358做精细化仿真两者配合特别节省时间。减少用探针挂在多个节点上的习惯。测量探针和虚拟仪表每个时间点都要参与计算挂多了必然拖慢速度。仿真时只保留必要的示波器通道其他探针删掉。如果只是看增益频率特性直接跑AC Sweep不要跑瞬态。AC小信号分析是线性频域求解速度快一个数量级。6.2 数据库报错和元件库消失的完整排查链路再把前面提到的数据库问题系统化排查顺序是这样的先看是不是误报。很多访问数据库发生错误其实发生在汉化后第一次启动Multisim正在重建语言索引第一次启动比平时慢容易被误判为报错。多等一会儿或者用任务管理器观察进程是否在运行。再以管理员身份启动程序。如果软件的索引文件没有写权限就会报数据库错误管理员权限能解决一部分权限问题。检查Options - Global Preferences - Paths和实际公共文档路径对比。如果发现路径里出现奇怪的字符或者指向了不存在的盘符手动修正。查公共文档目录是否被安全软件清理过。如果C:\Users\Public\Documents\National Instruments整个目录不见了基本只能通过重装修复或者从隔离区恢复文件。元件库面板突然空白时先看View - Toolbox的Components是否勾选。我见过太多人以为元件库丢了其实只是面板被误关了。面板回来后如果元件仍然显示为空再回到Paths检查数据库路径。Win11系统下Multisim出现主数据库问题的概率比Win10高这是公共文档路径兼容性引起的。安装时尽量保持默认英文路径不要改成中文用户目录名可以规避一大半问题。6.3 示波器占空比测量的小技巧Multisim的虚拟示波器没有真实示波器那种一键测量占空比的按钮但有两个办法解决。最准确的方法是开游标用T1量出高电平持续时间再量一个完整周期时间两者比值换算成百分比。这个办法麻烦点但通用性好。更偷懒的办法是使用Multisim的测量探针。从Place - Probe放一个Measurement Probe到被测节点上仿真运行后探针面板直接显示Frequency、Period、Vpp这些参数部分模型还会显示Duty Cycle。如果没有Duty Cycle项就用探针显示的频率和脉冲宽度自己算。这个方法在检查PWM波形和采样保持控制信号时特别好用比手动在示波器里找游标快得多。Multisim做ADC接口电路仿真核心就一句话先把信号链的每一级单独拉到示波器上看明白再合起来调参数。电平抬升负责解决信号范围和ADC不匹配的问题峰值采样负责把交流信号的幅值信息变成稳定的直流电平两者在Multisim里跑通后再去焊板子心里是非常有底的。希望这套流程和踩坑记录能帮你在仿真的路上少走一段弯路。
返回列表