marcoteorico intro arduino gui (octubre10)

27
INTRODUCCIÓN: La evolución de las máquinas-herramientas de propósito general y la implementación del control en ellas, han permitido que surjan máquinas cada vez mas especializadas en aplicaciones particulares, donde las herramientas convencionales no satisfacen las exigencias de precisión y comodidad para quien las utiliza. Existen factores que determinan en qué casos es factible la implantación del control en este tipo de máquinas, principalmente: la exigencia de precisión en procesos de maquinado repetitivos (como la perforación de circuitos impresos, ya que se requieren grandes cantidades de perforaciones sobre la placa para el montaje de los componentes electrónicos); los diseños cada vez más complejos en las piezas a maquinar; la diversidad de diseños de piezas (lo que ocasiona la necesidad de estructuras de producción flexibles); la posibilidad de reducir errores en la producción de lotes de piezas y principalmente obtener la calidad en los productos o piezas, que satisfaga al usuario final. El control en las máquinas-herramientas ofrece múltiples ventajas en comparación con los sistemas manuales, algunas de ellas son: mejora en la precisión del maquinado, ya que ésta no depende directamente de la habilidad del usuario sino de la resolución de de la máquina; uniformidad en la producción, debido a la repetibilidad de posicionamiento de la herramienta en el sistema; posibilidad de maquinar piezas de distintos niveles de complejidad con una sola máquina; aumento de seguridad para el usuario, ya que pasa de ser directamente el operador a ser solo un supervisor del trabajo de la máquina y con ello se elimina, además, la fatiga que podría sufrir el operador en un sistema manual; entre otras ventajas. A lo largo de esta sección se muestran los distintos sistemas que componen una máquina controlada numéricamente, los cuales son: sistemas de transmisión, sistemas de control de posición y desplazamientos, tipo de control de posición en la máquina, ejes de movimiento (capacidad de posicionamiento del efector final o herramienta en el espacio de trabajo), efector final, sistema de sujeción de piezas, sistema eléctrico y sistema de seguridad.

Upload: armando-pinon

Post on 26-Oct-2015

76 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Marcoteorico Intro Arduino Gui (Octubre10)

INTRODUCCIÓN:

La evolución de las máquinas-herramientas de propósito general y la implementación

del control en ellas, han permitido que surjan máquinas cada vez mas especializadas

en aplicaciones particulares, donde las herramientas convencionales no satisfacen las

exigencias de precisión y comodidad para quien las utiliza.

Existen factores que determinan en qué casos es factible la implantación del control en

este tipo de máquinas, principalmente: la exigencia de precisión en procesos de

maquinado repetitivos (como la perforación de circuitos impresos, ya que se requieren

grandes cantidades de perforaciones sobre la placa para el montaje de los

componentes electrónicos); los diseños cada vez más complejos en las piezas a

maquinar; la diversidad de diseños de piezas (lo que ocasiona la necesidad de

estructuras de producción flexibles); la posibilidad de reducir errores en la producción

de lotes de piezas y principalmente obtener la calidad en los productos o piezas, que

satisfaga al usuario final.

El control en las máquinas-herramientas ofrece múltiples ventajas en comparación con

los sistemas manuales, algunas de ellas son: mejora en la precisión del maquinado, ya

que ésta no depende directamente de la habilidad del usuario sino de la resolución de

de la máquina; uniformidad en la producción, debido a la repetibilidad de

posicionamiento de la herramienta en el sistema; posibilidad de maquinar piezas de

distintos niveles de complejidad con una sola máquina; aumento de seguridad para el

usuario, ya que pasa de ser directamente el operador a ser solo un supervisor del

trabajo de la máquina y con ello se elimina, además, la fatiga que podría sufrir el

operador en un sistema manual; entre otras ventajas.

A lo largo de esta sección se muestran los distintos sistemas que componen una

máquina controlada numéricamente, los cuales son: sistemas de transmisión, sistemas

de control de posición y desplazamientos, tipo de control de posición en la máquina,

ejes de movimiento (capacidad de posicionamiento del efector final o herramienta en el

espacio de trabajo), efector final, sistema de sujeción de piezas, sistema eléctrico y

sistema de seguridad.

Page 2: Marcoteorico Intro Arduino Gui (Octubre10)

X. EJES DE MOVIMIENTO:

Una máquina herramienta controlada automáticamente debe disponer de diferentes

órganos de movimiento lineal (llamados ejes) que permitan posicional la herramienta o

el efector final dentro del espacio de trabajo, y para poder programar el movimiento en

dichos ejes se les asigna una letra a cada uno. Esta asignación de letras está

normalizada y no puede ser cambiada en ningún caso.

Los tres ejes principales de movimiento son:

Eje Z: a lo largo de este eje se realiza el movimiento perpendicular de la

herramienta hacia el suelo.

Eje Y: a lo largo de él se realiza el movimiento transversal de la herramienta.

Eje X: es el eje sobre el cual se realiza el movimiento longitudinal de la

herramienta.

Cada máquina cuenta con los ejes estrictamente necesarios para poder realizar el

proceso de maquinado sobre las piezas; así por ejemplo un torno sólo necesita del eje

Z y el eje X para posicionar la herramienta longitudinal y transversalmente, mientras

que una fresadora necesita de los tres ejes X, Y y Z para poder colocar la herramienta

dentro de su espacio de trabajo (ver imagen X. 1 a)).

Al movimiento simultáneo de dos o más ejes de forma controlada que realiza

trayectorias perfectamente definidas, tanto lineales como curvas, se le conoce como

interpolación.

Mientras más complejas sean las formas de las piezas a maquinar, se requiere de una

mayor cantidad de ejes en el diseño de la máquina para poder cubrir las necesidades

de cada caso. Por ello existen los denominados “ejes complementarios”, que son ejes

de rotación asociados a los tres ejes lineales de movimiento X, Y y Z designados por las

letras A, B y C. Algunas máquinas disponen de mesas giratorias y/o cabezales

orientables mediante ejes complementarios que permiten atacar la pieza a trabajar

desde diferentes planos y ángulos de aproximación (ver imagen X.1 b)).

Imagen X.1. a) Ejes principales de movimiento, b) ejes complementarios

Page 3: Marcoteorico Intro Arduino Gui (Octubre10)

X. TIPOS DE CONTROL DE POSICIÓN.

Existen fundamentalmente tres tipos de control de posición de la herramienta,

contemplados desde la perspectiva de la función que realizan. Éstos son:

I. Control punto a punto. Como lo indica su nombre, solo controla puntos

definidos por la programación, es decir, no tiene control del recorrido de la

herramienta de un punto a otro ni de la trayectoria, hasta alcanzar la posición

deseada y tampoco tiene control de la velocidad de desplazamiento entre ambos

puntos (ver imagen X.1 a)). Este tipo de control es el más sencillo de todos los

