Sensor capacitivo mTOUCH



Últimamente los MP3, MP4, electrodomésticos y demás aparatos están implementando controles sin botones mecánicos, usando sensores capacitivos. El más famoso es la click-wheel del iPOD que ya incorporan algunos teléfonos móviles.
Esta última semana la he pasado haciendo pruebas con este tipo de sensores para un futuro proyecto que tengo en marcha y he aprendido mucho sobre lo que puedo y no puedo hacer con ellos sin gastar mucho dinero en placas de evaluación.
En un principio he barajado 2 alternativas:

  • Sensores capacitivos de Quantum (QT100A)
  • Sensores capacitivos mTOUCH de Microchip
Como no disponía de los QT100A de Quantum, me he decidido por los mTOUCH y cual ha sido mi sorpresa al descubrir que mTOUCH abarca todo tipo de capacidades sensoras de tipo capacitivo aplicadas a los PIC. Realmente es simplemente software aplicado a unas trazas de diseño PCB un tanto particulares.
El sensor más básico posible con los PIC está basado en el 10F206 que es un PIC de 6 patillas ( en el caso del encapsulado SOT-23) que incorpora un comparador interno, la base de la detección en este caso particular.
La capacidad de deteccion se consigue convirtiendo el comparador interno del 10F206 en un oscilador de relajacion. La salida de este comparador, es usada para cargar/descargar la capacidad que se forma en el sensor ( pad del circuito ) y se usa como entrada del comparador, la tension de 0,6v del BandGap del micro:
(fuente microchip.com)

El programa del pic, disponible en Microchip, lo que hace es usar el Timer0 como contador de frecuencia y luego compara el valor leido con un valor almacenado para una pulsacion que genera una frecuencia de entre 100kHz-400kHz, asi a grandes rasgos. Todo está muy explicado en la Appnote AN1202 de Microchip.
Yo he modificado el programa, para que se encienda el led cuando se pulse ( al revés que la aplicación de Microchip).
Antes de pasar al circuito, me gustaría dar un tirón de orejas a los fabricantes de PCBs fotosensibles por su manía de variar los barnices que hacen que con el método habitual, salgan chapuzas que nos obligan a calibrar otra vez insoladoras y tiempos de insolado...

El circuito

El circuito está basado en la appnote de microchip y gira en torno al 10F206 SOT-23.
Hay un condensador de desacoplo en la alimentación del circuito, que puede ser de 3v dadas las características de bajo consumo del PIC.
Una resistencia de Pull-up de 10k en el MCLR del PIC y otra de 220k para completar el circuito RC del oscilador.
Un diodo tipo BAS16W o 1N4148 es usado para cargar el condensador parásito con la tensión de salida del comparador. En el circuito, como no disponia de ningún BAS16W, opté por un schottky de conmutación rápida de un aparato reciclado que tenía por casa.

LA PCB
Esta parte ha sido la más complicada de desarrollar, ya que no encontré demasiada información sobre diseños con mTOUCH.
Las directrices de Microchip, están recogidas en la AppNote AN1102 y las más importantes a tener en cuenta son:
  • El pad del sensor no importa la forma, pero debería ser de al menos el área de un dedo
  • El pad debería estar lo más próximo posible a la patilla del PIC
  • Pistas de GND cercanas reducen la sensibilidad, pero pueden ser imprescindibles para aislar un sensor de otro.
  • Pads sin pistas de GND próximas producen efectos indeseados en la detección así como un exceso de sensibilidad.
  • Si se usa un material tipo Plexiglás o cristal para cubrir el sensor, éste añade su constante dieléctrica al condensador parásito que se forma y hace que se reduzca la sensiblidad con respecto al uso del aire como dieléctrico.
  • Unos 2mm de plexi o cristal dan buenos resultados de sensibilidad.
  • En el caso de PCBs de doble cara, es preferible que los pads vayan en la cara opuesta al PIC y otros componentes, y aislados de éstos.
  • En algunos circuitos puede ser necesario aislar la alimentación del PIC del resto del circuito, para evitar mal funcionamientos. Usar por ejemplo un regulador LDO.
Después de todo esto, me he puesto manos a la obra y esto es lo que ha salido, un montón de placas que no funcionan y una evolución de la que si funcionó hasta lograr un diseño que pudiera se implementado sobre otra placa:


La primera placa que ha funcionado, y creo que ha sido de suerte, ya que se me olvidó la pista de GND del PIC, un plano de masa rodea al sensor, pero en intentos sucesivos, los sensores aislados con un plano de masa no han dado resultado, carecían de sensibilidad.



