在这篇文章中,我们将使用Arduino构建一个数字电容计电路,它可以测量从1微法拉到4000微法拉范围内的电容,并具有合理的精度。
介绍
当电容器本体上写的值不清晰时,我们测量电容器的值,或者寻找电路中需要更换的老化电容的值,还有其他几个测量电容的原因。
要找到电容,我们可以很容易地使用数字万用表测量,但不是所有的万用表都有电容测量功能,只有昂贵的万用表有这个功能。
所以这里有一个电路,可以构造和使用很容易。
我们专注于从1微法拉到4000微法拉的电容,这些电容由于老化而容易失去电容,特别是由液体电解质组成的电解电容。
在讨论电路细节之前,让我们看看如何用Arduino测量电容。
大多数Arduino电容计依赖RC时间常数特性。RC时间常数是什么?
RC电路的时间常数可以定义为电容器达到满充电63.2%所花费的时间。零伏为0%充电,100%为电容器全电压充电。
电阻的欧姆值和电容的法拉值的乘积就是时间常数。
T = R x C
T是时间常数
通过重新排列上面的方程,我们得到:
C = T / R
C为未知电容值。
T为RC电路的时间常数,为满充电电容的63.2%。
R是一个已知的电阻。
Arduino可以通过模拟引脚感知电压,可以手动输入已知的电阻值。
通过在程序中应用C = T/R方程,可以求出未知电容值。
现在你应该知道如何求未知电容的值了。
在这篇文章中,我提出了两种电容计,一种是液晶显示,另一种是串行显示器。
如果你是这个电容计的频繁用户,最好使用LCD显示设计,如果你不是频繁用户,最好使用串行显示器设计,因为它可以节省你在LCD显示上的一些钱。
现在让我们看电路图。
基于串行监控的电容计:
正如你所看到的,电路非常简单,只需要一对电阻就可以找到未知的电容。1K欧姆是已知的电阻值和220欧姆的电阻用于放电电容,而测量过程发生。Arduino感知连接在1K欧姆和220欧姆电阻之间的引脚A0上的电压升降。如果您使用极化电容器,如电解电容器,请注意极性。计划:
//----------------- 项目由R.Girish ------------------//
const int analogPin = A0;
const int chargePin = 7;
const int dischargePin = 6;
float电阻值= 1000 //已知电阻的值,单位为欧姆
无符号长开始时间;
无符号长elapsedTime;
法拉浮动;
无效的设置()
{
Serial.begin (9600);
pinMode (chargePin、输出);
digitalWrite (chargePin、低);
}
无效循环()
{
digitalWrite (chargePin、高);
开始时间=米尔斯();
而(analogRead (analogPin) < 648) {}
elapsedTime = millis() - startTime;
microFarads = (((float)elapsedTime /电阻值)* 1000;
if (microFarads > 1)
{
系列。打印(“价值= ");
并同时(长)法拉);
系列。println(“法拉”);
系列。print("Elapsed Time = ");
并同时elapsedTime);
以“女士”);
以 ("--------------------------------");
}
其他的
{
系列。println(“请连接电容器!”);
延迟(1000);
}
digitalWrite (chargePin、低);
pinMode (dischargePin、输出);
digitalWrite (dischargePin、低);
while(analogRead(analogPin) > 0) {}
pinMode (dischargePin、输入);
}
//----------------- 项目由R.Girish ------------------//
将以上代码上传至Arduino,完成硬件设置,初始不连接电容。打开串行监视器;上面写着“请连接电容器”。
现在连接一个电容器,其电容将显示如下所示。
它还显示了达到电容器满充电电压的63.2%所花费的时间,这被显示为消耗时间。
基于LCD的电容仪电路图:
以上原理图是LCD显示屏与Arduino的连接。提供10K电位器来调节显示器的对比度。其余的连接是不言自明的。
上述电路与基于串行显示器的设计完全相同;你只需要连接液晶显示器。
基于LCD的电容计程序:
//----------------- 项目由R.Girish ------------------//
# include < LiquidCrystal.h >
LiquidCrystal液晶(12、11日5、4、3、2);
const int analogPin = A0;
const int chargePin = 7;
const int dischargePin = 6;
浮动电阻值= 1000;//已知电阻的值,单位为欧姆
无符号长开始时间;
无符号长elapsedTime;
法拉浮动;
无效的设置()
{
Serial.begin (9600);
lcd.begin(16日2);
pinMode (chargePin、输出);
digitalWrite (chargePin、低);
lcd.clear ();
lcd.setCursor (0,0);
液晶显示器。打印(“电容”);
lcd.setCursor (0,1);
液晶显示器。打印(“米”);
延迟(1000);
}
无效循环()
{
digitalWrite (chargePin、高);
开始时间=米尔斯();
而(analogRead (analogPin) < 648) {}
elapsedTime = millis() - startTime;
microFarads = (((float)elapsedTime /电阻值)* 1000;
if (microFarads > 1)
{
lcd.clear ();
lcd.setCursor (0,0);
液晶显示器。打印(“价值= ");
lcd.print(法拉(长));
液晶显示器。打印(超滤);
lcd.setCursor (0,1);
lcd.print(“运行:”);
lcd.print (elapsedTime);
液晶显示器。打印(“女士”);
延迟(100);
}
其他的
{
lcd.clear ();
lcd.setCursor (0,0);
液晶显示器。打印(“请连接”);
lcd.setCursor (0,1);
液晶显示器。打印(“电容器! !”);
延迟(500);
}
digitalWrite (chargePin、低);
pinMode (dischargePin、输出);
digitalWrite (dischargePin、低);
while(analogRead(analogPin) > 0) {}
pinMode (dischargePin、输入);
}
//----------------- 项目由R.Girish ------------------//
完成硬件设置后,上传上面的代码。最初不要连接电容器。显示屏显示“请连接电容器!!”“现在你连接电容器。显示器将显示电容的值和消耗时间,以达到63.2%充满电容。
你好,先生,你能给。net发送一个范围是3公里的wifi电路吗
如果可能的话,我们会尝试更新
献给你和你的家人。
我想用220伏交流电发光7000到8000个led,希望它们只是闪烁。
请指导和帮助我给一个适当的ckt。
提前向您表示感谢和最诚挚的问候
Madina,你可以使用下面的设计,在指定的负载点串联或并联led ..每个串联串应该有93个led串联1K/2瓦电阻
//www.addme-blog.com/2013/07/simple-triac-timer-circuit.html