existentes, lo que le convierte en el más barato.

A pesar de ello tiene una función clara dentro de las máquinas herramienta,

usándose en máquinas taladradoras, semipunteadoras, etcétera.

II. Control paraxial o de recorridos. Con respecto a la velocidad de

desplazamiento, el recorrido lo hace de manera controlada pero sólo paralela u

ortogonal a los ejes. Esto se debe a que no tiene capacidad de interpolación, es

decir, el control solo puede mover un motor a la vez (ver imagen X.1 b)). Es ideal

para máquinas que tengan como única función escuadrar caras o en sierras de

control numérico, entre otros.

III. Control continuo o de trayectoria. Tiene la capacidad de movimiento en varios

ejes simultáneamente, puede realizar cualquier recorrido en un plano, tanto en

líneas curvas como en líneas rectas con cualquier tipo de inclinación; es decir,

puede interpolar ejes (ver imagen X.1 c)).

El control interpolar es el más completo de todos, pues tiende a realizar las

funciones de los tipos de control de los puntos anteriores, y además sus

funciones propias, por lo que es el tipo de control más usado a pesar de su

elevado costo de implementación.

Imagen X.1. Tipos de control de posición: a) Punto a punto, b) Paraxial y c) De trayectoria.

Page 4: Marcoteorico Intro Arduino Gui (Octubre10)

X. ELEMENTOS DE CONTROL.

Son componentes electrónicos e informáticos de un sistema, encargados de administrar

el funcionamiento de diversos dispositivos actuadores, ya sean eléctricos, neumáticos,

oleohidráulicos o electrónicos. Mediante los elementos de control se recibe información

del medio y del propio sistema, se procesa y analiza, y con base en ella se toman

decisiones para permiten o no la activación de motores, cilindros, indicadores

luminosos, etc.

Dentro de los elementos de control electrónicos se encuentran los circuitos basados en

microcontroladores (sistemas embebidos), PLC (controladores lógicos programables,

por sus siglas en inglés), PLD (Dispositivos Lógicos Programables, por sus siglas en

inglés), entre otros.

Con respecto a los sistemas informáticos, se tienen principalmente las GUI (interfaces

gráficas de usuario, por sus siglas en inglés) que fungen como el medio de

comunicación entre un ordenador convencional y un ser humano.

Esta sección se enfoca en el estudio de los sistemas electrónicos con base en

microcontroladores y las interfaces gráficas de usuario.

X.1. EL MICROCONTROLADOR. La mayoría de los sistemas electrónicos modernos tiene al menos un bloque o módulo

que trabaja con electrónica digital. Este bloque puede estar implementado con circuitos

integrados discretos o por elementos más avanzados como PLD’s (Dispositivo Lógico

Programable), microprocesador o por un microcontrolador.

Un microcontrolador tiene, en un solo circuito integrado, un microprocesador, la

memoria de datos, la memoria de programa y las unidades de entrada/salida, lo cual lo

hace muy pequeño, barato y fácil de manejar; por lo que es ideal para muchas

aplicaciones de propósito específico1. Físicamente, no es más que un circuito integrado

con patillas de conexión; y los hay en diferentes tipos de encapsulados según sus

características de hardware (número de puertos de comunicación, líneas de control por

puerto, convertidores análogo-digital, etcétera).

Imagen X.1.1 .Microcontroladores ATMEL™.

Para ilustrar de mejor manera la descripción

anterior, en la imagen X.1.1 se muestran

varios microcontroladores del fabricante

ATMEL™ en los diferentes encapsulados

existentes.

Page 5: Marcoteorico Intro Arduino Gui (Octubre10)

Los microcontroladores tienen gran aceptación y además son utilizados en diversas

áreas como son: sistemas de alumbrado público, tarjetas de desarrollo, alarmas

residenciales, sistemas de riego automatizado, control automático, máquinas eléctricas,

etcétera. El éxito de estos dispositivos se debe a las siguientes características:

a) Bajo costo. La implementación de un sistema de control básico puede tener un

costo muy reducido.

b) Hardware simple. Un microcontrolador no requiere muchos elementos externos

para poder funcionar correctamente, a diferencia de lo que sucede con otras

opciones.

c) Facilidad de aprendizaje. No se requiere de mucho tiempo antes de empezar a

desarrollar aplicaciones sencillas pero completas, lo que motiva a muchas

personas a continuar usando microcontroladores como parte central de sus

diseños.

d) Proliferación de herramientas de desarrollo. Además de que muchas

empresas venden herramientas de desarrollo completas, también existen en

internet multitud de compiladores, ensambladores, simuladores y diagramas para

programadores (llamados a veces circuitos quemadores o grabadores) que

pueden obtenerse de manera gratuita.

e) Gran cantidad de marcas y arquitecturas disponibles en el mercado. Varias

empresas ofrecen sus microcontroladores con sus propias características: bajo

consumo de energía, alta velocidad de operación, cantidad de periféricos

disponibles, interfaces digitales estándar para comunicación con otros sistemas,

reprogramación dinámica en el sistema, etcétera. Esto da a los diseñadores,

profesionales y aficionados, un amplio abanico de posibilidades de selección.

Como ya se mencionó en uno de los puntos anteriores, en el mercado de los

microcontroladores varias empresas se pelean el liderazgo ofreciendo diversas

arquitecturas para sus dispositivos, por lo que para alguien con experiencia en este

campo resulta bastante atractivo, el problema es seleccionar cuál microcontrolador

usar, lo cual debe hacerse considerando algunos factores como: cantidad de líneas de

control necesarias para la aplicación, hardware disponible (convertidores analógico-

digital, puertos de comunicación, módulos de comunicación con otros dispositivos,

velocidad de funcionamiento, etcétera). Los principales fabricantes de

microcontroladores son: ATMEL™, Dallas Semiconductor™, Microchip™, Motorola™,

National Semiconductor™, Intel™ y Texas Instruments™.

Page 6: Marcoteorico Intro Arduino Gui (Octubre10)

X.2. SISTEMAS EMBEBIDOS.

Un sistema de microcomputadora embebido es un conjunto de componentes físicos que

incluye una microcomputadora (también denominada microcontrolador) conectada a

dispositivos mecánicos, eléctricos y electrónicos, programada para un propósito

dedicado y empacada como un sistema completo. Cualquier sistema eléctrico,

mecánico, electrónico (o sus combinaciones), que incluya entradas, decisiones,

cálculos, análisis y salidas es candidato para implementarse como un sistema

embebido. Los sensores eléctricos, mecánicos, etc. reúnen la información del sistema.

Las interfaces electrónicas convierten las señales de un sensor a una forma que acepta

la microcomputadora. La microcomputadora procesa la información recabada por los

sensores y toma decisiones, según su programación y da órdenes a los actuadores del

sistema para realizar determinado trabajo.

