Autor Tema: equivalente de ranuras a grados en un encoder  (Leído 11654 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
equivalente de ranuras a grados en un encoder
« en: 15 de Noviembre de 2007, 19:06:55 »
Hola saludos a todos, estoy trabajando con un encoder parecido a este:

en la forma de las ranuras, ya que el que tengo esta seccionado de la misma manera que en la imagen, ahora lo uqe hice para mas o menos determinar la cantidad de pasos qeu debo dar para alcanzar una determinada cantidad de grados fue:

1. contar la cantidad de ranuras que tiene, y en mi caso son 20
2. encontrar lo que seria el angulo por ranura (por paso) que en mi caso fue 360º /20=18º por ranura
3. lo que me da una relacion para obtener la cantidad de pasos para cualquier cantidad de angulo

entonces si quiero por ejemplo 90 grados, debo hacer 90º/18 = 5 y debo entonces contar 5 pasos y tendria que estar en 90º en mi motor. Es estp verdad y posible??

ya que probando en la realidad no me han dado los 90 grados que queria, sino me han dado como algo de 45º, probando y contando seguramente llego a una relacion algo proxima a la realidad, que lo estare haciendo

pero quisiera tener alguna respuesta mas convincente que hacer prueba y falla como lo que estaria haciendo

o es que hice algun calculo malo y no considere algo mas??

muchas gracias por la ayuda un saludo para todos
.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: equivalente de ranuras a grados en un encoder
« Respuesta #1 en: 16 de Noviembre de 2007, 00:36:07 »
Cómo lees los pulsos del encoder. Es decir, tus cálculos están bien. Cada pulso equivale a 18º, esa es tu resolución, sólo cuando el encoder rote 90º (con una tolerancia de ±18º) obtendrás 5 en tu receptor, que asumo es un pic.
debes constatar esta cantidad. por ahí quizas estas contando el doble de pulsos...
Pregunto: la idea es realizar una rotación controlada, o sólo medir desplazamiento?
     

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #2 en: 16 de Noviembre de 2007, 00:52:25 »
si el receptor es un 16f877a (el preferido aca en mi ciudad)

cuento los pulsos que me envia el enconder con el timer0 configurado como contador con reloj externo y con flanco de subida (aunque no creo que haya mucha diferencia con flanco de bajada):

setup_timer_0(RTCC_EXT_L_TO_H | RTCC_DIV_1);

mi calculo lo hago con una muliplicacion:

grad2=a_entero(dato2,grad2); // esta en una funcion que convierte dato2 (un arreglo de 2 componentes) a un int guardado en grad2
pasos_2=grad2/18; // aca la relacion que tenia definida en mi primer mensaje

y bueno pues, talvez algo malo en el codigo o quieres ver algo mas??

aca te dejo el link donde colge todo el codigo

muchas gracias un saludo
.

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: equivalente de ranuras a grados en un encoder
« Respuesta #3 en: 16 de Noviembre de 2007, 01:02:21 »
No veo nada malo en tu código, puede ser problema de ruido? que entren más pulsos de los que realmente ocurren. Tenés algún capacitor puesto en la entrada de pulsos para evitar eso?
Aunque si decís que si lo acomodás "a ojo" anda, quiere decir que el error no es aleatorio y por lo tanto no debe ser ruido, creo...

Mañana veo tu código en más detalle. Ahorita me voy a dormir. :D

Saludos Cryn
     

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #4 en: 16 de Noviembre de 2007, 01:10:59 »
ok muchas gracias por la ayuda

como va eso del capacitor?? es serie? o del hilo a tierra? tienes un esquemita pequeño??

porque he puesto dos condesnsadores, pero en la alimentacion, un 104 y uno de 10u, pero eso es para la alimentacion
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #5 en: 16 de Noviembre de 2007, 02:29:56 »
me temo que se ha arruinado el T0CKI (PIN A4) de un PIC16f877a que tengo, ya que al parecer ya no cuenta porque he probado el mismo programa en otro pic16f877a, y ha estado funcionando mbien, y pues nose que le ha podido pasar, he usado estas configuraciones para llevar al pin A4: http://www.todopic.com.ar/foros/index.php?topic=19290.0, use ahora la 2da configuracion (ademas le puse una resistencia de 10k de la entrada del negador a tierra, porque funciona mejor asi, en este caso), ya uqe con la 1ra no funcionaba muy bien

haber que me dicen? es posible que se haya arruiando mi T0CKI?
.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4917
Re: equivalente de ranuras a grados en un encoder
« Respuesta #6 en: 16 de Noviembre de 2007, 02:53:04 »
hola cryn!
te estoy buscando ejemplo de como se hace, lo hace bien pero creo que son tu calculo de posiciones que no van bien, yo trabajo con Movie Light (luce en movimientos) y tengo un monton de PAP motores con el Rotor completo para dar, pero me imagino que partiendo de Cero y contar luegos los paso que se desplaza el motor, aqui deberia calcular los pasos! digo yo :mrgreen:
creo que tu programa en C, pero yo en C no soy Fino :x
aqui te pongo una pagina 
http://www.engr.mun.ca/~dpeters/6806/postings/RotaryEncoder.pdf
te deseo suerte amigo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: equivalente de ranuras a grados en un encoder
« Respuesta #7 en: 16 de Noviembre de 2007, 03:00:49 »
Si estás leyendo justo el doble de pulsos, me huele a que tu problema sea más de software que de hardware. ¿No será que estás leyendo tanto los pulsos en flanco de subida como en flanco de bajada?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #8 en: 16 de Noviembre de 2007, 17:47:15 »
ok muchas gracias por las respues, enseguida leo el pdf.

nocturno crees que deba cambiar el flanco cuando lea el primer cambio?? o a uqe te refieres??
.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: equivalente de ranuras a grados en un encoder
« Respuesta #9 en: 16 de Noviembre de 2007, 17:58:25 »
No sé, no sé, pero si lees el doble puede ser por algo de eso.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #10 en: 16 de Noviembre de 2007, 18:30:04 »
ok le cambio eso haber si da resultado, un saludo mg
.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: equivalente de ranuras a grados en un encoder
« Respuesta #11 en: 16 de Noviembre de 2007, 18:38:23 »
Hola que tal, disculap por tratar de meter mi nariz en donde no corresponde  :mrgreen: :mrgreen:, pero para leer pulsos de un encoder yo hago de la sgte manera:

1° detecto el flanco de subida(puede ser tambien de bajada pero para el ejemplo..)
2° hago lo que tenga que hacer con la informacion
3° Me aseguro que este en el nivel logico "0", si aun no baja de nivel hago un GOTO  $-1(con esto me aseguro de no leer dos veces el mismo flanco ya que la velocidad del PIC es uffff :shock:)
4° hago lo resto....

Espero que se entienda y si no habisen para profundizar en al explicacion

P.D: Disculpen si no me explico bien, trato de hacer honor a mi rango de Colaborador  :D :D :D

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #12 en: 18 de Noviembre de 2007, 03:37:14 »
no para nada te intrometes, porque necesito mucha ayuda, jeje mas bien gracias por responder :mrgreen:

he detectado un flanco y en el timer hago un do{}while hasta que cambie de estado, y pues me ha dado igual que antes, pero si ha mejorado en el avance ya que va a una determinada y vuelve a la misma posicion, antes ocurrian algunos grados de error

o nose que mas agregar con tu explicacion, programas en c poseidon20??

asi al ojometro, parecia 45º pero era menos, y le puse contar al doble y llega a 60º un poco mas talvez, y pues nose cual el problema ahora, seguire revisando, muchas gracias


el pdf como esta en ingles me esta costando entenderle, peor sigo con ello.

un saludo, muchas gracias por los aportes
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #13 en: 18 de Noviembre de 2007, 18:43:14 »
:oops: van a matarme :oops:  :mrgreen:

lo que pasa es que ahora le he puesto marquitas en las ranuras del enconder y cuanta perfectamente los 5 pulsos que debe contar para por ejemplo los 90 grados (90/18=5), asi que error de esa parte no tube, jeje  :mrgreen:

en lo que si falle ha sido en no considerar que este motor esta acoplado a dos engraanjes, y pues ello hace que exista la variacion en angulo :oops:, que no considere, y pues ahora como le hago para considerar los engranajes, los 5 pasos que cuento en realidad no son 90º al efectuador final, sino que con los engranajes esos 90 grados se reduce, seguramente proporcionalmente a la cantidad de engranajes

y bueno pues ahora estoy viendo el asunto de los engranajes

un saludo muchas gracias  :-/
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: equivalente de ranuras a grados en un encoder
« Respuesta #14 en: 18 de Noviembre de 2007, 21:55:01 »
Aca nuevamente, bueno nose si habre hecho lo correcto, pero ahora si que va de las mil maravillas, esta casi casi preciso, error de unos cuantos grados al darle una cordenada de 90º por ejemplo, decidi hacerlo a vista, jeje, para despues ver todo el rollo de los engranajes, y pues ha funcionado bien con mi ojometro :mrgreen:.

He visto simplemente mas o menos cuantos pulsos pasaria para los 90 y vi que dio una vuelta completica, entonces para 90º son 20 pulsos y con una regla de 3 tengo la cantidad de pulsos para 18º 36º 54º y 72º que son 4,8,12,16 respectivamente, esos angulos son los que necesito, y la relacion que existe entre 18º por ejemplo y la cantidad de pulsos es 4.5 (18/4=4.5) que es la relacion general para todos esos angulos, entonces

Citar
pasos_2=grad2/18; // aca la relacion que tenia definida en mi primer mensaje

cambia a:

Citar
pasos_2=grad2/4.5; // aca la relacion que tenia definida en mi primer mensaje

y use mejor el timer 1, con esta configuracion:
SETUP_TIMER_1(T1_EXTERNAL | T1_DIV_BY_1 | T1_CLK_OUT);
y esta funcionando mejor que con el timer0, ese cambio lo hice porque en un micro parece que el T0CKI se arruino y no cuenta pues nunca se detiene el motor (es posible que se haya arruinado??)

pero me ha quedado una duda, cual es el flanco que considera el tmr1?? el del tmr0 o el de int_ext??

un saludo y muchas gracias por todos sus aportes, me ayudaron a arreglar algunas cosas :-/
.