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

    文章

    12

    浏览量

    6320
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186554
收藏 人收藏

    评论

    相关推荐

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

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

    基于Arduino的智能LED灯条制作LED温度

    了解如何使用智能LED灯条来制作精美的LED温度,该温度模仿老式水银温度的外观。我将使用带有内置WS2812B控制器IC的LED,这意味着每个LED都可以通过
    的头像 发表于 11-09 15:08 5877次阅读

    如何使用Arduino制作电感LC表

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

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

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

    基于Arduino的OLED温度湿度制作教程

    在这个项目中,我们将制作Arduino OLED温度和湿度。我们将从DHT22传感器读取温度和湿度,然后我们将在OLED屏幕上显示数据。
    的头像 发表于 08-01 10:39 1.2w次阅读

    基于使用Arduino、加速度和LED制作时间手套

    通过使用Arduino、加速度和LED制作时间手套,通过倾斜双手,使其看起来像是在时间上静止,并在时间前后进行移动。
    的头像 发表于 04-29 16:17 2914次阅读
    基于使用<b class='flag-5'>Arduino</b>、加速度<b class='flag-5'>计</b>和LED<b class='flag-5'>制作</b>时间手套

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

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

    如何利用Arduino Uno制作台式pH

     本文将介绍如何使用 Atlas Scientific 的重力模拟 pH传感器制作台式 pH
    发表于 08-04 16:04 2348次阅读
    如何利用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>台式pH<b class='flag-5'>计</b>

    如何制作一个Arduino pH

     在这个项目中,我们将制作一个Arduino pH ,并学习如何使用重力 pH 传感器和 Arduino 测量液体溶液的 pH 值。16x2 LCD用于在屏幕上显示 pH 值。我们还
    发表于 08-12 16:39 5053次阅读
    如何<b class='flag-5'>制作</b>一个<b class='flag-5'>Arduino</b> pH<b class='flag-5'>计</b>

    Arduino、 LED矩阵和锂聚合物电池制作圈器

    电子发烧友网站提供《Arduino、 LED矩阵和锂聚合物电池制作圈器.zip》资料免费下载
    发表于 11-07 16:11 0次下载
    <b class='flag-5'>Arduino</b>、 LED矩阵和锂聚合物电池<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和LM35传感器制作温度

    电子发烧友网站提供《如何使用Arduino和LM35传感器制作温度.zip》资料免费下载
    发表于 11-24 14:31 1次下载
    如何使用<b class='flag-5'>Arduino</b>和LM35传感器<b class='flag-5'>制作</b>温度<b class='flag-5'>计</b>

    Arduino上的电感

    电子发烧友网站提供《Arduino上的电感.zip》资料免费下载
    发表于 12-12 14:10 0次下载
    <b class='flag-5'>Arduino</b>上的电感<b class='flag-5'>计</b>

    Arduino间隔

    电子发烧友网站提供《Arduino间隔.zip》资料免费下载
    发表于 12-15 14:31 0次下载
    <b class='flag-5'>Arduino</b>间隔<b class='flag-5'>计</b>

    使用arduino温度

    电子发烧友网站提供《使用arduino温度.zip》资料免费下载
    发表于 02-07 14:10 0次下载
    使用<b class='flag-5'>arduino</b>温度<b class='flag-5'>计</b>