Normalmente el software de los sistemas embebidos resuelve sólo una gama limitada

de problemas. La microcomputadora se incorpora u oculta dentro del dispositivo. La

memoria de solo lectura (ROM por sus siglas en inglés), es un tipo de memoria

incorporada en la estructura interna de la microcomputadora y es en ella donde la

información se programa o se graba dentro del dispositivo y los datos se conservan

guardados, incluso si se interrumpe la energía eléctrica y se vuelve a aplicar.

Las microcomputadoras embebidas afectan prácticamente todos los aspectos de la vida

diaria, por ejemplo en:

Los aparatos electrónicos.

Los sistemas de comunicación.

Los sistemas automotores.

El equipo militar.

Las aplicaciones empresariales.

Los dispositivos médicos.

Máquinas especializadas para procesos de manufactura.

Etcétera.

En contraste con los sistemas embebidos basados en microcomputadoras, un sistema

de cómputo de propósito general tiene un teclado, un disco duro, una pantalla y otros

periféricos y que se programan para una gran variedad de propósitos. 2

X.2.1. COMPONENTES BÁSICOS DE UN SISTEMA EMBEBIDO.

El concepto “embebido” hace referencia a “algo oculto en el interior para que nadie

pueda verlo”. En un sistema embebido, usamos la memoria de solo lectura (ROM) para

almacenar el software y los datos fijos y constantes, y la memoria de acceso aleatorio

(RAM por sus siglas en inglés) para guardar la información temporal.. Un puerto es una

Page 7: Marcoteorico Intro Arduino Gui (Octubre10)

conexión física entre la computadora y el mundo exterior; permite que entre y salga

información del sistema. La información llega mediante los puertos de entrada y se va

mediante los de salida (los puertos en ocasiones se conocen como interfaces o

dispositivos E/S). Algunos ejemplos de estos puertos son: los puertos paralelos, puertos

seriales, temporizadores, convertidores analógico a digital (ADC por sus siglas en

inglés). El software, junto con los puertos de entrada/salida y los circuitos de interfaz

asociados, le dan a un sistema de microcontrolador embebido sus características

definitivas.

Normalmente se reserva el término embebido a los sistemas que no se ven ni se

comportan como una computadora común. Casi todos estos sistemas carecen de un

teclado, una pantalla o un almacenamiento secundario (disco).

Los dispositivos externos conectados al microcontrolador permiten que el sistema

interactúe con su ambiente. Una Interfaz se define como el hardware y el software que

se combinan para permitir a la computadora comunicarse con el hardware externo.

A grandes rasgos, un sistema embebido es ideal en circunstancias en las que se

necesita que una tarea especializada (o un conjunto de ellas) se realice de manera

repetitiva y periódica, lo que se consigue mediante el software grabado internamente en

el microcontrolador y que es posible modificar en el futuro, si es necesario.

Imagen X.2.1.1. Componentes de un sistema embebido.

X.3. TARJETAS DE DESARROLLO.

Pueden considerarse como sistemas embebidos, y son tarjetas de circuito impreso

diseñadas, generalmente, con base en microcontroladores e involucran algunos

componentes adicionales que permitan al micro (de aquí en adelante la palabra “micro”

hace referencia al microcontrolador) funcionar adecuadamente. Son circuitos con

diseños flexibles, es decir, pueden adaptarse a casi cualquier proyecto ya que cuentan

con borneras para comunicar una gran variedad de periféricos, sensores o actuadores,

a las líneas de entrada/salida de los puertos del micro; reguladores de tensión para

poder alimentarlas con fuentes externas de mayor voltaje que el requerido por el

sistema; osciladores externos (circuitos de reloj) y en la gran mayoría de ellas se

Los elementos componentes de

un sistema embebido se

muestran en la siguiente

ilustración (ver imagen X.2.1.1).3

Page 8: Marcoteorico Intro Arduino Gui (Octubre10)

incluye el circuito programador, lo que permite grabar el código de control en el

microcontrolador sin tener que desmontarlo de la tarjeta y sin tener que comprar un

circuito con ese propósito exclusivamente.

El implementar una tarjeta de este tipo en proyectos y prototipos, permite reducir el

tiempo de diseño del circuito de control y en la mayoría de las ocasiones son tarjetas de

dimensiones mucho más pequeñas (y de mayor densidad) que una de diseño propio,

además de tener un entorno de programación integrado propio mucho más amigable

que el proporcionado por el fabricante de microcontroladores.

Existen multitud de tarjetas de desarrollo con base en microcontroladores en el

mercado, algunas diseñadas por desarrolladores independientes; es decir, plataformas

de código abierto que permiten ser compradas, construidas o modificadas por cualquier

usuario (según sus propias necesidades), debido a que los diseños de referencia del

hardware de este tipo de plataformas están disponibles gratuitamente.

A continuación se muestran dos tarjetas de desarrollo disponibles en el mercado

(imágenes X.3.1 y X.3.2). 4

Imagen X.3.1. Tarjeta de desarrollo ARDUINO™ UNO. Imagen X.3..2. Tarjeta de desarrollo PIC18 Explorer board.

X.3.1. TARJETAS DE DESARROLLO ARDUINO™.

ARDUINO™ es una plataforma de desarrollo electrónica de código abierto, basada en

hardware y software flexibles y fáciles de usar. Está dirigida a diseñadores, aficionados

y cualquier persona interesada en la creación de proyectos, prototipos y entornos

interactivos.5

El diseño de esta plataforma está basado en microcontroladores AVR (de la compañía

ATMEL™) y cuenta con una gran variedad de tarjetas para satisfacer las necesidades

de multitud de proyectos y prototipos. Actualmente es muy popular debido a que, en

una sola tarjeta de dimensiones reducidas, integra todo el hardware necesario para

comunicarse con el entorno y grabar el código de programación en el microcontrolador.

Page 9: Marcoteorico Intro Arduino Gui (Octubre10)

Cuenta con su propio entorno de desarrollo integrado gratuito y cualquier persona (con

experiencia en electrónica y programación, o sin ella) puede comenzar a realizar

aplicaciones muy potentes en poco tiempo.

De todas las tarjetas disponibles en la plataforma ARDUINO™, la más adecuada para

el presente proyecto es la denominada ARDUINO™ UNO (ver imagen X.3.1.1), cuyas

características más importantes son las siguientes6:

Utiliza un microcontrolador ATmega328.

Opera con un voltaje de 5 V.

Cuenta con catorce líneas de control bidireccionales (pines configurables como

entradas/salidas).

Cuenta con seis líneas análogas de entrada (convertidores análogo-digital), que

pueden ser configuradas también como entradas o salidas digitales.

Velocidad de trabajo de 16 MHz.

Comunicación mediante puerto USB.

Corriente máxima de 40 mA por línea (pin de entrada/salida).

Memoria de programa de 32 KB.

Imagen X.3.1.1. Tarjeta ARDUINO™ UNO y su diagrama de conexiones

X.3.2. “IDE” DE ARDUINO™.

Para poder escribir el código de programa que controla el funcionamiento de la tarjeta,

ARDUINO™ pone a disposición de cualquier usuario su propio Entorno de Desarrollo

Integrado (IDE por sus siglas en Inglés), de manera gratuita en su página de internet:

http://arduino.cc/en/Main/Software; el cual permite escribir y editar códigos de

programación, y posteriormente convertirlos en una serie de instrucciones que el

microcontrolador en la tarjeta pueda entender (proceso conocido como “compilar” el

código). Además, mediante el IDE se transfieren esas instrucciones a la tarjeta (proceso

conocido como “cargar el código” o “uploading” en Inglés). La imagen X.3.2.1 muestra

una captura de pantalla del IDE. Dentro del entorno gráfico (a lo largo de la parte

Page 10: Marcoteorico Intro Arduino Gui (Octubre10)

superior, debajo de la barra de menús) encontramos una serie de botones con las

funciones más utilizadas (“compilar/verificar”, “cargar en la tarjeta”, “nuevo sketch”,

“abrir un sketch”, “guardar sketch” y “monitor serial”) (ver imagen X.3.2.2.) que facilitan

el desarrollo de códigos, desde su escritura hasta el proceso para cargarlos en la

tarjeta.

Imagen X.3.2.1. IDE de ARDUINO™

X.3.3. LENGUAJE DE PROGRAMACIÓN DE ARDUINO™.

El lenguaje principal usado por el entorno de desarrollo de ARDUINO™ es el lenguaje

de programación C, desarrollado por primera vez en los laboratorios Bell en la década

de 1970 para su uso con el sistema operativo Unix. Este lenguaje utiliza una sintaxis de

escritura que permite usar palabras muy similares al lenguaje humano para escribir una

serie de instrucciones a ejecutar por una máquina, pero que necesita ser procesado por

un compilador para traducir, del código legible por humanos, a un listado de

instrucciones en “lenguaje máquina”.7

Debido a que hay aspectos del lenguaje C difíciles de entender por principiantes, y a la

complejidad propia de su estructura, la plataforma de ARDUINO™ ha desarrollado una

serie de librerías con funciones específicas muy comunes, que hacen que la

programación de la tarjeta sea muy sencilla (aunque en realidad estas librerías están

escritas en lenguaje C++, un subconjunto del lenguaje C original).

A pesar de ello, la mayor parte del código que puede escribirse para esta plataforma,

incluyendo la sintaxis, la estructura, los operadores, sentencias de control y funciones,

siguen siendo fundamentalmente lenguaje C.

El código fuente o de programación, escrito en esta plataforma recibe el nombre de

“sketch”, y consiste en un listado de instrucciones propias de ARDUINO™, escrito de tal

Imagen X.3.2.2. Botones de las funciones principales del IDE.

Page 11: Marcoteorico Intro Arduino Gui (Octubre10)

manera que respete la estructura establecida por el lenguaje de programación. Un

proceso posterior que toma el código fuente y lo convierte en uno que pueda funcionar

en la tarjeta se conoce como “compilación”. El IDE permite crear, abrir y modificar

sketches, los cuales definen las acciones a realizar por la tarjeta, para ello se utiliza el

área dentro del IDE conocida como “editor de sketch”.

Después de escribir un sketch, es necesario compilarlo para verificar que no existan

errores de sintaxis y el código se traduzca a lenguaje máquina; en la imagen X.3.3.1 se

muestra el IDE de ARDUINO™ con un sketch cargado en el editor8. Todas estas

funciones podemos realizarlas mediante la barra de menús o mediante los botones

indicados en la sección X.3.2. de este trabajo.

Imagen 2.2.3.1. Ejemplo de un sketch en el IDE de ARDUINO™

X.3.4. ESCRIBIR UN CÓDIGO Y CARGARLO A LA TARJETA

Antes de escribir un código en el IDE de ARDUINO™, lo más recomendable es tener

previamente definidas las tareas que queremos que la tarjeta realice y una herramienta

muy útil para ello es el diagrama de flujo, mediante el cual podemos representar de

manera gráfica el comportamiento de un sistema. En este caso, se pretende controlar el

funcionamiento de los actuadores involucrados en un sistema electromecánico a partir

de la recepción y análisis de datos provenientes de una PC.

Una vez definida la serie de tareas a realizar es necesario realizar el siguiente

procedimiento:

Page 12: Marcoteorico Intro Arduino Gui (Octubre10)

I. ABRIR UN NUEVO SKETCH. Antes de comenzar a escribir el código,

necesitamos que el área de edición en el IDE esté libre. Para ello presionamos el

botón “Nuevo” e inmediatamente aparece una nueva ventana limpia de código

donde podremos comenzar a escribir.

I. ESCRIBIR EL CÓDIGO: como ya se mencionó en secciones anteriores, un

código escrito en este IDE es conocido como sketch y consiste en la serie de

instrucciones que describen las tareas a realizar por la tarjeta. El sketch debe

estar escrito respetando la estructura del lenguaje C (y algunas reglas que no

corresponden completamente a programación en C pero que fueron

implementadas por los desarrolladores de esta plataforma para facilitar la

programación a los principiantes), y para hacer más sencilla e intuitiva esta parte

del proceso, ARDUINO™ cuenta con una serie de librerías para realizar

acciones específicas y muy comunes, que de otra manera serían difíciles de

escribir para muchas personas. Con ellas podemos controlar hardware como:

pantallas LCD, motores de corriente directa, servomotores, motores a pasos,

lectura y escritura de memorias EEPROM y memorias SD, entre otros; además

de que existen librerías que permiten la comunicación de la tarjeta con otros

dispositivos, ya sea mediante comunicación serial, software serial, WIFI, bus SPI

(Serial Peripherial Interface) u otras9. Las instrucciones están escritas con

palabras muy similares al lenguaje humano y la mayoría hace referencia a la

acción que realiza para poder recordarla con mayor facilidad y hacer más

amigable el proceso de escritura de códigos. Es recomendable también colocar

comentarios a lo largo del código, con el fin de describir las funciones que se van

ejecutando y poder realizar correcciones o mejoras futuras del programa; para

hacerlo, basta con colocar dos diagonales inversas (\\) antes del comentario, con

ello las palabras siguientes a estos caracteres no son tomadas en cuenta en el

proceso de compilación.

II. VERIFICAR EL SKETCH. Una vez escrito el código, es necesario revisar que la

sintaxis esté correcta y que no existan errores en la escritura de las

instrucciones. Este procedimiento se conoce como compilación y es

recomendable verificar el código periódicamente, no solo al terminar de

escribirlo. Si lo hacemos de esta manera, tenemos la posibilidad de identificar

errores oportunamente y corregirlos, en vez de dejarlos todos para el final. Esta

función podemos realizarla presionando el botón ”Verificar” (ver imagen X.3.2.2).

Mediante la compilación se realiza también la traducción de las instrucciones

escritas por el usuario a un formato binario, que pueda ser interpretado por el

microcontrolador de la tarjeta. Si la compilación se realiza exitosamente,

Page 13: Marcoteorico Intro Arduino Gui (Octubre10)

obtenemos el mensaje “compilación terminada” acompañado del tamaño binario

del sketch.

III. GUARDAR EL SKETCH. Ya que verificamos que el código escrito está libre de

errores y listo para cargarlo en la tarjeta, es necesario guardarlo. Esto podernos

hacerlo presionando el botón “Guardar” dentro del IDE y es recomendable

hacerlo periódicamente para respaldar el código y evitar la pérdida de

información en caso de algún accidente.

IV. CARGAR EL SKETCH EN LA TARJETA. Con el código previamente compilado y

respaldado, lo siguiente es cargarlo en la tarjeta para corroborar su

funcionamiento. Para ello debemos conectar la tarjeta a un puerto USB de la PC,

mediante el cable de datos, y una vez hecho esto se presiona el botón “cargar”

en la sección de botones. Si la carga se realizó con éxito, en la ventana del IDE

aparecerá un mensaje confirmando que la carga se ha completado y el sketch

comenzará a funcionar momentáneamente mientras la tarjeta esté conectada y

recibiendo alimentación del puerto de la PC.

Con el código cargado en el microcontrolador de la tarjeta, lo siguiente es probar que

funcione correctamente en el sistema a controlar y para ello debemos conectarla a los

actuadores involucrados (que pueden ser motores a pasos, servomotores, pantallas

LCD, sensores e incluso la propia PC). Si es necesario modificar el código, lo único que

tiene que hacerse es abrir el sketch correspondiente y corregirlo, verificarlo y cargarlo

de nuevo en la tarjeta cuantas veces sea necesario. El microcontrolador de la tarjeta

(ATMega328) está diseñado para soportar el borrado y escritura de programas por

aproximadamente 10 000 ciclos.10

Page 14: Marcoteorico Intro Arduino Gui (Octubre10)

BIBLIOGRAFÍA:

1) W. Valvano, Jonathan. “Introducción a los sistemas de Microcomputadores

embebidos”. Ed. Thomson. Año 2003, 480 páginas.

2) Asdrúbal López Chau. “Microcontroladores AVR, configuración total de

periféricos”. Universidad Autónoma de Estado de México. 1° Edición, México

2006. 113 páginas.

3) Brian Evans. “Beginning Arduino Programming”. Ed. Apress. Año 2011. 272

páginas.

4) Dale Wheat. “Arduino Internals”. Ed. Apress. Año 2011. 392 paginas.

5) Margolis, Michael. “Arduino Cookbook”. O’ Reilly Media, Inc. Año 2011, 662

páginas.

6) Cruz Teruel, Francisco. “Control numérico y programación II. Curso práctico”.

Ed. Alfaomega, 2ª edición. Año 2011, 424 páginas.

NOTAS: 1Extracto de bibliografía número 2. Para mayor información sobre microcontroladores,

consultar bibliografía. 2Extracto de bibliografía número 1. Para mayor información sobre sistemas embebidos

consultar bibliografía. 3Imagen extraída del libro “introducción a los sistemas de Microcomputadores

embebidos” de Jonathan W. Valvano, página 6.

4Imágenes extraídas de las páginas de ARDUINO™ y MICROCHIP™, respectivamente:

http://www.arduino.cc/ y http://www.microchip.com/. 5Extraido de la página oficial de ARDUINO™: http://www.arduino.cc/ 6Para conocer en su totalidad las características técnicas de esta tarjeta, consultar la

página: http://arduino.cc/en/Main/ArduinoBoardUno 7Para una mejor referencia sobre lenguaje C y su estructura, consulte el libro: “Lenguaje

C. Guía práctica para usuarios”, del autor Javier Moldes Teo, editorial Anaya

multimedia-Anaya interactiva, año 2005. 8El sketch fue tomado de los ejemplos que ARDUINO™ pone a disposición del usuario

y lleva por título “AnalogReadSerial”. Para abrirlo se selecciona la pestaña ”Archivo” de

la barra de menús y posteriormente “ejemplos”; ahí se encuentran una gran cantidad de

códigos que podemos modificar y utilizar como base para cualquier proyecto. 9Para mayor información sobre las librerías existentes y el listado de instrucciones que

contiene cada una, consultar la siguiente liga a la página oficial de ARDUINO™ en su

sección “Libraries”: http://arduino.cc/en/Reference/Libraries.

Page 15: Marcoteorico Intro Arduino Gui (Octubre10)

10Ver hoja de datos del microcontrolador ATMega328 proporcionada por el fabricante en

la siguiente liga: http://www.atmel.com/Images/doc8161.pdf 11Imagen extraída de la página:

http://content.heidenhain.de/presentation/elearning/ES/index.html

Page 16: Marcoteorico Intro Arduino Gui (Octubre10)

Interfaz Gráfica de Usuario

La Interfaz Gráfica de Usuario (GUI por sus siglas en inglés), es la representación en

pantalla de un sistema informático que se ofrece al usuario para que este pueda

interactuar con él.

Theo Mandel define interfaz gráfica de usuario como: la representación gráfica de

programas, datos y objetos en la pantalla del ordenador y la interacción con ellos.

Una GUI actual se compone de los siguientes elementos:

- Objetos: entre ellos; pantallas, botones de comando, cajas de texto, menús

desplegables, botones de opciones, casillas de verificación, barras de

desplazamiento, etiquetas, etc.

- Texto: donde habría que considerar aspectos como la fuente, el color, el tamaño,

el estilo, el fondo.

- Estructura de la visualización: tener en cuenta alineación, interlineado, formatos.

- Información instructiva: como ayuda, mensajes de ayuda, ayuda contextual o

ayuda en línea.

Java™

Java™ es un lenguaje de programación de propósitos generales. Es posible usar

Java™ para desarrollar el mismo tipo de aplicaciones que se realizan con otros

lenguajes como C o C++1.

Java™ no es un código ejecutable, sino un código de bytes. El código de bytes es un

conjunto altamente optimizado de instrucciones diseñado para que sea ejecutado por el

sistema de Java™ en tiempo de ejecución. A dicho sistema se le denomina máquina

virtual de Java™ (Java Virtual Machine, JMV), es decir, la máquina virtual de Java™ es

un intérprete de código de bytes.

La traducción de un programa de Java™ en código byte facilita la ejecución de un

programa en una gran variedad de entornos. La razón es sencilla: sólo se necesita

implementar la máquina virtual de Java™ en cada plataforma. Una vez que existe el

