Autor Tema: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84  (Leído 7449 veces)

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

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #15 en: 04 de Julio de 2004, 22:43:00 »
Ojo... el integrado es para eso nomás. Vos con el pic tenés que sensar el estado de A y B. En base a eso vas a tener que calcular el giro teniendo en cuenta el desfasaje de 90 grados.
O sea que vas a tener que "leer" el estado de A y B y compararlo con el estado enterior que tenían antes.

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #16 en: 17 de Julio de 2004, 08:50:00 »
Bueno aquí estoi de nuevo.
He estado mirando el código del enlace que te puse anteriormente y creo que cambiando el motor P.A.P. por el encoder del ratón en teoría debería funcionar.(NO entiendo todo el código , me pierdo en algunas instrucciones ).
Ahora lo que quiero es añadirle un segundo encoder y la lectura sacarla por un lcd de 2X16.
sipuedes echa un vistaso a este enlace


http://panda.cs.ndsu.nodak.edu/%7Eachapwes/PICmicro/code/Projects/mouse/ps2mouse.html

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #17 en: 01 de Agosto de 2004, 03:44:00 »
Hola de nuevo .
Bueno he empezado ha escribir (copiar) el código para realizar el proyecto que tengo entre manos.
La parte del lcd  para la muestra de datos mas o menos la tengo clara , pues tengo un montón de ejemplos y los entiendo bastante bien.
Ahora con la parte del encoder no puedo , entiendo mas o menos las instrucciones que se utilizan , pero lo que no entiendo es lo que hay que hacer para saber en que sentido giran y cuando están detenidos .
Tengo varios ejemplos pero nada no lo entiendo , alguien podría echarme una mano para entender esto?
Un saludo dumvo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #18 en: 01 de Agosto de 2004, 06:54:00 »
A ver Dumvo, nunca lo he hecho, pero creo que la teoría es la siguiente:

En cada ruedecilla tendrás dos sensores, desplazados el uno del otro justo medio paso. De esta manera, cuando la ventanilla pasa por delante del primer sensor, este ya sensa un 1 mientras que el otro todavía está a 0. De la misma forma, cuando se termina la ventanilla, el primer sensor sensará un 0 antes que el otro.

Por tanto, si eres capaz de identificar las tramas que te pongo a continuación, serás capaz de identificar el sentido del giro:

Codigo:
Giro en un sentido

A B
0 0
0 0
1 0
1 1
0 1
0 0
0 0

Giro en sentido contrario

A B
0 0
0 0
0 1
1 1
1 0
0 0
0 0


donde A y B son las señales que aparecen en cada uno de los sensores.

¿Cómo lo ves?

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #19 en: 02 de Agosto de 2004, 13:37:00 »
 Por nocturno66                  
    ¿por que si solo estan desplazados medio paso  el cero lo repites tres veces en cada secuencia y los unos solo los repites dos veces ?
en teoria seria
Codigo:
--------------------------------------------------------------------------------Giro en un sentido

A B
0 0
1 0
1 1
0 1
0 0
1 0
Giro en sentido contrario

A B
0 0
0 1
1 1
1 0
0 0
0 1
--------------------------------------------------------------------------------


   no?
pero mi pregunta era otra:
por ejenplo yo leo el puerto donde conecto los encoders y obtengo   canal A-0   canal B-0
que tengo que hacer para saber si gira hacia un lado , hacia otro  o esta detenido?
Espero vuestra ayuda .
Por Colores2 ,     4,53v/2=2,26 - 0,47 de la resistencia 1,99v valor acectable para los leds
un saludo dumvo              

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #20 en: 02 de Agosto de 2004, 15:56:00 »
Disculpa si te he liado, pero quería ignorar los ceros ya que lo valioso en el ejemplo que te he pasado son únicamente los unos. Efectivamente es como tú dices.

Por otra parte, si lo que detectas en un 0 en cada sensor, no tienes forma de saber hacia donde gira, es más, puede ser que no gire. Necesitas una secuencia como mínimo de tres 1 / 0 para determinar el sentido del movimiento.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #21 en: 03 de Agosto de 2004, 21:24:00 »
Tendrías que tener 2 variables por cada salida. O sea: A1, A2, B1, B2.
Entonces sería así (pseudocodigo):

Repetir
    Leer A y copiar en A1
    Leer B y copiar en B1
   
    Comparar A1 y B1 con A2 y B2 (determinar el sentido de giro)

    Copiar A1 en A2    (copia los valores a X2 para la próxima)
    Copiar B1 en B2

Fin repetir.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #22 en: 03 de Agosto de 2004, 23:31:00 »
Lo del voltaje de los leds ya tenía en cuenta la caída de tensión de la resistencia. Eran 5v de entrada menos 0,47.

4,53v/2=2,26

Me parece que esos leds andan con bastante menos tensión. Creo que se pueden quemar así...
Digo, por la diferencia de tension entre las patas (como dije anteriormente) parecería que llevaran menos. No sé si es un método válido para saber que votaje llevan...

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #23 en: 07 de Agosto de 2004, 10:06:00 »
SECUENCIA
A   B
0   0
0   1
1   1
1   0
0   0
0   1
1   1
1   0
0   0

Veamos a ver si me aclaro.

Ejemplo:                                                              
Inicio  A1 a 0 , A2 a 0 , B1 a 0 , B2 a 0        


Giro en un sentido   /                                                 giro en sentido contrario      

 
Leo canal A me da 0   /                                              Leo canal A me da 0
Coloco A en A1   /                                                     Coloco A en A1
Leo canal B me da 0   /                                              Leo canal B me da 0
Coloco  B en B1   /                                                    Coloco  B en B1
Comparo A1 con A2 me da 0      /                              Comparo A1 con A2 me da 0
Comparo B1 con B2 me da 0     /                                Comparo B1 con B2 me da 0
Copio A1 en A2 me da A2 como 0   /                         Copio A1 en A2 me da A2 como 0
Copio B1 en B2 me da B2 como 0    /                         Copio B1 en B2 me da B2 como 0
Leo canal A me da 0     /                                              Leo canal A me da 1
Coloco canal A en A1    /                                              Coloco canal A en A1
Leo canal B me da 1      /                                              Leo canal B me da 0
Coloco canal B en B1      /                                            Coloco canal B en B1
Comparo A1 con A2 me da 0       /                              Comparo A1 con A2 me da 1
Comparo B1 con B2 me da 1        /                             Comparo B1 con B2 me da 0
Leo canal A me da 1            /                                                Leo canal A me da 1
Coloco A en A1             /                                                      Coloco A en A1
Leo canal B me da 1        /                                                    Leo canal B me da 1
Coloco B en B1      /                                                             Coloco B en B1
Comparo A1 con A2 me da 1   /                                          Comparo A1 con A2 me da 1
Comparo B1 con  B2 me da 1  /                                   Comparo B1 con  B2 me da 1

Pero nada sigo sin entender como se si gira hacia un lado o hacia otro , será que soy duro de cabeza

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #24 en: 07 de Agosto de 2004, 11:52:00 »
A ver, podría ser así:

Codigo:
Leer sensores hasta que alguno cambie (variables A y B)

ComienzoBucle:
Pasar sensores a histórico (A1=A y B1=B)
Leer sensores hasta que alguno cambie (variables A y B)
¿Es A=1 y B=0? " Opción 1
     Sí -> puede ser comienzo de A o final de B
           Leer sensores hasta que alguno cambie (variables A y B)
           ¿Es A=0?
                  Sí -> era final de B, por lo tanto sentido derecha
                          goto ComienzoBucle
                  No -> era comienzo de A, por lo tanto sentido izquierda
                          goto ComienzoBucle
     No -> continuamos por la línea siguiente

¿Es A=0 y B=1? " Opción 2
     Sí -> puede ser comienzo de B o final de A
           Leer sensores hasta que alguno cambie (variables A y B)
           ¿Es B=0?
                  Sí -> era final de A, por lo tanto sentido izquierda
                          goto ComienzoBucle
                  No -> era comienzo de B, por lo tanto sentido derecha
                          goto ComienzoBucle
     No -> continuamos por la línea siguiente

¿Es A=1 y B=1? " Opción 3
     Sí -> no nos dice nada todavía, en el siguiente paso sabremos el sentido
           Leer sensores hasta que alguno cambie (variables A y B)
           ¿Es A=0?
                  Sí -> ha finalizado A, por lo tanto sentido izquierda
                          goto ComienzoBucle
                  No -> ha finalizado B, por lo tanto sentido derecha
                          goto ComienzoBucle
     No -> " Sólo queda la opción 4, o sea A=0 y B=0.
           " No nos dice nada todavía, en el siguiente paso sabremos el sentido
           Leer sensores hasta que alguno cambie (variables A y B)
           ¿Es A=1?
                  Sí -> ha comenzado A, por lo tanto sentido izquierda
                          goto ComienzoBucle
                  No -> ha comenzado B, por lo tanto sentido derecha
                          goto ComienzoBucle


Bueno, los programas nunca funcionan a la primera, por lo que tendrás que probarlo y ya me contarás, pero creo al menos servirá para que entiendas su funcionamiento.

Desconectado Colores

  • Moderadores
  • PIC16
  • *****
  • Mensajes: 232
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #25 en: 07 de Agosto de 2004, 11:53:00 »
Ponele el nombre que quieras a A1, A2....
Para hacerlo más facil:
Para saber si hubo algún cambio (si giró o no) vos tenés que saber el estado en que está actualmente y el estado que tenía antes (la última vez que lo revisaste) para comparar.
Entones cuando empieza el programa lees el estado de A y B. Ese va a ser el estado actual y anterior...
Después entra en el bucle para revisar periódicamente. Si el estado actual de A y B son iguales a los del tiempo anterior, entonces no hace nada.
Si son distintos (cualquiera de los 2) a lo que había antes, entonces AHÍ comparas los estados anteriores con los actuales, pero esta vez para ver en que parte de la secuencia está y adonde vá.
O sea:

Si el estado anterior de A y B era  1-0
Y el estado actual es                     1-1  ->> Entoces gira a la derecha!

En ese caso el estado anterior era 1-0, pero para la próxima vez el estado anterior va a tener que ser 1-1 (que es el estado actual) para volver a comparar en caso de que cambie la próxima vez.

Espero haber sido un poco más claro.

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #26 en: 08 de Agosto de 2004, 03:54:00 »
A ver, podría ser así:


Codigo:
---------------------------------------------------------------------------


;ch1a=RA0
;ch1b=RA1
;ch2a=RA2
;ch2b=RA3
;incremento1=suma uno para mostrar en lcd en eje x
;decremento1=resta uno para mostrar en lcd en eje x
;incremento2=suma uno para mostrar en lcd en eje y
;decremento2=resta uno para mostrar en lcd en eje y
;-----------------------------
;      encoders
;-----------------------------

lectura   
   movf   porta,w         
   movwf   ESTADOA                
; CANAL 1   
   btfss   ESTADOA,ch1a            
   goto   Ch2                    
   btfss   ESTADOA,ch1b          
   goto   Ch1b0                  
Ch1b1
   btfsc   TEMPA,ch1b
   goto   Ch2                  
   call   incremento1         
   goto    Ch2
Ch1b0
   btfss   TEMPA,ch1b
   goto   Ch2                  
   call   decremento1            
;  CANAL 2
Ch2
   btfss   ESTADOA,ch2a
   goto   TEMPORAL
   btfss   ESTADOA,ch2b
   goto   Ch2b0
Ch2b1
   btfsc   TEMPA,ch2b
   goto   TEMPORAL                  
   call   incremento2         
   goto    TEMPORAL
Ch2b0
   btfss   TEMPA,ch2b
   goto   TEMPORAL                  
   call   decremento2            
TEMPORAL
   movf   ESTADOA,w
   movwf   TEMPA
   goto   lectura



-------------------------------------------------------------------------------------

seria asin mas o menos

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #27 en: 08 de Agosto de 2004, 04:21:00 »
Lo siento con el ASM me quedo pASMado.

¿Lo has probado?

Desconectado dumvo

  • PIC10
  • *
  • Mensajes: 29
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #28 en: 08 de Agosto de 2004, 06:13:00 »
Hola nocturno66 no lo he probado porque no se como probarlo.
Además el código no esta completo me falta aun la comunicación con el lcd y la forma de contar , descontar.
Lo primero que quería saber si esta es la forma de contar , descontar con los encoders y si es correcto seguir con el proyecto , pues no quiero comenzar con un planteamiento equivocado.
Yo de lenguajes de programación ni idea , el asm un poco que e leído en algunos manuales , pero tengo la impresión que el asm es mas fácil que otros lenguajes para empezar.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: hola foro nesesito saber si se puede conectar dos encoders de raton a un 16f84
« Respuesta #29 en: 08 de Agosto de 2004, 07:47:00 »
Sobre lenguajes podríamos discutir horas y horas y no ponernos de acuerdo pero, aunque estoy de acuerdo en que es mejor conocer algo de assembler, estoy convencido que te será mucho más fácil aprender a programar micros con Basic, o incluso con C.

Por otra parte, para probar tu programa quizás deberías meterlo en un simulador (hay muchos por ahí, donde puedes tocar a mano las entradas que llegan al programa y comprobar las salidas que ofrece. De esta manera podrás depurarlo y avanzarlo hasta terminarlo.