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

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

3天内不再提示

如何使用Arduino构建一个数字电容表电路?

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

在这篇文章中,我们将使用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显示屏设计,如果您不经常使用,最好使用串行显示器设计,因为它可以在LCD显示屏上节省一些费用。

现在让我们继续看电路图。

基于串行监视器的电容计:

如您所见,电路非常简单,只需几个电阻即可找到未知电容。1K欧姆是已知的电阻值,220欧姆电阻用于在测量过程中对电容器放电。Arduino 感测引脚
A0 上的上升和减少电压,该引脚连接在 1K 欧姆和 220 欧姆电阻器之间。如果您使用电解电容器等极化电容器,请注意极性。程序:

//-----------------Program developed by R.Girish------------------//

const int analogPin = A0;

const int chargePin = 7 ;

const int dischargePin = 6;

float resistorValue = 1000 // Value of known resistor in ohm

unsigned long startTime;

unsigned long elapsedTime;

float microFarads;

void setup()

{

Serial.begin(9600);

pinMode(chargePin, OUTPUT);

digitalWrite(chargePin, LOW);

}

void loop()

{

digitalWrite(chargePin, HIGH);

startTime = millis();

while(analogRead(analogPin) 《 648){}

elapsedTime = millis() - startTime;

microFarads = ((float)elapsedTime / resistorValue) * 1000;

if (microFarads 》 1)

{

Serial.print(“Value = ”);

Serial.print((long)microFarads);

Serial.println(“ microFarads”);

Serial.print(“Elapsed Time = ”);

Serial.print(elapsedTime);

Serial.println(“mS”);

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

}

else

{

Serial.println(“Please connect Capacitor!”);

delay(1000);

}

digitalWrite(chargePin, LOW);

pinMode(dischargePin, OUTPUT);

digitalWrite(dischargePin, LOW);

while(analogRead(analogPin) 》 0) {}

pinMode(dischargePin, INPUT);

}

//-----------------Program developed by R.Girish------------------//

将上面的代码上传到Arduino,完成硬件设置,最初不要连接电容器。打开串行监视器;它说“请连接电容器”。

现在连接一个电容器,其电容将显示如下图所示。

它还显示了达到电容器完全充电电压的63.2%所需的时间,该时间显示为经过的时间。

使用Arduino的数字电容计

基于LCD的电容计的电路图:

上面的示意图是LCD显示器和Arduino之间的连接。提供10K电位器,用于调整显示器的对比度。其余的连接是不言自明的。

上述电路与基于串行监视器的设计完全相同;您只需要连接LCD显示器。

LCD电容计程序:

//-----------------Program developed by R.Girish------------------//

#include《LiquidCrystal.h》

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

const int analogPin = A0;

const int chargePin = 7 ;

const int dischargePin = 6;

float resistorValue = 1000; // Value of known resistor in ohm

unsigned long startTime;

unsigned long elapsedTime;

float microFarads;

void setup()

{

Serial.begin(9600);

lcd.begin(16,2);

pinMode(chargePin, OUTPUT);

digitalWrite(chargePin, LOW);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“ CAPACITANCE”);

lcd.setCursor(0,1);

lcd.print(“ METER”);

delay(1000);

}

void loop()

{

digitalWrite(chargePin, HIGH);

startTime = millis();

while(analogRead(analogPin) 《 648){}

elapsedTime = millis() - startTime;

microFarads = ((float)elapsedTime / resistorValue) * 1000;

if (microFarads 》 1)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Value = ”);

lcd.print((long)microFarads);

lcd.print(“ uF”);

lcd.setCursor(0,1);

lcd.print(“Elapsed:”);

lcd.print(elapsedTime);

lcd.print(“ mS”);

delay(100);

}

else

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Please connect”);

lcd.setCursor(0,1);

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

delay(500);

}

digitalWrite(chargePin, LOW);

pinMode(dischargePin, OUTPUT);

digitalWrite(dischargePin, LOW);

while(analogRead(analogPin) 》 0) {}

pinMode(dischargePin, INPUT);

}

//-----------------Program developed by R.Girish------------------//

完成硬件设置后,上传上述代码。最初不要连接电容器。显示屏显示“请连接电容器!!”现在您连接电容器。显示屏将显示电容器的值和达到充满电电容器的
63.2% 所花费的时间。

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

    关注

    100

    文章

    6036

    浏览量

    150260
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186951
  • 数字电容表
    +关注

    关注

    1

    文章

    9

    浏览量

    9526
  • 电容电路
    +关注

    关注

    1

    文章

    11

    浏览量

    3104
