

The FDC1004, manufactured by Protocentral (Part ID: FDC), is a high-precision capacitance-to-digital converter (CDC) designed to measure capacitance with exceptional accuracy and resolution. This component is ideal for applications requiring precise capacitive sensing, such as proximity sensing, liquid level sensing, and touch sensing. Its advanced features and ease of integration make it a popular choice for both industrial and consumer electronics.








The FDC1004 offers robust performance and flexibility for capacitive sensing applications. Below are its key technical details:
The FDC1004 is typically available in a 10-pin package. Below is the pinout and description:
| Pin | Name | Description |
|---|---|---|
| 1 | VDD | Power supply input (3.3V to 5.5V). |
| 2 | GND | Ground connection. |
| 3 | SDA | I²C data line for communication. |
| 4 | SCL | I²C clock line for communication. |
| 5 | CAP1 | Capacitive input channel 1. |
| 6 | CAP2 | Capacitive input channel 2. |
| 7 | CAP3 | Capacitive input channel 3. |
| 8 | CAP4 | Capacitive input channel 4. |
| 9 | SHLD1 | Shield driver output for CAP1 and CAP2. |
| 10 | SHLD2 | Shield driver output for CAP3 and CAP4. |
The FDC1004 is straightforward to use in capacitive sensing applications. Below are the steps and best practices for integrating it into your circuit.
0x50. Ensure no address conflicts on the I²C bus.Below is an example of how to interface the FDC1004 with an Arduino UNO to read capacitance values:
#include <Wire.h>
// FDC1004 I2C address
#define FDC1004_ADDRESS 0x50
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
// Configure FDC1004 (example: set measurement channel and rate)
Wire.beginTransmission(FDC1004_ADDRESS);
Wire.write(0x08); // Address of the configuration register
Wire.write(0x1C); // Example configuration: enable CAP1, 100 Hz sampling
Wire.endTransmission();
}
void loop() {
// Request capacitance measurement from FDC1004
Wire.beginTransmission(FDC1004_ADDRESS);
Wire.write(0x00); // Address of the data register
Wire.endTransmission();
Wire.requestFrom(FDC1004_ADDRESS, 2); // Request 2 bytes of data
if (Wire.available() == 2) {
uint16_t data = Wire.read() << 8 | Wire.read(); // Combine MSB and LSB
float capacitance = data * 0.000015; // Convert to pF (example scaling factor)
Serial.print("Capacitance: ");
Serial.print(capacitance);
Serial.println(" pF");
}
delay(100); // Wait before the next measurement
}
No I²C Communication:
Inaccurate Measurements:
Device Not Detected on I²C Bus:
Q: Can the FDC1004 measure liquid levels in non-conductive containers?
Q: What is the maximum cable length for capacitive sensors?
Q: Can I use the FDC1004 with a 3.3V microcontroller?
By following this documentation, you can effectively integrate the FDC1004 into your projects and achieve precise capacitive sensing.