Dibujar-MIDI controller con tinta conductora (5 / 6 paso)

Paso 5: El Sensor capacitivo MPR121

https://www.Sparkfun.com/products/9695

El Sensor capacitivo que utilicé para este proyecto es el MPR121. El MPR121 es un controlador de sensor táctil capacitiva impulsado por una interfaz I2C (en este caso el controlador maestro es un Arduino). El chip puede controlar hasta doce electrodos individuales. Como en mi proyecto yo estaba usando 20 pernos (para 20 botones), utilizan 2 sensores: utilicé los 12 electrodos los electrodos 1 y 8 de la segunda. Hay una guía muy útil de conexión en el sitio web de sparkfun, que hará más fácil entender cómo utilizar este sensor. Te recomiendo descargar el código que usan y modifican cuatro necesidades. Si quieres hacer cosas más avanzadas que lo que se explica en esta guía, te recomiendo para echar un vistazo a su hoja de datos para saber cómo hacerlo comunicarse con Arduino por medio de I2C.

Guía de conexión:

https://Learn.Sparkfun.com/tutorials/mpr121-hookup...

Hoja de datos:

https://www.Sparkfun.com/datasheets/Components/mpr...

Si usted mirara en el esquema de archivo Fritzing que os adjunto, usted encontrará que muchas de las conexiones del esquema (resistencias pull-up, condensadores...) ya se sueldan al comprar el sensor MPR121 en Sparkfun.

A continuación, a señalar algunas notas importantes sobre cómo configurar el sensor para este proyecto:

1) Vdd:

¡¡Ten cuidado!! el MPR121 trabaja con Vdd = 3, 3V. Se quemará si se conecta a la salida de 5V de Arduino.

2) la configuración:

En la guía de conexión, encontramos esto:

 void mpr121_setup(void) { set_register(0x5A, ELE_CFG, 0x00); set_register(0x5A,.... ......... 

Lo que hace es ajustar el sensor MPR121 correctamente: seleccione el número de electrodos utilizados, elija la corriente de carga y descarga y el tiempo para cada sensor, conjunto la versión táctil/umbral para cada electrodo... No necesita saber exactamente lo que se trata: simplemente copiarla y cambiar algunas de las líneas de su proyecto. Basta con llamar a esta función en la configuración del Arduino y hacerlo de nuevo cada vez que desee cambiar la configuración del sensor (en mi caso, cuando ajuste los botones o cambiar las plantillas, por ejemplo). Voy a explicar algunos aspectos sobre la instalación de sensores en los puntos siguientes.

Básicamente, la función 'set_register' hace la comunicación I2C entre el sensor y el Arduino. Se define así:

 void set_register(int address, unsigned char r, unsigned char v) { Wire.beginTransmission(address); Wire.write(r); Wire.write(v); Wire.endTransmission(); } 

Dos de los registros más importantes son los registros de configuración de AFE 1 y 2 (registros 0x5C y 0x5D). Ver la ficha técnica para más detalle en la página 13. Cambiar los valores de este registros definir la corriente de carga y descarga y el tiempo para los electrodos, las iteraciones de filtrado y así sucesivamente. Te recomiendo jugar un poco con los valores de CDT y CDC para que puedan encontrar los adecuados para la detección de tacto correcto y suelte en su proyecto (tal vez no necesitan ser modificados, pero tal vez que lo harán).


3) la dirección de cada sensor:

Hay un problema cuando desea utilizar dos o más sensores MPR121 al mismo tiempo, porque todos tienen la misma dirección por defecto para la comunicación I2C: es la dirección 0x5A. Si nos fijamos en la hoja de datos, dice que pueden ser elegidos 4 direcciones diferentes, dependiendo de donde usted soldar el perno de dirección: Vdd y Vss, SDA, SCL. Por defecto, la Junta viene con el perno de dirección soldado a Vss (masa), así que si desea utilizar más de un sensor, tienes que cortar esta conexión: al lado del perno de dirección encontrará dos pequeños cuadrados metálicos que están conectados con una línea muy delgada: esta línea es la conexión entre el perno de dirección y la tierra. Corte esta pequeña línea de uno de los sensores con un cortador y soldar el perno de dirección a Vdd, por ejemplo, para que la nueva dirección de este sensor ya no es 0x5A: en cambio, será 0x5B.

Esto es exactamente lo que hice para este proyecto, así que tuve dos sensores: uno de dirección fue 0x5A y el segundo uno era 0x5B.

4) configuración del umbral touch/Release:

La configuración del umbral táctil y la liberación se hace dentro de la configuración MPR121. Si usted sigue a la guía de conexión y buscar en la biblioteca de mpr121.h, los valores predeterminados son 0xA0 para touch_threshold y 0xB0 umbral de liberación. Una posibilidad es cambiar el valor de tocar y soltar umbral para cada perno, usando una variable byte para él. Por ejemplo, para un sensor:

 <p>byte touch_treshold_1st_sensor[12] = { 0xA0, 0X94, 0xB2.... //random values for example<br>byte release_treshold_1st_sensor[12] = { 0xB0,0xC3, 0xA8.... ...... ..... void mpr121_1st_sensor_setup(void) { ....... set_register(0x5A, ELE0_T, touch_treshold_1st_sensor[0]); set_register(0x5A, ELE0_R, release_treshold_1st_sensor[0]); set_register(0x5A, ELE1_T, touch_treshold_1st_sensor[1]); set_register(0x5A, ELE1_R, release_treshold_1st_sensor[1]); ........</p> 

Me parece la forma más sencilla para definir los valores de umbral diferentes touch/release para cada plantilla: usted puede guardar los valores en la EEPROM del Arduino y simplemente cargarlos en el sensor, dependiendo de la plantilla que esté utilizando.

Sin embargo, yo estaba teniendo problemas con esto: algunos de los botones se basó en algunas plantillas estaban fuera de gama, por lo que no pude hacer una instalación correcta. Así que en vez de cambiar los valores de umbral, estaba cambiando la corriente para cada pin individual del sensor de carga y descarga. Usted puede aprender cómo hacer esto en la página 14 de la hoja de datos. Esto funcionaba mejor para mí, debido a la gama de detección táctil y suelte para cada electrodo fue mayor. Este es un ejemplo de cómo lo hice:

 <p>// 20 byte array: 12 values for 1st sensor and 8 for 2nd sensor. Initial value: 0x28<br>byte CDC_sensor[20] = {0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28};</p><p>.......</p><p>//Then I used the encoder to select the CDC_sensor[i] value for each pin</p><p>for (int i=0; i<20; i++)</p><p>{</p><p> //encoder stuff</p><p> if... //if encoder position is increased</p><p> {CDC_sensor[i] ++;}</p><p> else...//if encoder position is decreased</p><p> {CDC_sensor[i] --;}</p><p>}</p><p> //finally, everytime a CDC_sensor value is changed, you need to make the setup again:</p><p>void mpr121_1st_sensor_setup(void)<br>{ ....... </p><p> set_register(0x5A, 0x5F, CDC_sensor[0]); //el 0<br> set_register(0x5A, 0x60, CDC_sensor[1]); //el 1 set_register(0x5A, 0x61, CDC_sensor[2]); //el 2</p><p> ........</p> 

Debe tratar de usar lo que es más conveniente para usted: cambiando los valores de umbral de electrodo o los valores actuales de carga individual.

5) interrupción Arduino:

El sensor MPR121 tiene un pin IRQ, que tiene que configurarse con una resistencia de pull-up, y va para bajo cada vez que el sensor detecta un toque o una versión en uno de sus electrodos. Así que te recomiendo soldar este pins a los pines de interrupción de Arduino, que son 3 y 2 digitales. De esta manera usted puede utilizar la función Arduino Attachinterrupt:

http://Arduino.CC/en/Reference/AttachInterrupt

Pero ten cuidado!!!! no muchas cosas de código deben realizarse dentro de la interrupción: por ejemplo, el puerto serial no funciona (por lo tanto, los mensajes MIDI no funciona bien, ya el puerto serie se utiliza para su transmisión). Sólo usé las interrupciones para cambiar el valor de una variable booleana, que determina si un perno fue ser tocado o no. Luego, hice los cambios correspondientes en el programa general de lazo. Ver el código:

 //interrupt variables static boolean touch_1st = false; static boolean touch_2nd = false; //in the setup: //interrupts attachInterrupt(0, touching_1st_sensor, FALLING); attachInterrupt(1, touching_2nd_sensor, FALLING); //outside the loop void touching_1st_sensor() { touch_1st = true; } void touching_2nd_sensor() { touch_2nd = true; } //in the loop if(touch_1st) { //check for electrodes... touch_1st = false; } if(touch_2nd) { //check for electrodes... touch_2nd = false; }<br> 

Con todo esto, creo que tienes suficiente información para hacer algún principiante y cosas de nivel medio con el sensor MPR121.

Artículos Relacionados

Su propia Galaxia, en un papel... Cartel con tinta conductora + LED

Su propia Galaxia, en un papel... Cartel con tinta conductora + LED

Me encontré con tinta conductiva en mi investigación y como un estudiante de diseño que empecé a cuestionar su uso en mis proyectos. Imaginaba un cartel con LEDs y tipografía donde la luz sería una ilustración del texto. Para este proyecto he elegido
Juego operación DIY con tinta conductora

Juego operación DIY con tinta conductora

