Arduino를 사용한 디지털 커패시턴스 미터 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 글에서는 1 마이크로 패러 드에서 4000 마이크로 패러 드에 이르는 캐패시터의 캐패시턴스를 합리적인 정확도로 측정 할 수있는 Arduino를 사용하여 디지털 캐패시턴스 미터 회로를 구성 할 것입니다.



소개

커패시터 본체에 기록 된 값을 읽을 수 없거나 조만간 교체해야하는 회로에서 노화 된 커패시터의 값을 찾기 위해 커패시터의 값을 측정하고 정전 용량을 측정해야하는 몇 가지 다른 이유가 있습니다.

커패시턴스를 찾기 위해 디지털 멀티 미터를 사용하여 쉽게 측정 할 수 있지만 모든 멀티 미터에 커패시턴스 측정 기능이있는 것은 아니며 값 비싼 멀티 미터에만이 기능이 있습니다.



그래서 여기에 쉽게 구성하고 사용할 수있는 회로가 있습니다.

1 마이크로 패러 드에서 4000 마이크로 패러 드까지 큰 값을 가진 캐패시터에 초점을 맞추고 있습니다. 특히 액체 전해질로 구성된 전해 캐패시터는 노화로 인해 캐패시턴스가 손실되기 쉽습니다.

회로 세부 사항으로 들어가기 전에 Arduino로 커패시턴스를 측정하는 방법을 살펴 보겠습니다.

대부분의 Arduino 커패시턴스 미터는 RC 시간 상수 속성에 의존합니다. 그렇다면 RC 시간 상수는 무엇입니까?

RC 회로의 시간 상수는 커패시터가 완전 충전의 63.2 %에 도달하는 데 걸리는 시간으로 정의 할 수 있습니다. 0V는 0 % 충전이고 100 %는 커패시터의 전체 전압 충전입니다.

저항 값 (ohm)과 커패시터 값 (패러 드)의 곱은 시간 상수를 제공합니다.

T = R x C

T는 시간 상수

위의 방정식을 재정렬하면 다음을 얻을 수 있습니다.

C = T / R

C는 알 수없는 커패시턴스 값입니다.

T는 완전 충전 커패시터의 63.2 % 인 RC 회로의 시정 수입니다.

R은 알려진 저항입니다.

Arduino는 아날로그 핀을 통해 전압을 감지 할 수 있으며 알려진 저항 값을 프로그램에 수동으로 입력 할 수 있습니다.

프로그램에서 방정식 C = T / R을 적용하여 알려지지 않은 커패시턴스 값을 찾을 수 있습니다.

이제 알려지지 않은 커패시턴스의 값을 어떻게 찾을 수 있는지 알 수있을 것입니다.

이 글에서는 LCD 디스플레이가있는 것과 직렬 모니터를 사용하는 두 가지 종류의 커패시턴스 미터를 제안했습니다.

이 커패시턴스 미터를 자주 사용하는 경우 LCD 디스플레이 디자인을 사용하는 것이 더 좋으며 자주 사용하지 않는 경우에는 LCD 디스플레이에서 약간의 비용을 절약하기 때문에 직렬 모니터 디자인을 사용하는 것이 좋습니다.

이제 회로도를 살펴 보겠습니다.

직렬 모니터 기반 커패시턴스 미터 :



보시다시피 회로는 매우 간단합니다. 알 수없는 커패시턴스를 찾기 위해 몇 개의 저항이 필요합니다 .1K ohm은 알려진 저항 값이고 220ohm 저항은 측정 프로세스가 진행되는 동안 커패시터를 방전하는 데 사용됩니다. 1K ohm과 220 ohm 저항 사이에 연결된 핀 A0의 전압 상승 및 감소 전해와 같은 극성 커패시터를 사용하는 경우 극성에주의하십시오. 프로그램:
//-----------------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------------------//

하드웨어 설정이 완료된 위의 코드를 Arduino에 업로드하고 처음에는 커패시터를 연결하지 마십시오. 직렬 모니터를 열어 'Please connect capacitor'라고 표시됩니다.

이제 커패시터를 연결하면 아래 그림과 같이 커패시턴스가 표시됩니다.

또한 커패시터의 완전 충전 전압의 63.2 %에 도달하는 데 걸리는 시간을 표시하며, 이는 경과 시간으로 표시됩니다.

Arduino를 사용한 디지털 커패시턴스 미터

LCD 기반 커패시턴스 미터의 회로도 :

위의 회로도는 LCD 디스플레이와 Arduino 간의 연결입니다. 10K 전위차계는 디스플레이의 대비를 조정하기 위해 제공됩니다. 나머지 연결은 자명합니다.

위의 회로는 LCD 디스플레이를 연결하는 데 필요한 직렬 모니터 기반 설계와 정확히 동일합니다.

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------------------//

하드웨어 설정이 완료되면 위 코드를 업로드하십시오. 처음에는 커패시터를 연결하지 마십시오. 디스플레이에 'Please connect capacitor !!!'가 표시됩니다. 이제 커패시터를 연결합니다. 디스플레이에 커패시터의 값과 완전 충전 커패시터의 63.2 %에 도달하는 데 걸린 시간이 표시됩니다.

저자의 프로토 타입 :




이전 : 정확한 판독을위한 Arduino 타코미터 회로 다음 : 조이스틱을 사용하여 서보 모터를 제어하는 ​​방법