Autor Tema: Encoder  (Leído 7812 veces)

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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Encoder
« 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.
Todos los días se aprende algo nuevo.

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Encoder
« Respuesta #1 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.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #2 en: 22 de Diciembre de 2022, 15:31:00 »
Gracias voy a probar a ver si me sirve.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #3 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.
 
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Encoder
« Respuesta #4 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.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #5 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?
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Encoder
« Respuesta #6 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.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #7 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.
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Encoder
« Respuesta #8 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.
 

* Encoder.jpg
(94.78 kB, 859x422 - visto 1023 veces)


Adjunto el archivo en Proteus

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #9 en: 22 de Diciembre de 2022, 19:20:14 »
Gracias por el adjunto voy a descargarlo y revisar.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #10 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
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Encoder
« Respuesta #11 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.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #12 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.
Todos los días se aprende algo nuevo.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:Encoder
« Respuesta #13 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.
 

* watchw.jpg
(46.38 kB, 361x454 - visto 459 veces)

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.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Encoder
« Respuesta #14 en: 23 de Diciembre de 2022, 00:28:45 »
Gracias por el ejemplo, pero ese no es el problema.
Es un error del software.
Todos los días se aprende algo nuevo.


 

anything