使用Arduino的电容表

原文:https://circuitdigest.com/microcontroller-projects/arduino-capacitance-meter-circuit

使用Arduino的电容表

ARDUINO的

经过**迪利普·拉贾(Dilip Raja)** 2016年4月2日8

Arduino电容表Arduino电容表

当我们遇到先前设计的电路板时,或者我们从旧电视或计算机中取出一块电路板进行维修时。有时我们需要知道板上特定电容器的电容以消除故障。然后,我们面临着从板上获取电容器的准确值的问题,特别是如果它是表面贴装器件。我们可以购买用于测量电容的设备,但是所有这些设备都很昂贵,并不适合所有人。考虑到这一点,我们将设计一个简单的Arduino电容表 来测量未知电容器的电容

该仪表可以容易地制造并且还具有成本效益。我们将使用Arduino Uno,施密特触发门和555 IC计时器制造电容表

所需组件:

  • 555定时器IC
  • IC 74HC14施密特触发门或非门。
  • 1KΩ电阻器(2个),10KΩ电阻器
  • 100nF电容器,1000µF电容器
  • 16 * 2液晶屏
  • 面包板和一些连接器。

电路说明:

下图显示了使用Arduino电容表的电路图。电路很简单,LCD与Arduino相连以显示测得的电容器电容。方波发生器电路(在稳定模式下为555)连接到Arduino,在这里我们已经连接了需要测量其电容的电容器。施密特触发器门(Schmitt Trigger Gate)(IC 74LS14)用于确保仅将矩形波馈送到Arduino。为了滤除噪声,我们在电源两端增加了两个电容器。

该电路可以准确地测量10nF至10uF范围内的电容。
在这里插入图片描述

基于555定时器IC的方波发生器:

首先,我们将讨论基于555 Timer IC的方波发生器,或者我应该说555 Astable Multivibrator。我们知道,电容器的电容不能在数字电路中直接测量,换句话说,UNO处理数字信号,因此不能直接测量电容。因此,我们使用555方波发生器电路将电容器连接到数字世界。

简而言之,计时器提供方波输出,其频率直接影响与其相连的电容。因此,首先我们获得方波信号,该信号的频率代表未知电容器的电容,然后将该信号馈送到UNO以获取适当的值。

不稳定模式下的常规配置555,如下图所示:
在这里插入图片描述

输出信号频率取决于RA,RB电阻和电容器C。

频率(F)= 1 /(时间段)= 1.44 /((RA + RB * 2)* C)。

在此,RA和RB是电阻值,C是电容值。通过将电阻和电容值放在上述公式中,我们可以得出输出方波的频率。

我们将连接1KΩ作为RA和10KΩ作为RB。所以公式变成

频率(F)= 1 /(时间段)= 1.44 /(21000 * C)。

通过重新排列我们拥有的条款,

电容C = 1.44 /(21000 * F)

在我们的程序代码(请参阅下文)中,为了准确获取电容值,我们通过将获得的结果(以法拉为单位)乘以“ 1000000000”来计算以nF为单位的结果。另外,由于RA和RB的精确电阻分别为0.98K和9.88K,因此我们使用了“ 20800”而不是21000。

因此,如果我们知道方波的频率,就可以得到电容值。

施密特触发器门(Schmitt Trigger Gate):

由计时器电路生成的信号并不完全安全,无法直接提供给Arduino Uno。考虑到UNO的敏感性,我们使用施密特触发器门(Schmitt Trigger Gate)。施密特触发器门(Schmitt Trigger Gate)是数字逻辑门。

该门根据输入电压电平提供输出。施密特触发器具有THERSHOLD电压电平,当施加到栅极的INPUT信号的电压电平高于逻辑门的THRESHOLD时,OUTPUT变为高电平。如果INPUT电压信号电平低于THRESHOLD,则门的OUTPUT将为LOW。因此,我们通常不会单独获得施密特触发器,因此在施密特触发器之后总是有一个非门。施密特触发器的工作原理在这里进行了说明:施密特触发器门(Schmitt Trigger Gate)

我们将使用74HC14芯片,该芯片中有6个施密特触发器门(Schmitt Trigger Gate)。这些六个门在内部进行了连接,如下图所示。
在这里插入图片描述
倒立施密特触发器门(Schmitt Trigger Gate)的真值表是在下面的图显示,与此我们必须为在其端子反相的正和负的时间段的UNO编程。
在这里插入图片描述
将定时器电路产生的信号连接到ST门,在输出端会有倒相时间的矩形波,可以安全地给UNO。

Arduino测量电容:

Uno有一个特殊的函数***pulseIn****,*它使我们能够确定特定矩形波的正态持续时间或负态持续时间:

Htime = pulseIn(8,HIGH);
Ltime = pulseIn(8,LOW);

所述pulseIn功能措施,其高或低电平存在于乌诺的PIN8的时间。pulseIn功能以微秒为单位测量此高时间(Htime)和低时间(Ltime)。当我们将Htime和Ltime加在一起时,我们将得到Cycle Duration(周期持续时间),通过反转它,我们将得到Frequency。

一旦有了频率,就可以使用前面讨论的公式来获得电容。

摘要和测试:

因此,总而言之,我们将未知电容器连接到555定时器电路,后者会生成一个方波输出,该输出的频率与电容器的电容直接相关。该信号通过ST门提供给UNO。UNO测量频率。在已知频率的情况下,我们对UNO进行编程,以使用前面讨论的公式来计算电容。

让我们看看我得到的一些结果,

当我连接1uF电解电容器时,结果为1091.84 nF〜1uF。用0.1uF的聚酯电容器得到的结果为107.70 nF〜0.1uF
在这里插入图片描述
在这里插入图片描述

然后我连接了0.1uF的陶瓷电容器,结果为100.25 nF〜0.1uF。此外,使用4.7uF电解电容器的结果为4842.83 nF〜4.8uF
在这里插入图片描述
在这里插入图片描述

这样便可以简单地测量任何电容器的电容。

代码

#include <LiquidCrystal.h>

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

int32_t Htime;                    
int32_t Ltime;
float Ttime;
float frequency;
float capacitance;

void setup()
{
    pinMode(8,INPUT);            //pin 8 as signal input
    lcd.begin(16, 2);
    lcd.setCursor(0,0);
    lcd.print("capacitance =");
}
void loop()
{
    for (int i=0;i<5;i++)        //measure time duration five times
    {
        Ltime=(pulseIn(8,HIGH)+Ltime)/2;        //get average for each cycle
        Htime=(pulseIn(8,LOW)+Htime)/2;
    }

    Ttime = Htime+Ltime;
    frequency=1000000/Ttime;
    
    capacitance = (1.44*1000000000)/(20800*frequency);   //calculating the Capacitance in nF
    lcd.setCursor(0,1);
    lcd.print(capacitance);
    lcd.print(" nF   ");
    delay(500);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值