Reemplazo de rotary encoder mecanico por optico casero

Hice un circuito con un pic (16f628A) con el que manejo un equipo de radioaficionados (recibe y transmite )
tiene un encoder rotativo mecánico para cambiar las frecuencias pero éste se rompió y además no me gusta al tacto ya que al ser mecánico va parando en cada punto (los equipos de radio comerciales rotan sin parar)
En internet vi que mucha gente reemplaza el encoder mecánico desarmando un mouse viejo y usando el fototransistor y el emisor Led .
el problema es que no entiendo bien como conectarlo. El circuito tiene unos botones y unas resistencias pull up.....peeerrooo el rotary encoder parece que no lleva las resistencias pull up por lo cual me marea un poco.
}
dejo una imagen donde pinto en rojo el encoder rotativo....

tambien dejo una imagen de un circuito optico de encoder hecho con un mouse..

puede ser que faltaría agregar dos transistores? se me ocurre que desde esa salida del circuito optico puedo poner dos bc548 pero tengo dudas de las conexiones, espero me puedan aclarar un poco ! gracias
 

Adjuntos

  • Sin título-2.jpg
    Sin título-2.jpg
    290.8 KB · Visitas: 28
  • images.png
    images.png
    4.7 KB · Visitas: 25
Hola...Ese PIC tiene pull-up interno en el puerto B que es activable o no mediante configuración de un registro interno del PIC por lo que o habría que ver el programa o medir los pines en reposo si están a estado alto. Aparentemente y por el esquema en mi opinión, esta activado internamente.

Nuevamente habría que ver como trabaja el programa o probar el encoder fabricado para ver si es necesario agregar transistores o alguna otra solución/modificación para adaptarlo.

Te diría que la gran mayoría de los encoder actuales de los equipos comerciales y de aficionados son definitivamente mecánicos y no ópticos los cuales fueron "vedette" en la década de los 90'.

Cualquiera de los dos sistemas tiene sus pro y contras y seguramente es mas económico el mecánico porque es lo que se usa hoy en día de forma generalizada.

El proyecto lo sacaste de aquí OFV CON DDS ,seguramente y vas a tener que trabajar en el aspecto mecánico y electronico para hacer/lograr algo confiable.

Saludos.

Ric.
 
Última edición:
Hola Ric gracias por aportar ..... el circuito funciona bien desde hace un año con ese encoder mecánico. Nunca me gustó porque para buscar estaciones de aficionados va haciendo ruido y trabándose por su principio mecánico interno.....ahora se rompió y la verdad es muy económico pero aprovechando que falló quisiera hacer algo mas "suave" al tacto. ese es el motivo.....si el proyecto es de ésa página y menciona que se puede usar un encoder óptico pero el problema es el costo elevado y el tamaño del mismo, por eso se me ocurrió buscar info y ví que lo arman con el fototransistor y led de mouse de pc viejos....ese es el tema
 
Claro pero deberás adaptar todo porque los mouses solo trabajan con un opto por eje y vos necesitas poner dos para detectar el sentido de giro y contar.

En cuanto a las conexiones podes averiguarlo si ya esta el pull-up activado desconectando las R de 1K que van a los pines de encoder mecánico y ver si tenes 5Vdc, si es así están activadas.

En su momento(años ha) fabrique uno pero no con uno óptico, con un motor PAP de disketera de 5" 1/4 antigua, el problema que cualquier vibración fuerte o golpe en la superficie donde estaba la placa del DDS con el PIC, hacia que el PIC contara.

Para evitar eso en los equipos, los ópticos, tienen un resorte con tornillo con un embrague que los endurece; debido a todo eso, advertí que deberás trabajar para dejar algo que funcione bien.
 
si...eso lo pensé el tema de la sensibilidad. pero lo considero Fácil. hay una grasa de friccion que se puede probar también. O simplemente un resorte con alguna pieza que pueda yo hacer en 3d que toque con presión el eje del pote y grasa para plásticos pueden hacer el trabajo.

Necesito que alguien me dé luz en el circuito....ya comprobé y si....tienen 5v dc los pines que van al encoder.

Ahh los mouse tienen dos lectores opticos en cada rueda...osea tienen dos Fototransistores en el mismo encapsulado...y con una sola rueda suben y bajan el puntero
 
Última edición:
Ahh los mouse tienen dos lectores opticos en cada rueda...osea tienen dos Fototransistores en el mismo encapsulado...y con una sola rueda suben y bajan el puntero
En escencia es reemplazar el encoder mecánico por las salidas (colectores) de los fototransistores de los optos del mouse. El reemplazo sería casi punto a punto: cada colector a una de las resistencias de 1K (suponiendo que estás usando los pull-ups del microprocesador). Los emisores van juntos a la línea de GND que está al medio de las R de 1K en tu esquema...y nada mas, excepto alimentar los leds del optoacoplador para que funcione.
Con un poco de cuidado es sacar el encoder mecánico y poner el del mouse en las conexiones que liberaste.
 
No, así no.
El emisor está OK a la R, pero esa union no va a GND sino a la entrada del micro. Y la otra pata de la R va a masa.
La otra posibilidad es dejar la R como está y agregar dos resistencias desde el emisor a masa.
Y no sé de la programacion...probablemente debas desactivar los pull-ups internos si es que estan activos.
 
El problema radica en que no esta disponible el código fuente, solo el compilado final y desde allí no creo que sea fácil saber donde modificar para desactivar el pull-up...por eso dije en mi intervención que deberá probar y a lo sumo invertir/adaptar la lógica del encoger óptico fabricado.

Fíjate si este circuito así te funciona...
opto.JPG
 
Última edición:
desde allí no creo que sea fácil saber donde modificar para desactivar el pull-up
Habrá que aplicar el viejo truco de codificar la instrucción de habilitacion de pull-ups en assembler, pasar el codigo a hexadecimal y buscar algo parecido en el archivo .HEX ...y ver que aparece. Si logra localizarla, la reemplaza por una NOP (por lo general es un 0x00...no se para este micro), se graba el micro y se vé que pasa...

Si lo encara le va a llevar tiempo, pero va a aprender un montón...
 
En ese micro es el valor del bit 7 del registro de opciones en la dirección $81 y $181 que si esta a 0 esta habilitado y en 1 para quitarlo lo que nunca investigue como se refleja en el archivo ya compilado.
opt.JPG
 
Ahhhh...hay que buscar (siempre codificando en hexa) la instrucción que modifica ese registro y cambiarle un solo bit a 1...
Se supone que debe estar cerca del comienzo del programa por que es una configuración básica.
 
Cuando hablamos de programación, para mi es Chino básico.
Voy a probar con ese circuito Ricbevi, que creo que es lo mismo que me decía que haga el Dr. Zoidberg !!! Como el costo es cero voy a probar.
 
Dr. Zoidberg entiendo pero como no tengo la herramienta de Microchip, solo los compiladores de alto nivel uno nunca sabe que hacen al respecto ya que presuponen configuraciones por defecto....haciendo una simple prueba con solo declarar el micro-controlador 16F628A y activar el pull-up y compilarlo con el Proton Basic Compiler da esto:
Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2020 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18/07/2020                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device = 16F628A
OPTION_REG.7 = 0

en el archivo "hex"

Código:
:1000000000000000000004288312031307309F0043
:080010008316811383120A28F4
:02400E00223F4F
:00000001FF

Al Apagarlo esto:

Código:
:1000000000000000000004288312031307309F0043
:080010008316811783120A28F0
:02400E00223F4F
:00000001FF

Solo cambia de el "0" a estar a "1" el bit 7 del registro de opciones. Cambio e 4 a 0 en la segunda linea el ultimo byte y en el medio de la linea hay otro numero que cambio pero me parece que solo no es eso si no que hay mas a la hora de compilar cuando hay mas instrucciones.

Para ESTEBAN555

Básicamente es similar a lo que indico Dr. Zoidberg después vemos si no funciona como sigue.
 
Dr. Zoidberg entiendo pero como no tengo la herramienta de Microchip, solo los compiladores de alto nivel uno nunca sabe que hacen al respecto ya que presuponen configuraciones por defecto....haciendo una simple prueba con solo declarar el micro-controlador 16F628A y activar el pull-up y compilarlo con el Proton Basic Compiler da esto:
Código:
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2020 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18/07/2020                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Device = 16F628A
OPTION_REG.7 = 0

en el archivo "hex"

Código:
:1000000000000000000004288312031307309F0043
:080010008316811383120A28F4
:02400E00223F4F
:00000001FF

Al Apagarlo esto:

Código:
:1000000000000000000004288312031307309F0043
:080010008316811783120A28F0
:02400E00223F4F
:00000001FF

Solo cambia de el "0" a estar a "1" el bit 7 del registro de opciones. Cambio e 4 a 0 en la segunda linea el ultimo byte y en el medio de la linea hay otro numero que cambio pero me parece que solo no es eso si no que hay mas a la hora de compilar cuando hay mas instrucciones.

Para ESTEBAN555

Básicamente es similar a lo que indico Dr. Zoidberg después vemos si no funciona como sigue.
El tema sobre archivos en HEX. Tienen un encabezado que indica cantidad de bytes en la trama, la dirección de memoria, tipo de datos y por último el CRC.
Por eso al modificarse cualquier byte en los datos, se modificará al menos el último byte de CRC.
 
Atrás
Arriba