快捷搜索:  汽车  科技

自己制作数字万用表:牛人DIY高精度六位半数字万用表

自己制作数字万用表:牛人DIY高精度六位半数字万用表采用手持设备架构:由于现代MCU的集成度非常高 开发工具越来越简便 加之笔者最近在学习STM32 所以就做成手持设备了.放弃交流测量:由于没有设计交流测量系统的条件 所以没有做.放弃高电压,大电流量程:首先对这些量程进行高精度测量本身难度就非常高,而且对系统的输入选择、保护系统提出了很高的要求,元件质量要求高,pcb面积占用大,最重要的是要为用户人身安全负责,为了避免出现安全问题所以没有设置危险的测量量程。放弃长期稳定性:要靠数字多用表本身来保证长期稳定性意味着整个系统每个部分都要有很高的长期稳定性,基准要用深埋齐纳基准,分压电阻要用精密电阻网络等 等,成本会显著提高,相对而言购买或制作标定好的基准(LYMEX有售)要便宜的多,而且在进行对比测量时可以将整体的精度提高到接近外部基准的水平。

数字多用表是常用的测量仪器,目前市场常见的是3.5(三位半)和4.5 手持表,用于一般测量,另外高端的则是6.5位以上的台式表,价格较高,用于高精度测量。

随着电子技术的进步,高性能低成本的器件层出不穷,使得制作一部低档的6.5位数字多用表成为了可能,这里介绍这款六位版,就是在性能上、功能上和成本上综合考虑的一种设计实现方案。

设计思想:

选用成品的通用元件:高端DMM采用以 恒温深埋齐纳基准——前端为Dual JFET的混合低噪声运算放大器——多斜率积分高速高分辨率ADC 为主轴的测量系统,其中每个部分的制作难度都非常高,而且需要昂贵的仪器进行调试、校准,这样的要求在业余条件下是难以满足的,所以这里采用了相对低成本 可靠通用IC 精密带隙基准——单片低噪声斩波稳零放大器——24Bits低噪声ΣΔ ADC来替代,这样的既可以减少元件采购难度,降低整体成本,最重要的是能得到可靠的性能保证,就是说可以根据DataSheet上标明的最差指标可以计 算出系统的整体性能。

放弃高电压,大电流量程:首先对这些量程进行高精度测量本身难度就非常高,而且对系统的输入选择、保护系统提出了很高的要求,元件质量要求高,pcb面积占用大,最重要的是要为用户人身安全负责,为了避免出现安全问题所以没有设置危险的测量量程。


放弃长期稳定性:要靠数字多用表本身来保证长期稳定性意味着整个系统每个部分都要有很高的长期稳定性,基准要用深埋齐纳基准,分压电阻要用精密电阻网络等 等,成本会显著提高,相对而言购买或制作标定好的基准(LYMEX有售)要便宜的多,而且在进行对比测量时可以将整体的精度提高到接近外部基准的水平。

放弃交流测量:由于没有设计交流测量系统的条件 所以没有做.

采用手持设备架构:由于现代MCU的集成度非常高 开发工具越来越简便 加之笔者最近在学习STM32 所以就做成手持设备了.

总的讲设计要素的优先关系如下:低成本〉小巧〉低功耗〉高性能


自己制作数字万用表:牛人DIY高精度六位半数字万用表(1)


声明:

本文涉及的内容涵盖危及生命的电学测量,特别提醒实验者确保人身安全!

作者完全出于业余爱好撰写该文,由于能力有限疏漏乃至错误在所难免,因此作者不对该文章(包括附带的其他资料)的正确性负责 同时也不对因援引该文或使 用附带资料导致的信誉损失、商业利益损失、财产损失、人身伤亡等(包含上述内容 但不见限于上述内容)负任何连带责任。

作者完全出于学习目的撰写该文 该项目被视为非商业性的 作为学习模拟技术/ STM32 的验证平台而被创建 因此没有义务回答非技术问题.

出于互联网之 free&open 精神,作者将对项目涉及的硬件 固件 上位机软件 开发相关的心得 技术参考等会(等待完善后)开源,希望但不要求您在援引该文或使用上述开源资料时提及作者。

功能和指标:

电源:

3.0V~6V供电可用单节磷酸铁锂(3.2V) 单节钴酸锂(3.7V) 单节锰酸锂(3.6V) 三节碱性电池(4.5V) 三节镍镉或镍氢电池(3.6V) 功耗250mW(开启数据保存) 2.9V低电压关机(为了保护锂 电避免过放电),软件电源开关,待机电流<5uA.

测量:

1ppm 分辨率 1ppm 噪声 5ppm 线性度 1ppm温度系数。

电流测量 100mA 10mA 1mA 压降<0.125V , 500mA 熔断器。

电压测量100mV 1V >10G高阻抗输入, 10V ,100V 9M 低阻抗输入(新版批量采购1.1M的电阻就是标准的10M,后文详述)。

电阻测量 100R 1K 10K 100K 1M 采用恒流方式(对应为1mA 1mA 100uA 10uA 1uA)开路电压5V,支持4线模式。

