Creiamo un pulsante capacitivo con Arduino

theredue

Un pulsante capacitivo per accendere le luci di una stanza

Immaginiamo che bello poter arrivare a casa e dover accendere la luce solo sfiorando con un dito una piccola porzione di muro, che ha al suo interno un interruttore nascosto, quello di cui sto parlando è di creare un pulsante capacitivo in grado di far accendere e spegnere una luce in una stanza. L’idea di questa realizzazione non è ovviamente mia, ma di Paul Bagder, il concetto che sta alla base di tutto il progetto è data dallo strumento Theremin, che è quello strumento “musicale” che si suona avvicinando e allontanando le mani da un asta di ferro, ecco un’immagine rappresentativa:

Come funziona è semplicissimo, questo strumento semplicemente rileva la presenza di carica su un corpo nelle sue vicinanze e ne calcola la sua capacità complessiva.
E’ disponibile online una libreria scritta da Paul Bagder da utilizzare con Arduino Uno e si chiama Capacitive Sensing Library, abbreviata capSense, scaricabile gratuitamente da:
http://www.arduino.cc/playground/Main/CapSense

Oltre alla libreria c’è anche un descrizione dettaglia del suo utilizzo e del principio di funzionamento di questo tipo di sensore compreso la sintassi utilizzata per richiamare le varie funzioni al suo interno.

Passiamo ora alla realizzazione pratica, per prima cosa ecco cosa ci occorre:
– Arduino Uno ovviamente oppure anche Arduino 2009
– Un foglio di alluminio piccolo
– Un led verde o qualsiasi altro va bene ugualmente
– Una resistenza nell’ordine dei Mega ohm

Per quanto riguarda la resistenza apro una piccola parentesi, più è grande la resistenza inserita è piu è sensibile il nostro pulsante alla nostra presenza, il che significa che se noi ad esempio mettiamo una resistenza nell’ordine dei 10 – 20 Mega ohm il sensore ci rileva la presenza della mano a una distanza di qualche cm di distanza dal sensore. Io ho preferito optare per una resistenza di 2 Mega ohm, funziona lo stesso discretamente, mettendo quella basta sfiorare il foglio di alluminio e il sensore ti rileva.

Passiamo al circuito da costruire:

Il sensore è un filo con una estremità scoperta, abbastanza lungo, questo filo va messo in mezzo ad un foglio piccolo di carta stagnola piegato in due.
La resistenza da 2 Mega ohm và collegata tra i pin digitali 2 e 4, mentre il led tra GND e il pin digitale 12, ricordatevi solo di mettere una piccola resistenza tra il led e gnd o tra led e pin 12, in modo da non farlo bruciare.

Giusto per mettervi a conoscenza, per chi non lo sapesse, il disegno del circuito l’ho creato con un programma che si chiama Fritzing, disponibile gratuitamente a questo indirizzo:
http://fritzing.org/

Ora l’unica parte che ci manca è programmare il firmware per Arduino, ecco il sorgente:

#include <CapSense.h>
CapSense cs_4_2 = CapSense(4,2);
int i = 0;
void setup()
{
   pinMode(12,OUTPUT);
   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
   Serial.begin(9600);
}
void loop()
{
   long total = cs_4_2.capSense(30);
   delay(150);
   Serial.println(total);
   if (total >60)
   {
      i++;
      Serial.println(“Acceso”);
   }

   switch (i)
   {
      case 1:
         digitalWrite(12,HIGH);
         break;
      case 2:
         digitalWrite(12,LOW);
         i=0;
         break;
   }
}

Vediamo ora la sintassi base della libreria CapSense.h:

– CapSense cs_4_2 = CapSense(4,2);

Questa stringa ci dice dove viene collegata la resistenza, ossia tra il pin 4 e il pin 2, ovviamente questi due valori possono essere cambiati, l’importante e che siano pin digitali.

– cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);

Serve per impostare il tempo di auto calibrazione del sensore, ponendo la funzione in questo modo viene disattivata l’auto calibrazione del sensore.

– long total = cs_4_2.capSense(30);
Questa variabile registra la capacita totale misurata sommando 30 campioni, anche qui il 30 può essere cambiato come si vuole.

Ho aggiunto nel sorgente anche la possibilita di far comunicare arduino con il serial monitor, è una funzionalità in più che si può anche eliminare perché non compromette la corretta esecuzione del firmware.
Con le corrette modifiche al circuito, collegando ad esempio dei relè e altri componenti potremmo trasformare questo progettino e considerarne un reale utilizzo in casa.

12 Comments

  1. maurotec 7 ottobre 2011
  2. stefano88 7 ottobre 2011
  3. tazzo 13 novembre 2011
  4. maurotec 7 ottobre 2011
  5. Bazinga 23 febbraio 2012
  6. maurotec 7 ottobre 2011
  7. Francesco.Gagliardo 20 giugno 2014
  8. stefano88 11 ottobre 2011
  9. Francesco.Bevacqua 21 gennaio 2014
  10. maurotec 5 ottobre 2011
  11. Emanuele 5 ottobre 2011
  12. stefano88 5 ottobre 2011

Leave a Reply