Publicado el

CAP1188 Sensor capacitivo. ¿Cómo funciona?

cap1188 sensor capacitivo

Este sensor táctil o touch, CAP1188 Sensor Capacitivo de 8 canales, es fácil de usar. Si quieres añadir sensores táctiles para tu proyecto con Arduino, PIC o Raspberry.

Sensor CAP1188

cp1.1

El CAP1188 sensor capacitivo tiene soporte para i2C y SPI, por lo que es fácil de usar con cualquier microcontrolador. Si estás utilizando i2C, puedes seleccionar una de las 5 direcciones, para un total de 40 botones táctiles capacitivos en un bus de 2 hilos i2C. El uso de este chip es mucho más fácil que hacer la detección capacitiva con entradas analógicas. Empezar es muy fácil con la biblioteca de Arduino y un tutorial.

CAP1188 Sensor Capacitivo o Touch.

El sensor CAP1188 se ajusta muy bien en un tablero y protoboard, tiene todos los sensores en una fila y si estás utilizando el pin I2C se puede conectar al lado izquierdo solamente.
cp2

Pines de alimentación

VIN(voltaje de entrada) y GND (tierra) son todo el poder en el CAP1188, puedes utilizar 3-5VDC así que es genial para cualquier tipo de microcontroladores. Hay un regulador de 3V dentro, así, la salida está disponible en el 3Vo pin(puedes conseguir hasta 150 mA).
cppower

Pines de interfaz I2C

Para utilizar el protocolo I2C, conecta a los SCK (reloj i2C a SCL) y SDA pines(datos del bus i2C). Estos son 5V para que puedas utilizarlos con 3V o 5V  de voltaje.

I2C

SPI pines Interface

Si deseas utilizar SPI, vas a utilizar el SCK, MOSI pines, MISO y CS.
spi

Otros pines de interconexión

El de AD pin es utilizado para seleccionar SPI o interfaz I2C.Ve la página de cableado para más detalles.
El IRQ pin pasa a nivel bajo cuando se toca un alfiler.En el ejemplo de código no lo utilizamos, pero si quieres tener un pin de interrupción puedes utilizarlo, conectalo a el pin IRQ y utiliza la activación a nivel bajo.
El RST pin se utiliza para restablecer el chip, ya sea en I2C o SPI modo.

Pines de entrada del sensor

Hay 8 patillas del sensor capacitivo individuales, llamadas C1 a C8.Al reiniciar el sistema vuelve a calibrarlos, ten cuidado de no tocar éstos al encender.
cpsensor

Pines de salida del sensor

L1 y L8 pines de salida del controlador / sensor LED. Los indicadores son muy útiles para la depuración del sistema de sensor táctil, pero también se pueden utilizar los pines de salida indicador de desencadenar algunos otros aparatos electrónicos. Cada L pin corresponde a la del correspondiente C.
cppinessalida
Entrada del sensor
Estos pines usan  3V, y caen a 0 V cuando se activa.

Cableado para su uso con I2C

Si utilizas los pines de interfaz I2C, estos son útiles porque puede tener múltiples sensores conectados en dos pines I2C, siempre y cuando cada uno tenga una dirección única. Los I2C no son rápidos, pero eso está bien para un sensor como éste (que no es bueno para los datos de tipo de vídeo o audio).Conectar VIN pin a 5V y GND pin a tierra. Conecta el pin SDA  en una línea SDA I2C / datos y el pin SCL en una línea de I2C SCL / reloj.

  • En Arduino UNO / Duemilanove / etc, SDA == analógica 4, 5 SCL == analógico 5
  • En Leonardo / Micro, SDA == digital 2, SCL == digital 3
  • En Mega / ADK / Due, SDA == D83l igital 20, Digital 21 SCL.

cp3
Arduino realizará un restablecimiento completo del CAP1188 sensor capacitivo, conectar RST para cualquier pin I/O digital. cp5
Si estás usando múltiples sensores, o quieres cambiar la dirección I2C a otra cosa, se puede elegir entre 5 opciones diferentes – 0x28 , 0x29 (por defecto), 0x2A , 0x2B , 0x2C0x2D.
La dirección I2C se seleccionan mediante la conexión una resistencia al pin AD en la parte inferior derecha: resistencias diferentes establece una dirección diferente. La dirección es más fácil de configurar 0x28 que es sólo un hilo de AD a la 3Vo pin.cp6
Si deseas establecer la dirección I2C a un valor diferente que necesita para conectar una resistencia de AD a tierra en lugar de un cable a 3V. Esta hoja de datos, habla de diferentes valores de resistencia en la tabla 3.1 – pero ya que el tablero de desbloqueo ya tiene una resistencia de 150K en él, tendrás que utilizar valores diferentes.
Aquí puedes ver los valores que debes utilizar:

  • Cable de conexión AD a 3V > dirección I2C – 0x28
  • Sin resistencia o cable conectado a AD -> dirección I2C0x29
  • 600K resistencia de AD a tierra -> dirección I2C 0x2A
  • 300K resistencia de AD a tierra -> dirección I2C 0x2B
  • 180K resistencia de AD a tierra -> dirección I2C 0x2C

 

Cableado para uso con SPI

Puedes poner el CAP1188 en modo SPI para ponerlo en marcha con AD conectado a tierra. Los 4 pines SPI se utilizan para comunicar en lugar de I2C. SPI puede ser preferible para tu proyecto si tiene una colisión dirección I2C (que es poco probable que sea ya que puedes elegir 5 direcciones).Si tienes un Arduino UNO y quieres utilizar los pines I2C para la entrada analógica SPI en lugar de I2C, o si estás utilizando un microcontrolador que no tiene I2C hardware. de cualquier manera, SPI está a tu disposición. Conecta VIN a 5V y GND a tierra, luego debes conectar un cable de AD a tierra. Ahora conecta el SCK , MISO , MOSI, CS y RST pines a tu microcontrolador. Si se utiliza un Arduino se puede utilizar cualquiera de los pasadores de hardware SPI que se fijan para Arduino, o ir con SPI software donde se selecciona pin 5 E / S digital.
cp7

Usando CAP1188 sensor capacitivo con Arduino

Es fácil de usar esta tarjeta del sensor con un Arduino gracias a la gran biblioteca Adafruit. Una vez que hayas instalado la biblioteca se puede conectar la placa del sensor a través de I2C o SPI a tu Arduino, que funcionará con cualquier tipo. Si estás utilizando un tipo diferente de microcontrolador, la biblioteca es una buena referencia para ayudarte a crear el código de nuevo.
20160415_114941

Descargar la librería

Vamos a descargar la biblioteca Arduino desde GitHub. El código fuente está en el link, pero para que sea fácil, simplemente sugerimos hacer clic en el botón de abajo para conseguir la última versión de un archivo Zip.

https://github.com/adafruit/Adafruit_CAP1188_Library/archive/master.zip

Cambia el nombre de la carpeta sin comprimir Adafruit_CAP1188 y comprueba que el Adafruit_CAP1188 carpeta contiene Adafruit_CAP1188.cpp y Adafruit_CAP1188.h

Coloca el Adafruit_CAP1188 carpeta de la biblioteca de tu arduinosketchfolder / bibliotecas / carpeta.
Puede que tenga que crear las bibliotecas Subcarpeta si es la primera biblioteca. Reiniciar el IDE. También tenemos un gran tutorial sobre la instalación de la biblioteca de Arduino en:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use

Ejecutar el sketch de prueba

Una vez que hayas reiniciado,deberías ser capaz de cargar hasta el Archivo-> Examples-> Adafruit_CAP1188-> cap1188test.
cp8
Cablea el sensor como se muestra en la sección de cableado, por I2C. Conecta el GND a tierra, VIN pines a 5 V y conecta SDA a tu Arduino de SDA pin, SCL a SCL pin

  • Sobre el UNO / Duemilanove / etc, SDA == analógica 4, 5 SCL == analógico
  • En Leonardo / Micro, SDA == digital 2, SCL == digital 3
  • En Mega / ADK / Due, SDA == Digital 20, Digital 21 SCL ==

Sube el sketch y ejecuta la serial port a 9600 baudios. Deberas ver que el CAP1188 lo reconoce. Y luego se puede tocar los pines de C1 a C8 con los dedos para ver el sensor táctil se apaga.
cp9
20160415_115007

I2C con una dirección diferente

Si estás usando múltiples sensores, o lo que quieres es cambiar la dirección i2C a otra cosa, se puede elegir entre 5 opciones diferentes – 0x28 , 0x29 (por defecto), 0x2A , 0x2B , 0x2C y0x2D
La dirección I2C se seleccionan mediante la conexión una resistencia a la AD pin en la parte inferior derecha: resistencias diferentes establece una dirección diferente. La dirección es más fácil de configurar 0x28 que es sólo un hilo de AD a la 3V.
cp10

Mira este código

if (!cap.begin()) {
Serial.println("CAP1188 no encontrado");
while (1);
}

Y cambia el cap.begin ()a cap.begin (0x28) para mostrarte cómo funciona una de las direcciones 0x28. No  olvides de reiniciar el Arduino y sensor, el sensor sólo detecta la dirección I2C al encender el aparato por lo que no se puede cambiar cuando está encendido.

Utilización del CAP1188 sensor capacitivo y SPI

También puedes utilizar SPI esta biblioteca es compatible con el hardware SPI (utilizando el puerto ‘SPI hardware’ en Arduino) o software / explosión de bits SPI, donde se pueden definir los pines. En general, estos sensores no son muy rápidos pero si usas I2C es una buena manera de interconectarlos, pero si quieres, SPI está disponible. Por ejemplo, si quieres tener más de 5 pines conectados a una placa, es posible hacerlo con SPI, pero la interfaz I2C en este chip no admite esa cantidad de direcciones I2C compartidos. Para habilitar SPI, asegúrate de SPI esté conectada correctamente y hacer un reinicio de tu tablero de manera que el chip ‘despierta’ en modo SPI.Si usas el SPI hardware , visita la página de SPI para los pines que tienes que utilizar, a veces son sólo el ICSP lo que les hace más difícil de utilizar. para activar la interfaz SPI hardware, crea el código con CAP1188 sensor capacitivo.

AQUÍ ESTA EL LINK DE SPI:
http://arduino.cc/en/Reference/SPI

Para hacer la interfaz SPI:
Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CS, CAP1188_RESET);

Puedes usar un alfiler con tu CAP1188 Sensor capacitivo:
Adafruit_CAP1188 cap = Adafruit_CAP1188(CAP1188_CLK, CAP1188_MISO, CAP1188_MOSI, CAP1188_CS, CAP1188_RESET);

La utilización de IRQ externo

