Hide minor edits - Show changes to markup
//de fondo de escala
// de fondo de escala
Serial.println(" microFarads"); // imprime las unidades y añade enter
Serial.println(" microFarads"); // imprime las unidades y añade enter
Serial.print((long)nanoFarads); //imprime el valor por el puerto serie
Serial.print((long)nanoFarads); // imprime el valor por el puerto serie
//de fondo de escala
//de fondo de escala
de fondo de escala
//de fondo de escala
while(analogRead(analogPin) < 648){ // 647 es el 63.2% de 1023, el cual se corresponde con el voltaje \\de fondo de escala
while(analogRead(analogPin) < 648){ // 647 es el 63.2% de 1023, el cual se corresponde con el voltaje
de fondo de escala
* Teoría Un condensador se cargará, a través de un resistor, en una constante de tiempo, definida como T en segundos donde
* Teoría Un condensador se cargará, a través de un resistor, en una constante de tiempo, definida como T * en segundos donde
* El condensador a medir entre el punto común y tierra (La parte positiva del condensador electrólítico al común)
* El condensador a medir entre el punto común y tierra (La parte positiva del condensador electrólítico al * común)
while(analogRead(analogPin) < 648){ // 647 es el 63.2% de 1023, el cual se corresponde con el voltaje de fondo de escala
while(analogRead(analogPin) < 648){ // 647 es el 63.2% de 1023, el cual se corresponde con el voltaje \\de fondo de escala
// convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000)
// convierte milisegundos a segundos ( 10^-3 ) y Faradios a microFaradios ( 10^6 ), net 10^3 (1000)
Serial.print(elapsedTime); // print the value to serial port
Serial.print(" mS "); // print units and carriage return
Serial.print(elapsedTime); // imprime el valor por el puerto serie
Serial.print(" mS "); // imprime las unidades y añade enter
Serial.print((long)microFarads); // print the value to serial port
Serial.println(" microFarads"); // print units and carriage return
Serial.print((long)microFarads); // imprime el valor por el puerto serie
Serial.println(" microFarads"); // imprime las unidades y añade enter
// if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad).
// This is a workaround because Serial.print will not print floats
// si el valor es más pequeño que un microfaradio, convertimos a nanoFaradios (10^-9 Faradios).
// Esto es un parche porque because Serial.print no imprime floats
nanoFarads = microFarads * 1000.0; // multiply by 1000 to convert to nanoFarads (10^-9 Farads)
Serial.print((long)nanoFarads); // print the value to serial port
Serial.println(" nanoFarads"); // print units and carriage return
nanoFarads = microFarads * 1000.0; // multiplica por 1000 para convertir a nanoFaradios (10^-9 Farads)
Serial.print((long)nanoFarads); //imprime el valor por el puerto serie
Serial.println(" nanoFarads"); // imprime las unidades y añade enter
/* dicharge the capacitor */
digitalWrite(chargePin, LOW); // set charge pin to LOW
pinMode(dischargePin, OUTPUT); // set discharge pin to output
digitalWrite(dischargePin, LOW); // set discharge pin LOW
while(analogRead(analogPin) > 0){ // wait until capacitor is completely discharged
/* Descarga del condensador */
digitalWrite(chargePin, LOW); // configura el pin de carga a BAJO
pinMode(dischargePin, OUTPUT); // configura el pin de descarga como SALIDA
digitalWrite(dischargePin, LOW); // configura el pin de descarga como BAJO
while(analogRead(analogPin) > 0){ // espera hasta que esté totalmente descargado
pinMode(dischargePin, INPUT); // set discharge pin back to input
pinMode(dischargePin, INPUT); // configura el pin de descarga de nuevo como ENTRADA
* Demonstrates use of RC time constants to measure the value of a capacitor
* Demostración del uso de Constantes de tiempo RC para la medida de valores de capacidades
* Theory A capcitor will charge, through a resistor, in one time constant, defined as T seconds where
* Teoría Un condensador se cargará, a través de un resistor, en una constante de tiempo, definida como T en segundos donde
* TC = time constant period in seconds * R = resistance in ohms * C = capacitance in farads (1 microfarad (ufd) = .0000001 farad = 10^-6 farads )
* TC = Periodo de la constante de tiempo en segundos * R = resistencia en ohmios * C = capacidad en faradios (1 microfariadio [ufd] = .0000001 faradios = 10^-6 faradios)
* The capacitor's voltage at one time constant is defined as 63.2% of the charging voltage.
* En una Constante de tiempo se carga al 63.2% del voltaje.
* Hardware setup: * Test Capacitor between common point and ground (positive side of an electrolytic capacitor to common) * Test Resistor between chargePin and common point * 220 ohm resistor between dischargePin and common point * Wire between common point and analogPin (A/D input)
* Configuración Hardware: * El condensador a medir entre el punto común y tierra (La parte positiva del condensador electrólítico al común) * Resistencia a medir entre el pin de carga y el punto común. * 220 ohms de resistencia entre el pin de descarga y el punto común * Cable entre punto común y el pin analógico (A/D input)
// F formatter tells compliler it's a floating point value
// F Formatea para comunicar al compilador el valor de una coma flotante
float microFarads; // floating point variable to preserve precision, make calculations
float microFarads; // Variable de coma flotante para asegurar la precisión, realiza cálculos
pinMode(chargePin, OUTPUT); // set chargePin to output
pinMode(chargePin, OUTPUT); // configura chargePin a salida
Serial.begin(9600); // initialize serial transmission for debugging
Serial.begin(9600); // inicializa la transmisión serie para debugging
digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging
digitalWrite(chargePin, HIGH); // configura chargePin a ALTO y carga el condensador
while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023, which corresponds to full-scale voltage
while(analogRead(analogPin) < 648){ // 647 es el 63.2% de 1023, el cual se corresponde con el voltaje de fondo de escala
Este 'sketch' muestra porque los pines del Arduino pueden trabajar en dos estados, los cuales son eléctricamente muy diferentes.
This sketch works because the Arduino pins can be in one of two states, which are electrically very different.
Este sketch muestra porque los pines del Arduino pueden trabajar en dos estados, los cuales son eléctricamente muy diferentes.
Additionally the pins can be HIGH (+5 volts), to charge the capacitor; or LOW (ground) to discharge the capacitor
Además los pines pueden estar a nivel ALTO (+5 volts), para cargar condensadores; o a nivel BAJO (tierra) para descargar condensadores.
Este 'sketch' muestra porque los pines del Arduino pueden trabajar en dos estados, los cuales son eléctricamente muy diferentes.
The voltage at 1 Time Constant equals 63.2% of the charging voltage.
Example: 1 megohm * 1 microfarad = 1 second
Example: 10k ohms * 100 microfarad = 1 second
En una Constante de tiempo se carga al 63.2% del voltaje.
Ejemplo; 1 Megaohmio * 1 microfaradio = 1 segundo
Ejemplo; 10k ohmios * 100 microfaradios = 1 segundo
Millis function - good for timing events
This sketch works because the BBB (Arduino) pins can be in one of two states, which are electrically very different.
This sketch works because the Arduino pins can be in one of two states, which are electrically very different.
* T = R * C
* TC = R * C
* T = time in seconds
* TC = time constant period in seconds
Example: 1 megaohm * 1 microfarad = 1 second\\
Example: 1 megohm * 1 microfarad = 1 second\\
The BBB (Arduino) pins can be in one of two states, which are electrically very different.
This sketch works because the BBB (Arduino) pins can be in one of two states, which are electrically very different.
Additionally the pins can be HIGH (+5 volts), to charge the capacitor; or LOW (ground) to discharge the capacitor
(see Stopwatch sketch)
(see Stopwatch sketch)
float microFarads; // floating point variable to preserve precision, make calculations, printing easier
float microFarads; // floating point variable to preserve precision, make calculations
Serial.print(elapsedTime); // print the value to serial port
Serial.print(" mS "); // print units and carriage return
Serial.print(elapsedTime); // print the value to serial port
Serial.print(" mS "); // print units and carriage return
microFarads = ((float)elapsedTime / resistorValue) * 1000; // convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000)
// convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000) microFarads = ((float)elapsedTime / resistorValue) * 1000;
while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023. 1023 is the A/D reading that corresponds to the charging voltage
while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023, which corresponds to full-scale voltage
float microFarads; // floating point variable to preserve precision and make calculations and printing easier
float microFarads; // floating point variable to preserve precision, make calculations, printing easier
* Hardware setup:
* Hardware setup:
* Charging resistor (10k as set below) is connected at one end to chargepin, * at other end to common point (blank breadboard column) * OK to change charging resistor value for testing small capacitors * Don't forget to change the value in the #define too though! * Discharge resistor (220 ohm or 1k - value doesn't matter) connected at one end to discharge pin, * Other end to common point * Capacitor under test: One end(negative if polarized cap) to ground, * other end to common point * Try lots of different values - also series and parallel arrangements. * Wire from common point to analog pin
* Test Capacitor between common point and ground (positive side of an electrolytic capacitor to common) * Test Resistor between chargePin and common point * 220 ohm resistor between dischargePin and common point * Wire between common point and analogPin (A/D input) */
/* Hardware setup
* Test Capacitor between common point and ground (positive side of an electrolytic capacitor to common) * Test Resistor between chargePin and common point * 220 ohm resistor between dischargePin and common point * Wire between common point and analogPin (A/D input) */
* Dischage resistor (220 ohm or 1k - value doesn't matter) connnected at one end to discharge pin,
* Discharge resistor (220 ohm or 1k - value doesn't matter) connected at one end to discharge pin,
float microFarads; // floating point variable to preserve precison and make calculations and printing easier
float microFarads; // floating point variable to preserve precision and make calculations and printing easier
pinMode(chargePin, OUTPUT); // set chargePin to output
pinMode(chargePin, OUTPUT); // set chargePin to output
Serial.begin(9600); // initialize serial transmission for debugging
Serial.begin(9600); // initialize serial transmission for debugging
digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging
digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging
// F formatter tells compliler it's a floating point value
* Capacitor under test - try different values - also series and parallel arrangements. One (negative if polarized) end to ground * other end to common point
* Capacitor under test: One end(negative if polarized cap) to ground, * other end to common point * Try lots of different values - also series and parallel arrangements.
* Charging resistor (10k as set below) is connected at one end to chargepin at other to common point (blank breadboard column) * OK to change charging resistor value for testing small capacitors - change the value in the #define too though! * Dischage resistor (220 ohm or 1k - value doesn't matter) connnected at one end to discharge pin, other end to common point
* Charging resistor (10k as set below) is connected at one end to chargepin, * at other end to common point (blank breadboard column) * OK to change charging resistor value for testing small capacitors * Don't forget to change the value in the #define too though! * Dischage resistor (220 ohm or 1k - value doesn't matter) connnected at one end to discharge pin, * Other end to common point















// if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad). This is because Serial.print will not print floats
// if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad).
// This is a workaround because Serial.print will not print floats

The voltage at 1 Time Constant equals 63.2% of the charging voltage.
Example: 1 megaohm * 1 microfarad = 1 second
Example: 10k ohms * 100 microfarad = 1 second
The BBB (Arduino) pins can be in one of two states, which are electrically very different.
Millis function - good for timing events

/* RCTiming_capacitance_meter
* Paul Badger 2008
* Demonstrates use of RC time constants to measure the value of a capacitor
*
* Theory A capcitor will charge, through a resistor, in one time constant, defined as T seconds where
* T = R * C
*
* T = time in seconds
* R = resistance in ohms
* C = capacitance in farads (1 microfarad (ufd) = .0000001 farad = 10^-6 farads )
*
* The capacitor's voltage at one time constant is defined as 63.2% of the charging voltage.
*
* Hardware setup:
* Charging resistor (10k as set below) is connected at one end to chargepin at other to common point (blank breadboard column)
* OK to change charging resistor value for testing small capacitors - change the value in the #define too though!
* Dischage resistor (220 ohm or 1k - value doesn't matter) connnected at one end to discharge pin, other end to common point
* Capacitor under test - try different values - also series and parallel arrangements. One (negative if polarized) end to ground
* other end to common point
* Wire from common point to analog pin
*/
#define analogPin 0 // analog pin for measuring capacitor voltage
#define chargePin 13 // pin to charge the capacitor - this is connected to one end of the charging resistor
#define dischargePin 11 // pin to discharge the capacitor
#define resistorValue 10000.0F // change this to whatever resistor value you are using - F formatter tells compliler it's a floating point value
/* Hardware setup
* Test Capacitor between common point and ground (positive side of an electrolytic capacitor to common)
* Test Resistor between chargePin and common point
* 220 ohm resistor between dischargePin and common point
* Wire between common point and analogPin (A/D input)
*/
!!!! Arduino Sketch
unsigned long startTime;
unsigned long elapsedTime;
float microFarads; // floating point variable to preserve precison and make calculations and printing easier
float nanoFarads;
void setup(){
pinMode(chargePin, OUTPUT); // set chargePin to output
digitalWrite(chargePin, LOW);
Serial.begin(9600); // initialize serial transmission for debugging
}
void loop(){
digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging
startTime = millis();
while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023. 1023 is the A/D reading that corresponds to the charging voltage
}
elapsedTime= millis() - startTime;
microFarads = ((float)elapsedTime / resistorValue) * 1000; // convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000)
Serial.print(elapsedTime); // print the value to serial port
Serial.print(" mS "); // print units and carriage return
if (microFarads > 1){
Serial.print((long)microFarads); // print the value to serial port
Serial.println(" microFarads"); // print units and carriage return
}
else
{
// if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad). This is because Serial.print will not print floats
nanoFarads = microFarads * 1000.0; // multiply by 1000 to convert to nanoFarads (10^-9 Farads)
Serial.print((long)nanoFarads); // print the value to serial port
Serial.println(" nanoFarads"); // print units and carriage return
}
/* dicharge the capacitor */
digitalWrite(chargePin, LOW); // set charge pin to LOW
pinMode(dischargePin, OUTPUT); // set discharge pin to output
digitalWrite(dischargePin, LOW); // set discharge pin LOW
while(analogRead(analogPin) > 0){ // wait until capacitor is completely discharged
}
pinMode(dischargePin, INPUT); // set discharge pin back to input
}