paquete en tiempo de ejecución para un sistema dado, cualquier programa Java™

puede ejecutarse en él. En resumen se puede escribir software en una plataforma y

ejecutarla virtualmente en otra.

Java™ es un lenguaje de programación de propósito general, concurrente, basado en

clases, y orientado a objetos, que fue diseñado específicamente para tener tan pocas

dependencias de implementación como fuera posible.

Page 17: Marcoteorico Intro Arduino Gui (Octubre10)

Simple Java™ tiene un conjunto conciso y cohesivo de funciones que facilitan su aprendizaje y uso.

Seguro Java™ proporciona un medio seguro de crear aplicaciones de Internet.

Portable Los programas de Java™ pueden ejecutarse en cualquier entorno para el cual haya un sistema de Java™ en tiempo de ejecución.

Orientado a objetos

Java™ encarna la filosofía moderna de programación orientada a objetos.

Robusto Java™ alienta una programación libre de errores, pues requiere una escritura estricta y realiza comprobaciones en tiempo de ejecución.

Subprocesos múltiples

Java™ proporciona un soporte integrado para la programación de subprocesos múltiples.

Arquitectura neutra

Java™ no está unido a una maquina o una arquitectura especifica de sistema operativo

Interpretado Java™ soporta un código de plataforma cruzada mediante el uso de un código de bytes de Java™

Alto desempeño

El código byte de Java™ está altamente optimizado para que se ejecute rápidamente

Distribuido Java™ fue diseñado tomando en consideración el entorno distribuido de Internet

Dinámico Los programas de Java™ incluyen importantes cantidades de información que son del tipo de tiempo de ejecución. Esta información se usa para verificar y resolver el acceso a objetos

Tabla. “Terminología de Java™”

Programación orientada a objetos

En el corazón de Java™ se encuentra la programación orientada a objetos OOP

(Object Oriented Programming).

La programación orientada a objetos retomó las mejores ideas de la programación

estructurada2 y las combinó con varios conceptos nuevos. El resultado fue una nueva

manera de organizar un programa. En el sentido más general, un programa puede

organizarse mediante una de las siguientes dos maneras:

Alrededor de su código (lo que está sucediendo)

Alrededor de sus datos (lo que se está efectuando)

Los programas orientados a objetos funcionan y están organizados alrededor de los

datos y el principio clave es que “los datos controlan el acceso al código”. En un

lenguaje orientado a objetos, el programador define los datos y las rutinas, las cuales

permiten actuar sobre los datos.

Para comprender la programación orientada a objetos se deben de conocer los

siguientes términos:

Page 18: Marcoteorico Intro Arduino Gui (Octubre10)

Objeto

Los objetos son la clave para entender la tecnología orientada a objetos.

Los objetos software consisten de estado y comportamiento. Un objeto almacena su

estado en campos («variables» en algunos lenguajes de programación) y muestra su

comportamiento a través de métodos («funciones» en algunos lenguajes de

programación). Los métodos operan sobre el estado interno del objeto y sirven como el

mecanismo principal para la comunicación entre objetos.

La ocultación del estado interno y requerir que toda interacción se realice a través de

los métodos de un objeto se conoce como encapsulación de datos — un principio

fundamental de la programación orientada a objetos.

Al agrupar código en objetos software individuales se obtienen ciertos beneficios:

Modularidad: El código fuente de un objeto se puede escribir y mantener

independientemente del código fuente de otros objetos. Una vez creado, un objeto se

puede pasar fácilmente de un lado al otro del sistema.

Ocultación de información: Al interactuar solamente con los métodos de un

objeto, los detalles de su implementación interna permanecen ocultos al mundo

exterior.

Reutilización de código: Si un objeto ya existe (quizás escrito por otro

desarrollador de software), puede utilizarse ese objeto en otro programa. Esto permite

que un especialista implemente/compruebe/depure objetos específicos para una tarea,

los que luego podrá implementar en su propio código.

Conectividad y facilidad de depuración: Si un objeto en concreto resulta ser

problemático, simplemente se podrá eliminar de la aplicación y «conectarse» un objeto

distinto para reemplazarlo.

Clase

Las clases definen la estructura de sus objetos. Es decir que todos los objetos de una

misma clase podrán almacenar el mismo tipo de información y tendrán la misma

capacidad para manipularla.

Herencia

En el lenguaje de programación Java™ se permite que cada clase tenga una

superclase directa y que cada superclase tenga el potencial para una cantidad ilimitada

de subclases.

La programación orientada a objetos permite que las clases hereden estados

(variables) y comportamientos (métodos) de uso común de otras clases.

Page 19: Marcoteorico Intro Arduino Gui (Octubre10)

Interfaz

Los objetos definen su interacción con el mundo exterior a través de los métodos que

exponen. Los métodos forman la interfaz del objeto con el mundo exterior.

En su forma más común, una interfaz es un grupo de métodos relacionados con

cuerpos vacíos.

Implementar una interfaz, permite a una clase ser más formal acerca del

comportamiento que promete proporcionar. Las interfaces forman un contrato entre la

clase y el mundo exterior, y este contrato se hace cumplir en el momento de la

compilación. Si su clase afirma implementar una interfaz, todos los métodos definidos

por esa interfaz deben aparecer en su código fuente para que se compile con éxito.

Paquete

Un paquete es un espacio de nombre que organiza un conjunto de clases e interfaces

relacionadas.

La plataforma Java proporciona una enorme biblioteca de clases (un conjunto de

paquetes) adecuado para usar en sus propias aplicaciones. A esta biblioteca se la

conoce como la «Interfaz de Programación de Aplicaciones» («Application

Programming Interface» en inglés) o por su abreviatura «API». Sus paquetes

representan las tareas más comunes asociadas a la programación en general.

Polimorfismo

Los objetos nunca dejan de reconocerse como miembros de una determinada clase.

Por tal motivo, independientemente del tipo de datos de la variable que los esté

conteniendo, estos ante la invocación de cualquiera de sus métodos siempre

reaccionaran como su propia clase lo defina.

Variables

Un objeto almacena su estado en campos (variables) y el lenguaje de programación

Java™ define los siguientes tipos de variables:

Variables de instancia (Campos no estáticos): Técnicamente, los objetos

almacenan sus estados individuales en «campos no estáticos», es decir, campos

declarados sin la palabra clave static. Los campos no estáticos también son

conocidos como variables de instancia porque sus valores son únicos para cada

instancia de una.

Variables de clase (campos estáticos): Una variable de clase es cualquier

campo declarado con el modificador static; esto le indica al compilador que existe

solamente una copia de esta variable, independientemente de cuántas veces se

haya instanciado esa clase. Además, se podría añadir la palabra clave final para

indicar que la cantidad de la variable nunca cambiará.

Page 20: Marcoteorico Intro Arduino Gui (Octubre10)

