Autor Tema: Problema con teclado analogico - ahora problema rebotes  (Leído 2902 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Problema con teclado analogico - ahora problema rebotes
« en: 12 de Octubre de 2007, 14:51:31 »
bueno dado que en este hilo estan conversando mucho sobre el tema, y casi nadie se ha fijado en mi problema, me tome la libertad de crear un nuevo hilo para preguntar sobre mi problema, espero no se molesten

sucede que he calculado esos valores de resistencia (solo necesito usar tres pulsadores, pero en la misma linea e entrada), y pues si lo pruebo independientemente (sin conectar al micro) los valores calculados de tension salen muy bien, pero cuando llevo el mismo esquema a la entrada RA0 de un pic 16f877a tanto en simulacion como en la realidad no entrega esos valores, y nose porque sucede eso, he visto el teclado que hizo nocturno en su pagina y tiene una simualcion la cual da perfecta, asi que he copiado mi esquema a su teclado, y lo he conectado al RA0 y sucede lo mismo, los valores de tension se bajan hasta 0.17 0.06 0.03 y yo necesito 4, 3 y 2 V, no comprendo que es lo uqe sucede, talvez hice algo mal en el codigo para la configuracion del ADC? o que sucede?

aca la configuracion que use:

Código: [Seleccionar]
#include <16F877a.h>
#device adc=8
#fuses XT,NOWDT,PUT,NOPROTECT,NOLVP,NOCPD,NOBROWNOUT,NODEBUG
#use delay(clock=4000000)
#byte port_b=6

void main()
{
   setup_adc_ports(RA0_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_0(RTCC_DIV_64|RTCC_INTERNAL);
   setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // con div 4 se tiene un segundo
   enable_interrupts(GLOBAL);
   set_tris_a(0xff);
   set_tris_b(0x01);
   set_tris_c(0xc0);
   output_a(0);
   output_b(0);
   output_c(0);
   while(true)
   {
      set_adc_channel(0);      // selecciona el canal 0
      delay_us(20);            // Retardo para carga del cap. de muestreo
      value=read_adc();        // Lee el resultado de la conversion
      if(value>63 && value<127)
      {
         select++;
         if(select>3)
            select=0;
      }
... y sigue el programa

nocturno en el hilo del teclado me dijo que le coloqeu un condensador en la entrada del ADC para filtrar ruidos, un consensador en paralelo? de que valor?, la fuente es estable, y por si acaso tiene condensadores de 10u y 100nf (104)
« Última modificación: 14 de Octubre de 2007, 03:27:21 por Cryn »
.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Porblema con teclado analogico
« Respuesta #1 en: 12 de Octubre de 2007, 18:33:59 »
¿Puedes medir mediante un polímetro la tensión que le llega a la entrada del ADC?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Porblema con teclado analogico
« Respuesta #2 en: 12 de Octubre de 2007, 18:57:58 »
Gracias por la respuesta jfh900, en la simulacion paso eso:

0.17 0.06 0.03 y yo necesito 4, 3 y 2 V, no comprendo que es lo uqe sucede, talvez hice algo mal en el codigo para la configuracion del ADC? o que sucede?

eso es lo que da en la simulacion, y armando encontre valores pequeños tb 0.8 mas o menos, pero valores que no deberian salir, no creen, por eso mostre mi esquematico, en el post anterior, y la configuaracion del ADC que use, y no encuentro una respuesta a ello.
.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Porblema con teclado analogico
« Respuesta #3 en: 12 de Octubre de 2007, 21:46:04 »
Acabo de probar la simulación y me da los valores correctos. ¿Has puesto el valor Vcc al terminal de tensión?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Porblema con teclado analogico
« Respuesta #4 en: 12 de Octubre de 2007, 22:43:01 »
ok mira para que te convensas te adjunto el esquematico de la simulacion qeu hago, y checalo tu, y mira lo que hice para solucionarlo, ya que las resistencias no hacen su trabajo cuando esta conectado al ADC del micro (RA0), talvez falta algo en el codigo, nose, puedes darle una mirada a ambos??

muchas gracais por la ayuda, un saludo
.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Porblema con teclado analogico
« Respuesta #5 en: 12 de Octubre de 2007, 22:56:21 »
Bueno, ya está solucionado:

Código: C++
  1. void main()
  2. {
  3.    setup_adc_ports(RA0_ANALOG);
  4.    setup_adc(ADC_CLOCK_INTERNAL);
  5.    setup_timer_0(RTCC_DIV_64|RTCC_INTERNAL);
  6.    setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // con div 4 se tiene un segundo
  7.    enable_interrupts(GLOBAL);
  8.    set_tris_a(0xff);
  9.    set_tris_b(0x01);
  10.    set_tris_c(0xc0);
  11.    // output_a(0); // Hay que comentar esta linea
  12.    output_b(0);
  13.    output_c(0);
  14.    while(true)

Tienes que comentar la línea indicada, ya que estas poniendo A0 como salida y a valor bajo.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Porblema con teclado analogico
« Respuesta #6 en: 12 de Octubre de 2007, 23:12:54 »
ok, gracias por la ayuda, no creo que hubiera dado con el error hasta un muy buen tiempo, que mala pata se me olivdo colocar el fast_io , y bueno ese output era una inicializacion, jeje

muchas gracias de verdad, sos grande.

pd. crees que se haya dañado esa entrada de mi micro por hacer eso???
.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Porblema con teclado analogico
« Respuesta #7 en: 12 de Octubre de 2007, 23:15:11 »
No creo, son muy duros. Aunque la mejor forma de salir de dudas es probarlo como entrada y como salida.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema con teclado analogico (solucionado)
« Respuesta #8 en: 13 de Octubre de 2007, 02:02:26 »
Brillante la solución, Jesús.

Cryn, menos mal que sacaste el post del otro hilo, porque nos ha ido la olla de una manera...  :D

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con teclado analogico (solucionado)
« Respuesta #9 en: 14 de Octubre de 2007, 00:25:33 »
jaja, sin duda, pues vi qeu solo me diste una respondida y despues todo mundo posteaba sobre el tema en si, y no el problema que yo tenia, entonces pense que mejor me podria ir fuera del anterior post y crear otro tema, para que sai me prestne un poco de atencion, jejeje, y pues dio resultado  :-/

un saludo

y gracias
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con teclado analogico - ahora problema rebotes
« Respuesta #10 en: 14 de Octubre de 2007, 03:31:48 »
ahora tengo problemas con los rebotes, que puedo hacer? ya intente introducir un retardo de 50 ms despues de capturar el valor del adc, pero interfiere demasiado con la multilexacion de los displays y se ve muy mal, que me sugieren??
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema con teclado analogico - ahora problema rebotes
« Respuesta #11 en: 14 de Octubre de 2007, 03:37:39 »
Puedes meter un contador que se incremente con cada iteración de tu bucle principal y comparas con un valor.

 if (contador++==20) {
     contador=0;
     value=read_adc();
...


Así sólo leerás el teclado una de cada 20 veces y será igual que un retardo, pero sin parar al micro.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con teclado analogico - ahora problema rebotes
« Respuesta #12 en: 14 de Octubre de 2007, 03:55:51 »
umm tratare con ello despues, pasa qeu no tengo el circuito en mis manos, jeje, pero en la simulacion parecia que capturaba 2 veces el mismo pulsador y pues ahora colocando la sentencia parecida a la q pusiste en el codigo (depues de la lectura del ADC) de tu teclado nocturno:

if(value && value!=value_ant)

parece que esta mejor, lo vere en circuito en una horas, vale?

gracias por la rapida respuesta, un saludo
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Problema con teclado analogico - ahora problema rebotes
« Respuesta #13 en: 14 de Octubre de 2007, 21:32:12 »
no resulto muy bien con la anterior sentencia, pero le he agregado el contador qeu mencionas y ha resultado de maravilla, gracias, un saludo
.