0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何制作自己的Arduino電容計(jì)

科技觀察員 ? 來源:bestengineeringprojects ? 作者:bestengineeringprojec ? 2024-02-25 15:10 ? 次閱讀

在這個(gè)項(xiàng)目中,您將學(xué)習(xí)如何制作自己的Arduino電容計(jì)(測(cè)量電容器的值,范圍從pF到1000的uF)。一般來說,電子愛好者喜歡設(shè)計(jì)自己的小工具而不是購(gòu)買。在這個(gè)項(xiàng)目中,我們使用兩種電容測(cè)量方法,即充電和放電方法,Arduino電容表和多諧振蕩器方法,Arduino電容計(jì)。對(duì)于測(cè)量低值電容器,我們使用充電和放電方法,對(duì)于測(cè)量高值電容器,我們使用多諧振蕩器方法。

電容器:電容器以電場(chǎng)的形式存儲(chǔ)電能,電場(chǎng)由電容器的兩個(gè)電極上的電荷極性建立。

電容:它是元件在其中存儲(chǔ)電荷的能力。定量電容是可以存儲(chǔ)在元件中的每單位電壓電荷的量度。

從電容器的公式中,我們發(fā)現(xiàn)電容器存儲(chǔ)的能量為

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

從方程中我們發(fā)現(xiàn),電容器兩端的電壓是恒定的,通過它的電流為零。這意味著電容器,施加直流電壓并且沒有初始電荷,首先充當(dāng)短路,但一旦保持完全充電,電容器就會(huì)表現(xiàn)為開路。

Arduino電容計(jì)電路說明

Arduino電容表的電路如圖1所示,由arduino uno板、LCD、定時(shí)器IC和少量其他電子元件(如電阻器、電容器等)組成。

Arduino電容儀表電路

Arduino電容計(jì)的電路連接說明:

使用LCD的目的是顯示電容器的值。我們?cè)谶@里使用的 LCD 是 16×2 字母數(shù)字類型,有 16 個(gè)引腳輸出。16 個(gè)引腳中有 8
個(gè)引腳用于數(shù)據(jù)通信。通常,LCD 可以在兩種模式下運(yùn)行,即 8 位模式和 4 位模式。在 8 位模式下,所有數(shù)據(jù)引腳 (D0 – D7) 都用于通信,而在 4
位模式下,只有高階數(shù)據(jù)引腳 (D4 – D7) 用于通信。在項(xiàng)目中,Arduino電容計(jì)使用4位數(shù)據(jù)模式。LCD 的引腳 D4 到 D7 分別連接到
arduino uno 的 D7 到 D4 引腳。使能 (E) 和 SET/RESET (RS) 引腳分別連接到 arduino uno 板的 D11 和
D12 引腳。

定時(shí)器IC
555配置為非穩(wěn)態(tài)多諧振蕩器(頻率發(fā)生器)模式,待測(cè)電容器的正極性連接到定時(shí)器IC的引腳2,電容器的負(fù)極性接地。定時(shí)器IC的輸出從引腳3連接到arduino
uno板的D2引腳。通常在pF(皮科法拉)范圍內(nèi)的較低值的電容器,使用模擬引腳直接測(cè)量,采用充電和放電方法,如電路圖所示。

充電放電方法的工作原理(用于測(cè)量1pF至100nF的低值電容)。

在這種方法中,電容器首先通過已知電阻器充電和放電。電容器的時(shí)間常數(shù)\tau = R \乘以 C

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

C = 電容器的電容

時(shí)間常數(shù)定義為電容器上的電荷達(dá)到最大電荷值的 63.2% 的時(shí)間。

arduino uno板基本上測(cè)量電容器在充滿電時(shí)達(dá)到其電壓的63.2%和完全放電時(shí)達(dá)到其電壓的36.8%所需的時(shí)間。

從上面的表達(dá)式中,我們發(fā)現(xiàn)需要一個(gè)電阻器來對(duì)電容器進(jìn)行充電和放電,但在上述電路中,我們沒有使用外部電阻器。這是因?yàn)锳rduino板內(nèi)部有上拉和下拉電阻,電容器通過該電阻器充電和放電。通過這種方式,我們可以使用充電和放電方法測(cè)量電容器的電容。

