Site icon AranaCorp

Criar um sensor capacitivo com o Arduino

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

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

Fontes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

Exit mobile version