电平移位电路设计(常用于将双极性的宽动态范围信号变成单极性窄动态范围的信号供ADC采集)

本文以单极性ADC采样电路的前端信号调理为例,介绍电路设计过程。为满足单极性ADC采样输入,需将±10V输入信号调理成0.048V至4.048V信号。设计步骤包括构建放大倍数为1/5的基本放大电路、抬升输出信号中点、保证交流量放大倍数、分析直流回路等,并进行仿真验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在信号调理过程中我们常常会需要将双极性的信号调理成单极性的信号,需要将宽动态范围的信号调理成窄动态范围的信号,本文以一个单极性ADC采样电路的前端信号调理为例介绍该类型电路的设计过程。
要求:为了满足单极性输入范围为0至5V的ADC的采样输入,需将±10V的输入信号调理成0.048V至4.048V的信号。

设计步骤:

1、从±10V变到0.048V至4.048V意味着动态范围从20V变到4V,缩小了5倍,因此首先要有一个放大倍数为1/5的基本放大电路。此处以减法放大器为基础进行设计,在此架构上确定放大倍数相关的电阻取值,此处取反馈电阻为10K,放大电阻为50K。信号从同向端输入,信号放大倍数为10K/50K = 1/5,如图1所示。
图1-确定与放大倍数相关的电阻值
仿真验证确实如所期望的,输入信号被缩小了5倍,如图2所示。
图2-输入信号被缩小了5倍
2、将输出信号的中点由0V抬升到2.048V,其根本是要在输出端叠加一个直流量,映射到输入端则是在输入端叠加一个直流量,可以用加法电路实现,于是有了图3所示的结构(此处采用的参考源为4.096V的):
图3-参考加法电路在输入端添加直流量
3、为了保证不会改变交流量的放大倍数,要求R31//R32=R3(式1)R31//R32=R3(式1)R31//R32=R31为什么是R31与R32并联后的阻值等于R3而不是串联后等于R3?因为由叠加原理可知,当单独求交流量回路时需要将直流电压源V3设为0,即接地,当V3接地后很明显R31和R32是并联的。
4、至此,直流量是加进来了,但怎么让叠加到输出的直流量刚刚好是2.048V呢?为此我们需要将交流源V4设为0(如图4所示),单独分析直流回路。
图4-直流回路
5、图4是一个简单的同相放大电路,将Vp点的电压放大(1+10/50)=6/5倍后得到预期的2.048V直流量,反推得Vp = 1.707V,于是有R4//R31R4//R31+R32∗V3=Vp(式2)\frac{R4//R31}{R4//R31+R32}*V3=Vp(式2)R4//R31+R32R4//R31V3=Vp2连解式1和式2即可接得R31等于R31等于20K。
6、将R32、R31设成20K,加上信号源进行验证性仿真,完整电路图如图5所示,最终仿真结构如图6所示。

图5-完整电路
图6-仿真结果

### 电平移位器的工作原理 电平移位器的主要功能在于将一个电路电平(或电压范围)转换到另一个电路所需的电平,确保不同逻辑电平之间的兼容和正确通信。具体来说,在数字电路中,当源电路和目标电路之间存在不同的电电压或者逻辑电平标准时,就需要通过电平移位器来调整信号电平,使得接收端能够准确识别发送端的状态变化[^1]。 对于模拟信号处理方面,某些应用场景下也需要利用类似的机制来进行电平偏置和平移操作。例如,在准备给ADC输入之前,可能需要把原始的双极性宽动态范围信号转变为适合单片机内部模数转换模块使用的特定区间内的单极小幅度波动形式。这种情况下所采用的技术手段同样属于广义上的“电平移动”,只不过更侧重于线变换而非简单的高低电平切换[^2]。 #### 应用实例:针对ADC优化的电平移位方案 假设有一个±10V的传感器输出作为前置放大后的差分模式下的测量数据流,而后续连接的是仅能接受从0~5伏特直流电源电并以此为基础定义有效量程界限(即满刻度对应4.096V) 的逐次逼近寄存器型(SAR) ADC芯片,则此时就涉及到如何高效合理地实施上述提到的那种特殊类型的电平迁移任务——即将原生跨越负十至正十一共二十个单位长度跨度的巨大振幅压缩映射进零点几毫伏起步直到四点多伏结束的新坐标系里去;同时还要兼顾噪声抑制、精度保持等因素的影响考量。 ```python def level_shift(input_voltage, offset=2.048, scale_factor=0.2): """ 将 ±10V 输入信号转换为适用于 0-5V 单极 ADC信号 参数: input_voltage (float): 原始输入电压 (-10V 到 +10V) offset (float): 输出信号中心位置,默认设置为中间值 2.048V scale_factor (float): 缩放因子,用于控制最终输出范围 返回: float: 经过电平移位后的电压值 (0.048V 至 4.048V) """ shifted_voltage = ((input_voltage / 10) * scale_factor * 5) + offset return max(min(shifted_voltage, 4.048), 0.048) # 测试函数 print(level_shift(-10)) # 输出接近 0.048 V print(level_shift(+10)) # 输出接近 4.048 V ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值