多諧振蕩器方法(測(cè)量范圍為1uF – 1000uF的電容器)

可以使用這種方法測(cè)量高值電容器。定時(shí)器IC在穩(wěn)態(tài)模式下使用。在這種模式下,輸出以恒定速率在高電平和低電平之間擺動(dòng),即產(chǎn)生頻率。

Arduino電容計(jì)涉及的數(shù)學(xué)

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

其中 R1= 連接在 Vcc 和定時(shí)器 IC 555 的引腳編號(hào) 7 之間的電阻器。

R2= 定時(shí)器 IC 的引腳 7 和引腳 6 之間連接的電阻

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

我們知道

頻率 = \dfrac{1}{總 \ 時(shí)間 \ 占用} = \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電容表的電阻值是固定的,使用兩個(gè)電阻,每個(gè)電阻100K歐姆。當(dāng)我們插入任何電容器時(shí),都會(huì)產(chǎn)生一個(gè)恒定的頻率,該頻率由Arduino板以時(shí)間為單位進(jìn)行測(cè)量。由于arduino具有毫秒的內(nèi)置時(shí)間庫(kù)功能。

電容可以按時(shí)間計(jì)算

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

如果我們把電阻的值放在上面的表達(dá)式中,它看起來像

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

戴夫

這樣我們就可以計(jì)算出電容器的電容。

如果電容器的值較低,則在多諧振蕩器方法中誤差會(huì)變大,因此我們使用充電和放電方法來降低電容器的值。

單刀雙擲開關(guān)用于在高值電容器和低值電容器的測(cè)量之間切換。

Arduino電容計(jì)軟件代碼:軟件代碼是用Arduino編程語言編寫的,用Arduino編程語言編譯。您可以從下面下載代碼并在您的系統(tǒng)中使用,而無需進(jìn)行任何修改。

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);

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電容計(jì)
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6328
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187063
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    用IR傳感器和Arduino制作一個(gè)數(shù)字轉(zhuǎn)速計(jì)(附代碼)

    本項(xiàng)目采用IR傳感器和Arduino開發(fā)板制作了一個(gè)數(shù)字轉(zhuǎn)速計(jì),以RPM為單位測(cè)量馬達(dá)的轉(zhuǎn)數(shù)。項(xiàng)目黑簡(jiǎn)單,只需將IR傳感器和Arduino板子與16*2 LCD連接即可。
    的頭像 發(fā)表于 08-25 09:55 ?3636次閱讀
    用IR傳感器和<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>一個(gè)數(shù)字轉(zhuǎn)速<b class='flag-5'>計(jì)</b>(附代碼)

    基于Arduino的智能LED燈條制作LED溫度計(jì)

    了解如何使用智能LED燈條來制作精美的LED溫度計(jì),該溫度計(jì)模仿老式水銀溫度計(jì)的外觀。我將使用帶有內(nèi)置WS2812B控制器IC的LED,這意味著每個(gè)LED都可以通過
    的頭像 發(fā)表于 11-09 15:08 ?5931次閱讀

    如何使用Arduino制作電感LC表

    今天我們將使用Arduino制作電感LC表。在本項(xiàng)目中,我們將顯示電感和電容值以及16x2 LCD顯示器的頻率。電路中有一個(gè)按鈕,用于在電容和電感顯示之間切換。
    的頭像 發(fā)表于 11-07 16:31 ?2959次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>電感LC表

    Arduino功率計(jì):測(cè)量電壓、電流和功耗相關(guān)資料分享

    購(gòu)買。但有時(shí)候我們可能會(huì)遇到需要制作屬于自己的儀表的情況。比如說你正在研究一個(gè)太陽能光伏項(xiàng)目,你想計(jì)算負(fù)載的功耗,在這種情況下我們可以使用像Arduino這樣的簡(jiǎn)單微控制器平臺(tái)制作我們
    發(fā)表于 07-05 07:53

    基于Arduino的OLED溫度計(jì)濕度計(jì)制作教程

    在這個(gè)項(xiàng)目中,我們將制作Arduino OLED溫度計(jì)和濕度計(jì)。我們將從DHT22傳感器讀取溫度和濕度,然后我們將在OLED屏幕上顯示數(shù)據(jù)。
    的頭像 發(fā)表于 08-01 10:39 ?1.2w次閱讀

    基于使用Arduino、加速度計(jì)和LED制作時(shí)間手套

    通過使用Arduino、加速度計(jì)和LED制作時(shí)間手套,通過傾斜雙手,使其看起來像是在時(shí)間上靜止,并在時(shí)間前后進(jìn)行移動(dòng)。
    的頭像 發(fā)表于 04-29 16:17 ?2960次閱讀
    基于使用<b class='flag-5'>Arduino</b>、加速度<b class='flag-5'>計(jì)</b>和LED<b class='flag-5'>制作</b>時(shí)間手套

    如何使用Arduino制作觸控電容式鋼琴

    本教程對(duì)于電子制造商來說將非常令人興奮,因?yàn)槲覀儗⑹褂?Arduino Nano 設(shè)計(jì)我們自己的觸控電容式鋼琴。我們將在我們的鋼琴上加入錄音和回放功能。
    發(fā)表于 07-28 16:47 ?3346次閱讀
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>觸控<b class='flag-5'>電容</b>式鋼琴

    如何利用Arduino Uno制作臺(tái)式pH計(jì)

     本文將介紹如何使用 Atlas Scientific 的重力模擬 pH傳感器制作臺(tái)式 pH 計(jì)
    發(fā)表于 08-04 16:04 ?2431次閱讀
    如何利用<b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>臺(tái)式pH<b class='flag-5'>計(jì)</b>

    如何制作一個(gè)Arduino pH計(jì)

     在這個(gè)項(xiàng)目中,我們將制作一個(gè)Arduino pH 計(jì),并學(xué)習(xí)如何使用重力 pH 傳感器和 Arduino 測(cè)量液體溶液的 pH 值。16x2 LCD用于在屏幕上顯示 pH 值。我們還
    發(fā)表于 08-12 16:39 ?5257次閱讀
    如何<b class='flag-5'>制作</b>一個(gè)<b class='flag-5'>Arduino</b> pH<b class='flag-5'>計(jì)</b>

    Arduino、 LED矩陣和鋰聚合物電池制作計(jì)圈器

    電子發(fā)燒友網(wǎng)站提供《Arduino、 LED矩陣和鋰聚合物電池制作計(jì)圈器.zip》資料免費(fèi)下載
    發(fā)表于 11-07 16:11 ?0次下載
    <b class='flag-5'>Arduino</b>、 LED矩陣和鋰聚合物電池<b class='flag-5'>制作</b><b class='flag-5'>計(jì)</b>圈器

    Arduino制作電容報(bào)警器

    電子發(fā)燒友網(wǎng)站提供《用Arduino制作電容報(bào)警器.zip》資料免費(fèi)下載
    發(fā)表于 11-17 14:45 ?1次下載
    用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b><b class='flag-5'>電容</b>報(bào)警器

    如何使用Arduino和LM35傳感器制作溫度計(jì)

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino和LM35傳感器制作溫度計(jì).zip》資料免費(fèi)下載
    發(fā)表于 11-24 14:31 ?1次下載
    如何使用<b class='flag-5'>Arduino</b>和LM35傳感器<b class='flag-5'>制作</b>溫度<b class='flag-5'>計(jì)</b>

    Arduino上的電感計(jì)

    電子發(fā)燒友網(wǎng)站提供《Arduino上的電感計(jì).zip》資料免費(fèi)下載
    發(fā)表于 12-12 14:10 ?0次下載
    <b class='flag-5'>Arduino</b>上的電感<b class='flag-5'>計(jì)</b>

    Arduino間隔計(jì)

    電子發(fā)燒友網(wǎng)站提供《Arduino間隔計(jì).zip》資料免費(fèi)下載
    發(fā)表于 12-15 14:31 ?0次下載
    <b class='flag-5'>Arduino</b>間隔<b class='flag-5'>計(jì)</b>

    使用arduino溫度計(jì)

    電子發(fā)燒友網(wǎng)站提供《使用arduino溫度計(jì).zip》資料免費(fèi)下載
    發(fā)表于 02-07 14:10 ?0次下載
    使用<b class='flag-5'>arduino</b>溫度<b class='flag-5'>計(jì)</b>