Luego vino el plano de masa solo sobre la circuitería:



El diseño final:



Y el más pequeño para integrar en otras PCBs:



Un video de la primera prueba. Podeis ver el cablecillo que une al PIC con GND.
En este caso la sensibilidad es buena y el aislamiento del resto del circuito tambien:



Otra de las pruebas fue con una PCB sin plano de masa y con dos sensores. Uno de ellos estaba dentro de un lazo de VDD y los resultados fueron opuestos.
El sensor1 ofrece una sensibilidad desmesurada que lo hace inútil para una aplicación de botonera y por el contrario, el sensor2 envuelto en el lazo de VDD no ofrece casi sensibilidad. Mirad los videos:






Así que despues de muchas pruebas, la PCB final con conector ICSP y led 0603 es esta:



Y el diseño para implementar en un circuito, es este, con el ICSP en forma de testpads y sin led:



Estos son los fotolitos:


Finalmente resaltar el efecto de reducción de sensibilidad introduciendo un dieléctrico entre el sensor y el dedo que hace variar la capacidad parásita.
Aquí lo podeis observar con un placa de 1,8mm de espesor de algo que parece plástico-plexiglás:



Se le pueden encontrar aplicaciones muy interesantes a este tipo de sensores, sobre todo integrando paneles al aire libre o en cajas estancas sumergibles...
El inconveniente mayor es que hay que programar los PICs y en el caso de los sensores de Quantum esto no es necesario, así que si es para una integración a baja escala, sería necesario programarlos todos antes ( saldría muy caro pedirlos ya programados ) bien antes de soldar o añadiendo conectividad ICSP para hacerlo sobre placa.

Salu2,
Droky.

Descargas

23 comentarios:

Xavier Belanche dijo...

Impresionante!! A saber en qué estás liado ;-)

Xavier

droky dijo...

Y tu que lo digas... :DD jeje

UnbAs dijo...

Sencillamente increible.

Ya hacia dias que no pasaba a haceros una visitiña y mira por donde esto esta de lujo.

Droky seria aplicable a usarlo como boton de encendido de un pc o monitor?

droky dijo...

Hola Unbas,
Perfectamente posible. Es más, imagínalo bajo un metacrilato con un dibujo grabado ( raspado o a laser como en muchos moddings )y un led de color a cada lado. El efecto al accionar el sensor, sería de iluminar el dibujo del metacrilato y podría ir integrado en una pieza única del frontal. Eso sí, tendrías que añadirle algo de circuitería tipo relé o un transistor que te active la señal de encendido de la Fuente de Alimentación. Salu2

UnbAs dijo...

Droki gracias por contestar.

Actualmente tengo un pedido pendiente en micropic, en cuanto me dejen pido otros y hago la prueba.

Tampoco esque me llame mucho la atencion el modding, pero reconozco que esto de hacer circuitos me ha gustado :) y estoy enganchadillo a vuestro blog, por que no parais :)

Otra cosa te mande un mail, hace tiempo, sobre el tema de la soldadura al horno, si tienes/teneis conocimientos de ella, me gustaria aprender un poquito, si es posible claro :)

xocas dijo...

Me tienes 'asombrao' con el nivel que te gastas. gracias por compartirlo

jjavivi dijo...

Sencillamente impresionante, un magnifico desarrollo.
bye

taro28 dijo...

Muy interesante el proyecto!! Has probado con el MPR081 de Freescale?

droky dijo...

Hola taro28,
No habia pensado en el MPR081, más que nada porque está más dirigido a encoders rotativos como la touchwheel de los ipod, y porque para el proyecto que tengo en marcha el espacio usado es fundamental y en el caso de los QT100A y los 10F son SOT23, pero es realmente interesante para simplificar muchas cosas en caso de usar una touchwheel, hasta el patillaje facilita el diseño de la PCB.
Salu2

taro28 dijo...

entendido, estaré atento a los avances del proyecto :D

Anónimo dijo...

Por lo que veo la puesta a punto del circuito es bastante dificultosa, siguiendo incluso las 'reglas' de micro chip pero cabe esperar un buen desempeño de estas tarjetas?, acaso podran funcionar a intemperie con todas las variables en su contra ?, humedad lluvia dias secos, Mchip ofrece un toolkit que permite ajustar a niveles adecuados sus tarjetas de evaluacion, pero vaya cosa, cuando hablo con el mobil cerca de estas se me disparan sin razon todas las entradas y es un enojo bastante grande que despues de haber gastado tanto en las famosas mtouch se me disparen cuando mi chica me llama !!!!!!!!!!!!

droky dijo...

Si realmente la puesta a punto ha sido un poco, digamos particular.
Finalmente y respetando concienzudamente las normas a seguir por Microchip, parece que la cosa ha tenido éxito.
No lo he probado, pero entiendo que en un compartimento estanco, la humedad ambiente y la lluvia, el calor y demás no debería afectar al funcionamiento, ya que seguimos actuando como una capacidad parásita que es en lo que se basa el circuito, pero no lo he probado.
En cuanto a las interferencias, yo tambien habia visto el video que circula por ahí con el toolkit de Microchip y probé a ver que pasaba, y te puedo asegurar que en mi caso y con los 10F203 no existía ningún tipo de variación.
Como ya comenté en el artículo, quizás es más útil usar como solución los QT100 de Quantum o las series superiores para multi sensores.
Gracias por tu aportación.
Salu2

mglsoft dijo...

La verdad me has dejado impresionado!!
Tengo pedidas unas muestras de Microchip del(creo que es ese) 18F726, con varias entradas capacitivas Mtouch, y tu nota me saca el desanimo original...
Dos preguntas:
En que lenguaje programas??
Como has debuggeado y encontrado los valores para usar en el Mtouch??

Gracias por publicarlo.

droky dijo...

Hola mglsoft,
No te desanimes antes de experimentar, a veces los resultados son malos, pero si insistes suelen ser buenos.
Normalmente programo en C (CCS) pero tambien en PBasic, JAL, ASM, mikroC y mikroBasic.
Los valores que he usado han sido los que da Microchip en su AppNote, y después he probado cambiando el diseño de la PCB con resultados dispares.
Otra opción hubiera sido cambiar valores en R3 para variar la respuesta a la capacidad.
Debuggear, no lo he hecho, ya que me haria falta un header para el 10F206 y el ICD2.
Si quieres resultados directos e implementación más sencilla, pásate a los QT de Quantum.
Salu2

Anónimo dijo...

Hola amigo Droky, estoy muy interesado en realizar su proyecto del sensor capacitivo, pero me he encontrado con la dificultad que no venden por aqui el PIC 10F206 pense copiar su codigo al 16F84A o 16F870 que si encuentro, lo cierto es que recien estoy aprendiendo programacion de PIC con Mikrobasic. Usted cree que podria ayudarme a encontrar alguna salida.

droky dijo...

Hola, con los dos micros que cmentas, no puedes realizar aplicaciones de sensado mTouch, ya que ahcen uso del módulo comparador del PIC y en el caso del 10F204/6 de la tensión de 0,6v del bandgap para convertirlo en un oscilador de relajación que utiliza para evaluar la variación de la capacidad en el sensor. Pásate por la página de Microchip y mírate la seccion mTouch para encontrar alguna posible solución con la lista de micros que sí pueden usarse.
Salu2

nephiel dijo...

Una pregunta... en los vídeos de demostración, el LED se apaga solo en unos segundos, aunque no hayas levantado el dedo del sensor. Entonces, ¿mTouch sólo sirve para pulsaciones cortas o es posible detectar pulsaciones continuas?

Estaba pensando en cosas como un teclado musical, donde hay teclas que se mantienen pulsadas durante mucho tiempo.

Kary dijo...

Que bueno estan tus pruebas !!!

Te quería preguntar, esto funcionaría por ejemplo a traves de un vidrio de 10mm ? claro que haciendo algun ajuste en el PCB.

Saludos
Federico

droky dijo...

Hola Kary,
Sí, podrías implementarlo con un vidrio de 100 mm según Microchip. Yo no lo he probado, pero sería cuestión de modificar el valor de la resistencia. Ahora bien,. si es para un solo sensor, usa un QT100A de Quantum y experimenta con los valores del circuito RC y si es para una botonera, entonces usa un PIC16LF727 o uno de la serie 24 con mtouch incorporado y simplemente lo ajustas por software.
Salu2

Kin El Bravido dijo...

¿Lo habéis probado alguna vez dentro de un vehículo?

Yo pierdo las lecturas.

Ayudita pido.

Gracias

tejonbiker dijo...

¿Entonces estas usando una PCB de una sola cara?, ¿no estas agregando plano de tierra?

froylan mora dijo...

hey muy chevere, deberia funcionar con el mismo pic pero con encapsulado de 8 patillas?

Anónimo dijo...

Simplemente impresionante y muy interesante, las posibilidades de su proyecto son infinitas, la pena es que los links parecen están caídos. ¿Podría volver a subirlos por favor? Gracias

 
RaDiKalDeSIG | Designed by Techtrends | © 2007-2008 All rights reserved