INDICE Contenido INDICE................................................... 1 I. OBJETIVOS............................................. 1 II. INTRODUCCION.......................................... 3 III. ESPECIFICACIONES TÉCNICAS DEL PROYECTO EN FORMA COMPLETA................................................. 4 ETAPAS DEL BRAZO ROBOT..................................5 Interfaz de usuario.....................................5 Control de movimiento...................................6 INTERFAZ DE POTENCIA....................................7 SELECCIÓN DE COMPONENTES................................8 PIC 18F4550.............................................9 MOTORES PASO A PASO (PAP) UNIPOLARES DE 12V............10 Dimensiones físicas (mm)...............................11 IV. DIAGRAMA DE BLOQUE COMPLETO DEL SISTEMA HARDWARE Y SOFTWARE................................................ 12 DIAGRAMA ESQUEMATICO...................................13 V. MORFOLOGIA DEL SISTEMA...............................14 PLANOS.................................................14 ESTRUCTURA MECÁNICA....................................15 MODO DE TRANSMISIÓN....................................15 INTERFACE USB..........................................16 ETAPA DE POTENCIA......................................16 CNC IMPLEMENTADO.......................................17 VI. SOFTWARE INSTALACION, CONFIGURACION, ALGORITMOS DE CONTROL, EJECUCION NORMAL MANUAL Y TAREAS...............18 IMPLEMENTACION DE INTERFAZ ELECTRONICA.................18 PROGRAMA EN VISUAL BASIC...............................19 PROGRAMA PIC 18F4550...................................24
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
VI. SOFTWARE INSTALACION, CONFIGURACION, ALGORITMOS DE CONTROL, EJECUCION NORMAL MANUAL Y TAREAS......................................................................18
IMPLEMENTACION DE INTERFAZ ELECTRONICA........................................................18
PROGRAMA EN VISUAL BASIC....................................................................................19
PROGRAMA PIC 18F4550...........................................................................................24
VII. TAREAS PREESTABLECIDAS.................................................................................29
VIII. APORTES Y APLICACIONES EN GENERAL.........................................................29
IX. CONCLUSIONES...................................................................................................30
namespace WindowsFormsApplication1{ public partial class USB_FORM : Form {
/***************************************************/// Variables definidas por el usuario. UInt32 controlador;/***************************************************/
public USB_FORM() { InitializeComponent(); MENSAJE_TOOL.SetToolTip(this.HABILITADOR, "Botón que habilita la salida de las coordenadas (X;Y)"); MENSAJE_TOOL.SetToolTip(this.CONECTAR_DISPOSITIVO, "Botón que nos permite enlazar el dispositivo al controlador."); MENSAJE_TOOL.SetToolTip(this.MENSAJES_USB, "En esta ventana van apareciendo los diferentes sucesos ocurridos en la aplicación."); MENSAJE_TOOL.SetToolTip(this.SALIR, "Botón para salir del programa"); }
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
EasyHID.Disconnect(); }
private void Dispositivo_Conectado(UInt32 handle) { if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID) { // Si el handler ha encontrado un dispositivo conectado... EasyHID.SetReadNotify(handle, true); // Activa el sistema de notificaciones.
private void Lee_datos(UInt32 In_handle) { byte[] BufferINP = new byte[EasyHID.BUFFER_IN_SIZE]; // Declaramos el buffer de entrada. if ((EasyHID.Read(In_handle, out BufferINP)) == true) // Si hay datos, los procesamos... { // Según se haya presionado un pulsador, indicará el evento de forma gráfica. } }
protected override void WndProc(ref Message message) { // Interceptamos los mensajes de windows.
20
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
if (message.Msg == EasyHID.WM_HID_EVENT) // Si ha ocurrido algún evento... { switch (message.WParam.ToInt32()) // Intercepta el mensaje y opera según el valor recibido.... { case EasyHID.NOTIFY_PLUGGED: Dispositivo_Conectado((UInt32)message.LParam.ToInt32()); // Se ha conectado un dispositivo. break; case EasyHID.NOTIFY_UNPLUGGED: Dispositivo_desconectado((UInt32)message.LParam.ToInt32()); // Se ha desconectado un dispositivo. break; case EasyHID.NOTIFY_READ: Lee_datos((UInt32)message.LParam.ToInt32()); // Hay datos en el buffer de entrada. break; } } base.WndProc(ref message); }
EasyHID.Write(controlador, BufferOUT); // Envía los datos. MENSAJES_USB.Items.Add("Enviando coordenadas (X;Y)");
}
21
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
private void timer1_Tick(object sender, EventArgs e) { statusStrip1.Items[0].Text = DateTime.Now.ToLongTimeString(); } private void salirToolStripMenuItem_Click(object sender, EventArgs e) { EasyHID.Disconnect(); this.Close(); } private void manualDeUsuarioToolStripMenuItem_Click(object sender, EventArgs e) { try { // Tratamos de abrir el manual de control de dispositivos USB. Process.Start("Control de dispositivos por USB.pdf"); } catch(Win32Exception) { // En caso de no poder, mostramos un mensaje. MessageBox.Show("No se encuentra el archivo \"Control de dispositivos por USB.pdf\". \n" + "asegurate que el nombre es correcto y/o se \n" + "encuentra en la misma ubicación que la aplicación.\n","Aviso:" , MessageBoxButtons.OK, MessageBoxIcon.Warning); } } private void acercaDeHIDDemoToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("USB visual C# HID \n\n" + "Autor:\n\tCristian Canaza\n\tMax Santos\n\tRusbel Sulca.\n" + "Contacto:\n\[email protected]\n\[email protected]\n\[email protected].\n" + "Licencia: FREEWARE. \n", "Acerca de USB visual C# HID Demo:", MessageBoxButtons.OK, MessageBoxIcon.Information);
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
PROGRAMA PIC 18F4550
//Declaramos las librerias para el PIC, caracteristicas y reloj#include <18F4550.h>#fuses NOMCLR,HSPLL,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN,NOBROWNOUT#use delay(clock=48000000) //48MHz
//Definimos lass direcciones de los puertos para el PIC#byte PORTA = 0xF80#byte PORTB = 0xF81#byte PORTC = 0xF82
//Definimos los pines para los leds indicadores de conexion#define LED_GREEN PIN_C6 // Led USB_OK...( Dispositivo conectado al host ).#define LED_RED PIN_C7 // Led USB_ERROR... ( Dispositivo no detectado ).///////////////////////////////////////////////////////////////////////////////// CCS Library dynamic defines. For dynamic configuration of the CCS Library// for your application several defines need to be made. See the comments// at usb.h for more information///////////////////////////////////////////////////////////////////////////////#DEFINE USB_HID_DEVICE TRUE // Vamos a utilizar el protocolo HID.#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT #define USB_EP1_TX_SIZE 8 // Definición del tamaño del buffer de salida.#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT #define USB_EP1_RX_SIZE 8 // Definición del tamaño del buffer de entrada.
//Incluimos las librerias de trabajo para el comunicaoion HID con el PIC y la PC #include <pic18_usb.h>#include <USB_easyHID_descriptores.h>#include <usb.c>//Usamos las I/O rapidas#use fast_io(A)#use fast_io(B)#use fast_io(C)
//Definimos los nombres de los bits a usar del puerto B #bit pap0 = PORTB.0
24
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
#bit pap1 = PORTB.1#bit pap2 = PORTB.2#bit pap3 = PORTB.3#bit pap4 = PORTB.4#bit pap5 = PORTB.5#bit pap6 = PORTB.6#bit pap7 = PORTB.7//Definimos las funciones para encender el LED#define LED_ON output_high // Función para encender el LED.#define LED_OFF output_low // Función para apagar el LED.
//Definimos las funciones de los LEDs al momento de la conexion USBvoid USB_debug(){ LED_ON(LED_RED); // Enciende el led error y apaga el led USB_OK. LED_OFF(LED_GREEN); usb_wait_for_enumeration(); // Espera a ser enumerado por el host. LED_ON(LED_GREEN); // Enciende el led USB_OK y apaga el led USB_ERROR. LED_OFF(LED_RED); }
//Cuerpo principal de las funcionesvoid main(){ //Declaramos los variables a usar int8 recibe[8]; // Buffer de recepción vía usb int8 envia[8]; // Habilitar en caso de necesitar int pasoa; int pasob; int pasoc; int pasod; int timex; int timey; int x=0; int y=0; int j=0; int k=0; int l=0; int m=0; int nuevovalorx=0; int nuevovalory=0; //Declaramos como salidas los puertos set_tris_a(0x00); set_tris_b(0x00); set_tris_c(0x00); //Valor inicial a los puertos PORTA=0x00; PORTB=0x00; port_b_pullups(FALSE); //pull ups desactivado
25
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
//Programacion en la comunicacion USB usb_init(); //inicializamos el USB usb_task(); //habilita periférico usb e interrupciones USB_debug(); //verificamos si la conexion fue enumerada while (TRUE) //bucle infinito { if(usb_enumerated()) //si el PicUSB está configurado { if (nuevovalorx==x || nuevovalory==y) //establecemos el tiempo entre pasos {timex=1000;timey=1000;} else {timex=100;timey=100;} if (nuevovalorx>x) //Ubicamos la coordenada X { j++; if (j>1){x++;j=0;} //Numero de pasos al que equivale un milimetro switch(pasoa) { case 0: pap0=1;pap1=0;pap2=0;pap3=0;delay_ms(timex);pasoa=1;pasob=3; break; case 1: pap0=0;pap1=1;pap2=0;pap3=0;delay_ms(timex);pasoa=2;pasob=2; break; case 2: pap0=0;pap1=0;pap2=1;pap3=0;delay_ms(timex);pasoa=3;pasob=1; break; case 3: pap0=0;pap1=0;pap2=0;pap3=1;delay_ms(timex);pasoa=0;pasob=0; break; } } else { if (nuevovalorx<x) { k++; if (k>1){x--;k=0;}
26
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
switch(pasob) { case 0: pap0=0;pap1=0;pap2=0;pap3=1;delay_ms(timex);pasob=1;pasoa=3; break; case 1: pap0=0;pap1=0;pap2=1;pap3=0;delay_ms(timex);pasob=2;pasoa=2; break; case 2: pap0=0;pap1=1;pap2=0;pap3=0;delay_ms(timex);pasob=3;pasoa=1; break; case 3: pap0=1;pap1=0;pap2=0;pap3=0;delay_ms(timex);pasob=0;pasoa=0; break; } } else {pap0=0;pap1=0;pap2=0;pap3=0;} } //endelse if (nuevovalory>y) //Ubicamos la coordenada Y { l++; if (l>10){y++;l=0;} //Numero de pasos al que equivale un milimetro switch(pasoc) { case 0: pap4=1;pap5=0;pap6=0;pap7=0;delay_ms(timey);pasoc=1;pasod=3; break; case 1: pap4=0;pap5=1;pap6=0;pap7=0;delay_ms(timey);pasoc=2;pasod=2; break; case 2: pap4=0;pap5=0;pap6=1;pap7=0;delay_ms(timey);pasoc=3;pasod=1; break; case 3: pap4=0;pap5=0;pap6=0;pap7=1;delay_ms(timey);pasoc=0;pasod=0; break; } }
27
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
else { if (nuevovalory<y) { m++; if (m>10){y--;m=0;} switch(pasod) { case 0: pap4=0;pap5=0;pap6=0;pap7=1;delay_ms(timey);pasod=1;pasoc=3; break; case 1: pap4=0;pap5=0;pap6=1;pap7=0;delay_ms(timey);pasod=2;pasoc=2; break; case 2: pap4=0;pap5=1;pap6=0;pap7=0;delay_ms(timey);pasod=3;pasoc=1; break; case 3: pap4=1;pap5=0;pap6=0;pap7=0;delay_ms(timey);pasod=0;pasoc=0; break;
}
} else {pap4=0;pap5=0;pap6=0;pap7=0;} } //endelse if (usb_kbhit(1)) //Preguntamos si el endpoint EP1 contiene datos enviados por el host { usb_get_packet(1, recibe, 8); // Recibimos los 2 bytes de ambas coordenadas (x,y) nuevovalorx= recibe[1]; nuevovalory= recibe[2]; } } }}
28
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
VII. TAREAS PREESTABLECIDAS
Las tareas preestablecidas pueden ser algún dibujo o alguna forma que pueda hacerse
con el taladro, ya sea taladrar los vértices de un semicirciculo, o de algún polígono
regular (con esto se puede poner a prueba la precisión del sistema), o también hacer
que el taladro vaya punto por punto en progresión aritmética o geométrica, son
muchas las formas.
VIII. APORTES Y APLICACIONES EN GENERAL
Aparte de aplicarse en las máquinas-herramienta para modelar metales, el CNC se usa
en la fabricación de muchos otros productos de ebanistería, carpintería, etc. La
aplicación de sistemas de CNC en las máquinas-herramienta han hecho aumentar
enormemente la producción, al tiempo que ha hecho posible efectuar operaciones de
conformado que era difícil de hacer con máquinas convencionales, por ejemplo la
realización de superficies esféricas manteniendo un elevado grado de precisión
dimensional. Finalmente, el uso de CNC incide favorablemente en los costos de
producción al propiciar la baja de costes de fabricación de muchas máquinas,