juego de operación DIY con tinta conductora de pintura de desnudo.De una compilación que el día en el espacio de Hacker de San AntonioPartes:Caja pequeña1 LED1 transistor NPN1 resistencia de 390 ohmioscinta eléctricaDesnudo pintura Eelectrically pint
Tarjeta Firefly con tinta conductora

Tarjeta Firefly con tinta conductora

Esta tarjeta fue hecha de YuKonstruct circuito escriba construir noche y utiliza la pluma de la tinta conductora de Electroninks y una etiqueta engomada Chibitronics LED.Para esta tarjeta necesitarás:Cartulina oscura (yo usé mitad de 8.5 x 11 hoja de
Un llavero con tinta conductora de reparación

Un llavero con tinta conductora de reparación

Tuve un llavero para mi coche que no era como antes. Este instructable había restaurado los botones a su función original.Paso 1: Lo que usted necesita 1 fob para reparar 2 una moneda para abrir la tinta conductora fob 3Paso 2: Abra el fob Uso el cén
Exploración de síntesis de sonido con la tinta conductora de Circuitscribe circuito Kit

Exploración de síntesis de sonido con la tinta conductora de Circuitscribe circuito Kit

(Nota-Este es un post invitado de Eureka! Fábrica por Chuck Stephens como parte de su programa de Instructables construir noche.)En un proyecto anterior he creado una tabla de prototipos para el circuito de Circuitscribe kit de construcción. Aquí lo
Electrónica de papel: Hacer interactivo, Arte Musical con la tinta conductora

Electrónica de papel: Hacer interactivo, Arte Musical con la tinta conductora

si alguna vez has querido traer un pedazo de papel a la vida, ahora es tu oportunidad. Este instructable le llevará a través de todos los pasos necesarios para crear un increíble folleto interactivo o arte. El flyer de este evento es no normal de imp
Cómo hacer y conectar tinta conductora

Cómo hacer y conectar tinta conductora

Introducción del proyecto:Este es un instructivo para demostrar cómo utilizar tinta conductora desnuda con el tablero pelado de conductor. El objetivo de este proyecto es mostrar cómo la gente puede hacer y conectar tinta conductora.Materiales:-Elabo
Atari Punk Console - tinta conductora & tu cuerpo

Atari Punk Console - tinta conductora & tu cuerpo

construir una simple consola de Atari Punk que utiliza tinta conductora y su cuerpo para cambiar el sonido! El circuito aquí fue modelado fuera de Joshua Zimmerman maravilloso instructable. El diseño original de la APC, o "Caminó generador del tono&q
$1 DIY tinta conductora y pintura de fuego! (no tóxico, barato, casero)

$1 DIY tinta conductora y pintura de fuego! (no tóxico, barato, casero)

Gire a la fuego en tinta electrónica conductora, construir circuitos electrónicos, crear instrumentos musicales de papel e insumos para tu placa Arduino!ACTUALIZACIÓN (18/08/2014)Si quieres evitar el proceso de hacer su propio carbón y mezclar en una
Cómo trabajar con tela conductora

Cómo trabajar con tela conductora

Trabajo con tela conductora es divertido y es ideal para accesorios personales, circuitos suave, e-textiles y otros proyectos que se aprovechan de sus propiedades. Aprender los conceptos básicos te ayudará a tomar decisiones de diseño y material a la
Fotos con tinta en tapones de corcho

Fotos con tinta en tapones de corcho

un proyecto grande, rápido y fácil para hacer un regalo pequeño, hecho en casa de un amigo, para decorar tus frascos y creativamente cosas de etiqueta. En mi caso, pasaron a ser parte de la idea del regalo perfecto para un amigo que amaba a cocinar,
Circuitos de impresión con pintura conductora

Circuitos de impresión con pintura conductora

Después de hacer un circuito flexible, quería experimentar con otras maneras de trabajar con pintura conductora. Vi este proyecto publicada por las personas que hacen conductores desnudos de la pintura y tuve la idea de tratar de crear un circuito en
Teclado de tinta conductora Drawdio

Teclado de tinta conductora Drawdio

este proyecto fue un resultado sensacional juntos Desnudos tinta conductiva con el Lápiz de Drawdio. Yo quería hacer interfaz de teclado para el drawdio, para que una persona puede interactuar con él similar a un sintetizador o piano. Los pasos básic
Cómo teñir una brazalete de madera sin terminar y un anillo con tinte RIT

Cómo teñir una brazalete de madera sin terminar y un anillo con tinte RIT

aquí es una demostración de cómo teñir un brazalete de madera sin terminar y anillo con tinte RIT. El proceso es muy sencillo. Materiales necesarios: anillo de madera sin terminar, brazalete de madera sin terminar, tinte RIT (ciruela), envases de plá