Components and supplies
IR receiver (generic)
LED (generic)
Resistor 100 ohm
Jumper wires (generic)
Arduino UNO
Tools and machines
Soldering iron (generic)
Project description
Code
Sample Library
arduino
1#define analogPin 0 // analog pin for measuring capacitor voltage 2#define chargePin 13 // pin to charge the capacitor - connected to one end of the charging resistor 3#define dischargePin 11 // pin to discharge the capacitor 4#define resistorValue 10000.0F // change this to whatever resistor value you are using 5 // F formatter tells compliler it's a floating point value 6 7unsigned long startTime; 8unsigned long elapsedTime; 9float microFarads; // floating point variable to preserve precision, make calculations 10float nanoFarads; 11 12void setup(){ 13 pinMode(chargePin, OUTPUT); // set chargePin to output 14 digitalWrite(chargePin, LOW); 15 16 Serial.begin(9600); // initialize serial transmission for debugging 17} 18 19void loop(){ 20 digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging 21 startTime = millis(); 22 23 while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023, which corresponds to full-scale voltage 24 } 25 26 elapsedTime= millis() - startTime; 27 // convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000) 28 microFarads = ((float)elapsedTime / resistorValue) * 1000; 29 Serial.print(elapsedTime); // print the value to serial port 30 Serial.print(" mS "); // print units and carriage return 31 32 33 if (microFarads > 1){ 34 Serial.print((long)microFarads); // print the value to serial port 35 Serial.println(" microFarads"); // print units and carriage return 36 } 37 else 38 { 39 // if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad). 40 // This is a workaround because Serial.print will not print floats 41 42 nanoFarads = microFarads * 1000.0; // multiply by 1000 to convert to nanoFarads (10^-9 Farads) 43 Serial.print((long)nanoFarads); // print the value to serial port 44 Serial.println(" nanoFarads"); // print units and carriage return 45 } 46 47 /* dicharge the capacitor */ 48 digitalWrite(chargePin, LOW); // set charge pin to LOW 49 pinMode(dischargePin, OUTPUT); // set discharge pin to output 50 digitalWrite(dischargePin, LOW); // set discharge pin LOW 51 while(analogRead(analogPin) > 0){ // wait until capacitor is completely discharged 52 } 53 54 pinMode(dischargePin, INPUT); // set discharge pin back to input 55}
Sample Library
arduino
1#define analogPin 0 // analog pin for measuring capacitor voltage 2#define chargePin 13 // pin to charge the capacitor - connected to one end of the charging resistor 3#define dischargePin 11 // pin to discharge the capacitor 4#define resistorValue 10000.0F // change this to whatever resistor value you are using 5 // F formatter tells compliler it's a floating point value 6 7unsigned long startTime; 8unsigned long elapsedTime; 9float microFarads; // floating point variable to preserve precision, make calculations 10float nanoFarads; 11 12void setup(){ 13 pinMode(chargePin, OUTPUT); // set chargePin to output 14 digitalWrite(chargePin, LOW); 15 16 Serial.begin(9600); // initialize serial transmission for debugging 17} 18 19void loop(){ 20 digitalWrite(chargePin, HIGH); // set chargePin HIGH and capacitor charging 21 startTime = millis(); 22 23 while(analogRead(analogPin) < 648){ // 647 is 63.2% of 1023, which corresponds to full-scale voltage 24 } 25 26 elapsedTime= millis() - startTime; 27 // convert milliseconds to seconds ( 10^-3 ) and Farads to microFarads ( 10^6 ), net 10^3 (1000) 28 microFarads = ((float)elapsedTime / resistorValue) * 1000; 29 Serial.print(elapsedTime); // print the value to serial port 30 Serial.print(" mS "); // print units and carriage return 31 32 33 if (microFarads > 1){ 34 Serial.print((long)microFarads); // print the value to serial port 35 Serial.println(" microFarads"); // print units and carriage return 36 } 37 else 38 { 39 // if value is smaller than one microFarad, convert to nanoFarads (10^-9 Farad). 40 // This is a workaround because Serial.print will not print floats 41 42 nanoFarads = microFarads * 1000.0; // multiply by 1000 to convert to nanoFarads (10^-9 Farads) 43 Serial.print((long)nanoFarads); // print the value to serial port 44 Serial.println(" nanoFarads"); // print units and carriage return 45 } 46 47 /* dicharge the capacitor */ 48 digitalWrite(chargePin, LOW); // set charge pin to LOW 49 pinMode(dischargePin, OUTPUT); // set discharge pin to output 50 digitalWrite(dischargePin, LOW); // set discharge pin LOW 51 while(analogRead(analogPin) > 0){ // wait until capacitor is completely discharged 52 } 53 54 pinMode(dischargePin, INPUT); // set discharge pin back to input 55}
Downloadable files
Simple Block Diagram
Simple Block Diagram
Simple Block Diagram
Simple Block Diagram
Sch
Sch
Comments
Only logged in users can leave comments