一个万用表制作实例

最近在网上看到一篇关于自己制作的万用表的文章,觉得不错就将她翻译了过来,推荐给各位同仁。当然限于个人水平,有不当指出恳请指正。大家也可以看原文:https://hackaday.io/project/9395-multimeter#menu-description,同时感谢作者公开这些资料。有兴趣的也可以加入这一项目,正文如下:

1、描述

我经常带着很多设备去往各地,但每次乘坐飞机都被要求做“随机抽查”。所以我决定制作我自己的手提式万用表,它的功能将覆盖我在实验室使用的大部分设备。我使用PIC24FJ256GA110微控制器设计了一个带有双通道24位ADC的电路板,以及具有过电压保护的高电压模拟前端。PIC24F拥有一个500 ksps ADC,所以我设计成了一个拥有55khz(- 3db)带宽的单通道示波器。由于PIC24有一个PWM功能,所以我将其做成了一个简单的PWM波形生成器。我还添加了电阻和电容测量电路。我添加了两个通道用于数字跟踪,采用中断驱动的数字嗅探器。两个通道的24位数据记录器满足所有数据记录的需求。具有自动的AC / DC切换功能,所以不需要手动设置DC或AC读数。这台万用表可以通过按键或者电脑来控制。所有的数据都可以实时地显示在显示屏或者上位界面上。

2、详细说明

下面是Multimeter+的方块结构图:

在项目主页中,有一个显示原理图的各部分联系的框图:

 

该仪器有两路低频高压的独立输入,用于测量1kHz以下的信号和电压。在前面的框图中,它们被标记为输入1和输入2,他们都是带过压保护和滤波的全差分输入。模拟信号经过信号处理电路后,就会被24位AFE(MCP3911)数字化。MCP3911是一个双通道模拟前端(AFE),它包含两个同步采样delta-sigma模拟/数字转换器(ADC)、两个PGA、相位延迟补偿块、内部电压参考、调制器输出块和20MHz高速SPI兼容串行接口。

 

电压读数能够在自带的LCD显示器或者PC用户接口上实时显示。输入2能够被设置用于0.5A一下的电流测量(后续我将继续提高电流的测量范围)。选择电流测量时,继电器会连通Rsh1到输入2.

 

到目前为止,已经能够测量高达120VAC的AC和DC电压,理论上这台仪器应该可以达到220VAC或310VDC。

有一个单独的示波器通道,可以约380ksps的速度将高达55kHz的输入信号送到电脑上显示,后续我们将继续提高采样速度,时期达到500ksps。PIC24FJ256GA110有500ksp的ADC转换器,但是因为我必须操作和存储数据,有效的采样率下降。

如下显示了MCU部分的电路图:

 

PIC24FJ256GA110是带外围插脚选择的100Pin通用闪存微控制器。

所有PIC24F设备的核心都是修改16位哈佛架构,首先介绍了芯片的dsPIC®数字信号控制器。

它是理想的低功好设备(< 100nA备用电流)并能连接各种应用,因为它拥有多个串口(3xI2C、3xSPI)、4xUARTS和23个独立计时器可供使用。大容量的RAM(16kB)内存以及大容量(高达256kB)增强闪存程序存储器,使其适合于嵌入式控制和监控应用程序。PPS(外围插脚选择)辅助工具能够实现最有效的I/O配置,CTMU提供了多达64个按键的触摸感应支持。

•高达16MIPS的性能

•16x16硬件乘法器,单周期执行

•12位x16位硬件除法器

•C编译器优化指令集

内置数据记录器使用的内部串行flash:

 

SPI总线用于传送MCU的数据到串行Flash。数据记录仪目前正在开发中。

下面的图片显示了数据记录器的“下载配置”页面:

 

有一个独立的输入用于电阻和电容的测量。

板载脉冲发生器输出可用于测试电子电路。

数字嗅探器是一项正在进行中的工作,它将被用来追踪数字信号。

内部串行闪存允许在内部记录数据,以便以后的数据展示。

采用电位隔离的全速度USB接口使得从Multemeter+到PC用户界面的数据传输速率能达到1.2 Mbit/s。隔离减少了由PC所引入的测量失真的影响。

Multimeter+通过一个可充电的锂离子电池供电,并有一个板载充电电路。

 

充电电路由外接12VDC电源供电。主要组件是BQ24103RHLR同步开关,锂离子电池和聚合物锂电池的电荷管理集成电路。U4和U5用于监视电池的充电状态。电池状态显示在液晶显示器上。

