DIY capaciteitsmeter
Met een paar passieve componenten en een LCD tover je elke Arduino om in een nauwkeurige digitale capaciteitsmeter.
Deze meter meet alle soorten condensatoren (ook elco's) en toont de waarde op een LCD met I2C-interface.
Met een paar passieve componenten en een LCD tover je elke Arduino om in een nauwkeurige digitale capaciteitsmeter.
Deze meter meet alle soorten condensatoren (ook elco's) en toont de waarde op een LCD met I2C-interface.
De meter schakelt automatisch om naar een hoger/lager bereik om de capaciteit in micro-Farad of nano-Farad te tonen. Dit gebeurt in de software.
Sluit de weerstanden en het LCD aan zoals getoond op onderstaand schema. De condensator in dit schema
staat voor de condensator-onder-test (de te meten condensator).
In het schema is het LCD niet getekend. Elk
I2C-LCD van Hackerstore voldoet. Sluit deze met de 4 draadjes (+5V, GND, SDA en SCL) op de gelijknamige pennen van de Arduino aan.
Je kunt de spanning op de Arduino laten staan tijdens het verwisselen van de condensator als je meerdere condensators achter elkaar wilt meten.
De software
Dit is de sketch die wij gebruikt hebben bij het maken van de meter (zie bovenstaande foto voor de testopstelling):
// Digitale capaciteitsmeter
// (C) 2013 Hackerstore
#include <Wire.h>
// Oude library: #include "LCDI2C4Bit.h"
#include <LiquidCrystal_I2C.h>
#define ANALOGE_PEN A3 // Analoge pen tussen R1/R2 en de condensator
#define R1_PEN 2 // Pen aan R1 (22k-weerstand)
#define R2_PEN 3 // Pen aan R2 (1,5k-weerstand)
// Oud: LCDI2C4Bit lcd(0x27,2,16)
LiquidCrystal_I2C lcd(0x27,2,16); // LCD-Display met I2C-interface
void setup() {
pinMode(R1_PEN, OUTPUT);
digitalWrite(R1_PEN, LOW);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
Ontlaad();
// Meet de condensator
digitalWrite(R1_PEN, HIGH); // Laadt de condensator (indien er 1 is aangesloten tenminste) op
long tStart = millis();
while(analogRead(ANALOGE_PEN)<647);
long nDuur = abs(millis()-tStart);
// Bereken de waarde van de gemeten condensator
float fMicroFarad = ((float)nDuur/22000.0) * 1000;
// Toon de waarde op het LCD
if(fMicroFarad >= 1.0){
static char mf[3];
mf[0]=0xe4; // Dit is het micro-symbool (Griekse letter mu), voor microFarad
mf[1]='F';
mf[2]=0;
lcd.clear();
lcd.print(" ");
lcd.print(fMicroFarad);
lcd.print(" ");
lcd.print(mf);
delay(200);
}
else {
// Toon waarde in nF
lcd.clear();
lcd.print(" ");
lcd.print(fMicroFarad*1e3);
lcd.print(" ");
lcd.print("nF");
delay(500); // Iets langere delay dan bij uF!
}
}
void Ontlaad() { // Ontlaad de condensator zodat hij gereed is voor een volgende meting
digitalWrite(R1_PEN, LOW);
pinMode(R2_PEN, OUTPUT);
digitalWrite(R2_PEN, LOW);
while(analogRead(ANALOGE_PEN)>0);
pinMode(R2_PEN, INPUT);
}
Een complete onderdelenkit is te koop in de
webshop.
Edit 2015: bovenstaande sketch werkt niet meer goed bij nieuwere versies van de Arduino IDE zo meldde ons een lezer. Hij had de volgende oplossing (test voor het LCD):
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // LCD-Display met I2C-interface
void setup()
{
lcd.begin(16,2);
lcd.backlight();
lcd.clear();
lcd.home();
lcd.print("* HACKERSTORE !*");
lcd.setCursor(0,1);
lcd.print("Arduinos & parts");
}
void loop()
{
}
Deze oplossing werkt met deze library:
NewliquidCrystal_1.3.4.zip