Juanma
Te aconsejo que le des una mirada a esto:
http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf
Yo estuve haciendo un driver basado en pic con comunicacion serial a un master controller. Basicamente cada driver era:
- Micro, bien chico, no recuerdo ahora si use 12F675 o 16F628, probablemente este ultimo.
- Un flip flop 74LS74 asociado a unos capacitores para filtrar posible ruido de encoder.
- Electronica de potencia para el motor DC
Con esto logre mover los motores DC + encoder optico (rueda con rayas) de una impresora EPSON.
Lo interesante de la application note es como usa los timers del micro en modo externo para contar los ticks.
En mi driver (que lo hice funcionar pero no lo termine) podias hacer girar con precision X pasos para cualquier lado, liberar, enclavar, etc.
Habia un par de trucos:
- En la electronica de potencia (puente H), tenia 1 señal de enable, si la desactivo no hay corriente al motor
- Si enable estaba activada, la señal de pwm funcionaba asi: 1=hacia la derecha; 0=hacia la izquierda
- Entonces, si queria enclavar el motor, ponia un pwm 50% de duty.
- Si queria girar hacia un lado, ponia un pwm con duty proporcional a la velocidad. 50% era el punto medio y 0-50 es para un lado, 50-100 es para el otro.
En el software, tenia ordenes que venian por una red RS-232 como "motor A muevase X cantidad de pasos en tal direccion" entonces el soft calculaba rampa de aceleracion-meseta-frenado.
El frenado (o desaceleracion) es importante porque si no lo haces no hay forma que la inercia no te gane y hagas "pasos" de mas.
Lo mas complejo para el caso de CNC o plotter es cuando tenes un movimiento coordinado de dos ejes a la vez. No es tan controlable como un stepper pero desde el protocolo serial se le podia enviar a los motores un comando que involucra un solo paso, obviando aceleracion meseta y frenado.
En ese caso, se comportan como steppers pero repito, se pone bien complejo de controlar corriente, pwm, etc. Tene en cuenta los movimientos combinados en tu diseño.
Una forma de solucionarlo es que el soft haga una rampa creciente de corriente hasta que se detecte que cambio un tick en el encoder. Y ahi lo frenas.
Espero que la descripcion te sirva