Följeslagare IC (5 / 36 steg)
/ * RCTiming_capacitance_meter
* kod koncept från Paul grävling 2008
*
* Kondensatorn spänningen samtidigt konstant definieras som
* 63,2% av laddspänningen.
* dvs, en kondensator är fylld med 63,2% av dess totala kapacitet i
* 1 tidskonstant
*/
int analogPin = 0; analoga pin för att mäta kondensator spänning
int chargePin = 7. stift för att ladda kondensatorn - ansluten till
ena änden av laddning motståndet
int dischargePin = 12; stift till kondensatorn,
densamma som används för diod test(checkPin1)
flyta resistorValue = 10000.0; Vi använder 10kOhm resistor
osignerade långa startTime;
osignerade långa elapsedTime;
float microFarads; flytande punkt variabel att bevara precision
float nanoFarads;
void setup() {
pinMode (chargePin, produktionen); Ställ in chargePin att mata
digitalWrite (chargePin, låg);
Serial.BEGIN(9600); initiera seriell överföring för felsökning
}
void loop() {
digitalWrite (chargePin, hög); Ange chargePin hög och kondensator laddas
startTime = millis();
While(analogRead(analogPin) < 648) {/ / bara vänta och göra ingenting tills 648
647 är 63,2% av 1023,
som motsvarar till fullskalig spänning
}
elapsedTime = millis() - startTime;
konvertera millisekunder till sekunder (10 ^ -3)
och Farads till microFarads (10 ^ 6), net 10 ^ 3 (1000)
microFarads = ((float) elapsedTime / resistorValue) * 1000;
(float) konverterar "osignerade långa" förfluten tid att flyta
Serial.Print(elapsedTime); skriva ut värdet till seriell port
Serial.Print ("mS"); skriva ut enheter
om (microFarads > 1) {
Serial.Print((Long)microFarads); skriva ut värdet till seriell port
Serial.println ("microFarads"); skriva ut enheter
}
annat
{
om värdet är mindre än en microFarad, konvertera till nanoFarads (10 ^-9 Farad).
nanoFarads = microFarads * 1000.0; multiplicera med 1000 att konvertera till nanoFarads (10 ^-9 Farads)
Serial.Print((Long)nanoFarads); skriva ut värdet till seriell port
Serial.println ("nanoFarads"); skriva ut enheter
}
/ * dicharge kondensatorn * /
digitalWrite (chargePin, låg); inställd låg kostnad pin
pinMode (dischargePin, produktionen); ställa in ansvarsfrihet stift till utgång
digitalWrite (dischargePin, låg); ställa in ansvarsfrihet pin låg
While(analogRead(analogPin) > 0) {/ / vänta tills kondensator är helt urladdat
}
pinMode (dischargePin, ingång); Ställ ansvarsfrihet pin tillbaka till insatsen
}