温度测量 采用PT100传感器,可处理到 -200摄氏度~850摄氏度,分辨率0.01度。

除温度测量外都有25%的超量程测量(例如1V可测到1.25V)当开启自动量程转换时连续三个测量读数都超量程时向上换档,连续三个测量读数都欠量程(< 0.11)时向下换档.

系统和软件:

支持SD卡数据存储,导入校准数据,从SD卡更新固件(新版功能)。

支持实时时钟,可设置自动关机,以及定时唤醒数据采集模式。

支持自动量程,0位补偿,数字滤波。

带有简单的帮助。

一些测试视频:

flash:http://player.youku.com/player.php/sid/XMjEyMDM1MDI0/v.swf

flash:http://player.youku.com/player.php/sid/XMjEyMDM1NTg0/v.swf

flash:http://player.youku.com/player.php/sid/XMjEyMDM2MTI0/v.swf

flash:http://player.youku.com/player.php/sid/XMjEyMDM0Mzg4/v.swf


设计原理:

(更详细的设计基础见 DIY DMM Reference.doc ,这里只是整体大略介绍下)

电源系统:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(2)


电池供电,首先经过有Q71构成的反接保护电路,之后分为两路,一路经HT7130稳压到3.0V供MCU,另一受Q72的控制作为外设的电源,它连接至两个由LT1372构成的Boost

升压器,分别升至15V(供欧姆电流源和OLED偏压)和5V(供模拟部分)

这里采用HT7130主要是考虑到其且具有极低的静态功耗 特别适合为待机的MCU供电。

DCDC变换器采用LT1372是因为其低成本,且该器件具有NFB功能,可以方便的构成Cuk 拓扑结构,组成负电压输出的开关调节器(新版要用到 -15V),虽然由于静态功耗较大,在小电流输出下效率较低,但总体上还是不错的。

MCU 系统:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(3)


MCU 采用STM32F103R6T6 (其实101系列就行,但是市面上没有零售)靠内部的RC振荡器工作在20MHz的频率上(更快没实际意义,且更费电),后备电池使用0.22F的超级电 容,(为了兼容性,又做了个100uF钽电容的焊盘)RTC晶振使MC-306 6pF 32.768K 注意要接入200K的R66否则容易振坏。

MCU使用5线SWD端口进行Flash烧写和调试。

PA0构成软件电源开关,可以从待机模式唤醒MCU。

OLED使用串行模式,4X3矩阵键盘,SD卡采用SPI模式。

其他端口用来控制模拟板。

输入选择:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(4)


先看电压-电阻部分

继电器K1选择将HI输入端子直接接入模拟开关或者进行分压。

继电器K2选择将欧姆电流源注入HI或者LOW。

上面的两个继电器都使用磁保持型的,避免长期通电发热导致热电势误差。

HS,LS,以及HI的输入通过R01-R06以及R17-R1A D17-D16 组成的保护电路被限制在 -2.0V,然后加上从 9串:11并的1.1M分压阵列99:1分压后的电压一起进入8选一模拟开关。

电流部分先经过500mA熔断器-全桥的保护电路,经过继电器选择接入100R 10R 或1R的分流电阻,其上的压降取出后也被送入模拟开关,U01A构成的跟随器将提升二极管桥中点的电位至电流输入端子电位,从而减小了他们的漏电流。

U01B为测量系统提供中点参考电位(也就是LOW端子的电位)。

这里需要提下的是分压电阻采用了50ppm的晶圆电阻构成阵列,下面PCB敷铜均温,从实际效果看还是非常不错的。

U01由于要求不高所以采用了低成本的MCP6002。

模拟开关原计划用MAX328的,但由于货源原因,用ADG508代替了。

程控放大:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(5)


这里采用了AD8629作为主放大器,该器件为低噪声斩波稳零放大器,U20A根据U27选择的反馈信号配置成X1或X10放大器,U20B是一个驱动驱动容性负载的缓冲器,用以驱动ADC。

同样的这里的分压电阻采用了3串:3并构成的9:1分压器,由于要求不高模拟开关采用了采用了高速CMOS的74HC4053

Ref and ADC:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(6)


U44是2.5V精密带隙基准,采用ADR421B他能稳定地驱动1uF的容性负载,最大3ppm/C的温度系数,1.5uV pp 0.1~10Hz 噪声

U43采用24Bit低噪声ΣΔ ADC LTC2440 可提供接近21Bits的有效位。

U41为低噪声LDO调节器LP2985,为模拟部分提供5V电源。

欧姆电流源:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(7)


U31为低偏置电流精密运放AD706,其中U31A和Q31起到参考电压缩放-转移的作用,将2.5V的基准转换成比标准电阻(RJ31~RJ34)公 共端低1V输入到U31B的正,模拟开关用于选择4个标准电阻(开尔文接法),Q32是PJFET受U31B控制保持标准电阻两端的电压为 1V,Q33~Q35 与 D31 组成保护电路(Q34 Q35实际为高反压PNP管2N6520,Q33为低漏电流N-JFET PN1117A)。

DZ1与R30构成降压电路使得U31B的输出能足够的正使Q32截止。

