Seçilmiş

Atolye

Teknoloji

Ev & Dekorasyon

Mutfak

Oyun

Outdoor

Sanat

Arduino İle Kapasitans Ölçer

Tanıtım: Kapasitans Ölçer

Bu projede kondansatörlerinizin kapasitansını ölçüp pF ve nF cinsinden vericez. Profesyonel şekilde tutarlı olmasa da, Arduino iyi sonuçlar çıkartabiliyor.

1. Adım: Malzemeler

  • Arduino
  • Ölçülecek Kapasitör (Kondansatör)
  • Karakter LCD
  • LCD için Potansiyometre

2. Adım: Bağlantıları Yapın

LCD için gerekli bağlantıları yapın. Kodda düzeltme yaparak bağlantıları istediğiniz gibi yapabilirsiniz. Mesela ben farklı bağladım başta. Kodu siteye gönderirken buradaki şematiğe uygun şekilde gönderirim. 


3. Adım: Yazılım

#include 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //istediğiniz gibi ayarlayabilirsiniz. 
const int OUT_PIN = A2;
const int IN_PIN = A0;
const float IN_STRAY_CAP_TO_GND = 24.48;
const float IN_CAP_TO_GND  = IN_STRAY_CAP_TO_GND;
const float R_PULLUP = 34.8;  
const int MAX_ADC_VALUE = 1023;

void setup()
{
  pinMode(OUT_PIN, OUTPUT);
  pinMode(IN_PIN, OUTPUT);
  lcd.begin(20, 4); //16x2 lcd için 16, 2 yapın burayı
      lcd.setCursor(0,0);
      lcd.print(F(".:Kapasitans:."));
  }

void loop()
{
    pinMode(IN_PIN, INPUT);
    digitalWrite(OUT_PIN, HIGH);
    int val = analogRead(IN_PIN);
    digitalWrite(OUT_PIN, LOW);

    if (val < 1000)
    {
      pinMode(IN_PIN, OUTPUT);

      float capacitance = (float)val * IN_CAP_TO_GND / (float)(MAX_ADC_VALUE - val);

      lcd.setCursor(0,1);
      lcd.print(capacitance, 3);
      lcd.print(F("pF "));
      lcd.print(val);
      lcd.print("mS");
    }
    
    else
    {
      pinMode(IN_PIN, OUTPUT);
      delay(1);
      pinMode(OUT_PIN, INPUT_PULLUP);
      unsigned long u1 = micros();
      unsigned long t;
      int digVal;

      do
      {
        digVal = digitalRead(OUT_PIN);
        unsigned long u2 = micros();
        t = u2 > u1 ? u2 - u1 : u1 - u2;
      } 
      
      while ((digVal < 1) && (t < 400000L));

      pinMode(OUT_PIN, INPUT);  
      val = analogRead(OUT_PIN);
      digitalWrite(IN_PIN, HIGH);
      int dischargeTime = (int)(t / 1000L) * 5;
      delay(dischargeTime);   
      pinMode(OUT_PIN, OUTPUT);  
      digitalWrite(OUT_PIN, LOW);
      digitalWrite(IN_PIN, LOW);

      float capacitance = -(float)t / R_PULLUP/ log(1.0 - (float)val / (float)MAX_ADC_VALUE);

      lcd.setCursor(0,0);
      lcd.print(F("Capacitance = "));
      if (capacitance > 1000.0)
      {
        lcd.setCursor(0,1);
        lcd.print(capacitance / 1000.0, 2);
        lcd.print(F("uF "));
        lcd.print(val);
        lcd.print("mS");
      }
        
      else
      {
        lcd.setCursor(0,1);
        lcd.print(capacitance, 2);
        lcd.print(F("nF "));
        lcd.print(val);
        lcd.print("mS");
      }
  }
    while (millis() % 1000 != 0);
}

4. Adım: Test Zamanı!

200 pF'lik kapasitörü 195pF olarak, 330 pF'lik kapasitörü ise 318 pF olarak hesapladı. Ufak projeler için fazla sıkıntı olmaz bence. Yorumlarınızı esirgemeyin, sağlıcakla kalın!

Yorumlar.

1246 Görüntülenme

0 Favoriler


coco

Trakya Üniversitesinde İngilizce Öğretmenliği okuyorum. Hobi olarak yazılım ve elektronikle ilgileniyorum. Bu siteyi deneyimlerimi paylaşmak için kullanıyorum. Üye olup sizler de paylaşabilirsiniz.


Bir Söz

“İtiraf ederim ki, düşmanlarımız çok çalışıyor. Biz de onlardan daha çok çalışmaya mecburuz. Çalışmak demek, boşuna yorulmak, terlemek değildir. Zamanın gereklerine göre bilim ve teknik ve her türlü medeni buluşlardan azami derecede yararlanmak zorunluluğudur.”

Tagler

KENDİN YAP MÜHENDİSLİK PROJELERİ PROJE PAYLAŞIN ELEKTRİK ELEKTRONİK MÜHENDİS EVDE YAP PROJE YAP ARDUİNO YAZILIM PCB HAZIRLAMA NE YAPTIK DIY DIY YAPIMI NASIL YAPILIR DEKORASYON DIY FİKİRLERİ

Sosyal Medya

Facebook Instagram