Está en la página 1de 10

Interfaces Computacionales y Diseo de Equipos Perifricos

Proyecto Final Antonio Arreola Aguirre 1081870 Edgar Jonathan Jimnez 1130532 Marcos Ignacio Bolaos 1131122

Control de la posicin de una antena por medio de LabView


Introduccin Se implement un control de posicin de una antena por medio de una interfaz grfica elaborada en el ambiente de desarrollo LabView de NI, el control se lleva a cabo por medio de una comunicacin serial emulada por USB desde la interfaz grfica hasta el PIC18F4550, de donde se procesa la informacin recibida y se adapta para el control de un servomotor.

Diagrama a bloques de la implementacin

El servomotor es capaz de moverse en un rango de 0 - 180 con una entrada de PWM a 50Hz variando su ciclo de trabajo de 4 a 12.5%. Esto es, mandando un ciclo de trabajo de .8/20ms se obtiene una posicin de 0 y mandando un ciclo de trabajo de 2.5/20ms se obtiene la posicin de 180.

Interfaz grfica de Labview Se desarroll una interfaz amigable con el usuario capaz de permitirle tener nocin de la direccin de la antena y poderla modificar a gusto teniendo en cuenta la informacin que se le presenta, tal como grados, magnitud y lo que se manda al serial. En cuanto al diagrama a bloques de construccin, se pueden diferenciar 4 etapas:

Diagrama de bloques en LabView

En la etapa 1: se hace la adquisicin de la imagen en la cual se basar el posicionamiento de la antena. La imagen es .bmp en este caso, pero LabView tambin permite utilizar otras extensiones tales como .jpg. Es necesario que una vez establecida la imagen, se ajusten el nmero de pxeles de la imagen establecida, tanto en X como en Y. En la etapa 2: tenemos el control de la imagen por medio de un evento del mouse; en cuanto se presione un botn (click del mouse) se efectuarn todos los dems bloques, tales como el procesamiento, el clculo de datos y el envo serial al PIC. En la etapa 3: se hace un simple procesamiento para obtener los grados y magnitud del posicionamiento seleccionado con el evento para finalmente presentarlo al usuario para que pueda realizar los ajustamientos adecuados. En la etapa 4: slo se hace la adaptacin de datos y la comunicacin serial para el envo de un dato en el rango [0,255] que ser el regulador del PWM.

Cdigo del programa en el PIC El microcontrolador toma el dato del rango [0,255] y lo convierte en un retraso que modificar el ciclo de trabajo del PWM. El mnimo retraso, es de 800ns y el mximo de 2500ns. Se utiliza la emulacin de la comunicacin serial por medio del mdulo USB del PIC utilizado.
#include "D:\Documents\Escuela\PICs\TEC\Projecto\main.h" #define __USB_PIC_PERIF__ 1 #include <usb_cdc.h> #if !defined(__PCH__) #error USB CDC Library requires PIC18 #endif

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN #use delay(clock=48000000) #build(reset=0x000800, interrupt=0x000808:0x000818) #ORG 0x000, 0x07FF{} #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) #if __USB_PIC_PERIF__ && defined(__PCH__) #define USB_CON_SENSE_PIN PIN_B2 #endif int32 adc=0; int32 control = 0; void usb_debug_task(void) {

static int8 last_connected; static int8 last_enumerated; int8 new_connected; int8 new_enumerated; static int8 last_cdc; int8 new_cdc; new_connected=usb_attached(); new_enumerated=usb_enumerated(); new_cdc=usb_cdc_connected(); if (new_connected && !last_connected) printf("USB connected, waiting for enumaration...\r\n\n"); if (!new_connected && last_connected) printf("USB disconnected, waiting for connection...\r\n\n"); if (new_enumerated && !last_enumerated) printf("USB enumerated by PC/HOST\r\n\n"); if (!new_enumerated && last_enumerated) printf("USB unenumerated by PC/HOST, waiting for enumeration...\r\n\n"); if (new_cdc && !last_cdc) { printf("Serial program initiated on USB<->UART COM Port\r\n\n"); printf(usb_cdc_putc, "\r\n\nCCS CDC (Virtual RS232) Example\r\n\n"); } last_connected=new_connected; last_enumerated=new_enumerated; last_cdc=new_cdc; } void main() { char c=0; setup_adc_ports(AN0|VSS_VDD); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_wdt(WDT_OFF); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); //Setup_Oscillator parameter not selected from Intr Oscillotar Config tab #ifdef __PCH__ printf("PCH: v"); printf(__PCH__); #else printf("PCM: v"); printf(__PCM__);

#endif printf("\r\n"); usb_init_cs(); #if !(__USB_PIC_PERIF__) printf("USBN: 0x%X", usbn_get_version()); printf("\r\n\n"); #endif // TODO: USER CODE!! set_adc_channel(0); while(True){ usb_task(); usb_debug_task(); if(usb_cdc_kbhit()) { c=usb_cdc_getc(); usb_cdc_putc(c); }

//Se necesita para arrancar el USB

//Si hay un dato en el USB entra a este if //Se lee el dato presente en el USB //Para ver que el dato que se mando se recibio correctamente control = c*1700/255; //Se usa una regla de 3 para ajustar la escala delay_us(19300-control); //Tiempo que dura en bajo output_high(pin_a1); delay_us(800+control); //600us min high 2400 max high output_low(pin_a1);

} }

Esquemtico utilizado para la simulacin

El servomotor El servomotor utilizado es un HS-311, el cual trabaja a una frecuencia de 50Hz. Tiene un rango de trabajo de [0,180] modificable a 360. Su alimentacin til es de [4.8-6] V con un promedio de 170mA de consumo de corriente en movimiento y 7.7mA en estado estacionario. Con la alimentacin de 4.8V tiene un torque de 3kg/cm y con 6V es de 4.5kg/cm. Es bidireccional y se utiliza para control de posicin principalmente.

Imagen del servomotor.

Diagrama de movimiento angular de acuerdo al ciclo de trabajo Resultados

Implementacin real

a)

b)

c)

a) Posicionamiento en la interfaz grfica 4 b) El motor en su posicin 4 c) Salida del PWM del microcontrolador ~2500ns

a)

b)

c)

a) Posicionamiento en la interfaz grfica 90 b) El motor en su posicin 90 c) Salida del PWM del microcontrolador ~1700ns

a)

b)

c)

a) Posicionamiento en la interfaz grfica 173 b) El motor en su posicin 173 c) Salida del PWM del microcontrolador ~800ns

Conclusiones: Este proyecto cumpli con las expectativas de un proyecto para calificacin final de la materia, ya que utilizamos gran parte de lo aprendido durante el curso, como fue poder programar el microcontrolador sin necesidad de estarlo quitando del protoboard y por medio del puerto usb. La prctica resulto muy sencilla porque se tenan muy buenos conocimientos de lo que se requera y el labview fue de mucha ayuda para implementar nuestra interfaz. El principal problema para concluir el proyecto fue que el servo motor no llegaba, pues ya se tenan funcionando interfaz y cdigo, por lo que solo era necesario el motor para hacer las pruebas finales. En general el curso fue muy interesante ya que se implementaron varias prcticas que ampliaron nuestro conocimiento.