外观介绍:


自己制作数字万用表:牛人DIY高精度六位半数字万用表(8)


最上方的是OLED显示屏 蓝绿色128X32点阵 亮度比较高 在室外强光下也可以看清楚 整体感觉比较像VFD

下面是3行4列的键盘阵列 在测量模式下他们的意义如下


自己制作数字万用表:牛人DIY高精度六位半数字万用表(9)


(在帮助模式下显示的提示,按下对应位置的按键就会有更详细的英文说明)


自己制作数字万用表:牛人DIY高精度六位半数字万用表(10)

VLT 电压测量。

OHM 电阻测量 如果已经是电阻测量模式了再次按下 就是在4线和2线制之间来回切换。

AMP 电流测量。

TMP 温度测量。

UP 切换到更高的量程 同时关闭自动量程切换。

AR 切换是否开启自动量程转换。

NUL 捕捉当前值作为偏置补偿。

NEW 备份当前的数据文件 创建新的数据文件作为当前文件。

LOW 切换到更低的量程 同时关闭自动量程切换。

DF 切换是否开启数字滤波。

ZRO 将偏置补偿置零。

STR 切换是否开启数据文件保存。

再下面是

PWD PLED SDLED RST

PWD 电源按钮 待机时按下开机 工作时按下呼出系统菜单(位置对应3行4列的键盘阵列)


自己制作数字万用表:牛人DIY高精度六位半数字万用表(11)


这些符号的意义如下:

Help 显示帮助菜单

Off 关机

Auto 切换是否10分钟自动关机

Time 设置系统时间


自己制作数字万用表:牛人DIY高精度六位半数字万用表(12)


(时间菜单的帮助)


自己制作数字万用表:牛人DIY高精度六位半数字万用表(13)


(时钟设置菜单)

Cal 呼出校准菜单,关于校准内容后面会详细介绍


自己制作数字万用表:牛人DIY高精度六位半数字万用表(14)


(校准菜单)

Ver 显示固件版本号


自己制作数字万用表:牛人DIY高精度六位半数字万用表(15)


1M 5M 10M 30M 1H 2H 进入 1分钟到2小时间隔的唤醒采样模式(该模式下按PWD键可以退出唤醒采样模式)

PLED 指示电源良好(工作状态)

SDLED 指示正在进行SD卡的IO操作

RST 为复位键,复位除系统时钟外的所有状态

再下面是SD卡座

再下面是输入端子,水平间距是标准的19.05mm(3/4吋)垂直间距时12.7mm(1/2吋)

上排两个从左到右为 LS端子 ,HS端子

下排三个从左到右为 AMP端子 ,LOW端子 HI端子

数据文件存储:

当用户安装了SD卡后即可将采集的数据存储其上,当前的存储文件名位为data.csv(可以用Excel直接打开,由于是纯文本格式notepad也可以直接打开,编辑)。

在按下New键后data. csv就会被命名为data_000. csv data_001. csv等等,并且创建一个新的data. csv用来保存后续的数据,一般情况下,建议用户完成一组测量后按下先按下Str停止存盘,选择新的功能或量程,按下New切换文件,并再次按下Str开 启数据保存。


自己制作数字万用表:牛人DIY高精度六位半数字万用表(16)


校准:

DMM 的ADC采样后转化成满量程为 -1.0的值,然后经过 y=kx c;的线性校准作为输出的读数。在DMM内存为每个量程维护了一组kc值构成一个校准表作为当前校准系数,同时可以将这个校准表烧录到 Flash中,以便长期保存(开机默认加载Flash的内容进校准表)。

校准菜单中对应如下按键

Idty:将校准表归一化(c=0,k=1.25)。

Load:从SD卡读取cal.txt的文件,填充校准表。

Save:将校准表的数据回写进cal.txt文件。

Write: 将校准表的数据烧写进Flash。

Read:加载Flash的内容进校准表。

用户的校准过程是这样的:

准备对应量程的标准源。

准备短路线。

为将待校准的表安装SD卡。

将待校准的表切换到恰当量程,唤出校准菜单,按下Idty,归一化校准表。

短路输入端子,记录读数。(建议开启DF以便获得稳定的度数)。

将源接入输入端子,记录读数。(建议开启DF以便获得稳定的度数)。

将数据输入makecal.exe生成kc值。

修改cal.txt对应量程的kc值。(没有的话可以在校准菜单按下Save生成一个)

为每一个量程重复上述过程。

重启DMM,唤出校准菜单,按下Load,按下Write。

再次重启DMM。


自己制作数字万用表:牛人DIY高精度六位半数字万用表(17)

(校准文件)

自己制作数字万用表:牛人DIY高精度六位半数字万用表(18)

(校准软件)

非常好的尝试,测试了样机,感觉最突出的特点有:

  • 良好的性能,例如短稳、噪音,都达到了相当高的水平
  • 丰富的功能,比如4线电阻、Pt100测温,这主要得益于软件设计
  • 具有SD卡接口,这个非常好,便于独自高精度采集
  • 成本并不高。

作者:孟欣

来源:无线电


猜您喜欢: