(QUICK START GUIDE) Make An Arduino Capacitance Meter
(QUICK START GUIDE) Make An Arduino Capacitance Meter
R1 = 10K Ohms
R2 = 220 Ohms
Circuit Basics
Raspberry Pi, Arduino, and DIY Electronics Tutorials
Upload this code to the Arduino, then open the serial monitor:
#define analogPin 0
#define chargePin 13
#define dischargePin 11
#define resistorValue 10000.0F
void setup(){
pinMode(chargePin, OUTPUT);
digitalWrite(chargePin, LOW);
Serial.begin(9600);
}
void loop(){
digitalWrite(chargePin, HIGH);
startTime = millis();
while(analogRead(analogPin) < 648){
}
else{
nanoFarads = microFarads * 1000.0;
Serial.print((long)nanoFarads);
Serial.println(" nanoFarads");
delay(500);
}
digitalWrite(chargePin, LOW);
pinMode(dischargePin, OUTPUT);
digitalWrite(dischargePin, LOW);
while(analogRead(analogPin) > 0){
}
pinMode(dischargePin, INPUT);
}
Circuit Basics
Raspberry Pi, Arduino, and DIY Electronics Tutorials
Upload this code to the Arduino and open the serial monitor:
const byte pulsePin = 2;
const unsigned long resistance = 10000;
ISR (ANALOG_COMP_vect)
{
unsigned long now = micros ();
if (active)
{
duration = now - startTime;
triggered = true;
digitalWrite (pulsePin, LOW);
}
}
void setup ()
{
pinMode(pulsePin, OUTPUT);
digitalWrite(pulsePin, LOW);
Serial.begin(9600);
Serial.println("Started.");
ADCSRB = 0;
ACSR = _BV (ACI)
| _BV (ACIE)
| _BV (ACIS0) | _BV (ACIS1);
}
void loop ()
{
if (!active)
{
active = true;
triggered = false;
digitalWrite (pulsePin, HIGH);
startTime = micros ();
}
Upload this code to the Arduino, then open the serial monitor:
void setup()
{
pinMode(OUT_PIN, OUTPUT);
pinMode(IN_PIN, OUTPUT);
Serial.begin(9600);
}
void loop()
{
pinMode(IN_PIN, INPUT);
digitalWrite(OUT_PIN, HIGH);
int val = analogRead(IN_PIN);
digitalWrite(OUT_PIN, LOW);
Circuit Basics
Raspberry Pi, Arduino, and DIY Electronics Tutorials
do
{
digVal = digitalRead(OUT_PIN);
unsigned long u2 = micros();
t = u2 > u1 ? u2 - u1 : u1 - u2;
} while ((digVal < 1) && (t < 400000L));
pinMode(OUT_PIN, INPUT);
val = analogRead(OUT_PIN);
digitalWrite(IN_PIN, HIGH);
int dischargeTime = (int)(t / 1000L) * 5;
delay(dischargeTime);
pinMode(OUT_PIN, OUTPUT);
digitalWrite(OUT_PIN, LOW);
digitalWrite(IN_PIN, LOW);
Serial.print(F(" ("));
Serial.print(digVal == 1 ? F("Normal") : F("HighVal"));
Serial.print(F(", t= "));
Serial.print(t);
Serial.print(F(" us, ADC= "));
Serial.print(val);
Serial.println(F(")"));
}
while (millis() % 1000 != 0)
;
}