Circuit digital de măsurare a capacității folosind Arduino

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest post vom construi un circuit digital de măsurare a capacității folosind Arduino care poate măsura capacitatea condensatorilor variind de la 1 microfarad la 4000 microfarad cu o precizie rezonabilă.



Introducere

Măsurăm valoarea condensatoarelor atunci când valorile scrise pe corpul condensatorului nu sunt lizibile sau pentru a găsi valoarea condensatorului de îmbătrânire din circuitul nostru care trebuie înlocuită curând sau mai târziu și există alte câteva motive pentru a măsura capacitatea.

Pentru a găsi capacitatea, putem măsura cu ușurință folosind un multimetru digital, dar nu toți multimetrii au caracteristică de măsurare a capacității și numai multimetricele scumpe au această funcționalitate.



Iată un circuit care poate fi construit și utilizat cu ușurință.

Ne concentrăm pe condensatori cu o valoare mai mare de la 1 microfarad la 4000 microfarad, care sunt predispuși să-și piardă capacitatea datorită îmbătrânirii, în special condensatori electrolitici, care constau din electroliți lichizi.

Înainte de a intra în detaliile circuitului, să vedem cum putem măsura capacitatea cu Arduino.

Majoritatea contorului de capacitate Arduino se bazează pe proprietatea constantă a timpului RC. Deci, ce este constanta timpului RC?

Constanta de timp a circuitului RC poate fi definită ca timpul necesar condensatorului pentru a atinge 63,2% din încărcarea completă. Zero volt este 0% încărcare și 100% este încărcarea completă a tensiunii condensatorului.

Produsul valorii rezistorului în ohm și al valorii condensatorului în farad dă constantă de timp.

T = R x C

T este constanta de timp

Rearanjând ecuația de mai sus, obținem:

C = T / R

C este valoarea de capacitate necunoscută.

T este constanta de timp a circuitului RC, care reprezintă 63,2% din condensatorul de încărcare completă.

R este o rezistență cunoscută.

Arduino poate detecta tensiunea prin pin analogic și valoarea cunoscută a rezistorului poate fi introdusă manual în program.

Prin aplicarea ecuației C = T / R în program putem găsi valoarea de capacitate necunoscută.

Până acum ați avea o idee despre cum putem găsi valoarea capacității necunoscute.

În această postare am propus două tipuri de contor de capacitate, unul cu afișaj LCD și altul folosind monitorul serial.

Dacă sunteți un utilizator frecvent al acestui contor de capacitate, este mai bine să mergeți cu designul afișajului LCD și dacă nu sunteți frecvent, folosiți designul monitorului serial, deoarece vă economisește câțiva dolari pe ecranul LCD.

Acum să trecem la schema de circuit.

Capacimetru bazat pe monitorul serial:



După cum puteți vedea, circuitul este foarte simplu, sunt necesare doar câteva rezistențe pentru a găsi capacitatea necunoscută. 1K ohm este valoarea cunoscută a rezistorului și rezistorul de 220 ohm utilizat pentru descărcarea condensatorului în timp ce are loc procesul de măsurare. creșterea și descreșterea tensiunii pe pinul A0 care este conectat între rezistențele de 1 K ohm și 220 ohm. Vă rugăm să aveți grijă de polaritate dacă utilizați condensatori polarizați, cum ar fi electrolitici. 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------------------//

Încărcați codul de mai sus pe Arduino cu configurarea hardware finalizată, inițial nu conectați condensatorul. Deschideți monitorul serial pe care scrie „Vă rugăm să conectați condensatorul”.

Acum conectați un condensator, capacitatea acestuia va fi afișată așa cum este ilustrat mai jos.

De asemenea, arată timpul necesar pentru a ajunge la 63,2% din tensiunea de încărcare completă a condensatorului, care este prezentată ca timp scurs.

Contor de capacitate digitală folosind Arduino

Diagrama circuitului pentru contorul de capacitate pe bază de LCD:

Schema de mai sus este conexiunea dintre afișajul LCD și Arduino. Potențiometrul de 10K este prevăzut pentru reglarea contrastului afișajului. Restul conexiunilor se explică de la sine.

Circuitul de mai sus este exact același cu designul bazat pe monitorul serial, trebuie doar să conectați afișajul LCD.

Program pentru contor de capacitate bazat pe 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------------------//

Odată cu configurarea hardware finalizată, încărcați codul de mai sus. Inițial nu conectați condensatorul. Pe afișaj apare „Vă rugăm să conectați condensatorul !!!” acum conectați condensatorul. Afișajul va afișa valoarea condensatorului și timpul scurs pentru a ajunge la 63,2% din condensatorul cu încărcare completă.

Prototipul autorului:




Precedent: Circuitul tahometru Arduino pentru citiri precise Următorul: Cum să controlați servomotorul utilizând joystick-ul