本人用 单片机 与 R2R(8位)+DAC(12位) 电路, 尝试做了一个 0.000--10.000V 的 直流电压信号源, 简单介绍如下:
* 电路部分比较简单,分两部分, 主输出部分用R2R电路, LM399做基准源,用(N+P)MOS管 做模拟开关, 输出电压设
计为 10V, R2R输出的步进电压约40mV; 辅助输出部分用 DAC (12位)芯片, 两部分输出经运放合成后, 推动一个NPN
管做最后输出。
* 软件设计 0.000V 到 10.000V 连续可调, 步进1mV, 也可以细调DAC的输出, 最终步进电压约 0.015mV。
* 本信号源显示电压比较简单, 用单片机自带的10位AD功能, 有0.0xV的误差,没有使用 高位AD转换芯片, 显示电压在
这里仅做参考。
* 电路板设计时, 没有通讯接口,没有外接的EEPROM, 调试时增加(外接)了这二个IC 电路中除了LM399外, 其他元件
都是大众化的, 电阻是718厂的,运放用一般低温漂 的即可。
* 输出电压测量:
手上只有一台五位半的万用表HP3478A, 该表在3V以下测量时, 可以测量到0.01mV 的 精度,下述测量数据以
HP3478A 为依据, 测量时关闭DAC芯片输出,只保留R2R的输出, 万用表和信号源都预热一小时, 在 (1V, 2V, 3V,
5V, 9V) 附加选5个测试电压, 依次 循环反复测量这5个电压点, 连续测量12小时, 测量结果是: 3V以下电压漂移
小于 0.03mV, 3V以上测量, 电压漂移不超过 0.1mV(万用表在3V以上最低电压是0.1mV)。
* 总体误差:
R2R 电路电压调节步进约40mV, 需要用一个12位的DAC芯片细调,二路输出合成处的电阻是 10K 和 1M, 经实际
电路测试, DAC步进精度约0.015mV, 假设DAC的非线性误差最大为4个字, 4*0.015mV=0.06mV, 加上0.03mV 的
R2R误差, 最大误差 小于 0.1mV。 这里 R2R电路的误差系数, 可以通过串口修改, DAC芯片的误差不能修正。
* 为保持温度恒定, 将电路板放在塑胶合内, 信号源需要预热,否则误差会更大一些。
* 改进措施:
<1> 开机预热时间较长, 不知是运放原因, 还是(N+P)MOS管的原因, 估计不会是电阻的 原因吧, 求各位大侠 推
荐一下, 是否有可工作在 7V 或 10V 的电子开关IC, 不知电子开关的温度性能 与 (N+P)MOS管 相比如何,
<2> 显示准备改为 LCD1602, 降低成本。
<3> 按照上述的误差范围, 基准改用廉价一些的AD584 等,不知是否合理。
下面给出测试图和一些测试参数
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
万用表测出的电压 信号源设置输出的电压
00.00049E*0 ************> SET = 00000
00.20001E*0 ************> SET = 00200
00.39998E*0 ************> SET = 00400
00.59999E*0 ************> SET = 00600
00.80001E*0 ************> SET = 00800
00.99999E*0 ************> SET = 01000 **
01.20000E*0 ************> SET = 01200
01.39999E*0 ************> SET = 01400
01.60000E*0 ************> SET = 01600
01.80001E*0 ************> SET = 01800
01.99999E*0 ************> SET = 02000
02.20001E*0 ************> SET = 02200
02.40000E*0 ************> SET = 02400
02.59999E*0 ************> SET = 02600
02.79999E*0 ************> SET = 02800
02.99998E*0 ************> SET = 03000
03.50003E*0 ************> SET = 03500 ***
04.00010E*0 ************> SET = 04000
04.50009E*0 ************> SET = 04500
05.00005E*0 ************> SET = 05000
05.50010E*0 ************> SET = 05500
06.00005E*0 ************> SET = 06000
06.50006E*0 ************> SET = 06500
07.00000E*0 ************> SET = 07000
07.50005E*0 ************> SET = 07500
08.00008E*0 ************> SET = 08000
08.50000E*0 ************> SET = 08500
09.00010E*0 ************> SET = 09000
09.50010E*0 ************> SET = 09500
10.00005E*0 ************> SET = 10000
解释: **----> 设置输出1.000V, 实际输出 0.99999V
***----> 设置输出3.500V, 实际输出 3.50003V |