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