miércoles, agosto 14, 2013
2
PIC16F628A espera los bytes de control para cada uno de los Motores X e Y, enviados desde Labview en la PC, programa para PIC escrito en ASM.


Objetivo:
Controlar parámetros por Individual de 2 Motores MotorX y MotorY:
  1. Velocidad de cada uno de los Motores
  2. Sentido de Giro de cada uno de los Motores
  3. En que momento deben Girar y cuando deben estar detenidos,esto es controlado con las teclas de direccion del teclado



Jugando con las Funciones de INPUT DEVICE CONTROL



Se pueden hacer VIs que recivan datos tanto del Teclado o el Ratón como pueden ser, que tecla esta siendo presionada en caso del teclado, en caso del raton se puede saber en que posición exacta se encuentra en puntero del Raton, las coordenadas propias en X e Y de la resolución de Pantalla.

El diagrama de Bloques General:


el SubVI "ONESHOT" envia un 1 boleano solo cuando cambia el valor de cualquier Elemento en el Panel de Control(Especialmente los de Velocidad y Deteccion de Tecla presionada)

Simulación en ISIS-Proteus:


Ambos Motores deben ser iguales, para que tengan el mismo alcance velocidad, torque etc.
como también las Temporizaciones entre cada cambio de secuencia, lo cual se implemento con Interrupciones de Timer0 y Timer1:

IGUALANDO TEMPORIZACION, TIMER0 Y TIMER 1:

Timer0 es de 8 bits y el Timer1 de 16bits, para equilibrar la cuenta, ya que Labview envía UNO SOLO BYTE POR TIMER que contiene el valor del timer para cierta temporizacion.

Recordar:
  1. Temporizacion Timer0 = Tcy x Prescalador x (256-TRM0)
  2. Temporizacion Timer1 = Tcy x Prescalador x (65536-TRM1)
debemos degradar el Timer1 de 16BITS al nivel de trabajo del Timer0 de 8BITS

Preescalador Timer0=256, Preescalador Timer1=1

siendo VelocidadX,VelocidadY bytes enviados para escribir el Timers 0 y Timer1 por individual

Timer0=Tcy x  256 x (256-VelocidadX)
Timer1=Tcy x  1 x (65536-256 x VelocidadY)

con esto, la temporizacion de cada Timer es la misma para cada VelocidadX y VelocidadY .

Controlamos Timer0 como es de costumbre, pero con Timer1 cuando hay que actualizar el contador se debe chancar TMR1L con 0xFF directamente, y TMR1H con el valor Velocidad respectivo.


ARCHIVOS: ASM,Hex,Sim Proteus,VI Labview2012 AQUI

Continuación: 

2 comentarios: