Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola buenas,
he comprado dos unidades del motor EMG30, son dos motores de cc con un encoder en cuadratura por efecto hall.
Por diferencias entre las especificaciones que daban en las distintas webs, no tenía clara la cantidad de pulsos por vuelta que da el sensor.
Resulta que finalmente da 360 pulsos por vuelta, por lo cual, aun a una velocidad baja, da una cantidad de pulsos por segundo muy elevada. Hasta el punto de que no soy capaz de medir el tiempo entre dos flancos de subida con un PIC18F4550 a 48MHz. Ni utilizando la interrupción interna, ni el módulo de capture.
¿A alguien se le ocurre como poder medir la señal externamente? he de hacer un control en velocidad bastante preciso, pero como no puedo medir la velocidad a la que gira la rueda, me resulta imposible.
Un saludo y muchas gracias!
Cual es la frecuencia que te da?
Lo digo porque me parece muy raro. Metiendo la señal por la entrada del Timer0 con un preescaler elevado (1:256) y los 16bits de operación puede dar para mucho (50MHz según el datasheet).
S2
Ranganok Schahzaman
Tu solución es muy fácil (creo yo). Y no es más que colocar entre los pulsos y el pic un simple contador, éste saltará cada 10 pulsos del motor (por ejemplo), y así podrás capturarlo con el PIC. Me imagino que luego un contador normal sí que será capaz de captar los pulsos (casi con total seguridad) y no cuestan nada.
Un saludo
Luison, con esa solución estaría reduciendo la resolución del encoder a 36 pulsos por vuelta, no?? lo cual también implicaría menor precisión en el control...
A qué velocidad de giro empiezas a perder pulsos?
un saludo
Me da la impresión que tu problema no está relacionado con la capacidad del PIC. Ranganok te ha dado una solución.
Piensa que aunque sean 360 pulsos por vuelta, imaginate que consigues ir a 10 m/s (es una burrada) con una rueda de 5 cm de diametro, pues con esto tendrías una frecuencia apróximada de 24 Khz o algo así como 40 uS. El Pic que tienes seguro que ejecuta una instrucción cada 0.1 uS, osea puedes ejecutar 400 instrucciones en cada pulso (y eso que estamos poniendo una burrada, que lo más probable en la práctica es que puedas ejecutar más de 1000 instrucciones)
Bueno que no creo que ese sea tu problema. En principio te recomedaría que analizases la señal que tienes a la salida, calidad, potencia, etc en OC y luego cuando se la conectas al PIC, es probalbe que se te deteriore bastante y eso es lo que te imposibilite medir los pulsos correctamente. O tengas un error en el SW, 🙂 que también suele ser muy probable y esto te lo digo por experiencia.
Saludos.