收藏 人收藏

    评论

    相关推荐

    用IR传感器和Arduino制作个数字转速计(附代码)

    本项目采用IR传感器和Arduino开发板制作了个数字转速计,以RPM为单位测量马达的转数。项目黑简单,只需将IR传感器和Arduino板子与16*2 LCD连接即可。
    的头像 发表于 08-25 09:55 3624次阅读
    用IR传感器和<b class='flag-5'>Arduino</b>制作<b class='flag-5'>一</b><b class='flag-5'>个数字</b>转速计(附代码)

    使用Arduino构建个数字罗盘

    Arduino 起使用。将学到以下几点:使用 Arduino 创建数字指南针;HMC5883L传感器的操作;使用 Arduino 创建
    发表于 08-25 06:11

    怎样设计个数字电压电路

      设计个数字电压电路需要考虑以下几个方面:  电压输入:需要有电压输入端口,可以是模
    发表于 04-14 14:29

    怎么设计个数字电压电路

      设计个数字电压电路需要考虑以下几个方面:  电压输入:需要有电压输入端口,可以是模
    发表于 04-19 11:42

    采用AT89C52设计个数字万用

    本设计采用AT89C52为主控芯片配以振荡电路设计设计了个数字万用,可用于测量直流电压,直流电流,电阻和电容,并配以档位转换。本系统使用
    发表于 09-20 07:59

    labview显示个数字信号的步骤

      用digital waveform graph 显示个数字信号的步骤 1.采集个数字信号。 2.构建
    发表于 08-02 12:38 3104次阅读

    个数字输出和个数字输入来读取温度

    个数字输出和个数字输入来读取温度
    发表于 06-08 20:59 464次阅读
    用<b class='flag-5'>一</b><b class='flag-5'>个数字</b>输出和<b class='flag-5'>一</b><b class='flag-5'>个数字</b>输入来读取温度

    使用LabVIEW数字波形图显示个数字信号的步骤详细说明

    用digital waveform graph 显示个数字信号的步骤1.采集个数字信号。2.构建
    发表于 12-05 14:59 40次下载
    使用LabVIEW<b class='flag-5'>数字</b>波形图显示<b class='flag-5'>一</b><b class='flag-5'>个数字</b>信号的步骤详细说明

    个数字转速电路

    这是个数字转速电路图,可用于带有任意数量气缸和接触断路器或电子点火系统的 2 冲程和 4 冲程汽油发动机的汽车或摩托车。可用作通用转数计数器。
    的头像 发表于 06-23 16:31 2965次阅读
    <b class='flag-5'>一</b><b class='flag-5'>个数字</b>转速<b class='flag-5'>表</b>的<b class='flag-5'>电路</b>图

    如何构建个数字控制器

    在本文中,我们构建个数字控制器,允许用户控制电机速度和运行时间等功能。本文还包括支持 NEC 协议的红外接收器
    发表于 07-07 17:08 1178次阅读
    如何<b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个数字</b>控制器

    如何使用MPU6050和Arduino构建个数字量角器

    MPU6050是款 集成 了 IC 3 轴加速度计和 3 轴陀螺仪的 单元。它还包含温度传感器和 DCM 来执行复杂的任务。MPU
    发表于 08-31 15:42 5533次阅读
    如何使用MPU6050和<b class='flag-5'>Arduino</b><b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个数字</b>量角器

    Arduino电容构建

    电子发烧友网站提供《Arduino电容构建.zip》资料免费下载
    发表于 11-14 11:04 0次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>电容</b><b class='flag-5'>表</b><b class='flag-5'>构建</b>

    如何采用ICL7107构建个数字电压

    在这个项目中,我们将在**不使用任何微控制器的情况下构建个数字电压。 **在这里,我们使用种非常流行的 IC进行电压测量,即ICL71
    的头像 发表于 01-25 16:01 4292次阅读
    如何采用ICL7107<b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个数字</b>电压<b class='flag-5'>表</b>

    如何使用Arduino和LCD显示屏构建个数字水流量计?

    在这篇文章中,我们将使用 Arduino 和 16 x 2 LCD显示屏构建个数字水流量计。我们将看看YF-S201水流量传感器,其结构和工作原理以及如何与
    的头像 发表于 07-27 10:44 1834次阅读
    如何使用<b class='flag-5'>Arduino</b>和LCD显示屏<b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个数字</b>水流量计?

    构建个数字电流的方法

    在这篇文章中,我们将使用 16 x 2 LCD显示屏和 Arduino构建个数字电流。我们将了解使用分流电阻器测量电流的方法,并实现基于
    的头像 发表于 07-27 11:39 1484次阅读
    <b class='flag-5'>构建</b><b class='flag-5'>一</b><b class='flag-5'>个数字</b>电流<b class='flag-5'>表</b>的方法