Determine capacitance by measuring the charging time using PIC16F688

When TEST botton is pressed, RA3 pin is set to β€œ1”. R2 and R3 are divide the voltage to 1/2 Vra3 which is connected to RA2 pin to be a Vref for comparator. The C undertest is charging and the timer is start. When the voltage of C undertest is more than 1/2 or above Vref, the timer is stop. and a number of periods that elapsed multiply by 10 is the C value in nF. Convert C number to string and display to 1Γ—16 LCD.

Circuit

The code

/*
* Project name:
Capacitance Meter
* Copyright:
Nicholas Sirirak
* Description:

* Test configuration:
MCU: PIC16F88
Dev.Board: –
Oscillator: HS, 8.0000 MHz internal
Ext. Modules: –
SW: mikroC v8.1.0.0
* NOTES:

*/

#define Vappied PORTA.F3
#define TEST PORTA.F0
unsigned int gCap = 0;
char gOverTest = 0;
char gMessage[8];
char gCapstr[8];
void interrupt(){
if(PIR1.TMR2IF){
TMR2 = 0x87; // best value to create 69.3us
gCap++;
if(gCap > 65500) gOverTest = 1;
PIR1.TMR2IF =0; // Clear int bit
}
}

void main(){
char i,j;
char cap_size;
ANSEL = 0;
TRISB = 0;
PORTB = 0;
OSCCON = 0x7E; // 8Mhz, RC internal clock
OPTION_REG.T0CS = 0;
INTCON.GIE = 1; //Enable global interrupt
INTCON.PEIE = 1; //Enable peripheral interrupt
//β€”β€”β€”β€” Set up Timer2 β€”β€”β€”β€”
PIE1.TMR2IE = 1;
T2CON = 0; // timer2 off, prescaler 1:1
TMR2 = 0x87;
PIR1.TMR2IF =0; // Clear int bit
//β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”-

 

For more detail: Determine capacitance by measuring the charging time using PIC16F688

 


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.