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

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

3天内不再提示

如何制作自己的Arduino电容计

科技观察员 来源:bestengineeringprojects 作者:bestengineeringprojec 2024-02-25 15:10 次阅读

在这个项目中,您将学习如何制作自己的Arduino电容计(测量电容器的值,范围从pF到1000的uF)。一般来说,电子爱好者喜欢设计自己的小工具而不是购买。在这个项目中,我们使用两种电容测量方法,即充电和放电方法,Arduino电容表和多谐振荡器方法,Arduino电容计。对于测量低值电容器,我们使用充电和放电方法,对于测量高值电容器,我们使用多谐振荡器方法。

电容器:电容器以电场的形式存储电能,电场由电容器的两个电极上的电荷极性建立。

电容:它是元件在其中存储电荷的能力。定量电容是可以存储在元件中的每单位电压电荷的量度。

从电容器的公式中,我们发现电容器存储的能量为

W = \dfrac{1}{2}cV^2

从方程中我们发现,电容器两端的电压是恒定的,通过它的电流为零。这意味着电容器,施加直流电压并且没有初始电荷,首先充当短路,但一旦保持完全充电,电容器就会表现为开路。

Arduino电容计电路说明

Arduino电容表的电路如图1所示,由arduino uno板、LCD、定时器IC和少量其他电子元件(如电阻器、电容器等)组成。

Arduino电容仪表电路

Arduino电容计的电路连接说明:

使用LCD的目的是显示电容器的值。我们在这里使用的 LCD 是 16×2 字母数字类型,有 16 个引脚输出。16 个引脚中有 8
个引脚用于数据通信。通常,LCD 可以在两种模式下运行,即 8 位模式和 4 位模式。在 8 位模式下,所有数据引脚 (D0 – D7) 都用于通信,而在 4
位模式下,只有高阶数据引脚 (D4 – D7) 用于通信。在项目中,Arduino电容计使用4位数据模式。LCD 的引脚 D4 到 D7 分别连接到
arduino uno 的 D7 到 D4 引脚。使能 (E) 和 SET/RESET (RS) 引脚分别连接到 arduino uno 板的 D11 和
D12 引脚。

定时器IC
555配置为非稳态多谐振荡器(频率发生器)模式,待测电容器的正极性连接到定时器IC的引脚2,电容器的负极性接地。定时器IC的输出从引脚3连接到arduino
uno板的D2引脚。通常在pF(皮科法拉)范围内的较低值的电容器,使用模拟引脚直接测量,采用充电和放电方法,如电路图所示。

充电放电方法的工作原理(用于测量1pF至100nF的低值电容)。

在这种方法中,电容器首先通过已知电阻器充电和放电。电容器的时间常数\tau = R \乘以 C

其中 R = 用于电容器充电和放电的电阻的固定值

C = 电容器的电容

时间常数定义为电容器上的电荷达到最大电荷值的 63.2% 的时间。

arduino uno板基本上测量电容器在充满电时达到其电压的63.2%和完全放电时达到其电压的36.8%所需的时间。

从上面的表达式中,我们发现需要一个电阻器来对电容器进行充电和放电,但在上述电路中,我们没有使用外部电阻器。这是因为Arduino板内部有上拉和下拉电阻,电容器通过该电阻器充电和放电。通过这种方式,我们可以使用充电和放电方法测量电容器的电容。

多谐振荡器方法(测量范围为1uF – 1000uF的电容器)

可以使用这种方法测量高值电容器。定时器IC在稳态模式下使用。在这种模式下,输出以恒定速率在高电平和低电平之间摆动,即产生频率。

Arduino电容计涉及的数学

t_{high} = 0.693 \times C \times (R_1 + R_2)

其中 R1= 连接在 Vcc 和定时器 IC 555 的引脚编号 7 之间的电阻器。

R2= 定时器 IC 的引脚 7 和引脚 6 之间连接的电阻

t_{low} = 0.693 \times C \times R_2

我们知道

频率 = \dfrac{1}{总 \ 时间 \ 占用} = \dfrac{1}{t_{高} + t_{低}}= \dfrac{1}{0.693 \times C \times (R_1 + R_2) + 0.693 \times C \times _2}= \dfrac{1}{0.693 \times C \times (R_1 + 2R_2)}频率 = \dfrac{1.44}{(R_1 + 2R_2) \times C}

arduino电容表的电阻值是固定的,使用两个电阻,每个电阻100K欧姆。当我们插入任何电容器时,都会产生一个恒定的频率,该频率由Arduino板以时间为单位进行测量。由于arduino具有毫秒的内置时间库功能。

电容可以按时间计算

C = 1.44 \times \dfrac{1}{F} \times \dfrac{1}{R_1 + 2R_2}

如果我们把电阻的值放在上面的表达式中,它看起来像

C = \dfrac{1.44 \ 次 \ 次 \ 以 \ 毫秒为单位}{100 \times 10^3 + 2 \times 100 \times 10^3}= \dfrac{1.44 \times time \ in \ 微秒}{300}

戴夫

这样我们就可以计算出电容器的电容。

如果电容器的值较低,则在多谐振荡器方法中误差会变大,因此我们使用充电和放电方法来降低电容器的值。

单刀双掷开关用于在高值电容器和低值电容器的测量之间切换。

Arduino电容计软件代码:软件代码是用Arduino编程语言编写的,用Arduino编程语言编译。您可以从下面下载代码并在您的系统中使用,而无需进行任何修改。

LiquidCrystal lcd(12, 11, 7, 6, 5, 4);

volatile unsigned long microseconds;

volatile float capacitance;

int CapPf=9;

int CapUf=10;

const int Cap_Out = A2;

const int Cap_In = A0;

const float Stray_Cap = 24.48;

const float Cap_GND = Stray_Cap;

const float Pullup_Res = 34.8;

const int ADC_Value = 1023;

void setup() {

lcd.begin(16, 2);

pinMode(2,INPUT);

pinMode(CapPf,INPUT);

pinMode(CapUf,INPUT);

pinMode(Cap_Out, OUTPUT);

pinMode(Cap_In, OUTPUT);

Serial.begin(9600);

lcd.setCursor(0,0);

lcd.print(“ Capacitance ”);

lcd.setCursor(0,1);

lcd.print(“ Meter ”);

delay(2000);

}

void cap() {

microseconds=micros()-microseconds;

capacitance=1.443*microseconds/300;

capacitance = capacitance/1000;

Serial.print(capacitance,3);

Serial.println(“uF”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Range: 1uf-1mF”);

lcd.setCursor(0, 1);

lcd.print(capacitance,3);

lcd.print(“uF ”);

microseconds=micros();

}

void loop(){

if(digitalRead(CapUf))

{

attachInterrupt(0,cap,RISING);

}

if(digitalRead(CapPf))

{

lcd.clear();

pinMode(Cap_In, INPUT);

digitalWrite(Cap_Out, HIGH);

int val = analogRead(Cap_In);

digitalWrite(Cap_Out, LOW);

if (val 《 1000)

{

pinMode(Cap_In, OUTPUT);

float capacitance = (float)val * Cap_GND / (float)(ADC_Value -

val);

lcd.setCursor(0,0);

lcd.print(“Range: 1pF-1nF”);

lcd.setCursor(0,1);

lcd.print(capacitance,3);

lcd.setCursor(14,1);

lcd.print(“pF”);

delay(200);

}

else

{

pinMode(Cap_In, OUTPUT);

delay(1);

pinMode(Cap_Out, INPUT_PULLUP);

unsigned long u1 = micros();

unsigned long t;

int digVal;

do

{

digVal = digitalRead(Cap_Out);

unsigned long u2 = micros();

t = u2 》 u1 ? u2 - u1 : u1 - u2;

}

while ((digVal 《 1) && (t 《 400000L));

pinMode(Cap_Out, INPUT);

val = analogRead(Cap_Out);

digitalWrite(Cap_In, HIGH);

int dischargeTime = (int)(t / 1000L) * 5;

delay(dischargeTime);

pinMode(Cap_Out, OUTPUT);

digitalWrite(Cap_Out, LOW);

digitalWrite(Cap_In, LOW);

float capacitance = -(float)t / Pullup_Res / log(1.0 - (float)val /
(float)ADC_Value);

lcd.setCursor(0,0);

lcd.print(“Scale: 1pF-1nF”);

if (capacitance 》 1000.0)

{

lcd.setCursor(0,1);

lcd.print(capacitance / 1000.0, 2);

lcd.setCursor(14,1);

lcd.print(“uF ”);

delay(200);

}

else

{

lcd.setCursor(0,1);

lcd.print(capacitance);

lcd.setCursor(14,1);

lcd.print(“nF”);

delay(200);

}

}

while (micros() % 1000 != 0);

}

}

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

    关注

    0

    文章

    11

    浏览量

    6298
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184846
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino制作电感LC表

    今天我们将使用Arduino制作电感LC表。在本项目中,我们将显示电感和电容值以及16x2 LCD显示器的频率。电路中有一个按钮,用于在电容和电感显示之间切换。
    的头像 发表于 11-07 16:31 2022次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>电感LC表

    Arduino 也能改造成温度?

    系统”以及“数控绘图仪”项目,今天,为大家带来了一款Arduino 温度。这款温度既可以作为日常温度使用,又可以进行家用装饰,特别适合爱画画的小创客们动手
    发表于 02-18 11:51

    请教使用arduino开发库仑的问题

    请教使用arduino开发库仑的问题已经用霍尔传感器读取出实时电流然后如何计算出AH呢 AH=I*V单片如果去实时处理这个数据呢大神们有什么大概的思路吗下图中写的我自己的都看不明白了
    发表于 01-08 15:38

    Arduino功率:测量电压、电流和功耗相关资料分享

    购买。但有时候我们可能会遇到需要制作属于自己的仪表的情况。比如说你正在研究一个太阳能光伏项目,你想计算负载的功耗,在这种情况下我们可以使用像Arduino这样的简单微控制器平台制作我们
    发表于 07-05 07:53

    如何选择一款适合自己Arduino控制器

    ,都可以通过本文了解Arduino是什么,为什么Arduino广受欢迎,如何选择一款适合自己Arduino控制器、Arduino开发工具、
    发表于 07-13 09:07

    Arduino功率电路是如何工作的

    怎样去设计Arduino功率的完整电路?Arduino功率电路是如何工作的?
    发表于 09-29 08:46

    如何使用Arduino开发板快速轻松地制作自己的函数生成器呢

    地自行制作,如函数发生器和双模电源。在本篇文章中,我们将学习如何使用Arduino开发板快速轻松地制作自己的函数生成器。该函数发生器又称波形发生器,可产生频率范围为1Hz至2MHz的方
    发表于 11-16 07:20

    基于Arduino的触摸变色台灯制作

    arduino制作LED灯
    发表于 01-22 13:20 14次下载

    基于Arduino的趣味电子制作

    本文主要介绍了基于Arduino的趣味电子制作
    发表于 06-26 08:00 87次下载

    如何在面包板上做自己Arduino

    在本章,我们将:学习如何在面包板上做自己Arduino电路;研究各种Arduino兼容板的特性和优点;学习开源硬件。我们要把整个Arduino分解成若干个元件,然后在面包板上搭出
    发表于 05-29 17:58 6次下载
    如何在面包板上做<b class='flag-5'>自己</b>的<b class='flag-5'>Arduino</b>

    DIY自己arduino项目

    电子发烧友网站提供《DIY自己arduino项目.zip》资料免费下载
    发表于 07-27 10:17 2次下载
    DIY<b class='flag-5'>自己</b>的<b class='flag-5'>arduino</b>项目

    如何使用Arduino制作触控电容式钢琴

    本教程对于电子制造商来说将非常令人兴奋,因为我们将使用 Arduino Nano 设计我们自己的触控电容式钢琴。我们将在我们的钢琴上加入录音和回放功能。
    发表于 07-28 16:47 2699次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>触控<b class='flag-5'>电容</b>式钢琴

    Arduino制作电容报警器

    电子发烧友网站提供《用Arduino制作电容报警器.zip》资料免费下载
    发表于 11-17 14:45 1次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>电容</b>报警器

    Arduino:非接触式开关的制作与控制

    第1篇:用Arduino控制曲别针电动机 我们推出了一项新计划,即通过使用了Arduino的简单制作来学习电子制作的原理和基础知识。
    的头像 发表于 02-20 10:47 1157次阅读
    <b class='flag-5'>Arduino</b>:非接触式开关的<b class='flag-5'>制作</b>与控制

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 2次下载