Arduino tiene la capacidad básica de interrumpir, aquí está un ejemplo de Nobody123 de unir el alfiler de IRQ DEL CAP1188 sensor capacitivo al alfiler digital *3 sobre una Ino (Interrumpir *1) para el seguimiento ,toca el CAP1188 sensor capacitivo sin orden.

  1. ************************************************* **
  2. Esta es una biblioteca para el sensor capacitivo CAP1188 I2C / SPI 8-chan
  3. Diseñado específicamente para trabajar con el sensor de CAP1188 Adafruit
  4. —-> Https://www.adafruit.com/products/1602
  5. Estos sensores utilizan I2C / SPI para comunicarse, se requieren clavijas 2 + a
  6. interfaz
  7. Adafruit invierte tiempo y recursos que proporciona el código de fuente abierta,
  8. por favor apoye Adafruit y de código abierto mediante la compra de hardware
  9.  productos de Adafruit!
  10. Escrito por Limor Fried / Ladyada para Adafruit Industries.
  11. licencia BSD, todo el texto anterior debe ser incluido en cualquier redistribución
  12. ************************************************** ** /
  13. #include <Wire.h>
  14. #include <SPI.h>
  15. #include <Adafruit_CAP1188.h>
  16. // Pin Reset para i2C o SPI
  17. #define CAP1188_RESET 4
  18. // Pin CS se utiliza para el software hardware SPI
  19. // Pines SPI de Arduino
  20. #define CAP1188_CS 10
  21. // Estos se definen para el software de SPI, Para el hardware SPI
  22. // board’s SPI pins in the Arduino documentation
  23. #define CAP1188_MOSI 11
  24. #define CAP1188_MISO 12
  25. #define CAP1188_CLK 13
  26. volatile byte interrupt = 0;
  27. // Para I2C, conecte SDA a su pin SDA de Arduino, SCL al pin SCL
  28. // En UNO / Duemilanove / etc, SDA == analógica 4, 5 SCL == analógico
  29. // Por Leonardo / Micro, SDA == digital 2, SCL == digital 3
  30. // En Mega / ADK / Due, SDA == Digital 20, Digital 21 SCL ==
  31. // Usar I2C, sin pin de reset!
  32. // Casquillo Adafruit_CAP1188 = Adafruit_CAP1188 ();
  33. // O … Uso I2C, con el pin de reset
  34. // Casquillo Adafruit_CAP1188 = Adafruit_CAP1188 (CAP1188_RESET);
  35. // O … hardware SPI, CS pin y pin de reset
  36. Adafruit_CAP1188 casquillo = Adafruit_CAP1188 ( CAP1188_CS , CAP1188_RESET);
  37. // O .. Software SPI: reloj, miso, MOSI, cs, reset
  38. // Adafruit_CAP1188 casquillo = Adafruit_CAP1188 (CAP1188_CLK, CAP1188_MISO, CAP1188_MOSI, CAP1188_CS, CAP1188_RESET);
  39. void setup() {
  40. Serial.begin(9600);
  41. Serial.println(«CAP1188 test!»);
  42. pinMode(3,INPUT);
  43. // La Comunicación comienza cuando la señal cae en LOW
  44. digitalWrite(10,HIGH);
  45. // Reinicia el sensor si utilizas el i2C y utiliza el if (!cap.begin(0x28)) {
  46. if (!cap.begin()) {
  47. Serial.println(«CAP1188 not found»);
  48. while (1);
  49. }
  50. Serial.println(«CAP1188 found!»);
  51. pinMode(3, INPUT);
  52. //Se desactiva el multitouch ahora pulsa un botón a la ves.
  53. writeRegister(0x2A, 0x80);  // 0x2A default 0x80 use 0x41  — Set multiple touches back to off
  54. writeRegister(0x41, 0x39);  // 0x41 default 0x39 use 0x41  — Set «speed up» setting back to off
  55. writeRegister(0x72, 0x00);  // 0x72 default 0x00  — Sets LED links back to off (default)
  56. writeRegister(0x44, 0x41);  // 0x44 default 0x40 use 0x41  — Set interrupt on press but not release
  57. writeRegister(0x28, 0x00);  // 0x28 default 0xFF use 0x00  — Turn off interrupt repeat on button hold
  58. EIFR = 1; // indicador de interrupción 1
  59. attachInterrupt(1, routine_Interrupt_CAP1188, FALLING);
  60. }
  61. void loop() {
  62. // Serial.println(digitalRead(3));
  63. uint8_t touched = cap.touched();
  64. if (touched == 0) {
  65. // No detectado
  66. // return;
  67. }
  68. for (uint8_t i=0; i<8; i++) {
  69. if (touched & (1 << i)) {
  70. Serial.print(«C»); Serial.print(i+1); Serial.print(«\t»);
  71. }
  72. }
  73. Serial.println();
  74. delay(50);
  75. Serial.print(«Interrupt: «);  Serial.println(interrupt);
  76. }
  77. void routine_Interrupt_CAP1188() {
  78. ++interrupt;
  79. }

Si quieres saber más sobre el CAP1188  mira su hoja de datos

http://www.adafruit.com/datasheets/CAP1188.pdf

Compartir ahora:
Deja una respuesta