扩展端口用于无线通信和额外的硬件,传感器。

 

Micro USB用于Multimeter+和电脑之间的串行通讯。

 

测量值实时显示。下图显示了一个连续运行的DVM(数字电压表)页面的快照。在图像上测量两个小的直流值,波形图显示在直流电压上的噪声。

 

采样频率可在3.56 ksps和57 ksps之间切换。切换到57个ksp可以提供更好的噪声图像。

 

FFT页面显示测量电压的光谱图:

 

Multimeter+设计成适用于Hammond 1553T。

 

也许和大多数人一样,我经常使用两块万用表。原因是我经常需要比较两个不同来源的电压。如果我只有1块表,我需要比较两个读数,我要么试着记住电压读数,要么我把它写下来,然后比较。这不是很方便。此外,计算功耗电压和电流必须同时测量。Multimeter+通过双输入来解决所有这些问题。仪器可以同时测量两种不同的电压或者电流。

 

该仪器基于PIC24FJ256GA110微芯片微控制器。它由锂离子充电电池供电,可以作为独立的或USB测试和测量设备。

 

 

下面的图片是能不的情况。它有两个约-3db/1kHz的24位全差分通道。采样率可设置为3.56 ksps或57ksps。有4个自动开关电压范围,最低为0到+/-0.6v,最高可达400V最大值。每个通道都是独立的,目前有10M欧姆输入阻抗(希望能做到20M),两个通道都根据测量的输入自动切换交流和直流测量。交流值是真实的RMS读数。通道1可用于测量交流或直流电流。

 

通过USB连接读数能以数字和图形方式在PC上实时显示。如果您正在测试电源,需要查看低频波纹,您可能会发现此设备非常有用。

 

该仪器有一个单通道10位分辨率USB示波器,带宽大约为55kHz(我仍在测试频率参数以获得更精确的值)。示波器输入有x1和x10范围。

 

 

示波器中还在还发中,还需要做大量的测试和调试。

电容和电阻表:

 

电容计的范围从15nF到大约2000 uF。电阻测量目前可以从2k欧姆到15兆欧姆。我在做低电阻测量,希望我能得到1欧姆的读数。

 

还有一个带有32M存初期的2通道数据记录器,这部分还在开发中。

 

可以用数字嗅探器来跟踪数字信号。数字嗅探器是一种输入,它驱动芯片上的一个中断引脚。一旦中断发生,我检查引脚的当前状态,“High”或“Low”,并读取我的计时器来确定上一次中断的时间。时间间隔表示接收了多少位数据。我还在做这个项目的这一部分。我应该能在下个周末之前把它弄出来,然后发布一个短片。

在仪器上有一个扩展端口。它有一些GPIO引脚UART,I2C和SPI端口。只有2个端口可以同时使用。我使用UART端口连接一个Nordic NRF51822BLE设备,在我的万用表和我的手机之间运行一个简单的无线通讯。

计算机发送命令并接收来自手持设备的数据。

 

命令是由计算机向手持设备传输的单个字符。设备接收字符并解码,运行相应的代码段。例如,当采用电压测量和在两个通道上收集数据时,必须将两个通道的字符发送给手持设备。当这个字符被接收时,单元开始转换循环。转换完成后,固件加载CH0和CH1数据缓冲区,结果为24位。当所有缓冲区都满时,数据就会被发送回PC。我使用LabView来分析和显示PC上的数据。LabVIEW是一种图形编程语言,它使得开发自定义用户界面变得非常容易。以下是用于控制和配置来自PC的单元的字符命令的部分列表:

‘I’——返回董事会的ID。

‘p’——暂停收购。

‘s’——传输256个样本开始一个新的周期。

‘W’——写ADC寄存器

‘R’——读取ADC寄存器

命令通过串口发送。该设备被分配一个连接到计算机的COM端口号码,并通过COM端口与LabVIEW进行通信。波特率设置为每秒1.2M。LabVIEW有许多准备使用块来进行信号处理。一旦接收到数据,就可以通过低通、高通、带通或任何其他的LabVIEW过滤器过滤数据。LabVIEW有一个信号处理组件,因此可以研究和处理所有捕获的信号。

posted @ 2017-06-21 22:11  Moonan  阅读(2003)  评论(0编辑  收藏  举报