Variables locales: De un modo similar a como un objeto almacena su estado en

campos, un método a menudo almacenará su estado en variables locales.

Tipo de dato

Representación Tamaño (Bytes)

Rango de Valores Valor por defecto

Clase Asociada

byte Numérico Entero

con signo 1 -128 a 127 0 Byte

short Numérico Entero

con signo 2 -32.768 a 32.767 0 Short

int Numérico Entero

con signo 4

-2147483648 a 2147483647

0 Integer

long Numérico Entero

con signo 8

-9223372036854775808 a 9223372036854775807

0 Long

float

Numérico en Coma flotante de

precisión simple Norma IEEE 754

4 ± 3.4x10-38

a ± 3.4x1038

0.0 Float

double

Numérico en Coma flotante de

precisión doble Norma IEEE 754

8 ± 1.8x10-308

a ± 1.8x10308

0.0 Double

char Carácter Unicode 2 \u0000 a \uFFFF \u0000 Character

boolean Dato lógico - true ó false false Boolean

void - - - - Void Tabla. “Tipos de datos primitivos”

Swing

Dentro de las librerías de Java™ se encuentra un paquete llamado “Swing” que

pertenece a la JFC (Java Foundation Classes). “Swing” es una librería gráfica de

Java™ contenida en el paquete javax.swing que incluye “widgets” para interfaz gráfica

de usuario, tales como cajas de texto, botones, desplegables y tablas; que fue creada a

partir de java.awt la cual era también una librería gráfica La ventaja de Swing sobre

AWT es que permite una interfaz adaptada a cada sistema operativo sin cambio de

código, al igual que un fácil manejo.

Con la excepción de los contenedores de alto nivel, todos los componentes Swing

cuyos nombres comienzan con "J" descienden de la clase JComponent.

Componentes de texto

Los componentes de texto de Swing muestran texto y, opcionalmente, permiten al

usuario editar el texto. Swing proporciona seis componentes de texto, junto con clases

de apoyo e interfaces que cumplen aun los requisitos de texto más complejos. A pesar

de sus diferentes usos y capacidades, todos los componentes de texto de Swing

heredan de la misma superclase, “JTextComponent”, que proporciona una base

altamente configurable y de gran alcance para la manipulación de texto.

Page 21: Marcoteorico Intro Arduino Gui (Octubre10)

Figura. “Herencia de JTextComponent”

Áreas de texto plano (Plain Text Areas)

JTextArea pueden mostrar varias líneas de texto editable. Aunque un área de texto

puede mostrar texto en cualquier fuente, todo el texto está en la misma fuente. Las

áreas de texto son utilizadas para permitir que el usuario introduzca texto sin formato de

cualquier longitud o para mostrar información de ayuda sin formato.

Swing Class JTextArea

Áreas de texto con estilo

Un componente de texto con estilo puede mostrar texto editable usando más de una

fuente. Algunos componentes de texto con estilo permiten incrustar imágenes u otros

componentes.

Los componentes de texto con estilo son componentes de gran alcance y de múltiples

facetas, adecuados para necesidades de gama alta, y ofrecen más posibilidades de

personalización que los componentes de texto plano.

Swing Class JTextPane

Botones

Existen 7 botones disponibles en las librerías de Swing, los cuales son creados y

etiquetados con una variable tipo “String”. El manejo de eventos depende del tipo de

botón que se esté usando. En general, se implementa un “ActionListener”, el cual

notifica cada vez que el usuario hace click en el botón. Para “Check Boxes”

normalmente se usa un “ItemListener”, el cual notifica si el “Check Box” esta

seleccionado o no.

Una característica de Swing es la capacidad de asociar imágenes con botones. Swing

introdujo una clase de utilidad llamada “ImageIcon”, que permite especificar fácilmente

un archivo de imagen (JPEG, PNG o GIF). Muchos controles permiten la inclusión de

iconos.

Cuando un botón esta desactivado, automáticamente se genera una apariencia que

representa dicha acción. Sin embargo puede ser que una imagen sustituya a la imagen

inicial.

Page 22: Marcoteorico Intro Arduino Gui (Octubre10)

Botón común

Este es un botón común el cual usa un “ActionListener” para el manejo de sus eventos.

Pueden ser utilizados para realizar cualquier operación.

Swing Class JButton

Radio Button

Son grupos de botones en los que, por convención, solo un botón a la vez puede ser

seleccionado. Pueden ser utilizados para la selección de una opción de entre varias.

Swing Class JRadioButton y ButtonGroup

Combo Box

Un “Combo Box” permite al usuario elegir una de varias opciones, puede tener dos

formas muy diferentes. La forma predeterminada es el “Combo Box” que no se puede

editar, ya que cuenta con un botón y una lista desplegable de valores. La segunda

forma, llamada “Combo Box editable”, cuenta con un campo de texto con un pequeño

botón colindante con ella. El usuario puede escribir un valor en el campo de texto o

hacer click en el botón para mostrar una lista desplegable.

Figura. “Combo Box”

Swing Class JComoBox

Paneles

Un panel tiene el propósito general de servir como contenedor para componentes

ligeros, ya sean Áreas de Texto, Botones, etc. De forma predeterminada, los paneles no

agregan colores excepto su propio fondo, sin embargo, el usuario puede agregar

fácilmente diferentes tipos de bordes y personalizar el fondo.

Swing Class JPanel

Selector de Archivos

Los “Selectores de archivos” proporcionan una interfaz gráfica de usuario para navegar

por el sistema de archivos, y luego elegir un archivo o directorio desde una lista, o bien,

introducir su nombre. Para mostrar un selector de archivos, por lo general utiliza la API

“JFileChooser” para mostrar un cuadro de diálogo modal que contiene el selector de

Page 23: Marcoteorico Intro Arduino Gui (Octubre10)

archivos. Otra manera de presentar un selector de archivos es agregar una instancia de

“JFileChooser” a un contenedor.

Swing Class JFileChooser

Listas

Una lista presenta al usuario un grupo de artículos. Está representada en una o más

columnas y filas para elegir. Las listas pueden tener muchos elementos, por lo que a

menudo son puestas en “ScroollPanes” (barras desplazadoras).

Este tipo de componentes implementan modelos para su organización, de los cuales

son tres:

“DefaultListModel”: Todo es más o menos administrado para el usuario.

“AbstractListModel”: El usuario maneja la información e invoca los métodos

heredados por la interfaz de ListModel.

“ListModel”: El usuario se hace cargo de todo.

El uso de un modelo facilita el modo de selección de los elementos que se encuentren

en la lista, al igual que el borrado de los mismos.

Swing Class JList

Comunicación Serial en Java™

Para poder conectar la GUI de Java™ con la tarjeta de adquisición de datos, es

necesario que dentro del programa se encuentre la librería RXTX, la cual es una

biblioteca semejante a la “Java Communication API extensión”. Esta biblioteca posee

