Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define vTestPin 0
- #define chargePin 13
- #define dischargePin 11
- #define resistorValue 10000.0F
- #define ADC_RES 1024.0F
- #define V_HIGH 5
- unsigned long startTime;
- unsigned long elapsedTime;
- float microFarads;
- float nanoFarads;
- void setup(){
- pinMode(chargePin, OUTPUT);
- digitalWrite(chargePin, LOW);
- Serial.begin(9600);
- }
- void loop(){
- // ---- Capacitance ----
- // start charging capacitor, and record time
- digitalWrite(chargePin, HIGH);
- startTime = millis();
- // wait for capacitor to charge ~63% (one T = RC)
- while(analogRead(vTestPin) < (ADC_RES * .63)) {
- }
- // T = RC -> C = T / R
- elapsedTime= millis() - startTime;
- microFarads = ((float)elapsedTime / resistorValue) * 1000;
- Serial.print(elapsedTime);
- Serial.print(" mS ");
- if (microFarads > 1){
- Serial.print((long)microFarads);
- Serial.println(" microFarads");
- }
- else{
- nanoFarads = microFarads * 1000.0;
- Serial.print((long)nanoFarads);
- Serial.println(" nanoFarads");
- delay(500);
- }
- float vx = analogRead(vTestPin) * V_HIGH * ADC_RES;
- Serial.print("vx: ");
- Serial.println(vx);
- float ix = (V_HIGH - vTest) / resistorValue;
- Serial.print("rx: ");
- if( ix > 0) {
- float rx = vx / ix;
- Serial.println(rx);
- }
- Serial.println("infinite!");
- // Allow capacitor to discharge
- digitalWrite(chargePin, LOW);
- pinMode(dischargePin, OUTPUT);
- digitalWrite(dischargePin, LOW);
- while(analogRead(vTestPin) > 0){
- }
- pinMode(dischargePin, INPUT);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement