Skip to product information
C Meter click
1/4

MikroElektronika

C Meter click

SKU: MIKROE-2376
₹ 949.00
Taxes included. Shipping calculated at checkout.
Out of stock
Visa
Mastercard
American Express
Discover
Google Pay
UPI

Description

The chip is implemented in an astable multivibrator circuit with fixed resistors and adjustable capacitors.

The board has four different-sized plates for placing SMD capacitors (covering standard SMD packaging dimensions) as well as a socket for inserting a thru hole capacitor.

The board outputs a square wave frequency through the INT pin. Depending on the capacitor placed on the board, the value of this frequency changes. The value of a capacitor can be inferred using a simple algorithm (shown in the Libstock code example).

Onboard screw terminals are placed to allow the click to be used with multimeter probes.

C Meter click is designed to use a 5V power supply, but can work with either 3.3V or 5V logic levels.

Specification

Type Measurements
Applications Capacitance measurement tool
On-board modules NE-555 timer/square-wave generator
Key Features Plates and sockets for placing capacitors
Key Benefits Screw terminals allow use with multimeter probes
Interface GPIO
Input Voltage 3.3V or 5V
Compatibility mikroBUS
Click board size M (42.9 x 25.4 mm)

C Meter click has circuitry for measuring the value of capacitors. The design is based on a NE-555 timer/square-wave generator. The chip is implemented in an astable multivibrator circuit with fixed resistors and adjustable capacitors.

Features and usage notes

C Meter click has four different-sized plates for placing SMD capacitors (covering standard SMD packaging dimensions) as well as a socket for inserting a thru hole resistor. Each plate is labeled with package size in standard imperial measurements:

  • 1210 — 3.2mm x 2.5mm
  • 1206 — 3.2 mm x 1.6 mm
  • 0805 — 2.0 mm x x1.25 mm
  • 0603 — 1.6 mm x 0.8 mm

The board outputs a square wave frequency through the INT pin. Depending on the capacitor placed on the board, the value of this frequency changes. The value of a capacitor can be inferred using a simple algorithm (shown in the Libstock code example).

Onboard screw terminals are placed to allow the click to be used with oscillator probes.

C Meter click is designed to use a 5V power supply, but can work with either 3.3V or 5V logic levels.

Programming

This code snippet uses a preset calibration value and finds the capacitance of the capacitor for displaying on the TFT.

 1 #include 
2 #include 
3 #include "resources.h"
4 
5 // C_Meter Click
6 sbit C_METER_RST at GPIOC_ODR.B2;
7 sbit C_METER_INT at GPIOD_ODR.B10;
8 // TFT module connections
9 unsigned int TFT_DataPort at GPIOE_ODR;
10 sbit TFT_RST at GPIOE_ODR.B8;
11 sbit TFT_RS at GPIOE_ODR.B12;
12 sbit TFT_CS at GPIOE_ODR.B15;
13 sbit TFT_RD at GPIOE_ODR.B10;
14 sbit TFT_WR at GPIOE_ODR.B11;
15 sbit TFT_BLED at GPIOE_ODR.B9;
16 
17 
18 
19 void system_setup( void );
20 void setup_interrupt( void );
21 void InitTimer2( void );
22 void display_init( void );
23 
24 uint32_t int_count = 0;
25 uint32_t timer_count_end = 0;
26 bool sec_flag = false;
27 
28 void main() 
29 {
30 //Local Declarations
31 char uart_text[ 40 ];
32 float c_cal = 0.0;
33 float t_meas = 0.0;
34 float c_meas = 0.0;
35 float final = 0.0;
36 float t_cal = 0.0;
37 
38 system_setup();
39 setup_interrupt();
40 InitTimer2();
41 display_init();
42 
43 t_cal = 1.0 / 23350.0;
44 c_cal = t_cal / 77616.0;
45 
46 int_count = 0;
47 
48 while(1)
49 {
50 
51 if( sec_flag )
52 {
53 //Measurment
54 t_meas = 1.0 / timer_count_end;
55 c_meas = t_meas / 77616.0;
56 final = fabs( c_cal - c_meas );
57 //Print out
58 FloatToStr( final, final_text );
59 TFT_Rectangle( 100, 100, 200, 120 );
60 TFT_Write_Text( final_text, 100, 100 );
61 TFT_Write_Text( " Farad", 190, 100 );
62 //Reset flags
63 sec_flag = false;
64 int_count = 0;
65 timer_count_end = 0;
66 }
67 }
68 }
69 
70 void display_init( void )
71 {
72 TFT_Init_ILI9341_8bit( 320, 240 );
73 TFT_BLED = 1;
74 TFT_Set_Pen( CL_WHITE, 1 );
75 TFT_Set_Brush( 1, CL_WHITE, 0, 0, 0, 0 );
76 TFT_Set_Font( TFT_defaultFont, CL_BLACK, FO_HORIZONTAL );
77 TFT_Fill_Screen( CL_WHITE );
78 TFT_Set_Pen( CL_BLACK, 1 );
79 TFT_Line( 20, 46, 300, 46 );
80 TFT_Line( 20, 70, 300, 70 );
81 TFT_Line( 20, 220, 300, 220 );
82 TFT_Set_Pen( CL_WHITE, 1 );
83 TFT_Set_Font( &HandelGothic_BT21x22_Regular, CL_RED, FO_HORIZONTAL );
84 TFT_Write_Text( "C Meter click", 105, 14 );
85 TFT_Set_Font( &Tahoma15x16_Bold, CL_BLUE, FO_HORIZONTAL );
86 TFT_Write_Text( "C Meter", 135, 50 );
87 TFT_Set_Font( &Verdana12x13_Regular, CL_BLACK, FO_HORIZONTAL );
88 TFT_Write_Text( "EasyMx PRO v7 for STM32", 19, 223 );
89 TFT_Set_Font( &Verdana12x13_Regular, CL_RED, FO_HORIZONTAL );
90 TFT_Write_Text( "www.mikroe.com", 200, 223 );
91 TFT_Set_Font( &Tahoma15x16_Bold, CL_BLACK, FO_HORIZONTAL );
92 }
93 
94 void system_setup( void )
95 {
96 //GPIO
97 GPIO_Digital_Output( &GPIOC_BASE, _GPIO_PINMASK_2 ); //RST
98 GPIO_Digital_Input( &GPIOD_BASE, _GPIO_PINMASK_10 ); //INT
99 
100 //RST Toggle
101 C_METER_RST = 0;
102 Delay_ms(50);
103 C_METER_RST = 1;
104 
105 //UART
106 UART1_Init( 9600 );
107 UART1_Write_Text( "UART Initializedrn" );
108 
109 }
110 
111 void setup_interrupt( void )
112 {
113 GPIO_Digital_Output(&GPIOE_BASE, _GPIO_PINMASK_HIGH); // Enable digital output on PORTD
114 GPIOE_ODR = 0xAAAA;
115 GPIO_Digital_Input(&GPIOD_BASE, _GPIO_PINMASK_10);
116 
117 RCC_APB2ENR.AFIOEN = 1; // Enable clock for alternate pin functions
118 AFIO_EXTICR3 = 0x0300; // PD10 as External interrupt
119 EXTI_FTSR = 0x00000400; // Set interrupt on Rising edge
120 EXTI_IMR |= 0x00000400; // Set mask
121 NVIC_IntEnable(IVT_INT_EXTI15_10); // Enable External interrupt
122 EnableInterrupts(); // Enables the processor interrupt.
123 }
124 
125 void ExtInt() iv IVT_INT_EXTI15_10 ics ICS_AUTO 
126 {
127 EXTI_PR.B10 = 1; // clear flag
128 int_count++;
129 }
130 
131 void InitTimer2() //1 second
132 {
133 RCC_APB1ENR.TIM2EN = 1;
134 TIM2_CR1.CEN = 0;
135 TIM2_PSC = 1124;
136 TIM2_ARR = 63999;
137 NVIC_IntEnable(IVT_INT_TIM2);
138 TIM2_DIER.UIE = 1;
139 TIM2_CR1.CEN = 1;
140 }
141 
142 void Timer2_interrupt() iv IVT_INT_TIM2 
143 {
144 TIM2_SR.UIF = 0;
145 timer_count_end = int_count;
146 int_count = 0;
147 sec_flag = true;
148 }

Code examples that demonstrate the usage of C Meter click with MikroElektronika hardware, written for mikroC for ARM is available on Libstock


You may also like