AD7768-1 始终转换 。输入接法决定两根引脚怎样变化;参考电压、引脚电压范围、前端增益和输出编码共同决定如何解释结果。它没有一个通用的“单端位”可以把任意电路自动变成 0~5 V 输入。
本文以 AD7768-1 Rev. B 为依据。原笔记提到的原理图未保存在该笔记中,因此 R18、R13、R43、R44 的选件记录保留在后文,但不能据此确认真实网络、量程或分压比。AD7768-1 原厂手册,第 30~31 页
区分接法、差模和共模
跳转到“区分接法、差模和共模”定义:
| 接法 | AIN+、AIN− 的关系 | 实际检查内容 |
|---|---|---|
| 相对地的单端信号 | 信号有一根输出和一根回路参考线;若参考直接接 AIN−,形成固定参考输入 | 地电位差、输入摆幅及每个引脚相对 AVSS 的电压 |
| 伪差分输入 | 一个输入固定在地、AVSS 或其他合法参考,另一个变化 | 固定参考也会有噪声;差模范围与引脚范围必须同时满足 |
| 完全差分驱动 | 两输入通常围绕共模电压反向变化 | 驱动器的摆幅、共模、两路阻抗/滤波匹配及建立时间 |
用单端源并不必然只能使用量程的一半,用差分接法也不自动获得两倍量程;可用范围取决于供电和驱动条件。差分系统的共模抑制也不是固定的“>100 dB”:频率、阻抗不平衡、驱动器、ADC 和布线都会影响结果。
例如,若 ,完全差分驱动可以表示为:
差模达到 +5 V 时,两根引脚分别到 5 V 和 0 V。这只是理想端点举例,实际驱动器通常还需要摆幅余量。固定 AIN− 为 2.5 V、AIN+ 在 0~5 V 变化,则差模只有 −2.5~+2.5 V;固定 AIN− 为 0 V、AIN+ 在 0~5 V 变化,则差模为 0~5 V。三种情况不能混用同一个“±5 V”标签。
原厂说明居中的共模有助于利用输入范围,具体绝对输入电压和参考电压条件仍应按是否启用预充电缓冲分别核对。预充电缓冲减轻采样电容的驱动负担,并不代替外部驱动器的最终建立。输入与参考规格,第 6 页
先识别输出码,再恢复电压
跳转到“先识别输出码,再恢复电压”以下讨论 AD7768-1 的 24 位补码转换结果,最高位先传。最高速 sinc5 的特定配置会把输出有效数据减为 16 位,读取时必须按所用模式核对数据格式。对这里的 24 位结果,原始码 0x000000 是零差分电压,0x800000 是负满量程;不能把原始补码直接当成从 0 到 0xFFFFFF 的单极性刻度。
令有符号码为 ,参考差分电压为 :
手册中的另一种写法是先把补码转换成偏移二进制 ,再计算:
对 24 位无符号容器,转换可以写成 u = raw ^ 0x800000。两种公式等价,但第二种的 u 已经改变编码,分母也是 ,不是 0xFFFFFF。使用已符号扩展的整数时直接采用第一种。
设实际前端经校准满足 ,传感器灵敏度为 (V/g),才有:
下面的 Python 程序只演示数学换算,不写寄存器、不连接 ADC。示例使用 4.096 V 参考、单位前端增益、零偏置和 100 mV/g 灵敏度;这些是假定参数,不能代替实际校准。
from math import isfinite, log10, sqrt
def code24_to_voltage(raw: int, vref: float) -> float: if type(raw) is not int or not 0 <= raw <= 0xFFFFFF: raise ValueError("raw must be an unsigned 24-bit integer") if not isfinite(vref) or vref <= 0: raise ValueError("vref must be finite and positive") signed = raw if raw < 0x800000 else raw - 0x1000000 return (signed / 0x800000) * vref
def voltage_to_acceleration(v_adc: float, gain: float, bias: float, sensitivity_mv_per_g: float) -> float: values = (v_adc, gain, bias, sensitivity_mv_per_g) if not all(isfinite(value) for value in values): raise ValueError("all frontend parameters must be finite") if gain == 0 or sensitivity_mv_per_g <= 0: raise ValueError("gain must be nonzero and sensitivity positive") sensitivity_v_per_g = sensitivity_mv_per_g / 1000 if sensitivity_v_per_g == 0: raise ValueError("sensitivity is below the supported float range") sensor_volts = (v_adc - bias) / gain acceleration = sensor_volts / sensitivity_v_per_g if not isfinite(sensor_volts) or not isfinite(acceleration): raise ValueError("frontend conversion exceeds the finite float range") return acceleration
if __name__ == "__main__": # Hypothetical calibrated frontend: unity gain, zero differential offset. volts = code24_to_voltage(0x100000, 4.096) print(f"ADC differential voltage: {volts:.6f} V") print(f"Acceleration: {voltage_to_acceleration(volts, 1, 0, 100):.6f} g") for peak, noise_rms in [(5.0, 5e-6), (2.5, 15e-6)]: snr = 20 * log10((peak / sqrt(2)) / noise_rms) print(f"Hypothetical sine SNR: {snr:.3f} dB")运行 python adc_frontend.py,前两行结果为 0.512000 V、5.120000 g。代码中的偏置是 ADC 差分量中的偏置,不是把 2.5 V 共模电压无条件减掉。若配置了器件增益/偏移校准,还应核对校准寄存器与外部前端模型的对应关系,避免重复补偿。
原电阻选件记录及其证据边界
跳转到“原电阻选件记录及其证据边界”| 原记录中的名称 | 保留下来的选件值 | 原文声称的范围 | 目前可以得出的结论 |
|---|---|---|---|
| “单端模式” | R18=68 kΩ;R13=15 kΩ;R43=0 Ω;R44=NC | “相对于 2.5 V 中点的 ±2.5 V” | 缺原理图,不能确认 R18/R13 是否分压、端点接到哪里,或零欧电阻切换了哪条路径 |
| “差分模式” | R18=0 Ω;R13=NC;R43=R44=4.7 kΩ | “±5 V 差分” | 两个对称阻值不足以证明完整差分驱动;需核对信号源、运放和电容网络 |
原文两条电压公式分别使用 4.096 / 0xFFFFFF × 83/68 和 2 × 4.096 / 0xFFFFFF × 83/68,均从 Code - 0x800000 出发。这里混合了参考、编码和外部分压三层关系:原始补码不能直接减中点,量化分母应按前文使用 或 ,83/68 也必须由原理图推导。保留这个比值用于找回电路后复核,不把它作为可用校准系数。
原初始化片段中的 AD7768_REG_CH_MODE、AD7768_Handle_t、AD7768_WriteReg、AD7768_CalibrateOffset、AD7768_ReadData 和 AD7768_SetVref 都未给出定义。尤其“写 0x80 即单端、写 0x00 即增益 1/差分”和“调用 SetVref 即得到 2.5 V 实体参考”不能作为 AD7768-1 驱动依据。真实实现必须使用明确的寄存器地址、位定义、读回及板上参考源。
动平衡仪中的振动与键相信号
跳转到“动平衡仪中的振动与键相信号”振动传感器先经过对应的信号调理
跳转到“振动传感器先经过对应的信号调理”IEPE/ICP 加速度传感器通常采用两线恒流供电,交流信号叠加在直流偏置上;不能把它画成普通 OUT+、OUT− 平衡电压输出后直接接 ADC。应根据型号设置激励,完成偏置隔离/电平调整、输入保护、增益和抗混叠滤波,再送到合法的 ADC 输入范围。真正具有差分电压输出的传感器则按其接口规格接入。PCB Piezotronics:恒流供电及偏置诊断
IEPE sensor -> constant-current excitation / conditioning -> protection + AC coupling or level shift -> driver + antialias filter -> ADC AIN+ / AIN-屏蔽、回流和地连接需按传感器外壳隔离方式与现场接地设计确定。双绞线或差分驱动能降低某些耦合影响,但不能直接保证 μg 级精度。
键相信号关注边沿时间
跳转到“键相信号关注边沿时间”光电传感器输出可能是 TTL/CMOS、开集电极或工业电平,需要先确定电压和输出形式。若只需要转速和键相时间,经过合适的电平转换、保护和整形后,定时器输入捕获通常比把数字边沿送入振动 ADC 更直接;若需要记录模拟波形,则另行设计模拟输入及采样路径。
原来的“两路振动加一路键相”是系统通道规划。AD7768-1 本身只有一个模拟转换通道;实现两路同步振动采集需要多颗同步器件或多通道方案,不能在一颗 AD7768-1 上配置三个通道。键相与振动采样仍需对齐时间基准,并考虑数字滤波的延迟。
滤波方式与测量频段一致
跳转到“滤波方式与测量频段一致”原方案中的“SINC5 + 50 Hz 陷波”缺少实际实现和频响要求。AD7768-1 提供低纹波 FIR、sinc5 和 sinc3 路径;手册给出的 50/60 Hz 同时抑制条件与 sinc3 的输出速率和 EN_60HZ_REJ 有关,不能当作任意 sinc5 模式的固有功能。振动测量还可能需要保留接近工频的真实分量;选择陷波前应确认测量目标。数字滤波寄存器,第 71 页
噪声数据怎样记录才可比较
跳转到“噪声数据怎样记录才可比较”原文的数值没有附采样率、滤波器、带宽、接线、参考、数据文件或仪器条件。以下保留为未验证的历史记录,不能称为本次实测或器件保证值:
| 原记录 | 输入短路 RMS | 接入信号时的 RMS |
|---|---|---|
| “单端” | 15 μV | 50~100 μV |
| “差分” | 5 μV | 10~20 μV |
信噪比的分子与分母必须采用同一幅值口径。若 5 V、2.5 V 表示正弦峰值,信号 RMS 应再除以 。在仅使用上述假定数字时,两项比值约为 116.990 dB 和 101.427 dB;原文的 120 dB、约 104 dB 使用了峰值对噪声 RMS。这一算术修正不使这些数字变成测试结果,也不能证明两种接法具有固定的 SNR 差距。
实际对比应固定模拟带宽、采样率、数字滤波及增益,明确是否去除直流、是否包含谐波,保存原始样本和接线条件,再区分短路噪声、SNR 与 SINAD。
布线检查应围绕输入带宽和回流
跳转到“布线检查应围绕输入带宽和回流”原文“长度差必须在 ±0.5 mm、间距必须小于 0.2 mm”缺少频率、叠层或器件依据,不能作为通用规则。优先保证两路阻抗及 RC 网络匹配、连续回流、远离时钟与开关节点,并满足驱动器和采样输入的建立要求。对低频精密输入,盲目套用高速差分线的等长与紧耦合规则,可能忽略更关键的漏电、热梯度、参考噪声和输入滤波匹配。
来源:CSDN 原文,首次发布于 2025-08-22。