0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

构建一个数字电流表的方法

科技观察员 来源:homemade-circuits 作者:homemade-circuits 2023-07-27 11:39 次阅读

在这篇文章中,我们将使用 16 x 2 LCD 显示屏和 Arduino构建一个数字电流表。我们将了解使用分流电阻器测量电流的方法,并实现基于Arduino的设计。所提出的数字电流表可以以合理的精度测量0至2安培(绝对最大值)的电流。

电流表的工作原理

电流表有两种类型:模拟电流表和数字电流表,它们的工作原理彼此不同。但是,它们都有一个共同的概念:分流电阻器。

分流电阻器是在测量电流时在源极和负载之间放置电阻非常小的电阻器。

让我们看看模拟电流表的工作原理,然后更容易理解数字电流表。

模拟电流表的工作原理

电阻R非常低的分流电阻器,假设电阻器上连接某种模拟仪表,其偏转与通过模拟仪表的电压成正比。

现在让我们从左侧传递一些电流。i1是进入分流电阻R之前的电流,i2是经过分流电阻后的电流。

电流 i1 将大于 i2,因为它通过分流电阻器损失了一小部分电流。分流电阻器之间的电流差在V1和V2处产生非常小的电压。

电压量将由该模拟仪表测量。

分流电阻器两端产生的电压取决于两个因素:流过分流电阻器的电流和分流电阻器的值。

如果通过分流器的电流更大,则产生的电压会更高。如果分流器的值很高,则分流器上产生的电压更高。

分流电阻器必须非常小,并且必须具有更高的额定功率。

一个小值电阻器可确保负载获得足够的电流和电压以正常工作。

此外,分流电阻器必须具有更高的额定功率,以便在测量电流时能够承受更高的温度。通过分流器的电流越高,产生的热量就越多。

到现在为止,您已经了解了模拟仪表的工作原理。现在让我们继续数字设计。

到目前为止,我们知道如果有电流流动,电阻器将产生电压。图中V1和V2是点,我们将电压样本带到微控制器

计算电压-电流转换

现在让我们看看简单的数学,如何将产生的电压转换为电流。

欧姆定律:I = V/R

我们知道分流电阻R的值,它将输入到程序中。

分流电阻两端产生的电压为:

V = V1 – V2

V = V2 – V1(避免测量时出现负符号,负符号取决于电流方向)

所以我们可以简化等式,

I = (V1 – V2)/R 或

I = (V2 - V1)/R

上述等式之一将在代码中输入,我们可以找到电流并显示在LCD中。

现在让我们看看如何选择分流电阻值。

Arduino内置了10位模数转换器ADC)。它可以检测 0 至 5V 的 0 至 1024 步长或电压电平。

因此,该ADC的分辨率为每步5/1024 = 0.00488伏或4.88毫伏。

因此,4.88 毫伏/2 mA(电流表的最小分辨率)= 2.44 或 2.5 欧姆电阻。

我们可以并联使用四个 10 欧姆、2 瓦的电阻器来获得在原型中测试过的 2.5 欧姆。

那么,我们怎么能说建议的电流表的最大可测量范围是 2 安培。

ADC只能测量0至5 V,即。上述任何情况都会损坏微控制器中的ADC。

从测试的原型中,我们观察到,在V1点和V2点的两个模拟输入处;当电流测量值为X mA时,模拟电压读取X/2(在串行监视器中)。

例如,如果电流表读数为 500 mA,则串行监视器上的模拟值读取 250 步或电压电平。ADC可承受高达1024步或最大5
V,因此当电流表读数为2000 mA时,串行监视器的读数约为1000步,接近1024步。

任何高于 1024 电压电平的内容都会损坏 Arduino 中的 ADC。为了避免这种情况,在2000
mA之前,LCD上将提示一条警告消息,指出断开电路。

到现在为止,您已经了解了建议的电流表的工作原理。

现在让我们继续讨论构造细节。

示意图:

Arduino DC Digital Ammeter

建议的电路非常简单且对初学者友好。按照电路图构造。调整 10K 电位计以调整显示对比度。

您可以通过 USB 或带有 9 V 电池的 DC 插孔为 Arduino 供电。与使用一个 2.2 欧姆电阻器和 5-8 瓦电阻相比,四个 10
瓦电阻器将均匀散热。

当没有电流通过时,显示器可能会读取一些小的随机值,您可以忽略它,这可能是由于测量端子上的杂散电压。

注意:不要反转输入负载电源极性。

程序代码

//------------------Program Developed by R.GIRISH------------------//

#include 《LiquidCrystal.h》

#define input_1 A0

#define input_2 A1

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int AnalogValue = 0;

int PeakVoltage = 0;

float AverageVoltage = 0;

float input_A0 = 0;

float input_A1 = 0;

float output = 0;

float Resolution = 0.00488;

unsigned long sample = 0;

int threshold = 1000;

void setup()

{

lcd.begin(16,2);

Serial.begin(9600);

}

void loop()

