Os sensores capacitivos são normalmente utilizados para a detecção de objetos. Eles permitem, por exemplo, detectar a passagem de um objeto numa esteira ou determinar o nível de líquido num tanque. Mais cotidianamente, são usados em monitores táteis ou como interruptores. Neste tutorial, veremos como criar um sensor capacitivo usando um simples condutor e um microcontrolador.
Material
- Computador
- Arduino UNO
- Cabo USB A Macho/B Macho
- Cabo Dupont
- Resistor 1Mohm
Princípio de funcionamento
Um sensor capacitivo funciona como uma antena que gera um campo elétrico. Quando um material se aproxima da antena, ele modifica a capacitância deste campo. O microcontrolador sente esta diferença determina a proximidade do objeto. Com esta tecnologia, é possível transformar qualquer objeto condutor num sensor.

Esquema
Para criar um sensor tátil numa placa Arduino, precisamos de uma resistência e de um cabo e/ou de uma tinta condutiva ou outra. A resistência liga o pino de medição ao pino de referência e o cabo vai do pino de medição até uma folha de alumínio, tinta condutiva ou outra. O valor da resistência define a sensibilidade do sensor. Quanto maior este valor, maior a capacidade do sensor de detectar objetos ao longe. Usamos aqui uma resistência de 1MOhm, mas escolha a que for mais adequada para a sua aplicação, entre 500k e 40Mohm.
Existem microcontroladores com sensores táteis integrados, como o NodeMCU (ESP8266 ou ESP32). Neste caso, um simples condutor ligado ao pino é suficiente para criar um sensor capacitivo.

Código
Para usar o objeto Capacitive, utilizamos a biblioteca CapacitiveSensor.hi. Para inicializar o sensor, precisamos especificar os pinos utilizados (aqui, 2 e 3). É possível ajustar a sensibilidade do sensor com a função de chamada cs.capacitiveSensor(sensitivity). Para ter mais controle sobre a precisão do sensor, usamos uma média móvel gerenciada pela função smooth() a fim de filtrar as suas medidas.
//Libraries
#include <CapacitiveSensor.h>//https://github.com/PaulStoffregen/CapacitiveSensor
//Parameters
bool autocal = 0;
const int numReadings = 10;
long readings [numReadings];
int readIndex = 0;
long total = 0;
const int sensitivity = 1000;
const int thresh = 200;
const int csStep = 10000;
CapacitiveSensor cs = CapacitiveSensor(2, 3);
void setup() {
//Init Serial USB
Serial.begin(9600);
Serial.println(F("Initialize System"));
//Init cs
if (autocal == 0) {
{
cs.set_CS_AutocaL_Millis(0xFFFFFFFF);
}
}
}
void loop() {
Serial.println(smooth());
}
long smooth() { /* function smooth */
////Perform average on sensor readings
long average;
// subtract the last reading:
total = total - readings[readIndex];
// read the sensor:
readings[readIndex] = cs.capacitiveSensor(sensitivity);
// add value to total:
total = total + readings[readIndex];
// handle index
readIndex = readIndex + 1;
if (readIndex >= numReadings) {
readIndex = 0;
}
// calculate the average:
average = total / numReadings;
return average;
}
Aplicações
- Criar um interruptor tátil
- Criar um sensor tátil ou de proximidade
- Usar um sensor tátil ESP32/ESP8266
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie