TODOPIC

Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: Fer_TACA en 22 de Diciembre de 2022, 13:38:21

Título: Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 13:38:21
Hola amigos.

¿Alguien se le ocurre una idea para poder simular los pulsos que da un encoder para ser leídos por un pic mediante interrupción por flanco?

El encoder real da 1024 pulsos por vuelta y creo que va a trabajar hasta unos 200KHz.

F.
Título: Re:Encoder
Publicado por: Robert76 en 22 de Diciembre de 2022, 15:14:23
Hola, si tienes Proteus, hay un bloque que se llama Pattern y te permite crear una secuencia de pulsos  entre ceros y unos ajustables en ancho, sobre una línea de tiempo que es repetitivo. Está muy bueno cuándo hay que simular un tren de pulsos de comunicación UART.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 15:31:00
Gracias voy a probar a ver si me sirve.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 15:51:13
Probado y eso veo que funciona y puedo contar los pulsos pero tengo que pensar como realizar el cambio de giro y que siga contando/descontando los pulsos.

Aunque de momento tengo otro problema con la variable de contar los pulsos que es de 24 bits. En la ventana de debug marca una cosa y en el display marca otra, pero el cso que lo correto es lo que marca en el display. :shock:

F.
 
Título: Re:Encoder
Publicado por: Eduardo2 en 22 de Diciembre de 2022, 17:07:55
Proteus tiene el modelo MOTOR-ENCODER
Tiene salidas A,B e I  y podés parametrizarlo y hacerlo trabajar como un oscilador controlado por voltaje.

Los ppv se pueden hacer hasta 360,  mientras no uses el índice esto es irrelevante.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 17:23:28
Proteus tiene el modelo MOTOR-ENCODER
Tiene salidas A,B e I  y podés parametrizarlo y hacerlo trabajar como un oscilador controlado por voltaje.

Los ppv se pueden hacer hasta 360,  mientras no uses el índice esto es irrelevante.l

A que te refieres con lo del uso del índice?
Título: Re:Encoder
Publicado por: Eduardo2 en 22 de Diciembre de 2022, 18:04:36
Salvo los encoders de pocos ppv ,  tienen una 3er salida (indice) que da 1 solo pulso por vuelta.

Se la usa para referenciar, un fin de carrera "normal" no tiene la estabilidad suficiente para posicionarte con precisión de 0.01mm (menos ni hablar)
La forma de trabajar es llevar el sistema hasta que pise un fin de carrera y luego se vuelve hasta que se active el índice.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 18:07:30
Gracias Eduardo por la respuesta.
Ahora ame quedó claro.
Antes de seguir tengo que buscar porque el error de la variable.

F.
Título: Re:Encoder
Publicado por: Eduardo2 en 22 de Diciembre de 2022, 19:10:41
El modelo MOTOR-ENCODER no está pensado para regímenes extremos, se dan errores posiblemente consecuencia del tamaño de las variables.
Hay que cargarle valores "irreales" solo para simulación.
  - Tienes que ingresar para ver archivos adjuntos -  

Adjunto el archivo en Proteus
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 19:20:14
Gracias por el adjunto voy a descargarlo y revisar.

F.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 19:41:18
Eduardo,
De momento no tengo ese problema, lo que quiero resolver antes es lo de la imagen adjunta.
Los pulsos entran, para su contaje, en un pin de RB funcionando como interrupción por flanco descendente
Título: Re:Encoder
Publicado por: Eduardo2 en 22 de Diciembre de 2022, 20:05:50
En alguna parte del programa estás truncando una variable de 32bits.

Fijate que:  83886135 = 0x05000037
y  0x0037 = 55   -->  casi lo que muestra el display ,  tal vez esa variable ya estaba incrementada.
Título: Re:Encoder
Publicado por: Fer_TACA en 22 de Diciembre de 2022, 20:18:05
Estoy utilizando una variable de 24 bits. Pero la captura solo es eso un ejemplo.

Quite la entrada de pulsos y coloque solo un pulsador y si parto de cero, el primer valor que se visualiza en el display es 1 ¡ Correcto !

Pero en la ventana de la variables ya sale un valor de unos 16 y pico y es lo que no entiendo porque la variable que debería salir en el debuger ( un 1)  se convierte a BCD para ver el valor en el display y ahí sí que sale 1. Vamos que es la misma variable.

Podría ser que la conversión no se hiciera bien pero es que además cuando la cuenta llega a 10 si coinciden los valores. Pasa lo mismo para todos los terminados en 0.

Eso es lo que me despista.

F.
Título: Re:Encoder
Publicado por: Eduardo2 en 22 de Diciembre de 2022, 22:15:17
...
Pero en la ventana de la variables ya sale un valor de unos 16 y pico y es lo que no entiendo porque la variable que debería salir en el debuger ( un 1)  se convierte a BCD para ver el valor en el display y ahí sí que sale 1. Vamos que es la misma variable.
...

