简介这份资源是采用AD590集成温度传感器设计的数字温度计电路方案面向电子测量、传感器课程设计及课设毕设人群帮助解决高精度温度监测电路的设计与实现问题。压缩包内共1个PDF文件约86KB以电路原理图与设计说明为主完整呈现从电源到显示的整条信号链路。电路以100V交流输入经变压器T1降压、整流桥堆UR整流、电容C1滤波再由μA723C可调稳压器为AD590提供稳定工作电压AD590作为电流输出型传感器温度每变化1℃输出电流相应变化1μA其电流经R5与可变电阻RP2转换为电压信号送入数字表头显示温度并可通过调节RP2改变输出灵敏度。目前已有2462人学习下载适合需要参考完整电路结构、元件参数与稳压供电思路的读者也可作为课程设计或毕业设计的电路原型参考。1. 从一颗电流源说起AD590 数字温度计到底在做什么很多人第一次接触 AD590会下意识把它当成 LM35 那样的电压输出型传感器接上 ADC 就读数结果发现读数完全不对。原因在于 AD590 是一颗电流输出型温度传感器它的输出电流与绝对温度成正比典型灵敏度为 1 μA/K。也就是说0 ℃273.15 K时它输出约 273.15 μA25 ℃ 时约 298.15 μA。这个特性决定了它的信号调理链路和电压型传感器完全不同——你要先把电流转成电压再送进 ADC最后在数字域里做标定和线性化。用 AD590 做数字温度计核心要解决三件事一是把 μA 级电流稳定地转换成 ADC 能采的电压二是处理它的绝对温度基准让显示值落在摄氏度而不是开尔文三是控制整个链路的误差因为 1 μA/K 的灵敏度意味着 1 μA 的失调就对应 1 ℃ 的偏差。这套方案适合需要宽温区、长线传输、抗干扰要求较高的场合比如工业现场的多点测温、恒温槽监控、以及需要把传感器放在离主板较远位置的嵌入式系统。相比 DS18B20 这类数字总线传感器AD590 的优势是输出连续、响应快、可远距离电流传输代价是外围电路更复杂标定工作必须自己做。2. AD590 电流—电压转换电路与基准设计2.1 为什么不能直接拿电阻把电流变成电压最直觉的做法是串一个电阻 R让 I×R 变成电压。AD590 在 25 ℃ 输出 298.15 μA如果取 R10 kΩ得到 2.9815 V看起来能直接进 ADC。但问题有三个第一AD590 的输出电流随温度变化电阻上的压降也随之变化这个压降本身会改变 AD590 两端的电压而 AD590 对电压变化的抑制比虽然不错仍会引入误差第二ADC 的输入阻抗会与 R 形成分压破坏线性第三单电阻方案没有零点调整能力摄氏度换算要在软件里减 273.15而 273.15×10 kΩ×1 μA/K 对应 2.7315 V 的固定偏置ADC 量程被大量浪费。常见做法是用运放构成电流—电压转换器把 AD590 接到运放的反相输入端反馈电阻 Rf 决定增益同相端接一个可调基准用来做零点迁移。这样 AD590 工作在虚地两端电压稳定线性度好而且可以通过基准把 0 ℃ 对应的输出调到一个方便 ADC 采集的电压。2.2 单运放 I/V 转换的元件取值与计算下面是一个经过验证的单运放方案运放选低失调、低偏置电流的型号比如 OP07 或 OPA333。AD590 接反相输入端反馈电阻 Rf100 kΩ同相端通过电位器提供一个可调基准 Vref。AD590 输出电流 I 1 μA/K × T(K) 运放输出 Vo Vref - I × Rf 取 Rf 100 kΩ则灵敏度 100 mV/K 25 ℃ 时 I 298.15 μAI×Rf 29.815 V超出电源轨这里就暴露了一个关键问题100 kΩ 的反馈电阻在 25 ℃ 会产生近 30 V 的输出单电源 5 V 系统根本放不下。所以实际设计要降低 Rf或者采用零点迁移把绝对温度对应的电流先减掉一部分。更实用的做法是 Rf10 kΩ灵敏度 10 mV/K25 ℃ 时输出 2.9815 V0 ℃ 时 2.7315 V100 ℃ 时 3.7315 V。这个范围在 5 V 单电源下可以接受但 0 ℃ 附近的 2.73 V 偏置仍然占用了大量动态范围。更好的方案是加一个电流抵消支路用一个基准电压源加电阻产生 273.15 μA 的恒定电流从 AD590 的电流里减掉这样运放输出就直接对应摄氏度。具体做法是从一个 2.5 V 基准如 REF3025经 9.09 kΩ 电阻产生约 275 μA注入运放反相端节点与 AD590 电流相减。此时I_net I_AD590 - I_offset ≈ 1 μA/K × (T - 273.15) 1 μA/℃ × T(℃) Vo I_net × Rf 取 Rf 100 kΩ则 Vo 100 mV/℃ 0 ℃ → 0 V100 ℃ → 10 V需双电源或更高供电如果坚持 5 V 单电源取 Rf47 kΩ灵敏度 47 mV/℃0100 ℃ 对应 04.7 V正好覆盖 ADC 输入范围。这个取值需要在标定时微调因为电阻容差和基准精度都会影响实际灵敏度。2.3 基准与电源的噪声控制AD590 的 1 μA/K 灵敏度意味着电源和基准上的任何波动都会直接调制输出。假设 Rf47 kΩ电源纹波 1 mV 就会在输出上产生 1 mV 的误差对应约 0.02 ℃。看起来不大但如果基准源本身噪声达到几十 μV RMS经过运放放大后仍可能吃掉 0.1 ℃ 以上的精度。我一般会在基准输出端加一级 RC 滤波截止频率设在 10 Hz 以下同时运放电源引脚就近放 0.1 μF 和 10 μF 电容。AD590 的供电线如果较长建议用双绞线并加 100 Ω 串联电阻和 0.1 μF 对地电容抑制射频整流。注意 AD590 的供电电压范围是 430 V低于 4 V 时线性度会明显变差所以 5 V 供电是下限能用到 9 V 或 12 V 更好。3. ADC 采集、摄氏度换算与数字温度计固件实现3.1 ADC 选型与参考电压的匹配前端把温度变成了 04.7 V 的电压接下来要选 ADC。对 0.1 ℃ 分辨率的需求100 ℃ 量程对应 1000 个码10 位 ADC 只有 1024 个码刚好卡在边缘实际有效位数还要打折所以建议至少 12 位。常见选择是 STM32 内置的 12 位 ADC或者外挂 ADS1115 这类 16 位 I²C ADC。如果 MCU 和传感器在同一块板上用内置 ADC 加外部基准更省成本如果传感器在远处ADS1115 的差分输入和 PGA 能省掉不少模拟调理。参考电压的选择直接决定换算系数。假设用 4.096 V 基准12 位 ADC 的 LSB 为 1 mV对应 47 mV/℃ 的灵敏度每摄氏度约 47 个码分辨率约 0.021 ℃足够。如果用 3.3 V 基准满量程只能到 3.3 V0100 ℃ 的 4.7 V 输出会被截断所以要么降低 Rf 到 33 kΩ灵敏度 33 mV/℃100 ℃ 对应 3.3 V要么用分压。分压会引入比例误差不如直接改 Rf。3.2 固件里的标定与线性化代码AD590 本身的线性度很好典型非线性小于 0.5 ℃ 满量程所以固件里主要做的是两点标定在已知的冰水混合物0 ℃和沸水100 ℃需按当地气压修正下读取 ADC 码算出斜率和截距。// STM32 12 位 ADCVref 4.096 V前端灵敏度 47 mV/℃ // 标定得到的两个点adc_at_0c, adc_at_100c #define ADC_AT_0C 0 #define ADC_AT_100C 2048 // 示例值实际以标定为准 float adc_to_celsius(uint16_t adc_code) { float slope 100.0f / (float)(ADC_AT_100C - ADC_AT_0C); float temp (float)(adc_code - ADC_AT_0C) * slope; return temp; } // 多次采样取平均抑制随机噪声 uint16_t adc_read_average(uint8_t times) { uint32_t sum 0; for (uint8_t i 0; i times; i) { sum adc_read_once(); } return (uint16_t)(sum / times); }这段代码的逻辑很直接用两点标定把 ADC 码映射成摄氏度。ADC_AT_0C和ADC_AT_100C不是理论值而是实测值因为电阻容差、基准偏差、运放失调都会让实际斜率偏离设计值。adc_read_average做多次采样平均对 50 Hz 工频干扰有抑制作用采样次数取 16 或 32 比较合适再多会拖慢响应。参数说明slope的单位是 ℃/码如果 ADC 是 12 位、Vref4.096 V、灵敏度 47 mV/℃理论斜率约为 1/47 ≈ 0.0213 ℃/码100 ℃ 对应约 4700 个码但 12 位满量程只有 4096所以实际 Rf 要再调小或者用 16 位 ADC。这个计算在选型阶段就要做不要等板子回来才发现量程不够。3.3 常见坑自热、长线和地环路AD590 的工作电流约 300 μA功耗很低自热通常小于 0.1 ℃但如果把它贴在发热元件旁边或者用导热胶固定时胶层太厚热阻会变大。长线传输时AD590 的电流输出抗干扰能力比电压输出强但供电线和信号线如果共用一根地线地电流会在导线电阻上产生压降叠加到基准上。我一般会把 AD590 的供电地和信号地分开走最后在 ADC 的模拟地单点汇合。另一个常见问题是运放的输入偏置电流。AD590 输出的是 μA 级电流如果运放偏置电流达到 nA 级虽然相对误差不大但在高阻节点上仍会引入失调。选 CMOS 输入运放如 OPA333偏置电流几 pA比双极型运放更稳妥。如果用手头的 OP07偏置电流约 1 nA在 47 kΩ 上产生 47 μV 误差对应约 0.001 ℃可以接受但要注意 OP07 的失调电压需要调零。4. 从样机到可用仪表标定、验证与误差分配4.1 三点标定法与冰点参考两点标定假设系统完全线性但实际运放和 ADC 都有非线性尤其在量程两端。更稳妥的做法是三点标定0 ℃、50 ℃、100 ℃ 各取一个点用最小二乘法拟合直线或者用分段线性插值。0 ℃ 参考用冰水混合物注意要用碎冰加少量水传感器插入后搅拌并等待 3 分钟以上让温度稳定。100 ℃ 参考用沸水但沸点随气压变化海拔 1000 m 处约 96.7 ℃如果按 100 ℃ 标定会引入 3 ℃ 以上的误差。可以用高精度温度计做参考或者查当地沸点修正表。标定时的 ADC 读数要记录原始码不要记录换算后的温度因为换算公式本身可能带误差。记录至少 10 组数据取平均观察标准差如果标准差超过 2 个码说明噪声偏大要检查滤波和接地。4.2 误差分配表与精度估算误差源典型值对温度的影响AD590 校准误差±0.5 ℃±0.5 ℃AD590 非线性±0.3 ℃±0.3 ℃运放失调100 μV0.002 ℃Rf47 kΩ基准电压误差0.1%0.1 ℃100 ℃ 时电阻容差0.1%0.1 ℃ADC 量化1 LSB0.02 ℃自热0.05 ℃0.05 ℃从表里可以看出AD590 本身的校准误差和非线性是主要矛盾外围电路的误差反而小一个数量级。所以花大力气去选 0.01% 的电阻不如先把 AD590 的个体校准做好。如果买的是 AD590J 档校准误差 ±5 ℃必须逐颗标定AD590K 档 ±2.5 ℃AD590L 档 ±1 ℃AD590M 档 ±0.5 ℃。预算允许的话选 M 档能省掉很多标定工作。4.3 用已知温度点验证与长期漂移观察标定完成后不要只测标定点要在中间温度验证。比如用恒温槽设 37 ℃、60 ℃、80 ℃看读数偏差是否在预期范围内。如果没有恒温槽可以用一个稳定的热源加参考温度计比如把传感器和参考温度计一起放进保温杯缓慢升温记录两条曲线看跟随性。长期漂移方面AD590 的年漂移典型值在 0.1 ℃ 以内但焊接应力和封装应力会影响。安装时避免用力拧紧或弯折引脚最好用导热硅脂加夹具固定。如果发现几个月后读数整体偏移先检查基准源和运放再怀疑传感器本身。5. 进阶技巧把 AD590 数字温度计做进多点采集系统单点测温跑通之后下一步往往是把多颗 AD590 接到同一套 ADC 上。AD590 的电流输出特性在这里体现出优势可以用模拟多路开关切换也可以让每颗 AD590 串一个二极管做地址选择但更简单的做法是每颗配一个运放做 I/V 转换然后多路 ADC 轮流采集。如果距离较远比如十几米建议每颗 AD590 就近做 I/V 转换输出 04.7 V 电压再传输比直接传 μA 电流更抗干扰。另一个技巧是用 ADC 的差分输入直接测 AD590 电流。ADS1115 这类 ADC 可以配置成差分模式在输入端接一个精密电阻AD590 电流流过电阻产生压降ADC 直接读差分电压。这样省掉运放但电阻的温漂会直接进入结果所以要选低温漂电阻如 10 ppm/℃ 的金属箔电阻。如果环境温度变化大这个方案不如运放方案稳。对于需要显示和报警的场合可以在 MCU 里加简单的阈值判断和迟滞避免温度在阈值附近抖动导致继电器频繁动作。迟滞带取 0.51 ℃ 比较合适具体看被控对象的惯性。最后如果要做成产品别忘了在 AD590 的供电线上加 TVS 管防止长线感应雷击或静电损坏传感器。本文还有配套的精品资源点击获取
