资料介绍
描述
介绍
坚持只有一个万用表/电压表?但是,有时您需要同时检查 2 或 3 个电压。那么您可能会考虑制作一个真正的直流电压表!
采用常用组件和易于理解的代码设计,可以同时测量单个电路或 3 个独立电路中 3 个节点的正电压和负电压。
示范
硬件
以下硬件用于构建此设备:-
- Arduino Uno:在 ATmega328P 微控制器上上传代码
- ATmega328P:带有 Arduino Bootloader 和内置 10 位 ADC 的 8 位微控制器
- 带 I2C 接口的 128x32 1306 OLED 显示屏:显示电压
- LM324 OpAmp:ADC 的模拟信号调理
- 4cm x 6 cm FR4 原型板:构建电路板
- 10k 多圈电位器:调整零(半 AREF)电压
- TP4056模块:锂聚合物电池充电
- LiPo电池:300mAh可充电电池为设备供电
工作原理:AFE 解释
通常,ATmega328P (Arduino Uno) 可以测量 Gnd 和 AVCC 范围之间的电压(即 0 到 5V),无需任何分压电阻网络。如果启用内部 AREF,它可以测量 Gnd 和 AREF 范围之间的电压(即 0 到 1.1 V)。使用一些分压器,可以测量高于 5V 的电压。这些都是相对于 Gnd 的正电压。
但它无法测量低于 Gnd 的任何电压,这意味着它无法测量负电压。问题是,ATmega328P 有一个单端 ADC,默认情况下会根据Gnd 进行测量。
解决办法是,不要再对 Gnd 进行测量。
真正的电压表有 COM(黑色)和 V(红色)端子,您将 COM 连接到一个节点,V 连接到电路上的另一个节点。相对于 COM 节点,V 节点上的电压读数。
您需要构建一个 (AFE)模拟前端,某种信号调节电路来生成类似 COM 的行为。此 COM 节点的电压应介于 AVCC 和 Gnd 之间。理想情况下,AVCC 电压的一半,但对于本设计,它是 AREF 的一半。
当对 COM 进行外部电压测量时,您可以轻松测量正电压和负电压!
请仔细检查以下电路:
那么,这里发生了什么?内部参考 AREF 在 ATmega328P 上启用(来自无效设置中的固件/代码)。AREF 引脚为 1.1 V。现在,ADC 测量的有效范围为 0 至 1.1 伏。
接下来,使用 LM324 运算放大器缓冲这个 1.1 AREF 电压,这意味着我们仍然有来自第一个运算放大器输出的 1.1 电压。一个 10k 多圈微调电位器精确设置为 5k 以产生 550mV(半 AREF)伏特。这个 550 mV 信号由第二个运算放大器缓冲。550 mV 信号也连接到 ADC Ch - 0。它应该读取 512(10 位的一半)。
有一个分压器网络由 5 兆欧姆(两个 10M 并联)和 100 千欧姆电阻组成,连接到第二个运算放大器的输出。
我将此分压器网络上的电阻较低端 (100k) 定义为 COM,电阻较高端 (5M) 端定义为 V。此分压器的中点连接到 ADC Ch - 1。当没有外部电压施加到此分压器时,ADC Ch - 1 应读取 512(因为 550 mV)
当施加外部电压时,分压器中点电压将移动到 550 mV 以上或以下。如果 V 上的外部电压相对于 COM 较高(正电压),它将移动到 550 mV 以上,如果 V 上的外部电压相对于 COM 较低(负电压),它将移动到 550 mV 以下。ADC Ch-1 读数将相应改变。使用 ADC 读数的这种变化,我们可以计算外部电压。
为什么使用 AREF 而不是 AVCC ?
此设计由 LiPo 电池供电,充满电的 LiPo 将从 4.2 伏开始,电压会逐渐下降。所以,AVCC也会发生变化。但内部参考 AREF 具有恒定的 1.1 伏特。这就是我选择 AREF 的原因。
如果使用其他没有AREF的单片机,可以使用TL431 IC来产生参考电压!
为什么使用 LM324 运算放大器?
LM324 IC 在一个封装中有 4 个运算放大器,应用广泛,它的输出可以(非常接近)Gnd。它还适用于 3 至 32 伏之间的任何电源电压。
您始终可以使用更好的运算放大器(精密、低噪声、轨到轨)
电压计算公式
使用 ADC 测量的电压将是实际施加电压的一小部分。这就是为什么在固件内部使用以下公式来计算实际电压的原因:-
分压电阻器:范围与分辨率
- 选择正确的输入电阻 R_Low 和 R_High 很重要,因为电阻值将根据以下公式确定有效电压测量范围:
+/- V = (R_High / R_Low) / 2
- R_High和 R_Low 必须具有可以处理测量电压的额定功率,应满足以下公式:
V < sqrt ((R_High + R_Low) * P)
- 电压测量设备的输入阻抗必须在数百千欧到几兆欧的数量级,以最大限度地减少负载效应:
R_High + R_Low > hundreds of kOhms to few MOhms
对于这个项目,这个电压表可以测量 +/- 25 伏特,R_High = 5M(或 5000k)和 R_Low = 100K ,额定功率为 1/10 瓦,满足以上 3 个条件
- 接下来是测量分辨率,它受实际 ADC 分辨率和您要设置的有效测量范围的限制。ADC 分辨率是可以识别的最小增量电压。
Measurement Resolution = Measurement Range / ADC Resolution
- 例如:如果使用 10 位 ADC 将测量范围设置为 +/- 5 V,您应该在该范围内获得大约 10 mV 的分辨率。但对于这个测量范围为 +/- 25 V(总计 50V)的设计,分辨率约为 49 mV。
- 分辨率还取决于显示器中显示的位数。此设计仅显示小数点后一位数字,因此 49 mV 分辨率可高达 100 mV 或 0.1 伏特。
示例:假设新的 AA 电池用 Fluke 电压表读数为 1.627 伏,但该电压表可能读数仅为 1.5 或 1.6 或 1.7 伏
-
For better range or resolution select microcontroller with 12 bit ADC or more
-
Reduce measurement range to increase resolution
-
Reduce resolution to increase range or measure bigger voltages
准确性:硬件和软件设计如何提供帮助
准确性取决于很多因素。在这个项目中实现了以下一些技巧。
- 首先,输入电阻(分压器 R_Low 和 R_High 上的电阻)必须具有更好的容差,大约为 1% 或更小。这将确保电阻器的电阻非常接近其额定值。
- AVCC 和 Gnd 引脚上带有去耦电容器的稳定电源(最好是电池,无 SMPS)将降低噪声。建议使用 10uF 电容
- 稳定的AREF 或模拟参考电压对于精度非常重要,放置一个 100nF 的电容就可以做到这一点。
- 使用低噪声电子设备将有助于提高准确性(更好的 Opamp)
- 建议在模拟前端采用良好的布线做法和屏蔽
在固件中实施以下操作将提高准确性:-
- 在切换模拟通道之前/之后添加轻微的延迟
- 丢弃第一个模拟转换值
- 取几百个样本并取平均值以提高准确性
- 使用偏移变量进行读数的软校正/调整
尽管可以使用以下代码将 Arduino UNO 或 Atmega328P 的 AREF 引脚设置为 1.1 伏
analogReference(INTERNAL);
不同芯片的实际 AREF 电压可能在 1.06 伏到 1.13 伏之间变化。建议使用高精度万用表测量 AREF 引脚,并找到实际电压。然后在代码中定义它以获得更高的准确性
#define AREF 1.097 // Aref pin voltage
不要只是复制粘贴 1.1 伏!
输入保护:安全问题!
这是用于过压或浪涌保护的双向二极管钳位,您可以与 R_Low 并联使用。由于空间不足,我将这部分留在了我的构建中!
安全永远不能掉以轻心!当 R_Low 两端的电压超过 +/- 800 mV 时,这些二极管将开始钳位。这只是一个例子,根据需要使用不同类型的二极管以获得合适的钳位电压。
编程和焊接
- 第 1 步:从此处在您的计算机上下载并安装 Arduino 。
- 第 2 步:打开 IDE。转到工具 > 库管理器并键入“u8g”
为 1306 OLED 显示器安装u8glib(由 Oliver 设计)库。
- 第 5 步:根据此原理图构建电路。将所有组件焊接到原型板上。
执行电压校准和测量
校准
为获得最佳效果,您需要使用常规万用表/电压表校准该电压表。您将需要任何电池 AA 或 LiPo。用普通万用表测量电池电压。然后用这个电压表测量电池。看到读数有一些差异,现在稍微调整/调整 10K 电位器(参见示意图)以进行校准。
通过反转电池的负电压来执行相同的步骤。
您还可以通过使用电阻器定义的值添加/减去一些偏移值来从代码进行软校准。
测量
共有 3 个 Commons COM1、COM2、COM3 和 3 个对应的 V1、V2、V3 探头,用于 3 个不同通道的电压测量。
对于通道 1,电压是在 V1 上相对于 COM1 测量的。如果用 V1 探测的电路节点的电位高于用 COM1 探测的节点,则电压读数将为正。如果 V1 和 COM1 在这两个电路节点上交换,则电压读数将为负。
同样适用于带 V2 和 COM2 的通道 2 以及带 V3 和 COM3 的通道 3。
在不共享任何电气连接的 3 个不同电路上测量三个不同电压时,对 3 个电路使用 V1/COM1、V2/COM2、V3/COM3 对。
在单个电路上测量三个不同的电压时,请勿使用多个 COM 。只需将一个 COM (例如 COM3,任何 COM 都可以!)连接到 Gnd 或该电路的任何节点。然后使用 V1、V2、V3 测量 3 个不同节点上相对于 Gnd 或连接 COM 的节点的 3 个不同电压。
在同一电路上连接多个 COM 会搞砸读数!
结论和未来的工作
我忘了添加一些重要的东西,当电压范围超过测量范围时显示 OL(过载)。希望我会用额外的功能更新代码。
内部 EEPROM 上的一些电压记录可能很方便,我也会尝试这样做。我想为 REL(归零幻影电压)和 HOLD(冻结屏幕)添加几个按钮。我已经在顶部焊接了一个母接头以供将来扩展,敬请期待。
该设计可用于测量缓慢变化的交流电压/信号(假设为正弦波),而无需更改硬件。它还可用于设计分流电流表(提示:用非常低的 R 值替换分压器)。但是您需要为此编写不同的代码。
这个概念适用于任何微控制器,请随意构建您自己的设计,祝您好运。
- 基于51单片机的自制电压表源代码 3次下载
- Arduino Nano数字电压表 16次下载
- 使用Arduino Uno作为电压表进行小电压测量 4次下载
- Arduino电压表开源分享 7次下载
- 数字电压表设计仿真资料 73次下载
- 《基于单片机控制的新型交流电压表系统》论文 51次下载
- 数字电压表设计与资源汇总下载 0次下载
- 积分式数字电压表设计方法 17次下载
- 积分式数字电压表设计 17次下载
- 数控电压表的PCB原理图免费下载 55次下载
- 简易数字电压表设计与制作 97次下载
- EDA数字电压表设计报告 17次下载
- 电压表protues仿真 基于51数字电压表仿真设计 电压表程序 230次下载
- 数字电压表原理图 61次下载
- 基于单片机的数字电压表原理图 512次下载
- 什么是负电压?负电压是如何产生的? 1531次阅读
- 通过PWM波输出负电压的方法介绍 1.2w次阅读
- 电压表和电流表的区分 3.5w次阅读
- 负电压的产生电路图原理_负电压产生电路分析 2.2w次阅读
- 实用的三相整流式电压表分享 2929次阅读
- 如何采集负电压信号_负电压产生电路 3.5w次阅读
- 负电压是什么_怎么产生负电压_负电压的产生电路图 11.7w次阅读
- 电压表的读数规则_如何读取电流表、电压表 5.8w次阅读
- 基于ICL7107器件的量程自切换数字电压表的设计与实现 1.2w次阅读
- 电压表测量电压的原理是什么(电压表工作原理) 7.7w次阅读
- 电压表的使用方法_数字电压表的使用方法图解 5.9w次阅读
- 如何判断电压表的测量对象_判断电压表的测量对象的方法 11.6w次阅读
- 电压表与电流表的区别_电流表与电压表的选择和使用 2w次阅读
- ICL7107组成电压表的使用与维修 1.7w次阅读
- 数字电压表简易检修程序方案 2562次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多