Ojo con la Watch Window .
Cuando agregás la variable (Add Watch)  todo bien,  pero si modificás el programa fuente y volvés a ejecutar, si esa variable cambió de dirección Proteus no te la actualiza , mostrando el contenido de la dirección vieja.

Por ejemplo, en un programa metí las variables Vin y Vinf en la Watch Window.
Después agregué un par de variables, compilé y lo ejecuté de nuevo.
  - Tienes que ingresar para ver archivos adjuntos -  
Pero en la WW se muestra verdura porque apuntan a otra dirección  :(

Solución:  En cada recompilada, mirar si cambiaron las direcciones y en caso afirmativo cargarlas de nuevo.
Título: Re:Encoder
Publicado por: Fer_TACA en 23 de Diciembre de 2022, 00:28:45
Gracias por el ejemplo, pero ese no es el problema.
Es un error del software.
Título: Re:Encoder
Publicado por: Fer_TACA en 23 de Diciembre de 2022, 18:28:05
Después de todo un día entero, se ha llegado a la conclusión de que es un error de Proteus y en la ventana de watch del debuger que no actualiza los valores.

Con esto ahora me surge otra pregunta:

¿Algún software de simulación parecido a Proteus para poder ir comprobando lo realizado?
Título: Re:Encoder
Publicado por: DominusDRR en 23 de Diciembre de 2022, 19:19:31
Después de todo un día entero, se ha llegado a la conclusión de que es un error de Proteus y en la ventana de watch del debuger que no actualiza los valores.

Con esto ahora me surge otra pregunta:

¿Algún software de simulación parecido a Proteus para poder ir comprobando lo realizado?

¿Por qué no depurar/ debugar con el hardware?

Alguna vez utilicé bastante ese simulador hace varios años, en varios proyectos con el PIC18F, tenía errores y parece que sigue teniendo.

Hasta que alguna vez me animé a depurar con el hardware.
Título: Re:Encoder
Publicado por: Fer_TACA en 23 de Diciembre de 2022, 20:33:53
Después de todo un día entero, se ha llegado a la conclusión de que es un error de Proteus y en la ventana de watch del debuger que no actualiza los valores.

Con esto ahora me surge otra pregunta:

¿Algún software de simulación parecido a Proteus para poder ir comprobando lo realizado?

¿Por qué no depurar/ debugar con el hardware?

Alguna vez utilicé bastante ese simulador hace varios años, en varios proyectos con el PIC18F, tenía errores y parece que sigue teniendo.

Hasta que alguna vez me animé a depurar con el hardware.

ya me gustaría poder probarlo en físico. pero será un montaje complejo y quiero ir implementándolo paso a paso y ver que va funcionando.

Y si el problema es de proteus a la hora de la visualización de las variables de 24 bits en la ventana del watch. Si observo los registros de forma descompuesta ( en grupos de 8 bits) HH-H-L si se ve que la cuenta se realiza perfectamente.

El error se puede ver en la figura adjunta


F.
Título: Re:Encoder
Publicado por: DominusDRR en 23 de Diciembre de 2022, 22:23:21
Después de todo un día entero, se ha llegado a la conclusión de que es un error de Proteus y en la ventana de watch del debuger que no actualiza los valores.

Con esto ahora me surge otra pregunta:

¿Algún software de simulación parecido a Proteus para poder ir comprobando lo realizado?

¿Por qué no depurar/ debugar con el hardware?

Alguna vez utilicé bastante ese simulador hace varios años, en varios proyectos con el PIC18F, tenía errores y parece que sigue teniendo.

Hasta que alguna vez me animé a depurar con el hardware.

ya me gustaría poder probarlo en físico. pero será un montaje complejo y quiero ir implementándolo paso a paso y ver que va funcionando.

Y si el problema es de proteus a la hora de la visualización de las variables de 24 bits en la ventana del watch. Si observo los registros de forma descompuesta ( en grupos de 8 bits) HH-H-L si se ve que la cuenta se realiza perfectamente.

El error se puede ver en la figura adjunta


F.

Lastima no tener experiencia para intentar ayudarte.

Lo que te recomendaría es preguntar lo mismo en el foro de inglés del software.

Lamentablemente, en español l'ayuda, sobre todo para cosas más complejas y sofisticadas es limitada.

También te serviría preguntar stackoverflow y/o su versión para electricidad/electrónica (https://electronics.stackexchange.com (https://electronics.stackexchange.com)

También deberías agregar el código que utilizas para contar y mostrar en los displays, tal vez por ahí algo se te escapa.
Título: Re:Encoder
Publicado por: Fer_TACA en 24 de Diciembre de 2022, 01:41:57
Dominus,
El problema ya esta localizado en Proteus.
La ventana del watch del debuger no representa bien las variables de 24 y 32 bits.

Respecto a la consulta en el foro de inglés lo veo difícil porque mi inglés es muy, muy escaso.

Revisaré el link que me has dejado.

Gracias por todas las respuestas que me habéis dado tu y el resto.

Feliz Navidad a todos

F.