informe final arquitectura
Post on 19-Jan-2016
36 Views
Preview:
TRANSCRIPT
INDICE
ContenidoINDICE..............................................................................................................................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
VII. TAREAS PREESTABLECIDAS.................................................................................29
VIII. APORTES Y APLICACIONES EN GENERAL.........................................................29
IX. CONCLUSIONES...................................................................................................30
X. BIBLIOGRAFIA:.......................................................................................................31
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
I. OBJETIVOS
Conocer las interfaces de entrada y salida de la Pc y la manera de interactuar
con otros dispositivos (USB).
Desarrollar aplicaciones con el PIC 18F4550, usando entradas y salidas
Desarrollar el algoritmo para el control de 2 motores unipolares
Construir un Brazo puntero Ubicación semicírculo de 150 mm de radio capaz de
realizar un mínimo de 3 secuencias de trabajo con un margen de error de 1mm.
Desarrollar una interfaz en la computadora para el manejo del Brazo puntero
Ubicación semicírculo de 150 mm de radio.
II. INTRODUCCION
2
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
El diseño del sistema de control para el brazo robot de dos grados de libertad se
dividió en tres partes: una etapa de interfaz de usuario, encargada de interactuar con
el usuario mediante un computador personal y comunicarse con la etapa del
controlador; la cual, se encarga de recibir del computador personal los valores de
trayectoria ingresados por el usuario y generar las señales de control necesarias para
accionar los actuadores encargados de realizar el movimiento, así como de recibir
información de los sensores acoplados al sistema; y por último una etapa de interfaz
de potencia, encargada de recibir las señales de control generadas por el
microcontrolador, llevándolas a los niveles de potencia adecuados para los actuadores.
III. ESPECIFICACIONES TÉCNICAS DEL PROYECTO EN FORMA COMPLETA.
3
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
El desarrollo del brazo robot manipulador comprende diferentes áreas de trabajo,
siendo estas la interfaz final de usuario, el control del movimiento, la interfaz de
potencia y el diseño mecánico.
La función principal de la interfaz de usuario es de recibir los datos de entrada por
parte del operario, en este caso equivalen a los movimientos del brazo robot, y
transmitirlos como datos numéricos hacia el sistema de control del brazo robot. Para
desarrollar el programa se utilizará el lenguaje Visual C shart, debido a que tiene la
capacidad de programar entornos gráficos fácilmente. Esto permite que el programa
sea capaz de realizar una gran cantidad de cálculos matemáticos (como por ejemplo el
cálculo de las posiciones del brazo robot) y operaciones en tiempo real.
El control de movimiento es de suma importancia, puesto que se puede obtener un
control del manipulador acorde a nuestros requerimientos para así cumplir con el
objetivo, que es la realización de trazos sobre un plano tamaño A3.
El diseño de la interfaz de potencia hará el enlace entre el control digital y los
actuadores. La elección de los actuadores se hace en base a los requerimientos de
precisión y de fuerza, incluyendo también mecanismos de protección para los
dispositivos.
Los motores a pasos constituyen una elección apta para el trabajo de manipuladores
debido a la precisión de sus movimientos y a la simplicidad de la interfaz de control.
Aunque presentan la desventaja de un menor torque comparado con otros motores de
corriente continua. Por este motivo se seleccionaron motores de ambos tipos para
esta aplicación: en un eje se utiliza un motor a pasos, donde la precisión y el torque lo
permiten; y en el otro eje se utiliza un motor de corriente continua, en donde el
requerimiento de torque es mayor.
La etapa de adaptación de señales de control implica el manejo de voltajes y corrientes
elevadas para ambos motores. Esto se puede lograr utilizando transistores de potencia
tipo Darlington para el motor a pasos, debido a su flexibilidad de rango de trabajo con
estos parámetros y a la simplicidad en el diseño de su circuito de control, además se
encuentran disponibles en el mercado local a bajo costo. Además se utilizan
transistores MOSFET para el diseño del circuito excitador del motor de corriente
continua, debido a la facilidad de manejo de estos dispositivos en la configuración
4
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
utilizada y al mayor rango de trabajo en comparación con otros tipos de transistores.
Sin embargo se deben tener en cuenta las características no deseadas que presentan
estos dispositivos para poder evitar su malfuncionamiento y los límites de trabajo de
cada uno.
ETAPAS DEL BRAZO ROBOT
Ya que la implementación del presente proyecto presenta una alta complejidad, se ha
decidido dividir del desarrollo del robot manipulador en tres etapas principales:
Interfaz de usuario, control de movimiento e interfaz de potencia. La interacción entre
dichas partes se aprecia en la figura 1.
Interfaz de usuario
La interfaz de usuario consiste en una aplicación, programada por medio del lenguaje
Visual C shart para que el usuario sea capaz de introducir a la computadora los
movimientos que desea que el robot manipulador realice.
Con la finalidad de que la programación del robot manipulador sea lo más simple
posible, se desarrollará una interfaz gráfica que interactúe de forma amigable con el
usuario. Esta le mostrará al usuario el estado de las variables del robot manipulador
por medio de una simulación y permitirá el ingreso de datos de forma fácil y directa.
Adicionalmente, si el usuario desea saber los valores numéricos de las variables de
estado, puede acceder a estos datos por medio de una ventana que se activará cuando
el usuario lo desee.
El objetivo del robot manipulador solo será el trazar líneas rectas entre dos puntos
dentro de un área de trabajo. Una vez que se tienen el punto inicial y el punto final del
movimiento deseado, se determinan los puntos intermedios entre el inicial y final, los
cuales son almacenados en el programa. Una vez obtenidos estos puntos, por medio
de cálculos geométricos se obtienen los ángulos relativos deseados en las uniones en
cada punto respectivamente.
5
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
Estos ángulos se distribuyen en el tiempo para formar una función discreta de la
trayectoria deseada.
Una vez que se tiene la función discreta, el programa halla la función continua de las
variables que definen el movimiento del brazo robot. Adicionalmente, el usuario debe
ser capaz de visualizar las gráficas de las funciones. Para enviar los datos al programa
del controlador, se utilizará el puerto USB.
Además, el programa realizará una simulación gráfica del movimiento del robot. En
esta simulación se observarán dos vistas del robot, la lateral y la horizontal. De esta
forma el usuario podrá visualizar el movimiento del robot manipulador en la
computadora antes de que se ejecute la acción. Una ventaja de Visual, es que tiene
una serie de instrucciones que permiten realizar gráficos simples en la ventana de la
aplicación por medio de líneas de código. De esta forma, utilizando las variables de
estado de robot (posiciones de las uniones) se puede realizar una simulación del robot.
Esta gráfica se actualiza cada vez que una variable cambia, dándole la ilusión de
movimiento. También en la simulación se visualizarán los puntos en donde el efector
final está en contacto con el área de trabajo.
Control de movimiento
Como se mencionó anteriormente, la etapa de control de movimiento será la
encargada de controlar el movimiento de cada motor para así lograr el movimiento
deseado del sistema y del efector final. Para ello esta etapa recibirá los datos
calculados por la interfaz de usuario en la computadora que le indicará las trayectorias
a seguir. Empleando estos datos como referencia, el sistema de control deberá calcular
la cantidad de movimiento requerida para cada motor y luego traducirá esto a
secuencias coordinadas que serán enviadas a la etapa de potencia.
Las secuencias generadas por el controlador serán enviadas a la tarjeta de potencia,
que se encargará de elevar los niveles de voltaje y corriente y de convertir estos
niveles lógicos a los voltajes y corrientes requeridos por los motores para así producir
el movimiento mecánico deseado.
Para realizar todas estas funciones se propone el uso de un microcontrolador, y puesto
que la velocidad no es un factor fundamental en este proyecto, se pueden reducir
costos al emplear un microcontrolador que tenga además un convertidor analógico
6
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
digital incorporado, ya que no es necesario que los tiempos de conversión sean muy
pequeños. El microcontrolador debe además contar con las suficientes salidas para
lograr el control de los motores y la posibilidad de comunicarse con una computadora
personal para la recepción de los datos generados por el programa de usuario.
INTERFAZ DE POTENCIA
La interfaz de potencia consiste en una serie de dispositivos que en su funcionamiento
conjunto serán capaces de controlar los actuadores finales, en este caso los motores
de cada eje del brazo robot manipulador. Para ello tendrá comunicación directa con la
etapa del controlador, la cual será su fuente de señales. Éstas señales, al ser incapaces
de brindar energía suficiente a los motores, serán adaptadas a señales de mayor
energía que sí puedan alimentarlos.
Previamente a la etapa de selección de dispositivos a usar y al diseño mismo de la
interfaz, se deben elegir los motores adecuados al trabajo en el brazo manipulador. De
acuerdo a la exigencia de cada eje en cuanto a torque, cada motor requerirá mayor o
menor dimensión. Esto influirá drásticamente en el diseño, en especial en la etapa de
selección de dispositivos, por lo tanto se debe realizar de manera correcta la elección
para evitar sobredimensionar los motores.
También es objetivo de la interfaz proteger todos los dispositivos de la misma y
también de la etapa del controlador. Al manejar la interfaz potencias más elevadas que
el resto del sistema existe el riesgo que estas afecten y dañen componentes de las
otras etapas, por tanto el aislamiento es requisito indispensable. También debe
implementarse protecciones para los mismos dispositivos de la interfaz, teniendo en
cuenta que se trabajará con motores.
Otro objetivo importante es la comunicación de los sensores de posición con la etapa
de controlador, ya que éstos estarán ubicados en los motores, es conveniente que la
misma interfaz de potencia sea la encargada de transmitir la señal de los mismos al
controlador.
Se propone el uso de motores a pasos para el trabajo en el eje vertical, dado su fácil
control y su precisión en movimiento angular, ya que pueden mantener una posición
angular deseada. Para el movimiento del en el eje horizontal se propone el uso de un
motor de corriente continua de imán permanente, debido al mayor requerimiento de
7
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
torque. Para su control se propone un diseño en base a transistores MOSFET, pues son
de fácil activación y permiten, en determinada configuración, el manejo de corriente
en ambos sentidos y son capaces de soportar potencias bastante elevadas, suficientes
para la aplicación actual.
SELECCIÓN DE COMPONENTES
El Proyecto Brazo puntero Ubicación semicírculo, tiene:
o 2 ejes para el posicionamiento de un taladro (puntero) que mediante una
coordenada preestablecida por computadora, posiciona este taladro y perfora
en los lugares indicados, con una precisión de 1 mm, se puede perforar en
cualquier coordenada que se le indique.
o El sistema en cuanto a hardware se compone de los siguientes elementos:
PIC18F4550 (1)
MOSFET IRF540N (8)
MOTORES PASO A PASO (2) Se utilizan para darle la precisión y
llegar a la coordenada indicada.
Tensión de 5-24 VDC
Corriente de 1.6 A
Torque 400mN/m
Peso de 500, 450, 250 gramos respectivamente
PIC 18F4550
Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip
Technology Inc. y derivados del PIC1650
8
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
Características:
CARACTERÍSTICAS PIC18F4550
Frecuencia de Operación Hasta 48MHz
Memoria de Programa (bytes) 32.768
Memoria RAM de Datos (bytes) 2.048
Memoria EEPROM Datos (bytes) 256
Interrupciones 20
Líneas de E/S 35
Temporizadores 4
Módulos de Comparación/Captura/PWM (CCP) 1
Módulos de Comparación/Captura/PWM mejorado
(ECCP)1
Canales de Comunicación Serie MSSP.EUSAR
Canal USB 1
Puerto Paralelo de Transmisión de Datos (SPP) 1
Canales de Conversión A/D de 10 bits 13 Canales
Comparadores analógicos 2
Juego de instrucciones 75 (83 ext.)
EncapsuladosPDIP40 pines QFN 40
pines TQFP 40 pines
9
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
Diagrama de pines PIC18F4550
Algunas de estas características se muestran a continuación:
Soporta modo de comunicación serial, posee dos pines para ello.
Amplia memoria para datos y programa.
Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este
tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el
modelo).
Set de instrucciones reducidas (tipo RISC), pero con las instrucciones necesarias para
facilitar su manejo.
MOTORES PASO A PASO (PAP) UNIPOLARES DE 12V
Este motor PAP unipolar cuenta con un conector de cinco terminales, cuatro de los cuales
corresponden a las bobinas y el quinto se utiliza para la conexión de la fuente de
alimentación de 12V. Incorpora un mecanismo reductor de velocidad (esto incrementa
enormemente su fuerza), lo que hace necesario ejecutar una cantidad bastante grande de
pasos para obtener un movimiento apreciable del eje externo (ver ejemplo de
programación). Es un motor de bajo costo y puede ser utilizado en múltiples proyectos
tanto básicos como avanzados.
10
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
Dimensiones físicas (mm)
Nota: d=diámetro
Realizar un control de giro de un motor PAP unipolar de 12V por medio de un PIC16F628A
y un driver L293D, de tal forma que el motor ejecute una secuencia repetitiva de
movimientos en sentido horario y en sentido antihorario. El encendido y apagado del
motor se controla por medio de un interruptor conectado al PIC en el pin RB7, de tal
forma que cuando el nivel de entrada es 0 (interruptor cerrado) el motor esté apagado, y
cuando el nivel sea 1 (interruptor abierto) el motor se encienda (en el ejemplo, el motor
efectúa 645 pasos en sentido horario y 650 en sentido contrario).
11
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
IV. DIAGRAMA DE BLOQUE COMPLETO DEL SISTEMA HARDWARE Y SOFTWARE
PC
MOSFETMOSFET
12
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
DIAGRAMA ESQUEMATICO
13
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
V. MORFOLOGIA DEL SISTEMA
PLANOS
14
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
ESTRUCTURA MECÁNICA
Estructura del CNC se hizo uso de MDF de 9mm.
Varillas de aluminio debido a que son metales resistentes y a la vez nos permiten dar
un mejor acabado a nuestro proyecto.
DISEÑO DE LOS COMPONENTES
BASE:La base tiene longitudes de 50cm x 40cm x 5cm, esta tiene una forma de prisma
rectangular, en la que se apoya la estructura, mediante 8 pernos, y un eje hecho de un
tornillo sin fin controlado por un motor PAP, con dos varillas para darle estabilidad,
que permite dar movimiento a esta estructura. Esta base tiene la función de acoger a
la placa que será taladrada y a su vez dar movilidad al
MODO DE TRANSMISIÓN
Con engranajes o con polea y correas dentadas es muy fácil de conseguir una
reducción que nos sea favorable a la hora de conseguir una mayor resolución en la
herramienta.
Los engranajes se recomiendan para transmisiones que no requieran de velocidad,
debido a que desperdiciamos mucha fuerza y el efecto inercial de los mismos nos
dificulta para realizar rápidos movimientos
Con este tipo de transmisión podemos elegir reducciones que nos ayuden a conseguir
alta resolución en el posicionamiento de la herramienta, para lo que debemos tener en
cuenta el paso del tornillo. Nos queda como vemos sobre la polea del tornillo un
mando manual para posicionar la herramienta en caso de fresados muy finos como en
PCBs y perforados, además ahorramos espacio en la colocación del motor.
Las correas dentadas (sincrónicas) y las poleas para las mismas son muy fácil de
conseguir, y al menos las poleas de fabricar. No son muy costosas y en el país hay
varios fabricantes.
15
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
INTERFACE USB
ETAPA DE POTENCIA
16
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
CNC IMPLEMENTADO
17
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
VI. SOFTWARE INSTALACION, CONFIGURACION, ALGORITMOS DE CONTROL, EJECUCION NORMAL MANUAL Y TAREAS
IMPLEMENTACION DE INTERFAZ ELECTRONICA
Diseño de una interfaz gráfica de usuario para la generación de trayectorias. Para esta
etapa se utilizó el programa Visual Studio 2008 de Microsoft; específicamente se
realizó la programación en el lenguaje Visual C Sharp. El programa desarrollado debió
realizar las siguientes funciones: obtener los datos ingresados por el usuario, realizar
los cálculos matemáticos de las trayectorias, enviar los datos de la trayectoria al
sistema de control de movimiento, mostrar la información por medio de gráficas y
finalmente mostrar una simulación gráfica del movimiento.
Se decidió utilizar el lenguaje Visual C Sharp por la siguiente razón:
Visual C sharp es uno de los lenguajes más rápidos en la actualidad con la
capacidad de trabajar con entornos visuales. La velocidad del programa es un
parámetro importante en el presente trabajo debido a que el cálculo de las
trayectorias requiere de un gran número de cálculos matemáticos, el programa
tarda un tiempo considerable en ejecutarse. Además, la simulación gráfica
también requiere de una alta velocidad de procesamiento, ya que se desea que
los movimientos se realicen en un tiempo determinado. Por tales motivos,
mientras más rápido sea el lenguaje de programación utilizado mejores serán
los resultados. El programa desarrollado está compuesto por varios distintos
18
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
bloques que se encargan de ciertas tareas específicas. A continuación se
presentara el programa usado para dicho proyecto:
PROGRAMA EN VISUAL BASIC
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Diagnostics;using System.Windows.Forms;using System.Runtime.InteropServices;using MecaniqueUK;
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"); }
private void FormMain_Load_1(object sender, EventArgs e) { timer1.Enabled = true; deshabilita_controles(); }
private void FormMain_FormClosed(object sender, FormClosedEventArgs e) {
19
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.
controlador = handle;
MENSAJES_USB.Items.Add ("Dispositivo USB, conectado."); } }
private void Dispositivo_desconectado(UInt32 handle) { if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID) { MENSAJES_USB.Items.Add("Dispositivo USB, desconectado."); CONECTAR_DISPOSITIVO.BackColor = Color.Red; CONECTAR_DISPOSITIVO.ForeColor = Color.White; CONECTAR_DISPOSITIVO.Text = "CONECTAR DISPOSITIVO"; deshabilita_controles(); EasyHID.Disconnect(); } }
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); }
private void CONECTAR_DISPOSITIVO_Click(object sender, EventArgs e) { EasyHID.Connect(Handle); habilita_controles(); CONECTAR_DISPOSITIVO.Text = "DISPOSITIVO CONECTADO"; CONECTAR_DISPOSITIVO.BackColor = Color.GreenYellow; CONECTAR_DISPOSITIVO.ForeColor = Color.Black; }
private void HABILITADOR_Click(object sender, EventArgs e) { byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE];
BufferOUT[0] = 0; // Report ID BufferOUT[2] = Convert.ToByte(COORDENADA_X.Text); BufferOUT[3] = Convert.ToByte(COORDENADA_Y.Text);
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\tcristian_jr_14@hotmail.com\n\tvaro_mx@hotmail.com\n\trusbel_s@hotmail.com.\n" + "Licencia: FREEWARE. \n", "Acerca de USB visual C# HID Demo:", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void contactoToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("www.felizañonuevo.com", "Web del proyecto:",
22
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void habilita_controles() {
// Habilita salidas digitales. HABILITADOR.Enabled = true;
// Habilita casilla de mensajes USB. MENSAJES_USB.Enabled = true; }
private void deshabilita_controles() { // deshabilita salidas digitales. HABILITADOR.Enabled = false;
// deshabilita casilla de mensajes USB. MENSAJES_USB.Enabled = false; }
private void SALIR_Click(object sender, EventArgs e) { Application.Exit(); }
}}
23
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,
manteniendo o mejorando su calidad.
29
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
IX. CONCLUSIONES
El sistema de control empleado, a pesar de ser sencillo, es efectivo para
esta aplicación y cumple con los requerimientos del caso. Esto ha sido
demostrado con las pruebas realizadas.
Se logró configurar y enviar datos a través de un microcontrolador de
Microchip el 18F4550 el cual tiene un puerto USB.
A partir de los resultados obtenidos se puede decir que el
funcionamiento del sistema presenta errores debido a factores
mecánicos que no habían sido considerados al momento del diseño. Los
circuitos electrónicos y los programas implementados para el presente
proyecto funcionan correctamente.
El ítem de Tareas Prestablecidas queda para ser desarrollado como una
aplicación adicional.
30
ARQUITECTURA DE COMPUTADORAS 2013-ASensores y Actuadores: Práctica 1
X. BIBLIOGRAFIA:
http://www.iearobotics.com
http://www.x-robotics.com
http://www.directindustry.es/cat/automatismos-regulacionrobotica/robots-scara-
A-617.html
http://www.globu.net/pp/PP/pp.htm
http://robotsperu.org/
http://msdn.microsoft.com/es-es/visualc/default.aspx
31
top related