wtorek, 19 marca
Shadow

Miernik pojemności kondensatorów na bazie Arduino

W tym artykule opiszę jak zbudować prosty miernik pojemności kondensatorów bający na AVR / Arduino. Dzięki temu układowi będziesz mógł zmierzyć pojemność kondensatora od 1 pF do 10 000 μF. Sam pomiar odbywa się w trybie automatycznym, co oznacza, że wystarczy podłączyć kondensator do styków pomiarowych w moim przypadku 2 złącz bananowych. Kod programu ma zdefiniowane dwa zakresy „nF” oraz „μF”. W momencie rozpoczęcia pomiaru kondensatora w pierwszej linii  włączany jest zakres „nF”, jeśli pojemność jest zbyt duża, automatycznie następuje przełączenie na „μF”.

miernik kondensatorow arduino

Jak wiadomo każdy miernik pojemności posiada obwód RC o znanych wartościach rezystorów i nieznanej wartości kondensatora. Arduino zmierzy napięcie na kondensatorze i zarejestruje czas potrzebny do osiągnięcia określonego procentu napięcia po pełnym naładowaniu (stała czasowa). Z racji faktu, że wartość rezystancji jest już znana, możemy skorzystać z algorytmu, który obliczy nieznaną pojemność. W momencie rozruch następuje tak zwana kalibracja zera, dlatego w momencie włączenia nie należy podłączać kondensatora do styków pomiarowych. Należy również ponadto pamiętać, że wszystkie kondensatory muszą być rozładowane przed rozpoczęciem pomiaru. .

Potrzebne komponenty:

  • Arduino np. nano lub czysta ATmega168
  • rezystor 10 kΩ
  • rezystor 1 MΩ
  • rezystor 1 kΩ
  • przewody połączeniowe

Schemat połączeniowy:

miernik kondensatorów schematKod programu:

// Autor Mirko Pavleski
// modyfikacje Michał Swistak
// pobrano z www.tanzystir.pl
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7
void setup(){
lcd.begin(16, 2);// LCD 16X2
pinMode(A0,INPUT);
}
unsigned long time0,time1,time2;
float c,null0;
byte kn,mk,i;

void loop(){
if(mk==0){
pinMode(8,OUTPUT);
pinMode(7,INPUT);
digitalWrite(8,HIGH);
}

if(mk==1){
pinMode(7,OUTPUT);
pinMode(8,INPUT);
digitalWrite(7,HIGH);
}

time0=micros();
while(analogRead(A0)<644){
time2=micros()-time0;
if(time2>=1000000 && mk==0){
mk=1;
time0=100000000;
break;
}
}

time1=micros()-time0;

while(analogRead(A0)>0){
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
}

if(mk==1&&time1<1000){
mk=0;
}

lcd.setCursor(1,0);
c=time1;
c=c/1000-null0;
c=abs(c);

if(time1>=10000000){
lcd.setCursor(1,0);
lcd.print(” Trwa test F „);
lcd.setCursor(1,1);
lcd.print(„Tranzystor.pl”);
}
else{
lcd.print(c);

if(mk==0){
lcd.print(” nF „);
}
if(mk==1){
lcd.print(” uF „);
}
}
if(i==0){
i++;
null0=c+0.02;
}
delay(100);
}

Ważna rzecz o której trzeba pamiętać dokładność miernika to kilka procent i przede wszystkim zależy od tolerancji zastosowanych rezystorów oraz stabilności napięcia zasilającego zatem polecam zastosować stabilizator zewnętrzny 5V lub dobrej jakości zasilacz ja osobiście stosuje zasilacz MEAN WELL RS-25-5 .

5/5 - (1 ocena/y)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.