Autor Tema: Dudas con los temps como contadores en PIC18f458 para leer pulsos de encoders  (Leído 1942 veces)

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

Desconectado frandavid

  • PIC10
  • *
  • Mensajes: 2
Buenas, como podeis ver, este es mi primer post, así que muchas gracias por responder a aquellos que lo hagais, y a los que no, tambien.

Este es mi primer contacto con los PICS, así que supongo que esta duda que tengo os será fácil de resolverla.

Tengo el PIC18f458(los queremos reutilizar para mi proyecto, ya que tenemos unos cuantos por el laboratorio), quiero contar los pulsos que me vienen de dos encoders de las dos ruedas de un robotijo diferencial, para luego comandar a los motores de cada rueda (2 pequeños motores DC reutilizados de otro aparatejo...).

La duda en sí, es esta: ¿¿¿puedo leer los dos encoders con este pic???

Estuve leyendo los datasheets del micro y saqué esto en limpio:

- Tiene cuatro temporizadores (timer[0:3]).

- El timer2 está dedicado para los PWM de las unidades CCP.

- El timer1 y el timer3 pueden hacer contaje asíncrono pero comparten la misma patilla para hacerlo. [[Aquí metería la señal de uno de los encoders]]

- El timer0 puede hacer contaje, tiene su patilla dedicada a tal efecto, pero creo que no asíncrono ya que pone esto:
                     "When an external clock input is used for Timer0, it must meet certain requirements. The requirements ensure
the external clock can be synchronized with the internal phase clock (TOSC)"

Mi duda en concreto es referente a esto último, ¿¿significa esto que no puedo contar los pulsos provinientes de los encoders (incrementales), uno con el timer1 y otro con el timer0???

La idea que tengo es, con una cierta frecuencia, leer el número de pulsos que ha dado cada encoder en ese período de tiempo, así puedo saber el ángulo girado por cada rueda (y la velocidad), y con esto decidir las consignas para comandar los motores.

Bueno, muchas gracias por vuestro tiempo y si teneis alguna sugerencia, será un placer "oirla".

Ciao ciao!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dudas con los temps como contadores en PIC18f458 para leer pulsos de encoders
« Respuesta #1 en: 09 de Marzo de 2007, 13:05:18 »
Posibilidades de hacerlo tienes varias. En el peor de los casos puedes hacer el recuento por software, simplemente estando pendiente del cambio de estado de dos pines de entrada en unidad de tiempo.

Lógicamente es preferible hacerlo por interrupciones, para lo cual puedes contar con la Interrupción Externa, la interrupción CCP y las de cambio de estado del Puerto B.

Sin duda, el mejor método es utilizar el Timer utilizando como fuente de clock dos pines externos, como tú propones. Yo creo que ese micro tiene tres timers.

Desconectado frandavid

  • PIC10
  • *
  • Mensajes: 2
Re: Dudas con los temps como contadores en PIC18f458 para leer pulsos de encoders
« Respuesta #2 en: 09 de Marzo de 2007, 13:30:25 »
Ante todo, gracias por contestar.

La duda es simplemente si el timer0 me vale para contar los pulsos de un encoder incremental (el pic en cuestión [18f458] tiene cuatro timers, pero sólo dos entradas de clock externas, una para el timer0 y otra compartida por el timer1 y el timer3), ya que, y cito textualmente:

"When an external clock input is used for Timer0, it must
meet certain requirements. The requirements ensure
the external clock can be synchronized with the internal
phase clock (TOSC)."

Yo con eso, creo entender que no me sirve para contar los pulsos del encoder, ya que estes van a ser cualquier otra cosa menos síncronos con el reloj interno...no me equivoco no??

La opción de hacerlo por interrupciones ya la había barajado, pero esta opción no me parece muy apropiada para el caso. Aunque en el primer post no lo dejé muy claro, con lo de las sugerencias me refería a si conoceis algún micro que tenga por lo menos 2 contadores asíncronos con sus respectivos pines de clock externo; porque si este no me vale, tendré que comprar algún otro PIC con lo que pueda hacer lo que estaba pensando, o dos más "sencillitos" que este, uno para cada rueda (encoder+motor).

De todas formas, muchísimas gracias!

Un saludo, David.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dudas con los temps como contadores en PIC18f458 para leer pulsos de encoders
« Respuesta #3 en: 10 de Marzo de 2007, 03:46:53 »
He descargado el datasheet de ese micro para poder investigar tu duda.

Efectivamente tiene 4 timers con 2 entradas externas diferentes:
- Timer 0: pin T0CKI o internal instruction cicle clock (CLKO)
- Timer 1: pin T13CKI o internal clock (FOSC/4)
- Timer 2: sólo FOSC/4
- Timer 3: pin T13CKI o internal clock (FOSC/4)

¿Y con estos recursos no puedes contar los pasos del encoder?
Si configuras Timer0 y Timer1 para contar pulsos de ambos encoders y configuras Timer2 o Timer3 para que lance una interrupción cada cierto tiempo (dependiente de FOSC/4) no veo la dificultad en saber cuántos pulsos ha recorrido cada encoder.