在这篇文章中,我们将使用Arduino构建一个数字电容计电路,可以测量从1微法拉到4000微法拉的电容,具有合理的精度。
介绍
我们测量电容的值时,写在电容器的值不清楚,或在我们的电路中找到老化的电容的值,需要更换或不久的将来,有几个其他的原因测量电容。
用数字万用表测量电容很容易,但并不是所有的万用表都有电容测量功能,只有昂贵的万用表才有这个功能。
这是一个电路,可以很容易地构造和使用。
我们的重点是1微法拉到4000微法拉的电容,这些电容由于老化容易失去电容,尤其是由液体电解质组成的电解电容。
在我们讨论电路细节之前,让我们看看如何用Arduino测量电容。
大多数Arduino电容计依赖RC时间常数特性。RC时间常数是多少?
RC电路的时间常数可以定义为电容器达到满充电63.2%所花费的时间。零伏特为零充电,100%为电容满压充电。
电阻的值(欧姆)与电容的值(法拉)之积即为时间常数。
T = R x C
T是时间常数
通过重新排列上面的方程,我们得到:
C = T / R
C为未知电容值。
T为RC电路的时间常数,为满充电电容的63.2%。
R是一种已知的抗性。
Arduino可以通过模拟引脚感知电压,并在程序中手动输入已知的电阻值。
应用程序中C = T/R的方程,可以求出未知的电容值。
到目前为止,你们应该已经知道如何求出未知电容的值了。
在本文中,我提出了两种电容计,一种是LCD显示的电容计,另一种是串行显示器的电容计。
如果你经常使用这种电容表,最好采用LCD显示设计,如果你不经常使用,最好采用串行显示器设计,因为它可以为你节省一些LCD显示的费用。
现在我们来看电路图。
基于串行监视器的电容计:
正如你所看到的,电路非常简单,只需几个电阻就可以找到未知的电容。在测量过程中,1K欧姆是已知的电阻值,220欧姆的电阻用于放电电容。Arduino感知连接在1K欧姆和220欧姆电阻之间的引脚A0上的电压上升和下降。如果您使用极化电容器,如电解电容器,请注意极性。计划:
//----------------- 项目由R.Girish ------------------//
const int analogPin = A0;
const int chargePin = 7;
const int dischargePin = 6;
浮动电阻值= 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("运行时间= ");
并同时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%的满充电电容。
你好,先生,你能发送一个3公里范围的wifi电路吗
如果可能的话,我们将尝试更新它
敬你和你的家人。
Sr我想用220 v ac点亮7000到8000个led,让它们闪烁。
请指导和帮助我给予适当的ckt。
提前向您表示感谢和问候
Madina,你可以使用下面的设计链接,并在负载指定的点串联和并联led ..每个串联串应该有93个led串联一个1K/2瓦特电阻
//m.addme-blog.com/2013/07/simple-triac-timer-circuit.html