Autor Tema: comparadores para encoder  (Leído 6318 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
comparadores para encoder
« en: 03 de Junio de 2007, 16:32:32 »
Hola a todos
tengo un problemilla con el encoder incremental para terminarlo , y es que queria que tuviese tres salidas de esta forma
_XXX_XXX_ esta la conectaria a RB0
__XX__XX_ a RA1
_XX__XX__ a RA2
los estoy haciendo con un par de comparadores, pero como hago para sacar el de RB0 ,ha de ser la suma de los dos , a base de probar entre las salidas de los comparadores a un tercero sale la deRB0 , pero esta aumenta de voltaje cuando coincien los dos pulsos en alto y si se queda uno de los photodiodos entre medias de una de las lineas del disco me da medios pulsos , me explico , que no llega a 5v en la salida del comparador es proporcional al haz de infrarojo que incida sobre fotodiodo en vez de salirme pulsos cuadrados son casi circulares  :shock:
tiene alguien el esquema de un circuito que se use para esto, o si tengo que usar algun componente que no deje salir 5v hasta que los alcance en la entrada ,creo que un zener,o que se usa??

gracias y un saludo
 

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: comparadores para encoder
« Respuesta #1 en: 03 de Junio de 2007, 16:42:34 »
Hola, prueba este circuito, anda bien  :mrgreen:

suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Oceano

  • PIC10
  • *
  • Mensajes: 22
    • Proyectos Roboticos.
Re: comparadores para encoder
« Respuesta #2 en: 13 de Julio de 2010, 18:00:55 »
Yo pienso que es mucho más sencillo hacer un encoder si pones como acondicionador de señal un disparador Schmitt tipo 74LS14 ó simplemente un 7414 (evita que sea CMOS, por ejemplo 74HC14, porque suelen dar fallos al ponerlos como encoder). Te pongo un esquema y el programa:



El programa en Proton del encoder incremental queda así:

Código: [Seleccionar]

Device=16F876A

REMINDERS = FALSE
     Config XT_OSC, PWRTE_ON, CPD_OFF, WDT_OFF, BODEN_OFF, LVP_OFF
REMINDERS = TRUE

Symbol INTF   = INTCON.1         ' RB0 External Interrupt Flag
Symbol INTE   = INTCON.4         ' RB0 External Interrupt Enable
Symbol GIE    = INTCON.7         ' Global Interrupt Enable
Symbol INTEDG = OPTION_REG.6     ' Flag = 0 Flanco bajada. Flag = 1 Flanco subida.

On_INTERRUPT GoTo Interrupcion   ' Interrupción por Hardware (es la más rápida).

GIE    = 1                       ' Activa interrupciones generales.
INTE   = 1                       ' Activa la interrupción externa RB0/INT.
INTEDG = 1                       ' Hace que inicialmente la interrupción se habilite
                                 ' para flanco de subida.

ALL_DIGITAL = TRUE               ' Todas las entradas y salidas son digitales.
                                                                              
TRISA  = %111111
TRISB  = %11111111               ' Puerto A y B todo entradas.
TRISC  = %00000000               ' Puerto C como salida para visualizar a través de los LED.
          
Dim x As  Byte                   ' Variable X ---> contador de posición actual.


x=0                              
 
While 1=1                        ' |------ Programa Principal ------|
    
     PORTC = x                   ' El contenido de X se visualiza en el Puerto C a través de los LED.

Wend                             ' |--------------------------------|
            
End                              

    
Interrupcion:                 '-------- Decodificador de Encoder --------------
      
    Context SAVE              ' Salva en contexto de los registros antes de operar con la interrupción.
    
    If PORTB.0 = 1    Then    ' Si RB0 se ha puesto a 1 (flanco de subida),
       INTEDG  = 0            ' entonces activar la siguiente interrupción para flanco de bajada.
       If PORTB.1 = 1 Then    ' Si RB1 está a 1
          Inc x               ' entonces incrementar el contador X.
       EndIf
    EndIf
    
    If PORTB.0 = 0    Then    ' Si RB0 se ha puesto a 0 (flanco de bajada),
       INTEDG  = 1            ' entonces activar la siguiente interrupción para flanco de subida.
       If PORTB.1 = 1 Then    ' Si RB1 está 1
          Dec x               ' entonces decrementar el contador X.
       EndIf
    EndIf
    
    INTF = 0                  ' Borra el "flag" de la interrupción RB0/INT para poder permitir la  
                              ' siguiente interrupción, cuando ocurra.
    Context Restore           ' Restablece el contexto de los registros tal como estaban antes de la
                              ' interrupción.


Más info aquí:

http://sites.google.com/site/proyectosroboticos/encoder/encoder-por-software
« Última modificación: 13 de Julio de 2010, 18:07:59 por Oceano »

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: comparadores para encoder
« Respuesta #3 en: 23 de Julio de 2010, 19:40:04 »
no entiendo bien porque usas tres entradas al pic, yo uso los encoders solo con dos entradas, una es la interrupcion y la otra para saber en que dirección esta incrementando.
Como comparador uso LM339 que son 4 y andan muy bien.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: comparadores para encoder
« Respuesta #4 en: 05 de Agosto de 2010, 03:57:36 »
 :D :D :D este post es de hace pufffff en aquel entonces no sabia como funcionaba, mas bien no lo comprendia. hoy dia lo hago como decís

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: comparadores para encoder
« Respuesta #5 en: 05 de Agosto de 2010, 04:44:37 »
 :shock: Joder que chulo te ha quedado macho  :mrgreen:

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: comparadores para encoder
« Respuesta #6 en: 05 de Agosto de 2010, 05:01:05 »
gracias señor :mrgreen: por si teneis curiosidad el hilo del proyecto esta aqui