Autor Tema: Matriz de LED como sensor táctil  (Leído 87106 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #120 en: 07 de Septiembre de 2008, 07:58:15 »
Si no entendi mal, el proceso q explicas arriba en la figura, consiste en encender un led, y rapidamente poner el puerto como entrada y medir la tension en sus patas. Lo q digo yo, es mantener el led encendido todo el tiempo con algun puerto del pic, y aparte, medir la variacion de la tension en los leds con el ADC.

Hola gera, no es exactamente así. En realidad el led no hace falta encenderlo para que funcione como sensor. Basta con polarizarlo a la inversa e, inmediatamente, empezar a leer la variación de tensión en el cátodo. Cuanto más rápido baje la tensión, más luz estará incidiendo sobre el led, es decir, más próximo estará el obstáculo en el que se refleja la luz de los leds adyacentes al que está funcionando como sensor.

Hola Cerebro: el paso 1 realmente sólo se usa para emitir luz. No es necesario descargar del todo el led (la carga es mínima y se pierde muy rápido)

Citar
Lo que quedaria muy vistoso que no he visto en ningun lado es cambiar el color del led que estamos utilizando a medida que acercamos el dedo......se complicara mucho? digo por el tema de la reflexion de la luz con el dedo que no es igual para todas las frecuencias. 
 Juanfe que opinas?

Me gusta la idea, de hecho, tenía pendiente probar con leds RGB y utilizar uno de los tonos como sensor (probablemente el rojo), y los otros dos para mostrar caracteres, imágenes o lo que sea en 3 tonos.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #121 en: 23 de Octubre de 2008, 09:04:05 »
El forero gomdryyy me ha planteado la siguiente duda en un privado, y he decidido trasladar la contestación aquí por si a alguien más le fuera de utilidad.

Citar
estimado amigo, espero te encuentres bien y bueno la razon de mi mensaje es que tengo problemas con la aplicacion del led sensor, programo en ccs con un pic 12f675, en el cual lo que hago es esto.

#include "D:\program ccs\led sensor 12f.h"
#byte TRISIO = 0x85

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   SETUP_ADC(ADC_CLOCK_INTERNAL);
   
   while(true)
    {
   
    TRISIO = 0b00010000; //Configuracion del puerto. '0' salida. '1' entrada.     
    output_high(PIN_A1);
    output_low(PIN_A2);
    delay_ms(1);
   
    output_high(PIN_A2);
    output_low(PIN_A1);
    delay_ms(1);

    set_adc_channel(2);                        // selecciono canal 2
    if(input(PIN_A2)<= 10){ //este valor de 10 es arbitrario solo para ajustar 

    output_high(PIN_A0);   
    delay_ms(100);// retardo para ver que esta detectando     

    }
     setup_adc( ADC_OFF );
     output_low(PIN_A0);

    TRISIO=0b00010000; //Configuracion del puerto. '0' salida. '1' entrada.
   
    }//fin de while infinito 

}//fin de programa

lo unico que deseo es que cuando el led detecte me mande un led de encendido, claro despues hare mas aplicaciones, pero por ahora no detecto nada, espero me puedas ayudar gracias por tu atencion y hasta pronto

Yo creo que es problema lo tienes en que, como la función INPUT() devuelve 0 ó 1 (no un valor entre 0-255) en función del estado del pin, la comparación de la línea if(input(PIN_A2)<= 10){  será siempre cierta y el LED de A0 estará aparentemente siempre encendido ¿es así?

Para que tu ejemplo fucnionase tendrías que crear una demora antes del input y luego encender o no el LED de A0 en función de que el INPUT haya devuelto 0 ó 1. Si devuelve 1 querrá decir que ha incidido poca luz sobre el sensor. La duración de la demora es el valor que tendrás que determinar experimentalmente, no el valor 10 que actualmente utilizas en la comparación if(input(PIN_A2)<= 10){

Espero haberte ayudado y que pronto te pases por aquí para contarnos que todo te funciona correctamente.
Suerte.

Desconectado gomdryyy

  • PIC10
  • *
  • Mensajes: 15
Re: Matriz de LED como sensor táctil
« Respuesta #122 en: 23 de Octubre de 2008, 16:45:57 »

ESTIMADO jfmateos2, TE AGRADESCO POR LA PRONTA RESPUESTA Y BUENO GRACIAS POR TUS OBSERVACIONES QUE FUERON ATINADAS, SOBRE TODO LO DEL TIEMPO Y QUE BUENO ESTABA LEYENDO COMO ANALOGO Y ESTABA EN DIGITAL


Citar
La duración de la demora es el valor que tendrás que determinar experimentalmente, no el valor 10 que actualmente utilizas en la comparación if(input(PIN_A2)<= 10){



Y BUENO BUSCANDO PODER REALIZAR ESTA APLICACION PUES LES CUENTO QUE LO LOGRE BUENO SOLO QUE SEA SENSOR EL LED ASIQ UE BUENO PARA QUIENES LES INTEREZE EL CODIGO LO COLOCO PARA QUE LO CHEQUEN TAL VES LES SEA UTIL


Código: [Seleccionar]
#byte TRISIO = 0x85
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   while(true)
    {   
    TRISIO = 0b00010000; //Configuracion del puerto. '0' salida. '1' entrada.
   
    output_high(PIN_A1); //polarizando en directa
    output_low(PIN_A2);
    delay_ms(10); //tiempo de carga
   
    output_low(PIN_A1);//polarizando en inverza
    output_high(PIN_A2);
   
    delay_ms(1);   //tiempo de descarga
    TRISIO = 0b000100;   //cambio de estado a entrada
   delay_ms(20);  //tiempo del cambio de estado
   if(!input(PIN_A2)){
   while(input(PIN_A2)){}
   output_high(PIN_A0);
    }
   else {output_low(PIN_A0);}//accion en respuesta de deteccion
   delay_ms(1);
    }//fin de while infinito 
}

actualmente estoy colocando un video para que vean que si funciona gracias por su atencion

LISTO EL VIDEOOOOOO

« Última modificación: 23 de Octubre de 2008, 20:55:39 por gomdryyy »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Matriz de LED como sensor táctil
« Respuesta #123 en: 23 de Octubre de 2008, 17:03:59 »
Excelente trabajo gomdryyy!! espero ansioso el video :D
pero tengo una duda... para q configuras el timer si nunca lo usas?
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
[*]Re: Matriz de LED como sensor táctil
« Respuesta #124 en: 23 de Octubre de 2008, 17:24:20 »
Me alegro gomdryyy, y coincido con Gera... cuando tengas un ratillo a ver si nos pones un videito  :mrgreen:

Desconectado umalrovi

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 158
    • Aplicaciones Electrónicas
Re: Matriz de LED como sensor táctil
« Respuesta #125 en: 23 de Octubre de 2008, 19:42:25 »
Enhorabuena a todos, me he quedado alucinado con los led's!!! Espero ansioso el video gomdryyy y muy buen trabajo jfmateos2!!!

Saludos.
Aplicaciones Electrónicas
http://www.neoingenia.com/

Desconectado gomdryyy

  • PIC10
  • *
  • Mensajes: 15
Re: Matriz de LED como sensor táctil
« Respuesta #126 en: 20 de Noviembre de 2008, 15:31:40 »
Excelente trabajo gomdryyy!! espero ansioso el video :D
pero tengo una duda... para q configuras el timer si nunca lo usas?
saludos!

estimado gera, pues encuanto atu pregunta de por que uso el timer, pues solo estaba probando esta aplicacion y claro que lo uso para una aplicacion final.

les cuento que esta aplicacion se trata de una alarma sonora y visual de fallo de energia electrica, dura 5 minutos la alrma, pero si se quiere quitar esta alarma pues se desactiva con este led, espero haberme explicado, aun asi pongo el programa por si alguien le intereza, ademas utilizo esta ves el adc. gracias por su atencion.


Código: [Seleccionar]
#include <10F202.h>
#FUSES NOWDT                //No Watch Dog Timer
#FUSES MCLR                   //Master Clear pin used for I/O
#FUSES NOPROTECT                //Code not protected from reading
#byte TRISIO = 0x85
#use delay(clock=4000000)

long int ints_t0 = 0;
int suma = 0;

 #int_RTCC                   
void timer_isr(void)
{
   ints_t0 = ints_t0 + 1;
   if(ints_t0 <= 5000)
   {output_high(PIN_B0);}

    else if((ints_t0 > 5000)||(ints_t0 <= 10000))
     {output_low(PIN_B0); }
    if(ints_t0 >= 10001){ints_t0 = 0;suma = suma + 1;}   
         
}//FIN DE TIMER 0

void main()
{
   enable_interrupts(int_RTCC);
   enable_interrupts(GLOBAL);
    while(true)
    {

    TRISIO = 0b000000; //Configuracion del puerto. '0' salida. '1' entrada.
   
    output_high(PIN_B1); //polarizando en directa
    output_low(PIN_B2);
    delay_ms(15); //tiempo de carga
   
    output_low(PIN_B1);//polarizando en inverza
    output_high(PIN_B2);
   
    delay_ms(1);   //tiempo de descarga
    TRISIO = 0b000100;   //cambio de estado a entrada
    delay_ms(30);  //tiempo del cambio de estado
     if(!input(PIN_B2)){
     while(input(PIN_B2)){}
 }
   else {//output_low(PIN_A0);
         suma = 150;}//accion en respuesta de deteccion
   delay_ms(1);
      if (suma >= 130)
      {
     output_low(PIN_B0);
     output_low(PIN_B1);
     output_low(PIN_B2);
       delay_cycles(1);//nop
       sleep();       
       delay_cycles(1);//nop
      }
    }//fin de while       
}//fin de programa

SE ACEPTAN SUGERENCIAS DE ALGUNA MODIFICACION

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #127 en: 22 de Diciembre de 2008, 04:01:15 »
Hola gente tengo otra idea....
¿se podrían utilizar los leds bicolores? y dentro del mismo led ¿utilizar un color como emisor y otro como emisor?
esto creo tendría que hacerce con una fuentecita partida o un divisor resistivo...



amigo estoy en acuerdo contigo, yo estoy haciendo pruebas (con un multimetro de los malos y un par de led bicolor rojo-verde de catodo comun), usando un led como emisor y otro como receptor (en ambos usando el color rojo) y he llegado a estas conclusiones:

1. Como mencionanban anteriormente, el color rojo es el mas sensible (creo k por eso el de el videito uso lamatriz roja), haciendo pruebas en mi cuarto (a condiciones de luz de un bombillo normal) he descubierto que el led "receptor" (color rojo) genera 5mV cuando no se refleja sobre el la luz de su mismo color y 44.4mv cuando se refleja la luz del mismo color sobre este.

2. Si si emito luz verde con un led, e intento recivirla con el led rojo (del otro led bicolor) los datos cambian abruptamente a 2.1mv cuando no se refleja y 6.2mv cuando se refleja.

3. En los datos mencionados no ha sido necesario polarizar los led a la inversa y luego medir su tiempo, solo estoy leyendo directamente los datos con el multimetro

y pues bueno, que por que usar led bicolor?? pues pk se me ocurre hacer que el dispositivo reaccione al tacto cambiando de color en la zona en que fue tocado (estoy seguro ke va a ser un completo  nido de multiplexores analogos y normales pero ps me encantaria ver marchando mi idea)

y pues no es mas muchachos si alguien nota que estoy haciendo algo mal por favor me avisan
No cometas el crimen varon si no vas a cumplir la condena

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #128 en: 22 de Diciembre de 2008, 05:06:04 »
Suerte ekud... yo llegúe a la conclusión de que para medir cambios significativos era necesario que sobre el led incidiese luz de su misma longitud de onda, de modo que cuando uses un led como sensor, deberás tener otro igual en los alrededores iluminado.

Si quieres hacer una matriz en la que cada led pueda actuar como sensor, lo anterior significa que tendrás que poder polarizarlos en directa para que se iluminen y, además, de algún modo, poder leer la tensión entre sus terminales. Me interes saber cómo vas a hacer esto último (leer tensión entre terminales).

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #129 en: 24 de Diciembre de 2008, 02:17:51 »
Suerte ekud... yo llegúe a la conclusión de que para medir cambios significativos era necesario que sobre el led incidiese luz de su misma longitud de onda, de modo que cuando uses un led como sensor, deberás tener otro igual en los alrededores iluminado.

Si quieres hacer una matriz en la que cada led pueda actuar como sensor, lo anterior significa que tendrás que poder polarizarlos en directa para que se iluminen y, además, de algún modo, poder leer la tensión entre sus terminales. Me interes saber cómo vas a hacer esto último (leer tensión entre terminales).


Tal y como tu dices jfmateos2 yo llegue a la misma conslusion con mis experimentos (de que para medir cambios significativos era necesario que sobre el led incidiese luz de su misma longitud de onda ) es por ello ke voy a usar los led bicolor...

que cual es mi idea?? ke una matriz pueda detectar el tacto y al detectarlo cambie de color por la zona en la ke fue tocada...

que como voy a hacerlo??? bueno eso es un completo enrredo pero esta es mi idea:

supongamos k tenemos una fila de led bicolor,que el pin rojo de cada led bicolor esta conectado a un pin del conversor AD del micro y que cada pin verde de cada led bicolor estaria conectado no se... al puerto B o C del micro y ps el catodo de cada led bicolor lo tiramos a tierra... como ya sabemos los led bicolor tienen tres pines (uno para un color, otro para otro color y otro ke es el catodo o el anodo comun que suele ser el pin del medio ... yo uso led bicolor rojo-verde de catodo comun)... ahora bien... voy a emitir con el color rojo y esa es la longuitud de onda ke kiero detectar (por ser la mas sensible, aunke personalmente ese color no me gusta  :? )

si tuviera una fila de por ejemplo 5 led bicolor... prendo el primer led bicolor con el color rojo, y mientras este este emitiendo mido el voltaje sobre el pin del led rojo del led bicolor de enseguida (osea el segundo)y aki pueden pasar dos cosas:
 
  • si detecto una variacion de voltaje encenderia el led verde de este led bicolor al cual le detecte el voltaje (con lo cual lograria hacer k la matriz cambie de color en donde detecto que la tocaron, e inmediatamente paso a emitir con el led siguiente (osea con este mismo con el que hize la medicion)
  • si pasado un tiempo no detecte nada paso a poner a emitir al led siguiente (osea al mismo en el ke estoy midiendo)


y asi sucesivamente... hasta llegar al ultimo led... para detectar en los extremos podriamos usar los mismos led contiguos, la verdad he pensado mucho en el asunto y me parece que esta podria ser la forma... sinemargo hay varias limitantes...

1. la cantidad de pines necesarios pues un grupo de pines son exclusivamente para idicar la deteccion y otros son para emitir y detectar (aunke no lo hacen al mismo tiempo y esta es una ventaja)

2. (este es un problema de programacion ps me complika un poco mi algoritmo)... supongamos que un led esta en verde... (osea que con el se hizo una deteccion)...ahora resulta que haciendo el barrido por la fila yo necesito que ese led (que esta con el color verde) emita el color rojo para que el que esta al lado pueda detectar algo.... la cuestion es la siguiente... con este tipo de led es posible emitir los dos colores al mismo tiempo (rojo y verde) pero eso me mostraria una combinacion entre los dos colores algo asi como un naranja o ke se yo.. y asi las cosas no se ke tanto me afecte la sensiblidad ps ya estaria emitiendo otra longuitud de onda... otra cosa que podria hacer es que si esta en verde... apagaria este color un instante para prender el rojo y poder emitir... y en cuanto el led de enseguida detecte algo, (o en su defecto si no detecta algo pasado un tiempo)  volver a dejar el led (emisor) en su estado original osea en color verde... y eso mis keridos colegas creo k seria una exelente solucion aunke conlleva un severo programota jejej a mi me encanta la programacion y estaria muy dispuesto a asumir este reto...

en fin no se si me explike bien... en cualkier caso siempre esta el sagrado beneficio de la duda jejeje

me perdonan no mostrar el eskematiko pero en proteus no hay ese tipo de led..  :(

y pues nada muchachos espero podamos sakar esto adelante ya saben k me tienen en completa dispocion para este proyecto
No cometas el crimen varon si no vas a cumplir la condena

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #130 en: 24 de Diciembre de 2008, 02:26:48 »
por cierto...si estoy mal en el algun concepto me disculpan... y ke pena lo largo del mensaje jeje
No cometas el crimen varon si no vas a cumplir la condena

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #131 en: 24 de Diciembre de 2008, 07:58:31 »
Hola Ekud, si te he entendido bien, quieres controlar cada led bicolor de forma independiente, sin unir los cátodos/ánodos de todos los que conforman una misma fila/columna ¿es así?

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #132 en: 24 de Diciembre de 2008, 11:34:42 »
Hola Ekud, si te he entendido bien, quieres controlar cada led bicolor de forma independiente, sin unir los cátodos/ánodos de todos los que conforman una misma fila/columna ¿es así?

mmmm bueno como los led bicolor ke tengo a mano son de catodo comun mi idea es poner todos estos catodos a un mismo punto osea a tierra... los ke van de forma independiente son los pines de los anodos de cada color
No cometas el crimen varon si no vas a cumplir la condena

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #133 en: 24 de Diciembre de 2008, 12:23:21 »
Pero entonces... para una matriz de, por ejemplo, 20 leds necesitarás 20 entradas analógicas y no sé si hay algún PIC con esas capacidades.

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #134 en: 25 de Diciembre de 2008, 21:11:25 »
Pero entonces... para una matriz de, por ejemplo, 20 leds necesitarás 20 entradas analógicas y no sé si hay algún PIC con esas capacidades.

mmmmmmmmm exacto.... dudo de que exista un pic con esa cantidad de conversores ad, aunke si supe de alguno que todos sus pines eran conversion analoga digital, sinembargo me parece k  seria un desperdicio  conseguir un pic de tantos pines para solo una matriz de led, la idea seria usar un multiplexor analogo por ejemplo un 74hc4051, o mejor aun un 74hc4067 pues con ests integrados podriamos seleccionar el led que queremos medir lo que me preocupa es k los niveles de voltaje no sean lo suficiente mente altos como para que no se vean afectados por este integrado
No cometas el crimen varon si no vas a cumplir la condena


 

anything