在这篇文章中,我们将使用Arduino构建一个直流电压表,其读数显示在16x2 LCD上。
所提出的电压表设计可以读取高达30V的电压,公差为+/- 0.5伏。我们将看看这个设置是如何工作的,并探索我们可以完成的其他可能性,而不是测量电压。
这个项目是相当简单的,即使初学者也可以轻松完成,但必须小心,当我们的原型电路,因为我们将施加外部电压,任何错误的连接Arduino可以导致致命的损坏您的板。
让警告作为一个方面,让我们探索它是如何工作的。
在这里,我们采用的是模拟到数字的转换过程。来自任何源的电压都是模拟函数;在16x2液晶显示屏上显示的读数是数字功能。
挑战在于将这些模拟函数转换为数字函数。幸运的是,Arduino具有读取模拟函数并将其转换为离散函数的功能。
Arduino微控制器配备10位模拟数字转换器(ADC)。这意味着Arduino可以读取2^10=1024个离散电压级别。
换句话说,Arduino的模拟引脚的电压是相对于参考电压采样1024个离散电压电平;采样值显示在LCD上。这就是这个电压表或几乎任何数字电压表背后的原理。
但是,Arduino并没有直接测量所施加的外部电压。电压在电压分压器的帮助下下降,为了得到实际的电压读数,在程序中进行了一些数学计算。
它是如何工作的
该电路由两个电阻器、一个液晶显示器和一个Arduino电路组成,Arduino电路是数字电压表的大脑。两个电阻作为分压器,分压器的节点连接到Arduino的模拟引脚# A0,读取输入电压。Arduino与外部电压源建立接地。
该电压表能测量的最小电压为0.1V,该阈值在程序中设置,使其在断开电压源后读数为0.00伏,由于测量探头周围的静电,读数不显示。
作者的原型:

测量电压时不要反转极性,它不会伤害电路,但它不会读取任何电压,显示0.00 V,直到你纠正极性。通过旋转电位器调整液晶显示器的对比度到最佳水平。
确保你不应用任何电压源可能高于30V的尖峰;它可能会损坏你的Arduino板。从技术上讲,您可以通过改变电阻值和修改程序来提高该电路的最大测量电压,但对于图中所示的设置,30V是限制的。
为了准确读数,应选择具有最小容差值的固定电阻器,电阻器在电压读数的校准中起着重要作用。
线路图:

这种电压表的另一种可能性是,我们可以修改程序,使某些任务自动化。
例如,检测电池电压满,断开电池与充电器的连接,或断开电池,如果电压低于预设电压水平等,这些任务可以完成,即使没有液晶显示。然而,这是另一篇文章的主题。
计划:
//-------- 项目由R.Girish ---------//
# include < LiquidCrystal.h >
LiquidCrystal液晶(12、11日5、4、3、2);
int analogInput = 0;
浮动vout = 0.0;
浮动vin = 0.0;
浮动R1 = 100000;
浮动R2 = 10000;
Int value = 0;
无效的设置()
{
pinMode (analogInput、输入);
液晶显示器。开始(16日2);
液晶显示器。打印(“直流电压表”);
Serial.begin (9600);
}
无效循环()
{
值= analogRead (analogInput);
Vout =(值* 5.0)/ 1024;
vout = vout /(R2/(R1+R2));
如果(vin < 0.10) {
vin = 0.0;
}
液晶显示器。setCursor (0,1);
液晶显示器。打印("输入V = ");
lcd.print (vin);
延迟(500);
}
//-------- 项目由R.Girish ---------//
请用电压表/万用表检查读数。
嗨swagatham,
嗨swagatam,
我的工作是一个工业产品的电池电压数据记录仪。
我为此设计了一些电路。但我对那个电路有疑问,所以你能帮我重新评定这个项目吗?
如果你可以给我发你的邮箱,然后我可以告诉你的概念和我做的工作。
我的邮箱号是nikhil.kakade123@gmail.com
你好Nikhil,我当然可以看看它,并尽我最大的努力来帮助你,但我愿意这样做,只有当我被允许在这个网站上分享,我希望你不会介意。
我的邮箱是hitman2008
@ live.in
你好!有什么方法来建立一个电流指示灯与vu仪表,一些运算放大器的led,并指示电流与led,如0.1A, 0.2A…0.5A, 1A, 1.5A, 2A, 2.5 ........10A
这很容易使用IC LM3915。只要在它的引脚和地线上添加一个电流感应电阻,随着电阻器上的电位差上升,它将通过连接在ic输出引脚上的10个led反射。
谢谢你!