Control de tres motores paso a paso en C18 con pic 18f2550
Continuando con los programitas de control de Motores PaP, PIC LabView.
Control de 1 Motor PaP en Labview (PIC 16F en ASM)
Control de 2 Motorres PaP en Labview (PIC 16F en ASM)http://electron-i-k.blogspot.mx/2014/07/pic16f628a-espera-los-bytes-de-control.html
ahora para controlar 3 Motores necesito 3 timers!!, de las mimsas caracteristicas, el limite no es el lenguaje,
el ASM es eficiente! se conoce todo lo qeu hace el PIC, en cada momento.
pero para este proyecto, migre a la siguiente gama, la GAMA ALTA de 8bits, los 18F programando en C18.
utilizando el ya conocido 18F2550, aprovechando los 3 Timers de 16bits!!
OBJETIVO:
Controlar 3 motores Paso a Paso cada uno independiente del otro desde el computador.
Al Igual que los Ejemplos anteriores(control de 1 y 2 motores en 16f), el cambio de secuencuia, se ejecutaba gracias a la Interrupcion de un Timer, uno por cada Motor.
en los PICs 18F podemos asignarle prioridades a las Interrupciones, asi una rutina de Alta prioridad puede Interrumpir una de baja prioridad, en eset programa las de baja prioridad son los desbordes de cada uno de los Timers, y de alta la recepción UART.
La imagen lo dice todo:
Programa en Labview:
el VI envía 7 bytes, 6 bytes para los 3 timers(16bits) (2bytes escriben un Timer), mientras que el 7mo indicaba cual o cuales de los motores debe girar y en que sentido(llame a este byte en el registro del PIC Direccion)
Los valores a escribir en los Timer, son los unicos que controlan la el tiempo entre cambio de secuencia del Motor, de este modo a menor el tiempo de cambio de secuencia --> mas rápido gira en Motor, y viseversa.
Tomando en cuenta que escribiendo valores solo para los LSB no hay mucho cambio de velocidad(LSB es un cambio de 256 en comparacion de escribir los MSB mas de 65000),hay 2 VIs, el primero envia los bytes enviados pero desde el Teclado de la computadora y los valores paar los Timers desde 3 Knobs, aveces he tenido problemas con los dispositivos (Teclado,Raton,Jostick etc) me botaba error !wtf?, así que hay otro VI que solo se envian los valores para los Timers mediante Pointers Slides(se pueden apreciar 6, se pueden cargar directamenet los LSB y MSB por individual), los indicadores boleanos(botones)(X+-,Y+-,Z+-) para las direcciones.
ARCHIVOS VI(LabView2012),C,HEX AQUI