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

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Matriz de LED como sensor táctil
« Respuesta #135 en: 26 de Diciembre de 2008, 06:57:29 »
Hola ekud, yo también tengo la misma duda que tú sobre si los multiplerores analógicos dejarían sobrevivir algo de tensión... habría que probarlo. No encuentro nada al respecto en la hoja de datos, pero me temo que una decena de milivoltios no sobrevivirían

Por este motivo creo que se polarizan en contra los LEDS, pues así seguro que tienes al menos 5V si no incide luz sobre el LED.

Me parece muy interesante este aspecto de los multiplexores que son bi-direccionales:

Citar
These analog multiplexers/demultiplexers control analog
voltages that may vary across the voltage supply range (i.e.
VCC to VEE). They are bidirectional switches thus allowing
any analog input to be used as an output and visa-versa.

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #136 en: 27 de Diciembre de 2008, 02:52:09 »
jeje si son exelentes estos multiplexores pero segun parece son muy poco usados ps al menos mis colegas de por aki como k no sabian de laexistencia d estos aparatos...

por otra parte les cuento k ya pude reparar mi kemador de pic (el anticuado pero famoso JDM) y ps aki ya tengo todo lo necesario para comenzar el experimento en forma... tengo el pic16f876, un cd4051, led's de todos los colores y sabores y por supuesto mi tan apreciado mikrobasic jeje  :-/

esta misma noche comienzo y ya les estare publicando resultados  8)
No cometas el crimen varon si no vas a cumplir la condena

jacrmr

  • Visitante
Re: Matriz de LED como sensor táctil
« Respuesta #137 en: 27 de Diciembre de 2008, 02:57:08 »
El problema en todos estos multiplexores y switches analógicos (4016, 4051, etc.) es su tecnología de fabricación la cual sigue siendo como si fuera digital. Las resistencias de estos switches son tal altas que rara vez sirven para aplicaciones de mediano alcance. Existen verdaderos switches analógicos y multiplexores con resistencias tan bajas como 0.4 ohms (casi verdaderamente un switch mecánico para muchas aplicaciones), pero claro su costo aumenta. Analog Devices tiene una amplia gama.

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #138 en: 27 de Diciembre de 2008, 03:10:36 »
mmmmmmmmmm k mal... eso me deja desarmado  :?

pero tienes alguna referencia de estos multiplexores analogos "especiales" ?
No cometas el crimen varon si no vas a cumplir la condena

jacrmr

  • Visitante
Re: Matriz de LED como sensor táctil
« Respuesta #139 en: 27 de Diciembre de 2008, 06:08:10 »
Pues yo utilizo mucho el ADG774BR para hacer OSD con señales de video (0.7 Vpp) y no pierde calidad la señal, aún a muy bajos niveles de voltaje. Ese es sólo un modelo entre muchos otros. Tienes que seleccionar el que más prestaciones tenga a tu aplicación según el número de entradas, salidas, y la función de multiplexeo que necesites. De hecho lo que te convendría tal vez sería usar un chip de matriz de video (también Analog Devices es líder en ése ramo). Son digamos 64 ó más conexiones en forma de matriz que entran/salen del chip y que mediante código elijes cualquier combinación (analógica por supuesto) y tiene muy buena fidelidad en los voltajes ya que fueron diseñados precisamente para manejar video.
« Última modificación: 27 de Diciembre de 2008, 06:11:52 por jacrmr »

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #140 en: 27 de Diciembre de 2008, 21:58:52 »
bueno ayer me dispuse a hacer experimentos y ps consegui algo... segui mi idea de leer no el catodo sino el anodo del led y en vez de usar la reflexion de la luz propia (osea la d el mismo led que estoy midiendo) use la luz de un led que esta al lado del led al cual le estoy midiendo...

trabajar de esta manera me permitio tener un codigo mas simple  8) (creo yo) pero la limitante es el led que emite la luz

use dos led bicolor (usando en la "emision" y la "recepcion" el color rojo) y pues aki les dejo el programa que hize para ello en mikro basic y me vali de un lcd 2x16 para ver los datos que se iban obteniendo de la conversion analoga digital en tiempo "real" ps guardar en la eeprom es muy lento


Código: [Seleccionar]
program LED_SENSOR

'Simbolos para los anodos del led receptor
Symbol ANODO_ROJO = PORTA.0
Symbol ANODO_VERDE = PORTA.1

'Variables necesarias
Dim t as word
Dim texto as char [5]

main:

'Configuro el puerto A
trisa  = %00000001
'Configuro la conversion AD
adcon1 = %10001110

'le indico al micro como esta conectado el lcd
Lcd_Init(PORTB)
'limpio el lcd
Lcd_cmd(lcd_clear)
PRINCIPAL:

    'Obtengo el valor de la conversion AD
    t = adc_read(0)
    'hago la conversion a string para poder mostrar en el display
    WordToStrWithZeros(t, texto)
    'muestro el dato por el display
    Lcd_out(1,1,texto)
    'retardo de 1 segundo para poder ver bien el dato
    'delay_ms(1000)
   
    'Obtengo el valor de la conversion AD
    t = adc_read(0)
    'Mientras que la lectura del anodo rojo (pin 0 del AD) sea mayor que 286
    while t>=260
   
         'Enciendo el color verde del led bicolor
         ANODO_VERDE = 1
         'hago la conversion a string para poder mostrar en el display
         WordToStrWithZeros(t, texto)
         'muestro el dato por el display
         Lcd_out(2,1,texto)
         'lo dejo encendido un tiempo
         DELAY_MS(1000)
         'salgo del ciclo ps tener el led en este estado me puede generar
         'falsos positivos
         GOTO SALIDA
    wend
   
SALIDA:
    'Apago el color de indicacion de deteccion
    ANODO_VERDE = 0

GOTO PRINCIPAL

end.


El valor de 260 es experimental y depende de las condiciones de luz exteriores  :? , cosa por la cual seria bueno hacer que el pic detecte las condiciones d luz externeas y el mismo pic decida cual seria el nivel adecuado para este valor, de este modo el circuito podria configurarse el mismo en cualkier ambiente. De todas formas kabe decir que la deteccion minima en la conversion AD (a oscuras o a la luz de un bombillo normal de 100w) es de 260 y la maxima (que seria tocando a ambos led con el dedo) es de 290 con estos limites se podria hacer algo para detectar la distancia del elemento reflectante o cualkier cosa que se nos ocurra.

y un problema que tube al usar led bicolor es que al detectar algo debia tener encendido un color del led (en este caso el color verde) y esto me afectaba las mediciones sobre el led rojo cosa que me generaba falsos positivos con el led de deteccion que es el color rojo, pues al hacer por ejemplo la primera deteccion se prendia el color verde y este me generaba "ruido" sobre el color rojo y asi las cosas el sistema siempre detectaba y se me kedaba "blokeado" en la deteccion ps siempre detectaba, sinembargo eso se pudo corregir por soft  :-).

y pues no es mas les prometo que ahora subo un video mostrando el funcionamiento (no lo subo ya pk ke no se k changos le pasa al moviemaker que se blokea al grabar)

y pues no siendo mas espero haber contribuido en algo y ya saben ke si me ekivoke en algo o alguna duda me avisan :mrgreen:
« Última modificación: 28 de Diciembre de 2008, 06:09:27 por ekud »
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 #141 en: 28 de Diciembre de 2008, 06:38:58 »
aki esta el video ke les prometi...  :mrgreen:


me perdonan lo de el lcd... fue un lapsus brutus jejej  :2]

por cierto aki esta el esquematico del circuito que monte y que ven en el video

« Última modificación: 30 de Diciembre de 2008, 01:51:47 por ekud »
No cometas el crimen varon si no vas a cumplir la condena

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17670
    • MicroPIC
Re: Matriz de LED como sensor táctil
« Respuesta #142 en: 28 de Diciembre de 2008, 06:44:29 »
La distancia de detección es extraordinaria, no me imaginaba que se alcanzase tanto.
¿Cómo se gestiona que las condiciones de luminosidad cambien?, ¿qué pasa si alguien enciende o apaga la luz de la habitación?

Por cierto, buenísimo lo del giro de cámara  :D
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #143 en: 28 de Diciembre de 2008, 07:03:35 »
hola nocturno, pues las pruebas que yo hize para poder detectar lo de el valor experimental (ese 260) lo hize a prueba y error y me funciona tanto para la oscuridad completa como para la condicion de luz con el bombillo por tanto para mis pruebas da igual si se tiene el bombillo encendido o apagado...

y pues se me courre que para gestionar este valor de forma automatica podriamos hacer que el micro detecte varias veces el voltaje sobre el led cuando este no este detectando y sacar el promedio de los datos obtenidos... y a este promedio sumarle una constante para evitar posibles falsos positivos...

seria el mismo programa que tngo ahi... solo k al principio el micro haria este proceso que te cuento del promedio... pero como te digo es solo una idea

jeje y bueno lo de la cam... psss se vale o no? jeje es ke no me fije y le solde los pines al lcd hacia el lado contrario jejej

 :D
« Última modificación: 28 de Diciembre de 2008, 07:11:37 por ekud »
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 #144 en: 28 de Diciembre de 2008, 08:47:58 »
Enhorabuena ekud... imagino que podría mejorar la sensibilidad del conversor ADC utilizando una referencia de voltaje para él.

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #145 en: 28 de Diciembre de 2008, 14:16:56 »
si podriamos hacerle un voltaje de referencia a 1 o 2 voltios.... pero lo que no me gusta de eso es perder esos dos pines pero si si podriamos hacer eso para mejorar la conversion...

por cierto al fin pudiste seguir con lo de los multiplexores analgos?? pk estaba pensando en que podriamos usar puertos de expansion de esos de microchip que se comunican con i2c pero como nunca he trabajado con ellos no se si en ellos se puede hacer conversion AD y etc...
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 #146 en: 28 de Diciembre de 2008, 15:02:19 »
Hola ekud, buscaré información más detallada sobre los multiplexores que propuso jacrm, pues no creo que un multiplexor "normal" permita el paso de las señales que tenemos ahora (decenas de milivoltios).

Respecto a los expansores I2C, creo que sólo sirven como entradas/salidas digitales.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Matriz de LED como sensor táctil
« Respuesta #147 en: 28 de Diciembre de 2008, 22:39:48 »
Buenas amigos!!! Disculpen q me retrotraiga tanto, es q recien tengo tiempo a ponerme a armar esto y me pasaron un par de cosas algo
extrañas. Arme el ejemplo q dio gomdryyy una pagina antes.
La primera cosa rara q paso es q el ejemplo no anduvo usando el puerto B del pic16f84a, pero cuando use el puerto A si anduvo. Lo segundo es q la sensibilidad del "sensor" aumenta notablemente cuando el circuito esta conectado al programador. Y por ultimo... sin querer quite el led q hace de sensor, y el circuito seguia funcionando!!! Cuando le acerco el dedo a la resistencia q va en serie con el led, en circuito sensa. Debe ser q hay un ruido barbaro, y entre capacidades y todo eso...
En fin, es muy raro, aunq no es el comportamiento q me gustaria q tenga. Sugerencias?
Gracias!!!

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

Desconectado ekud

  • PIC16
  • ***
  • Mensajes: 120
    • mi pag... bueno no es mia pero ahi estoy
Re: Matriz de LED como sensor táctil
« Respuesta #148 en: 28 de Diciembre de 2008, 23:48:03 »
Buenas amigos!!! Disculpen q me retrotraiga tanto, es q recien tengo tiempo a ponerme a armar esto y me pasaron un par de cosas algo
extrañas. Arme el ejemplo q dio gomdryyy una pagina antes.
La primera cosa rara q paso es q el ejemplo no anduvo usando el puerto B del pic16f84a, pero cuando use el puerto A si anduvo. Lo segundo es q la sensibilidad del "sensor" aumenta notablemente cuando el circuito esta conectado al programador. Y por ultimo... sin querer quite el led q hace de sensor, y el circuito seguia funcionando!!! Cuando le acerco el dedo a la resistencia q va en serie con el led, en circuito sensa. Debe ser q hay un ruido barbaro, y entre capacidades y todo eso...
En fin, es muy raro, aunq no es el comportamiento q me gustaria q tenga. Sugerencias?
Gracias!!!

no entiendo bien lo que dices de que lo conectas al programador.. pero me imagino que debes tener conectado el circuito a un voltaje que te da tu programador... ya probaste usar un regulador de voltaje que te sake 5V exactos?? podrias usar el 7805... tal vez se deba a esto tu ruido

por otra parte les cuento que estoy adelantando trabajo para hacer que el micro detecte mediante promedios la cantidad de luz externa para que asi se pueda "configurar" el circuito sin asistencia y tambien para que mediante promedios se pueda decidir si se hizo una deteccion o no... ahora les adelanto del codigo  :)
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 #149 en: 29 de Diciembre de 2008, 00:35:04 »
aki esta el codigo que llevo... hasta ahora se ha comportado muy bien para las condiciones de luz de mi cuarto y a oscruas

Código: [Seleccionar]

program LED_SENSOR

'Simbolos para los anodos del led receptor
Symbol ANODO_ROJO = PORTA.0
Symbol ANODO_VERDE = PORTA.1

Dim t as word
Dim j as byte
Dim promedio as word
Dim i as byte
Dim texto as char [5]

main:

'Configuro el puerto A
trisa  = %00000001
'Configuro la conversion AD
adcon1 = %10001110

'le indico al micro como esta conectado el lcd
Lcd_Init(PORTB)
'limpio el lcd
Lcd_cmd(lcd_clear)
'retardo de un segundo para estabilizar
delay_ms(1000)

'muestro un mensaje ke avisa que esta promediando la luz ambiente
Lcd_Out(1,1,"Estabilizando...")

'hago un retardo para estabilizar el circuito
delay_ms(100)

'me aseguro de tener apagado el led
PORTA = 0

'Inicializo la variable de preomdio
promedio = 0

'Itero para obtener los datos del promedio

for j = 1 to 100

    for i = 1 to 200

        promedio = promedio + Adc_read(0)

    next i

    promedio = promedio / 200

next j

'muestro el dato en el lcd
Lcd_cmd(lcd_clear)
Lcd_out(1,1,"Prome:")

'hago la conversion a string para poder mostrar en el display
WordToStrWithZeros(promedio, texto)

'muestro el dato por el display
Lcd_out(1,7,texto)
Lcd_out(2,1,"Detec:")

PRINCIPAL:

    'reinicio la variable de deteccion
    t = 0

    'recojo datos de deteccion para hacer promedio
    for i = 1 to 200
   
        'Obtengo el valor de la conversion AD
        t = adc_read(0) + t

    next i

    'hago el promedio
    t = t / 200
   
    'Mientras que la lectura del anodo rojo (pin 0 del AD) sea mayor que
    'el valor del promedio... (ese numero 10 es como para superar un nivel
    'de ruido y hace que el sistema sea mas confiable, se obtiene experimentalmente
    'y entre mas grande sea mas luz tiene que incidir sobre el led receptor para
    'disparar una deteccion y asi mismo entre mas grande sea este numero el
    'sistema sera menos sensible al ruido lo k significa poder usarlo en cualkier condicion
    'de luz
   

    while t >= (promedio + 10)
   
         'Enciendo el color verde del led bicolor
         ANODO_VERDE = 1
         
         'hago la conversion a string para poder mostrar en el display
         WordToStrWithZeros(t, texto)
         
         'muestro el dato por el display
         Lcd_out(2,7,texto)
         
         'lo dejo encendido un tiempo
         Delay_ms(200)
         
         'salgo del ciclo ps tener el led en este estado me puede generar
         'falsos positivos
         goto SALIDA
         
    wend
   
SALIDA:

    'Apago el color de indicacion de deteccion
    ANODO_VERDE = 0

goto PRINCIPAL

end.

Citar
La distancia de detección es extraordinaria, no me imaginaba que se alcanzase tanto.
¿Cómo se gestiona que las condiciones de luminosidad cambien?, ¿qué pasa si alguien enciende o apaga la luz de la habitación?

Por cierto, buenísimo lo del giro de cámara   :D

con este codigo podemos hacer lo que sugeria nocturno ps el mismo micro puede detectar la cantidad de luz exterior en cualkier ambiente y poder determinar asi si el led hizo una deteccion o no, inclusive de esta forma podemos jugar con la alineacion de los led separarlos, unirlos mas, ponerlos en diagonal etc... puede k tal vez sea la solucion para hacer una fila



« Última modificación: 29 de Diciembre de 2008, 03:59:06 por ekud »
No cometas el crimen varon si no vas a cumplir la condena