V tomto příspěvku budeme konstruovat obvod digitálního kapacitního měřiče pomocí Arduina, který dokáže měřit kapacitu kondenzátorů v rozmezí od 1 mikrofarad do 4000 mikrofarad s rozumnou přesností.
Úvod
Měříme hodnotu kondenzátorů, když hodnoty zapsané na těle kondenzátoru nejsou čitelné, nebo abychom našli hodnotu stárnoucího kondenzátoru v našem obvodu, kterou je třeba brzy nebo později vyměnit, a existuje několik dalších důvodů pro měření kapacity.
Abychom našli kapacitu, můžeme snadno měřit pomocí digitálního multimetru, ale ne všechny multimetry mají funkci měření kapacity a tuto funkci mají pouze drahé multimetry.
Tady je tedy obvod, který lze snadno zkonstruovat a použít.
Zaměřujeme se na kondenzátory s větší hodnotou od 1 mikrofaradu do 4000 mikrofaradů, které jsou náchylné ke ztrátě své kapacity v důsledku stárnutí, zejména elektrolytické kondenzátory, které se skládají z kapalného elektrolytu.
Než se podíváme na podrobnosti obvodu, podívejme se, jak můžeme měřit kapacitu pomocí Arduina.
Většina kapacitního měřiče Arduino se spoléhá na vlastnost RC časové konstanty. Co je tedy časová konstanta RC?
Časovou konstantu RC obvodu lze definovat jako čas potřebný k tomu, aby kondenzátor dosáhl 63,2% plného nabití. Nulové napětí je 0% nabití a 100% je úplné nabití kondenzátoru.
Součin hodnoty odporu v ohmu a hodnoty kondenzátoru ve faradu dává časovou konstantu.
T = R x C
T je časová konstanta
Přeskupením výše uvedené rovnice získáme:
C = T / R
C je neznámá hodnota kapacity.
T je časová konstanta RC obvodu, což je 63,2% kondenzátoru plného nabití.
R je známý odpor.
Arduino dokáže snímat napětí pomocí analogového pinu a známou hodnotu rezistoru lze do programu zadat ručně.
Aplikováním rovnice C = T / R v programu najdeme neznámou hodnotu kapacity.
Nyní byste měli představu, jak můžeme zjistit hodnotu neznámé kapacity.
V tomto příspěvku jsem navrhl dva druhy kapacitního měřiče, jeden s LCD displejem a druhý pomocí sériového monitoru.
Pokud jste častým uživatelem tohoto kapacitního měřiče, je lepší použít design LCD displeje a pokud nejste častým uživatelem, raději použít design sériového monitoru, protože vám to na LCD displeji ušetří nějaké peníze.
Nyní přejdeme k schématu zapojení.
Kapacitní měřič založený na sériovém monitoru:
Jak vidíte, obvod je velmi jednoduchý, k nalezení neznámé kapacity je potřeba jen pár rezistorů. 1K ohm je známá hodnota rezistoru a 220 ohmový rezistor používaný k vybití kondenzátoru během procesu měření. Arduino snímá stoupající a klesající napětí na pinu A0, který je připojen mezi rezistory 1K ohm a 220 ohm. Dbejte na polaritu, pokud používáte polarizované kondenzátory, jako jsou elektrolytické. Program:
//-----------------Program developed by R.Girish------------------//
const int analogPin = A0
const int chargePin = 7
const int dischargePin = 6
float resistorValue = 1000 // Value of known resistor in ohm
unsigned long startTime
unsigned long elapsedTime
float microFarads
void setup()
{
Serial.begin(9600)
pinMode(chargePin, OUTPUT)
digitalWrite(chargePin, LOW)
}
void loop()
{
digitalWrite(chargePin, HIGH)
startTime = millis()
while(analogRead(analogPin) <648){}
elapsedTime = millis() - startTime
microFarads = ((float)elapsedTime / resistorValue) * 1000
if (microFarads > 1)
{
Serial.print('Value = ')
Serial.print((long)microFarads)
Serial.println(' microFarads')
Serial.print('Elapsed Time = ')
Serial.print(elapsedTime)
Serial.println('mS')
Serial.println('--------------------------------')
}
else
{
Serial.println('Please connect Capacitor!')
delay(1000)
}
digitalWrite(chargePin, LOW)
pinMode(dischargePin, OUTPUT)
digitalWrite(dischargePin, LOW)
while(analogRead(analogPin) > 0) {}
pinMode(dischargePin, INPUT)
}
//-----------------Program developed by R.Girish------------------//
Nahrajte výše uvedený kód do Arduina s dokončeným nastavením hardwaru, zpočátku nepřipojujte kondenzátor. Otevřete sériový monitor s nápisem „Připojte kondenzátor“.
Nyní připojte kondenzátor, jeho kapacita se zobrazí, jak je znázorněno níže.
Ukazuje také čas potřebný k dosažení 63,2% plného nabitého napětí kondenzátoru, který se zobrazuje jako uplynulý čas.
Schéma zapojení kapacitního měřiče založeného na LCD:
Výše uvedené schéma je spojení mezi LCD displejem a Arduinem. 10K potenciometr slouží k nastavení kontrastu displeje. Zbytek připojení je samozřejmý.
Výše uvedený obvod je přesně stejný jako u sériového monitoru, stačí připojit LCD displej.
Program pro kapacitní měřič založený na LCD:
//-----------------Program developed by R.Girish------------------//
#include
LiquidCrystal lcd(12,11,5,4,3,2)
const int analogPin = A0
const int chargePin = 7
const int dischargePin = 6
float resistorValue = 1000 // Value of known resistor in ohm
unsigned long startTime
unsigned long elapsedTime
float microFarads
void setup()
{
Serial.begin(9600)
lcd.begin(16,2)
pinMode(chargePin, OUTPUT)
digitalWrite(chargePin, LOW)
lcd.clear()
lcd.setCursor(0,0)
lcd.print(' CAPACITANCE')
lcd.setCursor(0,1)
lcd.print(' METER')
delay(1000)
}
void loop()
{
digitalWrite(chargePin, HIGH)
startTime = millis()
while(analogRead(analogPin) <648){}
elapsedTime = millis() - startTime
microFarads = ((float)elapsedTime / resistorValue) * 1000
if (microFarads > 1)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Value = ')
lcd.print((long)microFarads)
lcd.print(' uF')
lcd.setCursor(0,1)
lcd.print('Elapsed:')
lcd.print(elapsedTime)
lcd.print(' mS')
delay(100)
}
else
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Please connect')
lcd.setCursor(0,1)
lcd.print('capacitor !!!')
delay(500)
}
digitalWrite(chargePin, LOW)
pinMode(dischargePin, OUTPUT)
digitalWrite(dischargePin, LOW)
while(analogRead(analogPin) > 0) {}
pinMode(dischargePin, INPUT)
}
//-----------------Program developed by R.Girish------------------//
Po dokončení nastavení hardwaru nahrajte výše uvedený kód. Zpočátku nepřipojujte kondenzátor. Na displeji se zobrazí „Prosím připojte kondenzátor !!!“ nyní připojíte kondenzátor. Na displeji se zobrazí hodnota kondenzátoru a uplynulý čas potřebný k dosažení 63,2% plného nabití kondenzátoru.
Autorův prototyp:
Předchozí: Okruh tachometru Arduino pro přesná měření Další: Jak ovládat servomotor pomocí joysticku