los Jar3 (Java ARchives) necesarios para poder establecer comunicación vía serial con

la tarjeta. La instalación dependerá del sistema operativo que el usuario utilice, en la

página http://rxtx.qbang.org/wiki/index.php/Main_Page se muestra la forma de

instalación para cada uno de los diferentes sistemas operativos.

Eclipse

Para la programación de los “widgets” (componentes de una GUI) y el código de control

de la interfaz gráfica, existe un Entorno de Desarrollo Integrado (IDE por sus siglas en

inglés) llamado Eclipse, el cual es un programa informático compuesto por un conjunto

de herramientas de programación de código abierto multiplataforma para desarrollar

modelos de Software. Incluye las herramientas de desarrollo de Java™, ofreciendo un

IDE con un compilador de Java™ interno y un modelo completo de los archivos fuente

de Java™. Esto permite técnicas avanzadas de refactorización y análisis de código.

Mediante diversos plugins, Eclipse provee al programador con frameworks muy ricos

para el desarrollo de aplicaciones gráficas, definición y manipulación de modelos de

software, aplicaciones web, etc.

Page 24: Marcoteorico Intro Arduino Gui (Octubre10)

Mediante los diversos plugins con los que cuenta Eclipse se encuentra uno llamado

“WindowBuilder”, el cual es una herramienta para el diseño de una GUI en Java™

bidireccional, poderosa y fácil de usar; la cual hace más fácil crear aplicaciones gráficas

sin gastar mucho tiempo en la escritura de código para mostrar formas simples. Con

“WindowBuilder” se puede crear complicadas interfaces gráficas en minutos. Utilizando

el diseñador se puede agregar controles mediante la acción de “arrastrar y soltar”,

agregar eventos a los controles, cambiar varias propiedades de los controles utilizando

un editor de propiedades, internacionalizar su aplicación y el código Java™ se generará

automáticamente, esto permite ser más productivos en el desarrollo de la interfaz de la

aplicación y ayuda a concentrarse en la lógica del problema.

Formatos para el procesamiento de PCB´s

Existen dos formatos de archivos importantes que se requieren para el procesamiento

de placas de circuito impreso:

Excellon4 (Archivo NC Drill)

Gerber5

Varios programas de Diseño Asistido por Computadora (CAD por sus siglas en inglés)

son capaces de producir estos tipos de archivos. Estos paquetes de CAD tienen

bibliotecas predefinidas que son fáciles de expandir y tienen las opciones Gerber y NC

Drill como parte de las opciones estándar.

Excellon

Excellon es un fabricante de sistemas de Control Numérico por Computadora (CNC por

sus siglas en inglés) para los taladros y fresadoras. Esta compañía ha estado en el

negocio de control de CNC desde hace muchos años. La empresa Excellon puede ser

descrita como uno de los pioneros en el taladrado y fresado de placas de circuito

impreso.

El formato Excellon se rige por la norma ANSI/IPC-NC-349. A grandes rasgos se trata

de un archivo con un listado de coordenadas (en un plano X, Y) e instrucciones simples

que permiten interpretar el circuito impreso a fabricar independientemente del sistema

de diseño utilizado.

Los ficheros NC Drill contienen tres secciones:

Cabecera

Lista de herramientas utilizadas

Datos de coordenadas

Page 25: Marcoteorico Intro Arduino Gui (Octubre10)

EJEMPLO

1. M48 Inicio Cabecera

2. T01 0.028in Herramienta 1 con diámetro

3. T02 0.035in

4. T03 0.042in

5. T04 0.052in

6. T05 0.125in

7. G90 Modo Coordenadas absolutas

8. M72 Modo pulgadas

9. % Inicio datos

10. T01 Poner herramienta 1

11. X344Y171 coordenadas x e y

12. X884Y851

13. X939Y916

14. X1704Y1296

15. X1914Y1526

16. .

17. .

18. .

19. M30 Fin de programa.

Los sistemas de coordenadas pueden presentarse en sistema imperial o métrico,

absoluto o incremental, y se fijan con omisión de ceros a la izquierda o derecha.

Coordenadas en pulgadas con 0.0001-in de resolución se expresan con 6 dígitos

(00.0000). Coordenadas en milímetros con de 10 micras de resolución se expresan con

5 dígitos (000.00).

La especificación completa la podemos encontrar en:

http://www.excellon.com/manuals/program.htm

Page 26: Marcoteorico Intro Arduino Gui (Octubre10)

NOTAS:

1 Para mayor información acerca de los lenguajes de programación C y C++

consultar el siguiente libro: Deitel, Harvey M. (2004). Cómo programar en C/C++ y Java. Cuarta edición. México. Pearson Educación.

2 Para mayor información acerca de programación estructurada consultar el siguiente libro: Francisco A. Martínez Gil. (2003). Introducción a la programación estructurada en C. Universidad de Valencia. Maite Simon.

3 Los ficheros Jar (Java ARchives) permiten recopilar en un sólo fichero varios ficheros diferentes, almacenándolos en un formato comprimido para que ocupen menos espacio.

4 Para mayor información acerca de la compañía Excellon y su formato consultar el siguiente link: http://www.excellon.com/.

5 Para mayor información acerca del formato Gerber consultar la norma RS-274X.

BIBLIOGRAFÍA: Libros

Theo Mandel. (1997). The Elements of User Interface Design. United States of

America. John Wiley & Sons, Inc.

Ian Sommerville. (2005). Ingeniería del Software. Séptima edición. United

Kingdom. Pearson.

Ing. Pablo Augusto Sznajdleder. (2013). Java a fondo: estudio del lenguaje y

desarrollo de aplicaciones (2ª edición). Buenos Aires: Alfaomega Grupo Editor.

Elliotte Rusty Harold. (1999). Java I/O (fist edition). O’Reilly

Fco. Javier Ceballos Sierra. (2006). Java 2: Interfaces gráficas y aplicaciones

para Internet (2ª edición). México: Alfaomega Grupo Editor.

James Gosling, Matthew Robinson and Pavel Vorobiev. (2005). Java Swing (2ª

edición).New York. EUA: Manning Publications Co.

Internet

Tutorial de Java. Consultada el 10 de Julio del 2013, de:

http://docs.oracle.com/javase/tutorial/

Google Developers. Java Developer Tools WindowsBuilder. Consultada el 11 de

Mayo del 2013, de: https://developers.google.com/java-dev-

tools/wbpro/userinterface/

Eclipse. Downloads Consultada el 11 de Mayo del 2013, de:

http://www.eclipse.org/

Java. Consultada el 11 de Mayo del 2013, de: http://www.java.com/es/

Page 27: Marcoteorico Intro Arduino Gui (Octubre10)

Librería RXTX. Consultada el 11 de Mayo del 2013 de:

http://rxtx.qbang.org/wiki/index.php/Main_Page