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

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

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

如何制作自己的Arduino電容計

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

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

電容器:電容器以電場的形式存儲電能,電場由電容器的兩個電極上的電荷極性建立。

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

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

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

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

Arduino電容計電路說明

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

Arduino電容儀表電路

Arduino電容計的電路連接說明:

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

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

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

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

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

C = 電容器的電容

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

arduino uno板基本上測量電容器在充滿電時達到其電壓的63.2%和完全放電時達到其電壓的36.8%所需的時間。

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

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

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

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

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歐姆。當我們插入任何電容器時,都會產(chǎn)生一個恒定的頻率,該頻率由Arduino板以時間為單位進行測量。由于arduino具有毫秒的內(nèi)置時間庫功能。

電容可以按時間計算

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}

戴夫

這樣我們就可以計算出電容器的電容。

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

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

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

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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電容計
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    6311
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6453

    瀏覽量

    185922
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    基于Arduino的智能LED燈條制作LED溫度

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

    如何使用Arduino制作電感LC表

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

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

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

    基于Arduino的OLED溫度濕度制作教程

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

    基于使用Arduino、加速度和LED制作時間手套

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

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

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

    如何利用Arduino Uno制作臺式pH

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

    如何制作一個Arduino pH

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

    Arduino、 LED矩陣和鋰聚合物電池制作圈器

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

    Arduino制作電容報警器

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

    如何使用Arduino和LM35傳感器制作溫度

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

    Arduino上的電感

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

    Arduino間隔

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

    使用arduino溫度

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