{

PeakVoltage = 0;

for(sample = 0; sample 《 5000; sample ++)

{

AnalogValue = analogRead(input_1);

if(PeakVoltage 《 AnalogValue)

{

PeakVoltage = AnalogValue;

}

else

{

delayMicroseconds(10);

}

}

input_A0 = PeakVoltage * Resolution;

PeakVoltage = 0;

for(sample = 0; sample 《 5000; sample ++)

{

AnalogValue = analogRead(input_2);

if(PeakVoltage 《 AnalogValue)

{

PeakVoltage = AnalogValue;

}

else

{

delayMicroseconds(10);

}

}

input_A1 = PeakVoltage * Resolution;

output = (input_A0 - input_A1) * 100;

output = output * 4;

while(analogRead(input_A0) 》= threshold)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Reached Maximum”);

lcd.setCursor(0,1);

lcd.print(“Limit!!!”);

delay(1000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Disconnect now!!”);

delay(1000);

}

while(analogRead(input_A0) 》= threshold)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Reached Maximum”);

lcd.setCursor(0,1);

lcd.print(“Limit!!!”);

delay(1000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Disconnect now!!”);

delay(1000);

}

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“DIGITAL AMMETER”);

lcd.setCursor(0,1);

lcd.print(output);

lcd.print(“ mA”);

Serial.print(“Volatge Level at A0 = ”);

Serial.println(analogRead(input_A0));

Serial.print(“Volatge Level at A1 = ”);

Serial.println(analogRead(input_A1));

Serial.println(“------------------------------”);

delay(1000);

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电流
    +关注

    关注

    40

    文章

    6000

    浏览量

    129909
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184845
  • LCD显示屏
    +关注

    关注

    0

    文章

    88

    浏览量

    13048
  • 数字电流表
    +关注

    关注

    0

    文章

    6

    浏览量

    7432
收藏 人收藏

    评论

    相关推荐

    如何设计简易电流表

    电流表
    小鱼教你模数电
    发布于 :2023年09月04日 21:53:32

    请教大侠们这个数电流表怎么改成电压

    请教大侠们这个数电流表怎么改成电压
    发表于 10-06 19:53

    数显电流表,你用对了吗?

    昨天做了测试治具,数显电流表供电电源忘记独立供电,活生生把正负极给短路了,因此,分享下数显电流表使用方法,希望大家不要出现同样的错误。(数显电流表
    发表于 11-10 11:21

    数字电流表设计(硬件图+源程序)

    https://www.elecfans.com/soft/69/2014/20140418340375.html#download-url谁有这个帖子里面的资料。能不能分享给我或者你有数字电流表的设计 硬件仿真源程序 也行。谢谢分享。
    发表于 03-23 12:17

    钳形电流表的原理及使用方法

    和变压器样。初级线圈就是穿过钳型铁芯的导线,相当于1匝的变压器的次线圈,这是升压变压器。二次线圈和测量用的电流表构成二次回路。当导线
    发表于 09-21 09:34

    【技术贴】数显电流表的使用方法

    电流表的使用方法后,仪表运行将更加稳定和可靠:1、数显电流表和液晶电流表的深度都比指针电流表大,安装单相
    发表于 01-27 16:43

    电流表与电压的选择和使用

    测电路电压的高低,来确定仪表及附加装置的绝缘强度,以免发生危害人身安全及损坏仪表的事故。2、电流表与电压的使用方法在使用电流表和电压之前
    发表于 02-08 09:23

    数字电流表测试数据不准确

    手头有个数字电流表,测试数据不准确了交流220v供电部分主要芯片有以下:ICL7650S斩波稳零式高精度运算放大器AD637型真有效值_直流转换器ICL7135CN4069ls247现在
    发表于 04-16 06:36

    直流电流表怎么接线?

    直流电流表的接线方法电路图
    发表于 11-01 09:10

    直流电流表怎么接线?

    直流电流表的接线方法
    发表于 03-23 08:44

    数字电流表的设计

    、计算技术、自动化技术的成果与精密电测量技术密切的结合在起,成为仪器、仪表领域中独立而完整的分支,数字电流表标志着电子仪器领域的
    发表于 08-06 06:22

    怎样去设计基于单片机的数字电流表

    串联,其显示的是电流数字电压是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。数字
    发表于 12-13 06:51

    ua电流表内阻太大?????

    说明下情况,现在电路板1已经量产,用ua电流表测试流态电流都没问题,证明电路板1电路没问题。现在电路板2是跟电路板1的电路样,只是更换了单片机。用同
    发表于 01-26 15:19

    电流表的使用方法_钳型电流表的使用方法及图解

     电流表是指用来测量交、直流电路中电流的仪表。在电路图中,电流表的符号为“圈A”。电流值以“安”或“A“为标准单位。本文主要介绍一下电流表
    发表于 02-08 10:18 11.1w次阅读

    电流表如何使用 电流表的使用方法及注意事项

    电流表是一种用来测量电路中电流强度的工具。它广泛应用于电工、电子、物理实验等领域。下面将详细介绍电流表的使用方法及注意事项。 一、电流表的种
    的头像 发表于 01-18 09:33 1885次阅读