Hola!
Les cuento que estoy intentando hacer, y que problemas tengo, a ver si me dan alguna idea de para donde tengo que encarar:
Estoy controlando la velocidad de motores de CC, de 12V, entre 1000 y 4500 RPM, mediante pulsos PWM generados por un PIC, y aplicados a un mosfet que es el que controla el motor.
Debido a que los motores tienen pqueñas diferencias entre si, hay un sensor hall que detecta el paso de un iman cada vuelta y entrega ese pulso a travez de CD4093 al PIC.
Todo eso funciona ok.

El PIC cuenta el tiempo que hay entre una vuelta y la siguiente, basandose en el pulso del hall, y ajusta el duty cicle (1000 hz, 8 bits) para acelerar o frenar el motor para que llegue a la velocidad deseada.
Hay un problema: no logro mejores resultados que una diferencia de 100 o 200 RPM entre un motor y otro. Si bien es un error mas o menos aceptable, el PIC deberia hacerlo mejor que eso.

No se trata de un tema de soft (creo) ya que si cambio los motores de placa (en este momento tengo 3 placas y tres motores andando) el que giraba mas lento sigue girando mas lento aunque este en otra placa.
Si le pido 1500 RPM, obtengo (por ejemplo) 1420, 1510 y 1560
Si le pido 2500 RPM, obtengo (por ejemplo) 2500, 2550, 2460
Como ven, no siempre el motor mas rapido lo es en todas las velocidades...aunque si los cambio entre si, y vuelvo a pedir 2500 RPM, cada uno gira a las que giraba antes del cambio. Evidentemente, se trata de algun problema del motor.....que deberia ser compensado por el PIC, mediante el duty.
A lo mejor no soy muy claro, pero hace 3 dias que estoy metido con esto y siento que no avanzo nada....por eso me decidi a pedir socorro.

Gracias de antemano.