Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tesis338 PDF
Tesis338 PDF
2)
Estimados Señores:
Los suscritos
Javier Alejandro Salamanca Pachón, con C.C. No. 79996854,
autor de la tesis doctoral y/o trabajo de grado titulado Implementación
de un sistema
posicional con motores tipo paso a paso y servo controlados por
computador.
presentado y aprobado en el año 2009 como requisito para optar al título de Informático Matemático;
autorizo a la Biblioteca General de la Universidad Javeriana para que con fines académicos, muestre al
mundo la producción intelectual de la Universidad Javeriana, a través de la visibilidad de su contenido
de la siguiente manera:
Los usuarios puedan consultar el contenido de este trabajo de grado en Biblos, en los sitios web
que administra la Universidad, en Bases de Datos, en otros Catálogos y en otros sitios web, Redes y
Sistemas de Información nacionales e internacionales “Open Access” y en las redes de información
del país y del exterior, con las cuales tenga convenio la Universidad Javeriana.
Permita la consulta, la reproducción, a los usuarios interesados en el contenido de este trabajo, para
todos los usos que tengan finalidad académica, ya sea en formato CD-ROM o digital desde
Internet, Intranet, etc., y en general para cualquier formato conocido o por conocer.
Continúo conservando los correspondientes derechos sin modificación o restricción alguna; puesto
que de acuerdo con la legislación colombiana aplicable, el presente es un acuerdo jurídico que en
ningún caso conlleva la enajenación del derecho de autor y sus conexos.
NOTA IMPORTANTE: El autor y o autores certifican que conocen las derivadas jurídicas que se
generan en aplicación de los principios del derecho de autor.
AUTOR O AUTORES
Apellidos Completos Nombres Completos
Salamanca Pachón Javier Alejandro
PROGRAMA: Carrera X Licenciatura ___ Especialización ____ Maestría ____ Doctorado ____
NÚMERO DE PÁGINAS 95
TIPO DE ILUSTRACIONES:
- Ilustraciones
- Tablas, gráficos y diagramas
-
Número de archivos dentro del CD (En caso de incluirse un CD-ROM diferente al trabajo de grado):
_________________________________________________________________________
PREMIO O DISTINCIÓN (En caso de ser LAUREADAS o tener una mención especial):
_______________________________________________________________________________
ESPAÑOL INGLÉS
Motor paso a paso ___________________ Steper motor____________________________
Puertos____________________________ Potrs____________________________________
Con el uso de los lenguajes computacionales como java, desarrolladores matemáticos y mediante
la programación de protocolos de comunicación, que permiten enlazar la salida y entrada
de datos de los puertos paralelo y serial. Esto hace posible enviar o recibir paquetes de datos
o señales activas para hacer control de sistemas externos. Con el modelamiento matemático
como una representación de sistemas físicos que permite simular mediante el diseño e implementación
del software que variables afectan un dispositivo y mediante el diseño e implementación
del software se establece la comunicación con el dispositivo externo por medio de
los puertos del computador. Las variables establecidas en el modelo matemático junto al control
sobre cualquier tarea asignada exige una precisión, dependiente de un software que además de
ser versátil y robusto es de fácil manejo, se puede configurar para realizar todo tipo de tareas, y
para diferentes tipos de dispositivos que se le conecten.
With the use of computer languages like Java, developers and through mathematical
scheduling of communication protocols, which allow entry and exit link
data of parallel and serial ports. This makes it possible to send or receive data packets
active signals to control external systems. With the mathematical model
as a representation of physical systems that can simulate the design and implementation through
software variables that affect a device and through the design and implementation
software establishes communication with the external device through
ports of the computer. The variables in the mathematical model together with control
on any task required accuracy, dependent on a software that besides
be versatile and robust it is easy to use, can be configured to perform all kinds of tasks, and
for different types of devices connected to it.
IMPLEMENTACIÓN DE UN SISTEMA POSICIONAL
CON MOTORES TIPO PASO A PASO Y SERVO
CONTROLADOS POR COMPUTADOR.
TRABAJO DE GRADO
INFORMÁTICO MATEMÁTICO
Julio 2009
NOTA DE ADVERTENCIA
“La Universidad no se hace responsable por los conceptos emitidos por sus alumnos en sus
trabajos de tesis. Solo velará por que no se publique nada contrario al dogma y a la moral
católica y por que las tesis no contengan ataques personales contra persona alguna, antes bien
se vea en ellas el anhelo de buscar la verdad y la justicia”.
2
no.
APROBADO.
________________________
Director.
________________________ ________________________
Jurado. Jurado.
3
IMPLEMENTACIÓN DE UN SISTEMA POSICIONAL
CON MOTORES TIPO PASO A PASO Y SERVO
CONTROLADOS POR COMPUTADOR.
APROBADO.
________________________ ________________________
4
Índice general
1. MARCO TEÓRICO. 16
1.0.1.1. Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.0.4. La JNI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.0.5.4. Interrupciones. . . . . . . . . . . . . . . . . . . . . . . . . . 36
5
1.0.7.1. Principio de funcionamiento. . . . . . . . . . . . . . . . . . 40
2. FORMULACIÓN Y JUSTIFICACIÓN. 59
2.1. Formulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.1. Justificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3. OBJETIVOS. 61
4. METODOLOGÍA. 62
4.0.4. Procedimiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6
4.0.5.2. La JNI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5. RESULTADOS. 68
5.2.1.1. Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 71
5.2.2.1. Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2.3.1. Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 77
5.2.4.1. Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 80
5.3.0.2. Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . . 83
5.4.1.1. Ventajas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.1.2. Desventajas. . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.2. Servomotor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.2.1. Ventajas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.4.2.2. Desventajas. . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7
5.5.2. Descripción física servo motor. . . . . . . . . . . . . . . . . . . . . . . 86
6. CONCLUSIÓN. 90
8
Índice de cuadros
9
Índice de figuras
10
Nomenclatura
C Capacitancia
C Coulumb
CC Corriente Continua
11
ECP Enhanced Capabilities Port
Puerto de capacidades realzado
F Faradio
GND Ground
Tierra
H Henrios
i Corriente
IEEE-1284 Standard Signaling Method for a Bi-directional Parallel Periphetral Interface for
Personal Computers
Estándar del Método de señalización para una interfase paralela bidireccional periferica
para computadoras personales
12
JNI Java Native Interface
Interfaz Nativa de Java
kg Kilo gramos
L Inductancia
M Inductancia mutua
mA mili amperios
ms mili segundos
OS Operating System
Sistema operativo
R Resistencia
13
RPM REVOLUCIONES POR MINUTO
S Siemens
V Voltio
VM Virtual Machine
Máquina virtual
14
GENERALIDADES.
INTRODUCCIÓN.
Con el uso de los lenguajes computacionales como java, desarrolladores matemáticos y medi-
ante la programación de protocolos de comunicación, que permiten enlazar la salida y entrada
de datos de los puertos paralelo y serial. Esto hace posible enviar o recibir paquetes de datos
o señales activas para hacer control de sistemas externos. Con el modelamiento matemático
como una representación de sistemas físicos que permite simular mediante el diseño e im-
plementación del software que variables afectan un dispositivo y mediante el diseño e imple-
mentación del software se establece la comunicación con el dispositivo externo por medio de
los puertos del computador. Las variables establecidas en el modelo matemático junto al control
sobre cualquier tarea asignada exige una precisión, dependiente de un software que además de
ser versátil y robusto es de fácil manejo, se puede configurar para realizar todo tipo de tareas, y
para diferentes tipos de dispositivos que se le conecten.
Todos los periféricos que establecen comunicación con los puertos requieren de interfaces que
son diseñadas con herramientas tipo CAD1 y variará su diseño según las especificaciones del
dispositivo requerido, en este caso el tipo de motor.
15
Capítulo 1
MARCO TEÓRICO.
1.0.1.1. Java.
En Diciembre de 1990, Patrick Naughton, un empleado de la empresa Sun, reclutó a sus colegas
James Gosling y Mike Sheridan para trabajar sobre un nuevo tema conocido como "El proyecto
verde"[4]. Este a su vez estaba auspiciado por la compañía "Sun founder Bill Joy" y tenía como
objetivo principal crear un lenguaje de programación accesible, fácil de aprender y de usar, que
fuera universal, y que estuviera basado en un ambiente C++ ya que había mucha frustración por
la complejidad y las limitaciones de los lenguajes de programación existentes.
En abril de 1991, el equipo decidió introducir sistemas de software con aplicaciones para con-
sumidores smart como plataforma de lanzamiento para su proyecto. James Gosling escribió el
compilador original y lo denominó "Oak", y con la ayuda de los otros miembros del equipo
desarrollaron un decodificador que mas tarde se convertiría en lenguaje Java. Cuando un grupo
de Sum visito un café local e nombre de java fue sugerido[4].
Para 1992, el equipo ya había desarrollado un sistema prototipo conocido como "*7", que era
una especie de cruce entre un asistente digital personalizad o y un mecanismo inteligente de
control remoto.
Por su parte el presidente de la compañía Sun, Scott McNealy, se dio cuenta en forma muy
oportuna y estableció el Proyecto Verde como una subsidiaria de Sun. De 1993 a 1994, el
equipo de Naughton se lanzó en busca de nuevas oportunidades en el mercado, mismas que
se fueron dando mediante el sistema operativo base. La incipiente subsidiaria fracasó en sus
intentos de ganar una oferta con Time-Warner, sin embargo el equipo concluyó que el mercado
para consumidores electrónicos smart y las cajas Set-Up en particular, no eran del todo eficaces.
La subsidiaria Proyecto Verde fue amortizada por la compañía Sun a mediados del 94.
16
Afortunadamente, el cese del Proyecto Verde coincidió con el nacimiento del fenómeno mundial
Web. Al examinar las dinámicas de Internet, lo realizado por el ex-equipo verde se adecuaba a
este nuevo ambiente ya que cumplía con los mismos requerimientos de las set-top box OS que
estaban diseñadas con un código de plataforma independiente pero sin dejar de ser pequeñas y
confiables.
Patrick Naugthon procedió a la construcción del lenguaje de programación Java que se acciona-
ba con un browser prototipo, más tarde se le fueron incorporando algunas mejoras y el browser
Hot Java fue dado a conocer al mundo en 1995.
Con el paso del tiempo el Hot Java se convirtió en un concepto práctico dentro del lenguaje
Java y demostró que podría proporcionar una forma segura multiplataforma para que el código
pueda ser bajado y corrido del Host del World Wide Web y que de otra forma no son seguros.
Una de las características más atractivas del Hot Java fue su soporte para los "applets", que son
las partes del código Java que pueden ser cargadas mediante una red de trabajo para después
ejecutarlo localmente y así lograr o alcanzar soluciones dinámicas en computación acordes al
rápido crecimiento del ambiente Web.
Para dedicarse al desarrollo de productos basados en la tecnología Java, Sun formó la empresa
Java Soft en enero de 1996, de esta forma de se dio continuidad al fortalecimiento del progra-
ma del lenguaje Java y así trabajar con terceras partes para crear aplicaciones, herramientas,
sistemas de plataforma y servicios para aumentar las capacidades del lenguaje.
Durante ese mismo mes, Java Soft dio a conocer el Java Developmet Kit (JDK) 1.0[13], una
rudimentaria colección de componentes básicos para ayudar a los usuarios de software a con-
struir aplicaciones de Java. Dicha colección incluía el compilador Java, un visualizador de ap-
plets, un debugger prototipo y una máquina virtual Java(JVM), necesaria para correr programas
basados en Java, también incluía paquetería básica de gráficos, sonido, animación y trabajo en
red[13].
Faraday, Michael (1791−1867), fue el que descubrió el principio de el motor eléctrico el des-
cubrió la inducción. Inducción es la generación de una corriente eléctrica en un conductor en
movimiento en el interior de un campo magnético físico. A partir de ese descubrimiento se
potencio el estudio sobre la electrónica[8].
En 1834 anunció el método de descomponer las soluciones salinas, que hoy se conoce con el
nombre de electrólisis, establece que el movimiento de un conductor integrante de un circuito
cerrado en un campo magnético produce corriente en dicho circuito, y en ello se basa el fun-
cionamiento del generador eléctrico.
17
Una corriente eléctrica que pasa por un conductor situado en un campo magnético crea una
fuerza que tiende a desplazar al conductor con respecto al campo, esta es la base del motor
eléctrico. De modo que, en esencia, una misma máquina puede emplearse como generador o
como motor; si se le aplica energía mecánica, generará electricidad, y si se le aplica electricidad,
producirá energía mecánica.[16]
La Dinámica de Sistemas alcanzó gran difusión durante los años setenta, al servir de base para
los estudios encargados por el Club de Roma a Forrester y su equipo para valorar el efecto
del crecimiento de la población y de la actividad humana en un mundo de recursos limitados.
El propio Forrester dirigió la confección de un modelo inicial del mundo4 a partir del cual
se realizaría más tarde el informe definitivo5 , dirigido por D.L. Meadows y financiado por la
Fundación Volkswagen. Un segundo informe, también utilizando Dinámica de Sistemas, sería
encargado posteriormente a Mesarovic y Pestel6 .
1 Industrial
Dynamics, 1961.
2 Urban Dynamics, 1969.
3 System Dynamics, 1968.
4 World Dynamics, 1971.
5 The Limits to Growth, 1973.
6 Mankind at the Turning Point, 1974 .
18
1.0.2. Dinámica de sistemas.
La Dinámica de Sistemas aplica métodos de sistemas duros, básicamente las ideas de reali-
mentación y sistema dinámico, junto con la teoría de modelos en el espacio de estados y pro-
cedimientos de análisis numérico. Por tanto sería una metodología más entre las de sistemas
duros. Sin embargo, en su punto de mira están los problemas no estructurados (blandos), como
los que aparecen en los sistemas socio económicos.[6] Esto plantea dos tipos de dificultades:
Validación: Una vez construido el modelo hay que preguntarse si refleja razonablemente
la realidad. Esta cuestión puede resolverse por ejemplo en caso de que se disponga de
informaciones cuantitativas de la evolución del sistema real en el pasado. Si el mode-
lo es capaz de generar los comportamientos característicos del sistema real, denomina-
dos modos de referencia, entonces obtendremos una cierta confianza en la validez del
modelo.[10, 11]
En Dinámica de Sistemas la simulación permite obtener trayectorias para las variables inclu-
idas en cualquier modelo mediante la aplicación de técnicas de integración numérica. Sin em-
bargo, estas trayectorias nunca se interpretan como predicciones, sino como proyecciones o
tendencias.[10, 11] El objeto de los modelos de Dinámica de Sistemas es, como ocurre en todas
las metodologías de sistemas blandos, llegar a comprender cómo la estructura del sistema es
responsable de su comportamiento. Esta comprensión normalmente debe generar un marco fa-
vorable para la determinación de las acciones que puedan mejorar el funcionamiento del sistema
o resolver los problemas observados. La ventaja de la Dinámica de Sistemas consiste en que es-
tas acciones pueden ser simuladas a bajo coste, con lo que es posible valorar sus resultados sin
necesidad de ponerlas en práctica sobre el sistema real.[7, 9]
19
1.0.2.2. Construcción de modelos en la dinámica de sistemas.
1. Conceptualización.[11, 10]
2. Formulación.[11, 10]
El API de comunicaciones es una extensión estándar que permite realizar comunicaciones con
los puertos serie RS-232 y el paralelo IEEE-1284, esto permite realizar aplicaciones de comu-
nicaciones que utilizan los puertos de comunicaciones independientes de la plataforma[12].
7 Application Programming Interface - Interfaz de Programación de Aplicaciones
20
1.0.3.1. Características del API de comunicaciones.
En el paquete de comunicaciones javax.comm tenemos una serié de clases que nos permiten
tratar varios niveles de programación, estos niveles son los siguientes:
Nivel alto: En este nivel tenemos las clases CommPortIdentifier y CommPort que nos
permiten el acceso a los puertos de comunicación[12].
Nivel medio: Con las clases SerialPort y ParallelPort que cubren la interfaz física RS-232
para el puerto serie y IEEE-1284 para el puerto paralelo[12].
Resolver colisiones entre aplicaciones. Gracias a este servicio podremos tener varias apli-
caciones Java funcionando y utilizando los mismos puertos y no solo sabremos que el
puerto esta ocupado sino que podremos saber que aplicación lo esta utilizando.
Disponemos de métodos para el control de los puertos de entrada / salida a bajo nivel, de
esta forma no solo nos limitamos a enviar y recibir datos sino que podemos saber en que
estado esta el puerto. Así en un puerto serie podremos no solo cambiar los estados sino
que podemos programar un evento que nos notifique el cambio de cualquier estado.
Programación a alto nivel. Para esta programación se cuenta con la clase CommPortIdenti-
fier. Se encuentra ante la clase principal del paquete ya que lo primero que se debe hacer antes
de empezar a utilizar un puerto es descubrir si esta libre para su utilización.
Lo primero que se debe hacer antes de intentar abrir un puerto será ver si ya tiene o no un propi-
etario y para obtener la información de esto se debe obtener el objeto de CommPortIdentifier
correspondiente al puerto que se realizara con alguno de los siguientes métodos:
21
getPortIdentifier(String) Nos dará el objeto correspondiente al puerto que se le pase como
parámetro, este será el método que normalmente usaremos ya que lo normal es que siem-
pre nos conectemos por el mismo puerto. Este método deberá saber tratar la excepción
NoSuchPortException que saltara en el caso de que solicitemos un puerto inexistente.[12]
Una vez que se tiene el objeto del puerto se tiene una serie de métodos que nos permiten obtener
información del puerto y abrirlo para poder iniciar una comunicación. Estos métodos son los
siguientes:
getName() dará el nombre del puerto. En el caso de haber utilizado el método getPor-
tIdentifier(String) será el mismo valor que pasamos como parámetro.[12]
getPortType() devuelve un entero que nos informa del tipo de puerto (serie o paralelo),
para no tener que acordarnos del valor de cada tipo de puerto disponemos de las con-
stantes PORT_PARALLEL y PORT_SERIAL.[12]
isCurrentlyOwned() nos informa si esta libre o no el puerto. En caso de que este ocupado
se podrá saber quien lo esta utilizando mediante el método getCurrentOwner().[12]
open(String, int) abre y por lo tanto reserva un puerto, en el caso de que intentemos
abrir un puerto que ya se encuentre en uso saltara la excepción PortInUseException. Los
parámetros que le debemos pasar son un String con el nombre de la aplicación que reserva
el puerto y un int que indica el tiempo de espera para abrir el puerto.[12]
Una vez que se tiene este objeto se deberán encaminar sus salidas a OutputStream y las entradas
a InputStream una vez realizado esto la escritura y lectura de los puertos será tan fácil como
utilizar los métodos de estas clases que pertenecen al estándar del JDK.
addPortOwnershipListener(CommPortOwnershipListener) permite añadir una clase que escuche
los cambios de propietarios en los puertos. Si una vez que se tiene registrado un oyente de even-
tos se quiere eliminar se debe de utilizar el comando
removePortOwnershipListener(CommPortOwnershipListerner).[12]
Clase CommPort. Esta es una clase abstracta que describe los métodos comunes de comuni-
cación y serán las clases que hereden de ellas (SerialPort y ParallelPort) la que añadan métodos
y variables propias del tipo del puerto. Entre los métodos que se interesa conocer se tienen:
close() nos permitirá liberar el puerto que se reservo con open, este notificara el cambio de
dueño a las clases que se hubiesen registrado con el método addPortOwnershipListener
que se explico anteriormente.[12]
22
getInputStream() nos permitirá enlazar la entrada del puerto al InputStream que nos de-
vuelve para leer del puerto.[12]
getOutputStream() nos permitirá enlazar la salida del puerto al OutputStream que nos
devuelve para poder escribir en el puerto de la misma forma que si se escribiera en un
fichero.[12]
getInputBufferSize() nos informa del tamaño que tiene el buffer de entrada del puerto.
Este tamaño se puede modificar con el método setInputBufferSize(int). Estos métodos
no siempre dan el resultado esperado ya que será la memoria disponible y el sistema
operativo quien al final decida si realizar o no correctamente la operación.[12]
getOutputBufferSize() nos informa del tamaño que tiene el buffer de salida, como en el
caso anterior contamos con un método para modificar el tamaño que es setOutputBuffer-
Size(int). Al igual que pasaba con los métodos anteriores su correcto funcionamiento
dependen del sistema operativo en sí y del desarrollo del driver.[12]
Clase SerialPort .
En esta clase encontramos las interfaces de bajo nivel del puerto paralelo que cumple el estándar
RS-232. En la Tabla 1 se puede ver la descripción de las patitas del conector de 25 contactos.
En la emisión de un carácter se realizarán las siguientes comprobaciones:
23
5. Enviar datos.
La clase SerialPort hereda de la clase abstracta CommPort y por lo tanto cuenta con sus métodos
pero además de estos se dispone de otros métodos y variables especificas para el tratamiento de
los puertos serie.
setSerialPortParams(int, int, int, int) permite configurar los parámetros del puerto se-
rie, este método deberá tratar la excepción UnsupportedCommOperationException que
saltara en el caso de que se le introduzcan valores no soportados.[12]
2. El segundo parámetro son los bit de datos. Para indicar el valor se utilizaran las constantes
de la clase que se tiene para lo mismo (DATABITS_5, DATABITS_6, DATABITS_7 o
DATABITS_8).
3. El bit o bits de stop que se utilizan y que puede ser 1,2 o uno y medio. Las constantes
que definen estas configuraciones son: STOPBITS_1, STOPBITS_2 y STOPBITS_1_5
respectivamente.
4. Paridad que se utilizará y que puede ser PARITY_NONE en el caso de no utilizar paridad,
PARITY_ODD para la paridad impar, PARITY_EVEN paridad par, PARITY_MARK
paridad por marca y PARITY_SPACE paridad por espacio.
24
getFlowControlMode() da la configuración del control de flujo que se puede cambiar con
el método setFlowControlMode(int) y los valores posibles son: FLOWCONTROL_NONE
no existe control de flujo, (FLOWCONTROL_RTSCTS_IN o FLOWCONTROL_RTSCTS_OUT)
para el control de flujo por hardware y ( FLOWCONTROL_XONXOFF_IN o FLOW-
CONTROL_XONXOFF_OUT) para control de flujo por software. El método setFlow-
ControlMode(int al igual que pasaba con setSerialPortParams(int, int, int, int) deberá de
saber capturar la excepción UnsupportedCommOperationException.[12]
isDTR() informará del estado terminal que se podrá cambiar con setDTR(boolean).[12]
isRTS() dice si ha solicitado permiso para transmitir o no y para cambiar su estado ten-
emos el método setRTS(boolean).[12]
25
Clase ParallelPort.
En esta clase tenemos las interfaces de bajo nivel del puerto paralelo que cumple la norma
IEEE-1284. El estándar IEEE-1284 cuenta con 8 líneas de datos, 5 entrada de estado y 4 salidas
de control. Los contactos del conector se definen en la Tabla 2 con sus funciones en el modo
SPP que es el modo compatible de trabajo para la impresora.
Compatible o SPP.
Modo Nibble, este modo reserva el canal de datos y se combina con el modo SPP.
Byte Mode, este modo es bidireccional utilizado por IBM y tiene la capacidad de desha-
bilitar los drivers usando la línea de datos.
EPP (Extended Parallel Port) es el modo extendido y se utiliza para periféricos que prin-
cipalmente no son impresoras.
ECP (Enhanced Capabilities Port) al igual que el modo EPP es bidireccional y se utiliza
para comunicar diversos tipos de periféricos, este modo es una propuesta de Hewlett
Packard y Microsoft.
26
La clase ParallelPort es una clase que se hereda de CommPort. Esta clase cuenta con una serie
de métodos que facilitan el uso del puerto paralelo:
isPaperOut() devolverá un valor true en el caso de que se quede sin papel la impresora,
esto es lo mismo que preguntar por el estado de la seña PE 1.2 en la página anterior.[12]
getMode() dice el modo configurado del puerto paralelo y los valores posibles son:[12]
setMode(int) configuramos el modo del puerto paralelo, los valores que puede tomas
son los anteriores y además LPT_MODE_ANY que será el mejor modo disponible. Este
método deberá ser capaz de tratar la excepción UnsupportedCommOperationException
que saltara en el caso de que se introduzca un modo no soportado.[12]
27
1.0.4. La JNI.
Otra manera de establecer la comunicación por medio de los puertos serial o paralelo desde el
computador a un dispositivo externo es mediante el uso de la JNI.
La JNI es una interfase de programación. Esta permite al código de java correr dentro de la
maquina virtual de java (VM) y se interpole con aplicaciones, funciones y librerías escritas en
otros lenguajes de programación, tales como C, C++ y assembler.[13]
El código nativo son funciones escritas en un lenguaje de programación como C o C++ para el
sistema operativo (SO) donde se esta ejecutando la maquina virtual.
JNI tiene un interfaz bidireccional que permite a las aplicaciones Java llamar código nativo y
viceversa. Es decir JNI soporta dos tipos de interfaces:
1. Native methods.
Que permiten a Java llamar a funciones implementadas en librerías nativas.[13]
2. Invocation Interface.
Nos permite incrustar una maquina virtual Java en una aplicación nativa. La aplicación
nativa llama a librerías nativas de la maquina virtual y luego usa el llamado invocation
interface para ejecutar métodos java en la VM.[13]
Las librerías de enlace dinámico son ficheros cuyas funciones no se incrustan en el ejecutable
durante la fase de enlazado, sino que en tiempo de ejecución el programa busca el fichero, carga
su contenido en memoria y enlaza su contenido según va siendo necesario.
Esto tiene la ventaja de que varios programas pueden compartir las mismas librerías, lo cual
reduce el gasto del disco duro, especialmente con las llamadas al sistema (APIs) que suelen ser
usadas por muchas aplicaciones a la vez.
Su extensión también varía dependiendo del SO en que estemos. Extensiones típicas son:
Para que los programas encuentren las librerías de enlace dinámico, estas deben ponerse en
unos determinados directorios.
28
Cada SO sigue sus reglas:
Cuadro 1.4: Reglas de búsqueda de librerías de enlace dinámico de cada sistema operativo.
El más importante beneficio de las JNI es que este no posee restricciones en la implementación
de la subyacente java VM. Mientras se pueda escribir aplicaciones enteramente en java, hay
algunas situaciones donde java sólo no encuentra las necesidades de su aplicación. Los pro-
gramadores usan las JNI para escribir métodos nativos de java que manejan estas situaciones
cuando una aplicación no puede ser escrita totalmente en java.
Se tienen librerías escritas en otros lenguajes, y se desea hacer este accesible al código de
java con el JNI.
29
Figura 1.1: Puerto paralelo.
Es posible que una computadora posea más de un puerto paralelo, generalmente se pueden
tener hasta tres, aunque Windows y otros programas tienen la capacidad para manejar hasta
cuatro de ellos.
Cada puerto paralelo posee una dirección Base, es decir, una dirección con la que se identifica
al puerto, y según el tipo de puerto de que se trate, podrá tener además otras direcciones8 .
Actualmente las direcciones por defecto para los puertos son las siguientes:
30
El BIOS9 construye una tabla en memoria cuando arranca la computadora desde la dirección
40:08h a 40:0Dh que contiene las direcciones base de cada puerto paralelo instalado, leyendo
esta tabla ordenada se puede conocer la dirección base de cada puerto.[5]
1. SPP.
Es el puerto más sencillo, tiene tres buses o registros, en la dirección Base: bus de datos,
este es de 8 bits y todos sus pines son salidas; en la dirección Base+1: bus de estado, en
este registro solo 5 pines se encuentran cableados al conector, y todos ellos son entradas,
en las impresoras son los que llevan la información de papel atascado, falta de papel,... ,
una de las entradas (el bit 7) está complementada; por ultimo en la dirección Base+2: bus
de control, este bus tiene cuatro salidas, de las cuales tres están negadas.[14]
2. Bidireccional (PS/2).
Este puerto tienen las mismas características que el SPP con la diferencia que el bus de
datos es bidireccional, es decir que cambiando el estado de algunos bits del bus de control
se puede actuar sobre el bus de datos haciendo que trabaje en su totalidad como entradas
o como salidas10 .[14]
Entrada: para configurar el bus de datos como entradas, se deben poner en nivel alto
del bit 5 y 7 del bus de control y en nivel bajo el bit 6 del bus de control.
9
31
Salida: para configurar el bus de datos como entradas, se deben llevar a nivel bajo
el bit 5 y 7 del bus de control y a nivel alto el bit 6 del bus de control.
Este tipo de puerto tiene la característica de ser tan rápido como el bus del sistema (ISA),
alcanzando velocidades de transferencia de hasta 1Mb por segundo, fue desarrollado por
Intel, Xircom y Zenith y tuvo amplia aceptación por el resto de los fabricantes, quienes
comenzaron a construir sus puertos de tipo EPP, aunque no totalmente compatibles, con
los creados por Intel, lo que llevo a que se produjera un estándar denominado EPP 1.7,
que tiempo después se combinó con el estándar IEEE 1284, que describe los puertos
bidireccionales de alta velocidad para impresoras y se formo un estándar que actualmente
se denomina IEEE 1284 EPP. un puerto paralelo del estilo IEEE 1284 soporta múltiples
modos: SPP, bidireccional PS/2, EPP y ECP. otra particularidad de este puerto es que
posee otras cinco direcciones11 , aunque esto hace que no pueda existir un tercer puerto
den la dirección 3BCh, ya que de ser así se solaparía con las direcciones asignadas a
vídeo. es por esto que cuando se creo el puerto EPP, la dirección que antes solía ser el
primer puerto, paso al tercero.[14]
Puede al igual que el EPP, escribir y leer a la velocidad del Bus, fue desarrollado por
Microsoft y Hewlett Packard, y se distingue del anterior por tener DMA (Direct Memory
Access), FIFO (First In First Out) y compresión de datos. A su vez puede emular los
puertos de tipo SPP y bidireccional, y si bien la norma no contempla los EPP, algunos
fabricantes suelen usar algún bit no utilizado por ECP para la conflagración del puerto
como EPP. el puerto ECP agrega además los registros desde Base+400h; a Base+402h,
en el cual esta el registro ECR (Extended Control Register), mediante el cual se pueden
configurar los diferentes modos, el significado de los bits es el siguiente:
32
Bit Significado
000 SPP (compatible ISA)
001 Bidireccional (Compatible PS/2)
010 Centronics rápido (compatible ISA FIFO)
011 ECP
7:5
100 Reservado
101 Reservado (EPP)
110 Prueba
111 Configuración
4 Deshabilita interrupciones de ERROR
3 Habilita DMA
2 Deshabilita el servicio de interrupción FIFO/Terminal Count
1 Sólo lectura (FIFO lleno)
0 Sólo lectura (FIFO vació)
El puerto puede ser de tipo SPP, bidireccional12 , EPP o ECP, para conocer que tipo de puerto es
el que se tiene se debe comenzar testeando el de mayor complejidad y seguir en orden hasta el
de menor complejidad.
Puerto ECP.
Para detectar si el puerto es de tipo ECP se debe leer el registro de control extendido
(ECR) en la dirección Base+402h y verificar que el bit 0 este en uno y el bit 1 este en
cero; estos bits no deben ser susceptibles de los cambios producidos en los bits 0 y 1
del bus de control, por lo que otra prueba a realizar es poner en bajo el bit 0y en alto el
bit 1 del bus mencionado, verificar que los bits del registro extendido de control no haya
cambiado; por último, los bits 0 y 1 del registro extendido de control son de sólo lectura,
lo que implica que no sera posible hacerlos cambiar de estado, entonces podemos escribir
un dato que conmute los estados de los bits 0 y 1 y luego leer el estado de esos bits, como
lo que se lee es lo que hay en el registro y no lo que se envió, podemos decir que si los
bits no han cambiado de estado y se han verificado las pruebas anteriores, estamos en
presencia de un puerto ECP.[5]
Puerto EPP.
Si el puerto fallase en las pruebas para determinar si es ECP, debemos proseguir efectuan-
do pruebas para determinar si es EPP. Para esto, se pone en nivel bajo el bit 7 del bus de
12 Compatible con el estándar IBM PS/2
33
estado y el bit de TimeOut (bit 0 del registro de estado), debido a la diversidad de fabri-
cantes existen diversos métodos para limpiar este ultimo bit, por eso debemos contemplar
todos ellos para asegurar el funcionamiento en la mayor cantidad de maquinas posible,
lo primero que haremos será escribir el bit dos veces con un uno y luego pasarlo a cero,
podemos verificar ahora que el bit en cuestión este en el nivel bajo, de no ser así, ya pode-
mos descartar que se trate de un puerto tipo EPP. La segunda parte de la prueba consiste
en escribir un dato en el registro Base+3, y al no haber ningún periférico que responda
a la escritura realizada, el bit de TimeOut deberá cambiar su estado lógico a un uno, de
no ser así debemos seguir con las pruebas para determinar si el puerto es bidireccional o
SPP.[5]
En esta prueba lo que haremos sera configurar el bus de datos como entrada y verificar
que al sacar un dato por el puerto no sea retenido.[5]
Puerto SPP.
Para detectar si un puerto es SPP verificamos la retención de los daros enviados, para lo
cual enviamos un par de valores al bus de datos y comprobamos (en la dirección base)
que los valores leídos sean los que se escribieron, es decir que el dato enviado haya sido
retenido por el puerto.[5]
34
1.0.5.3. Puerto paralelo a nivel físico.
Cuando se transmite información por un cable multipar (con varios conductores aislados), cada
conductor genera un campo electromagnético que influye en los otros conductores, para reducir
tal efecto se confecciona enroscando un conductor sobre su entorno, de manera que los campos
generados por cada conductor se anulen entre si y no afecten a los otros; a su ves estos pares
trenzados se enroscan nuevamente para evitar la interferencia con los otros cables. También
hay otras opciones que complementan la antes mencionada a la hora de transmitir datos por
un cable: para poder aumentar la longitud del cable es necesario que el mismo posea mayor
inmunidad al ruido, especialmente los de baja frecuencia como los de la red eléctrica, lo que se
logra con una malla metálica que envuelve a todos los conductores conectada a masa (chasis de
35
la computadora), pero cuando la longitud es considerable y los datos se transmiten a gran ve-
locidad el cable debe ser considerado como una linea de transmisión, con todas las propiedades
que esta posee, es entonces donde se observa la necesidad de que el cable tenga un terminador
para evitar los rebote de señal hacia su fuente.
Cuando se diseño el puerto paralelo también se dividieron las masas según las señales como lo
indica la siguiente tabla, aunque actualmente es muy común observarlas todas unidas, puesto
que los circuitos de salida contienen todos la misma masa, ya que con el nivel de integración
de hoy en día todos los buffer de salida están practica mente en un mismo integrado, y de esta
manera la corriente tomará el camino con menor impedancia para su retorno.
1.0.5.4. Interrupciones.
La mayoría de los puertos paralelos son capaces de detectar interrupciones generadas por el
periférico que se encuentre conectado. Para que el microprocesador detecte la interrupción el
puerto debe tener asignado un Interrupt Request Level (IRQ). Generalmente se utiliza IRQ7
para LPT1 e IRQ5 para LPT2, aunque este ultimo suele estar asociado con la placa de sonido,
por lo que es posible observar que los puertos tengan configurado otro IRQ.[14]
Los puertos de tipo ECP utilizan Direct Memory Access (DMA) para una transferencia a mayor
velocidad, utilizando DMA, mientras se produce la transferencia el microprocesador está libre
para ejecutar otra acción, el rango que utiliza el puerto paralelo es de cero a tres.[14]
El puerto trabaja con lógica TTL de baja potencia de tipo Schottky, aunque en puertos viejos es
posible encontrar algunos que trabajen con salidas de tipo colector abierto. La corriente drenada
36
del puerto puede tomar valores de hasta 2, 6mA y la entregada hasta un máximo de 24mA. En
cuanto a las tensiones de salida, el nivel bajo corresponde a una tensión entre 0V y 0,8V , y para
el nivel alto la tensión de salida es de 2, 4V a 5, 5V .
En algunos de los puertos se pueden encontrar también capacitores de 2, 2nF entre las lineas de
E/S y masa, lo que ayuda a establecer los tiempos de subida y de bajada de la señal.
En el bus de control, generalmente, las salidas son de tipo TTL a colector abierto, con resisten-
cias de colector de 4, 7KΩ y teniendo en cuenta que lo que se lee por programa es el estado del
pin del puerto, es posible utilizar este bus como entradas, aunque esto no es recomendable.[14]
El puerto seria o RS-232 es un estándar para realizar la transmisión de datos. El RS-232 consiste
en un conector tipo DB-25 de 25 pines, aunque es normal encontrar la versión de 9 pines DB-9.
Las señales con las que trabaja este puerto son digitales, de 12V (0 lógico) y −12V (1 lógico),
para la entrada y salida de datos, y a la inversa en las señales de control. El estado de reposo en
la entrada y salida de datos es −12V .
37
Los ordenadores se conectan con cualquier equipo periférico, a través de sus puertos paralelo
o serie, o los más recientes como el USB (Universal Serial Bus, el cual deja desbancados a
los otros con 12 Mb/s), pero en éste caso solo analizaremos el puerto serie RS-232 por ser un
estándar impuesto en todos los equipos informáticos.
En un ordenador puede haber varios puertos series, a los que normalmente se les denomina
COM 1, COM 2, COM 313 , por defecto el COM 1 suele pertenecer al ratón usando éste el IRQ
4, aunque también es posible encontrarle en el COM 2, así que lo normal es encontrarnos libre
el puerto serie del COM 2 utilizando el IRQ 3.
Para realizar una conexión en serie de datos ó información, se requiere como mínimo un cable
de dos alambres, una conexión del tipo full-duplex como la de telefonía.
Si se quiere tener una comunicación bidireccional por un par de hilos y esta consiste en una
serie de bits de información, se requieren otras terminales que indiquen al Interface cuál de los
aparatos interconectados transmite y cuál recibe, que tipo de información es, cuándo el aparato
receptor esta listo para recibir, cuando el transmisor esta listo para transmitir, a que velocidad
va ser la comunicación. Esto hace que el puerto serie tenga otras terminales que se usan para
coordinar la comunicación entre los equipos.
Los equipos terminales de datos, envían señales en 0´s y 1´s lógicos binarios, que el módem
debe convertir a señales analógicas y enviarlas por la línea telefónica o canal de comunicación
pero también es posible que se comuniquen siempre en digital.
Éste Interface o puerto RS-232 trabaja entre +12 voltios y -12 voltios, de manera que un cero
lógico es cuando la terminal esté entre +9 y +12 voltios, y un uno lógico cuando este entre -9
y -12 voltios de manera que un puerto serie que no esta transmitiendo, mantiene la terminal de
transmisión en un 1 lógico es decir entre -9 y -12 volts.
El conector estándar RS-232 sea éste hembra ó macho, es el DB-25, aunque también se usa el
DB-9.
38
Uno de los parámetros más importantes en la comunicación serie, es la velocidad con la que los
datos se transmiten, para el caso del RS-232, pueden transmitir de los 300 bit/seg hasta 115,200
bit/seg.
Otro de los parámetros importantes es el bit de inicio que le indica al puerto receptor que va a
llegar un byte de información.
Hay dos tipos de paridad adicional que se usan y estos son:
Marca (mark)
El bit de paridad que se intercala siempre es un uno.
Espacio (space)
El bit de paridad que se intercala siempre es un cero.
5. Un circuito corto de corriente no debe exceder los 500mA. El driver debe utilizarse sin
problema.
39
Abreviación Nombre completo Función
TD Transmit data Salida de datos serie TXD
RD Receive data Entrada de datos serie RXD
CTS Clear to send Indica si el módem está preparado para recibir y mandar datos
DCD Data carrier detect Detecta si hay una conexión con el otro extremo
DSR Data set ready Dice si la UART está preparada para la conexión
DTR Data terminal ready Dice al módem si la UART está preparada para la conexión
RTS Request to send Informa que la UART está preparada para la conexión
RI Ring indicator Se activa cuando el módem detecta una llamada del PSTN
Los motores paso a paso son ideales para la construcción de mecanismos en don de se requieren
movimientos que requieran precisión.
A diferencia de los motores de corriente continua (CC) que gira a todo lo que dan cuando
son conectados a la fuente de alimentación, los motores paso a paso (PaP) solamente giran un
ángulo determinado, los CC sólo disponen de dos terminales de conexión, mientras los PaP
pueden tener 4, 5 ó 6, según el tipo de motor que se trate, por otro lado los motores de corriente
continua no pueden quedar enclavados en una sola posición, los motores paso a paso tienen la
posibilidad de quedar enclavados en una posición o bien totalmente libres. Si una o más de sus
bobinas están energizadas, el motor estará enclavado en la posición correspondiente y por el
contrario quedará completamente libre sino circula energía por ninguna de sus bobinas.[1, 2]
El ángulo de giro de estos motores es muy variado pasando desde los 90 hasta los 1,8 e incluso
0,72, cada ángulo de giro, se afecta enviando un pulso en una de sus terminales.
El motor está constituido por un rotor sobre el que van aplicados distintos imanes permanentes
y por un cierto número de bobinas exitadoras, bobinas en su estator. Las bobinas son parte del
estator y el rotor es un imán permanente. La exitación de las bobinas debe ser manejada por un
controlador.
Los motores PaP suelen ser clasificados en dos tipos, según su diseño y fabricación pueden ser
bipolares o unipolares:
Bipolar.
40
Estos tienen, generalmente, cuatro cables de salida. Necesitan ciertos trucos para ser con-
trolados, debido a que requieren del cambio de dirección del flujo de corriente a través de
las bobinas en la secuencia apropiada para realizar un movimiento.[1, 2]
Unipolares.
41
Figura 1.5: Motor PaP con 6 cables.
Estos motores necesitan una inversión de la corriente que circula en sus bobinas en una secuen-
cia determinada. Cada inversión de la polaridad provoca el movimiento del eje un paso, cuyo
sentido de giro está determinado por la secuencia seguida.[1, 2]
Paso Terminal
A B C D
1 +V -V +V -V
2 +V -V -V +V
3 -V +V -V +V
4 -V +V +V -V
Cuadro 1.12: Secuencia para controlar motores paso a paso tipo bipolar.
Existen tres secuencias posibles para este tipo de motores. Todas las secuencias comienzan por
el paso 1 una vez alcanzado el paso final. Para revertir el sentido de giro, simplemente se deben
ejecutar las secuencias en modo inverso.[1, 2]
Secuencia Normal.
Con esta secuencia el motor avanza un paso por vez debido a que siempre hay dos bobinas
activadas, se obtiene un alto torque de paso y de retención.
42
Paso Bobina A Bobina B Bobina C Bobina D
1 On On Off Off
2 Off On On Off
3 Off Off On On
4 On Off Off On
En esta secuencia se activa sólo una bobina a la vez. En algunos motores esto brinda un
funcionamiento más suave. La contrapartida es que al estar sólo una bobina activada, el
torque de paso y retención es menor.
43
Paso Bobina A Bobina B Bobina C Bobina D
En esta secuencia se activan las bobinas de tal forma de brindar un movimiento igual
a la mitad del paso real. Para ello se activan primero 2 bobinas y luego sólo 1 y así
sucesivamente.
44
Paso Bobina A Bobina B Bobina C Bobina D
2 On On Off Off
4 Off On On Off
6 Off Off On On
8 On Off Off On
45
Debido a que los motores paso a paso son dispositivos mecánicos y como tal deben vencer
ciertas inercias, el tiempo de duración y la frecuencia de los pulsos aplicados es un punto muy
importante a tener en cuenta. En tal sentido el motor debe alcanzar el paso antes que la próx-
ima secuencia de pulsos comience. Si la frecuencia de pulsos es muy elevada, el motor puede
reaccionar en alguna de las siguientes formas:
Para obtener un arranque suave y preciso, es recomendable comenzar con una frecuencia de
pulso baja y gradualmente ir aumentándola hasta la velocidad deseada sin superar la máxima
tolerada. El giro en reversa debería también ser realizado previamente bajando la velocidad de
giro y luego cambiar el sentido de rotación.
Los servos son un tipo especial de motor de C.C. que se caracterizan por su capacidad para posi-
cionarse de forma inmediata en cualquier posición dentro de de su intervalo de operación.[15]
Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede
ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que
una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del
engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la
práctica, se usan servos para posicionar superficies de control como el movimiento de palancas,
pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto,
en robots.[3]
Los Servos son sumamente útiles en robótica. Los motores son pequeños, tiene internamente
una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o
estándar como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm de torque que
es bastante fuerte para su tamaño. También una potencia proporcional para cargas mecánicas.
Un servo, por consiguiente, no consume mucha energía. Podrá observar la circuitería de control,
el motor, un juego de piñones, y la caja. También puede ver los 3 alambres de conexión externa.
Uno es para alimentación Vcc17 , conexión a tierra GND y el alambre blanco es el alambre de
control.[3]
17 +5volts.
46
1.0.8.1. Funcionamiento de un servo.
El motor del servo tiene algunos circuitos de control y un potenciómetro18 esta es conectada al
eje central del servo motor. Este potenciómetro permite a la circuitería de control, supervisar
el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está
apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección
adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los
180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un
servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados. Un servo
normal no es mecánicamente capaz de retornar a su lugar, si hay un mayor peso que el sugerido
por las especificaciones del fabricante.[3]
El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración
de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada
de Pulsos ó PWM Pulse Width Modulation. La modulación por anchura de pulso es uno de los
sistemas mas empleados para el control de servos. Este sistema consiste en generar una onda
cuadrada en la que se varía el tiempo que el pulso esta a nivel alto, manteniendo el mismo
periodo, con el objetivo de modificar la posición del servo según se desee. [3, 11, 15]
El servo espera ver un pulso cada 20 milisegundos o 0,02 segundos. La longitud del pulso
determinará los giros de motor. Un pulso de 1.5 ms, por ejemplo, hará que el motor se torne a
la posición de 90 grados o posición neutra. Si el pulso es menor de 1.5 ms, entonces el motor
se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180 grados.
Para controlar un servo, se le ordena un cierto ángulo, medido desde 0 grados. Se le envía una
serie de pulsos. En un tiempo ON de pulso indica el ángulo al que debe posicionarse; 1ms = 0
grados, 2.0ms = máx. grados19 y algún valor entre ellos da un ángulo de salida proporcional.
Generalmente se considera que en 1.5ms está el "centro". Entre los límites de 1 ~ 2ms son las
recomendaciones de los fabricantes; normalmente se puede usar un rango mayor de 1.5ms para
obtener un ángulo mayor e incluso de 2ms para un ángulo de rendimiento de 180 grados o más.
El factor limitante es el tope del potenciómetro y los límites mecánicos construidos en el servo.
Un sonido de zumbido normalmente indica que se está forzando por encima al servo, entonces
debe disminuir un poco.[3, 15]
18 una resistencia variable.
19 Cerca de 120°.
47
El tiempo de OFF en el servo no es crítico; puede estar alrededor de los 20ms. Los pulsos que
ocurren frecuentemente en el tiempo de OFF pueden interferir con el sincronismo interno del
servo y podría escucharse un sonido de zumbido o alguna vibración en el eje. Si el espacio
del pulso es mayor de 50ms, depende del fabricante, entonces el servo podría estar en modo
SLEEP entre los pulsos. Entraría a funcionar en pasos pequeños y el rendimiento no sería el
óptimo.[15]
Voltaje.
Es la fuerza electromotriz requerida para producir un flujo de corriente. La unidad de
voltaje es el volt(V ).
Carga.
Es la integral de corriente con respecto al tiempo. La unidad de carga es el coulumb(C).
Un coulumb es la cantidad de carga que experimenta una fuerza de un Newton en un
campo eléctrico de un volt por metro o Coulumb = Newton ∗ metro/volt.
Corriente.
Es la razón de cambio del flujo de carga. La unidad de corriente es el ampére. si una carga
de dq coulumbs cruza un área dada en dt segundos, la corriente i es
dq
i= dt
Resistencias.
La resistencia se define como el cambio de voltaje requerido para producir un cambio en
la corriente
cambio en voltaje
resistencia R = cambio en corriente VA
La resistencia R lineal se da por
eR
R= i
donde eR es el voltaje a través del resitor e i es la corriente que fluye por el resistor. La
unidad de resistencia es el Ohm(Ω).
48
El recíproco de la resistencia se llama conductancia. La unidad de conductancia es el
siemens(S).
Los resistores no almacenan energía eléctrica pero la disipan en forma de calor.
Capacitores.
El capacitancia es el cambio en la cantidad de carga eléctrica requerida para producir un
cambio en el voltaje.
cambio en cantidad de carga electrica C
Capacitancia C = cambio en voltaje V.
y eC = Cq
deCC
entonces i = dt
despejando
deC = C1 idt
´t
eC (t) = C1 idt + eC (0).
0
Inductancias.
Es la relación entre el voltaje inducido y la razón de cambio de la corriente
cambio en voltaje inducido V
Inductancia= cambio en corriente por segundo A/s .
La autoinductancia es la propiedad de una bobina particular que ocurre cuando el campo
magnético establecido por una corriente de la bobina enlazada a la propia bobina, la
di
razón de cambio del flujo es proporcional a dt . La autoinductancia L, es la constante de
proporcionalidad entre el voltaje inducido eL volts y la razón de cambio de la corriente
eL
L= di
dt
49
La inductancia mutua es la influencia entre inductores que resulta de la interacción de sus
campos. Cuando un cambio de corriente de un ampére por segundo en cualquiera de dos
inductores induce una fem de un volt en el otro inductor, su inductancia mutua M es de
un henry.
Ley de Ohm.
Circuitos en serie.
Circuitos en paralelo.
e e e
i1 = R1 , i2 = R2 , i3 = R3
como i = i1 + i2 + i3 , luego
e
i= R1 + Re2 + Re3 = e
R donde R es la resistencia combinada, luego
1 1
R = R1 + R12 + R13
1 R1 R2 R3
R= 1 1 1 = R1 R2 +R2 R3 +R3 R1 .
R1 + R2 + R3
50
Figura 1.7: Resistores combinados en serie y en paralelo caso 1.
R2 R3
La resistencia combinada R2,3 = R2 +R3 luego la resistencia total R = R1 + R2,3 = R1 +
R2 R3
R2 +R3 .
R1 R2 R3 R4
R1,2 = R1 +R2 R3,4 = R3 +R4
51
Figura 1.9: Resistores combinados en serie y en paralelo caso 3.
El circuito se puede considerar como paralelo que consta de las resistencias (R1 + R3 ) y
(R1 +R3 )(R2 +R4 )
(R2 + R4 ), la resistencia combinada R = R1 +R2 +R3 +R4 .
52
Leyes de Kirchhoff.[8]
53
La rapidez con la cual una computadora digital puede realizar operaciones aritméticas nos per-
mite incluir cientos de ecuaciones para describir un sistema y para construir un sistema exacto,
pero muy complicado. Si no se requiere de una exactitud extrema, es preferible desarrollar un
modelo razonablemente simplificado.
Para determinar un modelo razonablemente simplificado, se necesita decidir cuales de las vari-
ables y relaciones físicas pueden despreciarse y cuales son cruciales en la exactitud del modelo.
Con el objeto de obtener un modelo en la forma de ecuaciones diferenciales lineales, se deben
despreciar cualesquiera parámetros distribuidos y las no lineales que pueden estar presentes
en el sistema físico. Si los efectos que estas propiedades ignoradas tienen en la respuesta son
pequeños , entonces los resultados del análisis del modelo matemático y los resultados del estu-
dio experimental del sistema físico serán satisfactorios. El que cualquiera de las características
particulares sea importante puede no ser obvio en algunos casos, y en otros, puede requerir de
penetración física en intuición.[10] En relación con lo mencionado.
Cuando se resuelve un problema nuevo, usualmente conviene construir primero un modelo sim-
plificado para obtener una idea general entorno a la solución. Posterior mente puede construirse
un modelo matemático más detallado y usarlo para un análisis más completo.
Ningún modelo matemático puede representar cualquier componente o sistema físico con pre-
cisión. Siempre se involucran aproximaciones y suposiciones. Tales aproximaciones y suposi-
ciones restringen el nivel de validez del modelo matemático. Al hacer una predicción acerca del
funcionamiento del sistema, debe tenerse presente cualquier aproximación o suposición involu-
crada en el modelo.[6]
3. Para verificar la validez del modelo, la predicción acerca del funcionamiento obtenida
al resolver las ecuaciones del modelo, se compara con resultados experimentales. Si los
resultados experimentales se alejan de la predicción en forma considerable, debe mod-
ificarse el modelo. Entonces se obtiene un nuevo modelo y las nuevas predicciones se
comparan con los resultados experimentales. El proceso se repite hasta que se obtiene
una concordancia satisfactoria entre la predicción y los resultados experimentales.
54
1.0.10.5. Etapas del modelo.[10]
55
Describir el comportamiento de estos componentes. Observar que las rela-
ciones que describen a los elementos estáticos son bastantes distintas de las
expresiones dinámicas.
Los sistemas lineales son aquellos en los que las ecuaciones del moldeo son lineales. Una
ecuación diferencial es lineal si los coeficientes son constantes o funciones únicamente de la
variable independientemente. La propiedad más importante de los sistemas lineales es que se le
puede aplicar el principio de superposición, el cual establece que la respuesta producida por la
aplicación simultanea de dos funciones excitadoras distintas, es la suma de las dos respuestas
individuales. Por tanto, para sistemas lineales se puede calcular la respuesta a diversas entradas,
tratando una entrada por vez y añadiendo o sumando los resultados. Este principio es el que
nos permite construir complicadas soluciones a las ecuaciones diferenciales lineales, a partir
de soluciones simples. Los sistemas lineales pueden ser invariables en el tiempo y variables en
el tiempo. Los sistemas dinámicos que son lineales y están construidos por coeficientes con-
centrados e invariables en el tiempo, pueden ser descritos por ecuaciones diferenciales lineales,
invariantes en el tiempo. Estos sistemas reciben el nombre de lineales e invariantes en el tiem-
po (o lineales de coeficiente constante), también usualmente se utilizan para describir este tipo
de sistemas las siglas LTI, del Inglés “Linear Time Invariant”. Los sistemas representados por
ecuaciones diferenciales, cuyos coeficientes son funciones del tiempo, reciben el nombre sis-
temas lineales variables en el tiempo o LTV, del Inglés “Linear Time Variant”.[10]
Ejemplo:
z = x 2 + y3 .
Ejemplo:
d2x
dt 2
+ dx 3
dt + x + x = 0.
56
Aunque muchas relaciones físicas son frecuentes representadas por ecuaciones lineales, en la
mayor parte de los casos realmente las relaciones no son muy lineales. De hecho, un estudio
cuidadoso de los sistemas físicos indica que aún los denominados sistemas lineales son real-
mente lineales solamente en restringidos rangos de operación.
Es una herramienta efectiva para estudiar procesos y situaciones, y para desarrollar un plan de
recolección de datos.
Es utilizado para identificar las posibles causas de un problema específico. La naturaleza gráfica
del diagrama permite que se organice grandes cantidades de información sobre el problema y
determinar exactamente las posibles causas.
El diagrama de causa y efecto se debe utilizar cuando se pueda contestar “si” a una o a las dos
preguntas siguientes:
57
El desarrollo y uso de diagramas de causa y efecto son más efectivos después de que el proceso
ha sido descrito y el problema esté bien definido.
Los diagramas de causa y efecto pueden ser utilizados para otros propósitos diferentes al análisis
de la causa principal.
El diagrama causa efecto no ofrece una respuesta a una pregunta, como lo hacen otras her-
ramientas. Herramientas como el análisis de Pareto21 , Diagramas Scatter22 e histogramas, pueden
ser utilizadas para analizar datos estadísticamente.
21 El nombre de Pareto fue dado por el Dr. Joseph Juran en honor del economista italiano Vilfredo Pareto
(1848 − 1923)
22 Herramienta de análisis que dibuja pares relacionados de variables para representar un patrón de relación o
correlación.
58
Capítulo 2
FORMULACIÓN Y
JUSTIFICACIÓN.
2.1. Formulación.
Con el auge en las últimas décadas de la tecnología en el mundo, surge la necesidad de actualizar
y obtener las herramientas adecuadas para competir a nivel tecnológico en el área industrial co-
mo en el área de la investigación científica, de una forma económica y que cumpla con los
estándares mínimos establecidos. El problema del desarrollo de nuestras tecnologías radica, en
el desconocimiento de herramientas que el mismo computador contiene. Pocos usuarios cono-
cen el manejo de los puertos del computador, las rutinas de comunicación y programación al
igual que los programas de diseño tipo CAD. Resulta útil hacer de estas herramientas un uso
frecuente en tareas de control y precisión en el desarrollo o reconstrucción de equipos con pro-
cesos paralelos y progresivos, es común considerar a estas funciones como una automatización
y control de los sistemas.
2.1.1. Justificación.
Dado que el control de los motores en desplazamiento posicional se puede realizar desde un
computador, es necesario el uso de lenguajes de programación de alto nivel, los cuales permiten
implementar las funciones ó rutinas que controlan el movimiento con la precisión de las tar-
eas a realizar, con la comunicación por los puertos y mediante el desarrollo e implementación
computacional de las ecuaciones diferenciales que describen el modelo matemático del sistema
mecánico que permita la búsqueda de coordenadas con exactitud de posición y tiempo controla-
da por motores, este proceso permite establecer una interrelación usuario-dispositivo de forma
amigable y sencilla.
59
Este tipo de control permite ser implementado en interrupciones neumáticas seriadas y parale-
las, en ordenes de encendido y apagado en mecanismos de comparación de estados de posición
y tiempo manejo de precisiones y vacíos y para estados emergentes y de capturas de informa-
ción.
60
Capítulo 3
OBJETIVOS.
Establecer un método de manejo de periféricos por puertos del computador. Desarrollar e im-
plementar un software capaz de realizar tareas de precisión y ubicar una coordenada especifica
por instrucciones sobre diferentes tipos de motores servo y paso a paso por puertos paralelo y
serial del computador.
Implementar los protocolos para envió de señales desde los puertos del computador.
Determinar el modelo matemático del sistema mecánico del motor servo y paso a paso.
61
Capítulo 4
METODOLOGÍA.
Las fases propuestas para el estudio metodológico son: la investigación del funcionamiento de
las JNI y los paquetes java comm, analizar la estructura mecánica de los motores paso a paso
para determinar las instrucciones que mueven el motor, realizar el modelamiento matemático
del sistema mecánico del motor, establecer un método de comunicación con los puertos paralelo
y serial que permite implementar una rutina de enlace para entrada y salida de datos a través de
los puertos, diseñar un algoritmo de comunicación a través de los puertos para hacer control en
dispositivos externos.
El manejo de las JNI requiere una programación cuidadosa que no interfiera con el control
interno del ordenador, por medio de esta herramienta se tiene acceso a la RAM a la LAN a los
discos duros y a todos los dispositivos y recursos del computador.
Al programar en JAVA, se tienen dos maneras de generar aplicaciones, la primera y la más
común es la generación de un applet el cual es utilizado en aplicaciones tipo web, este tipo de
aplicaciones no admite el uso de las JNI y los paquetes java comm están restringidos al comando
de puertos ya que no es permitido y pierde la seguridad de acceso a los recursos internos del
computador desde la web. La segunda es la creación de una aplicación básica la cual y puede
usar las JNI y los paquetes java comm.
Al programar la rutina de movimiento de los motores hay que tener en cuenta el tiempo de
retardo entre dato y dato, si el primer dato no alcanza a ejecutar una acción sobre el motor se
regresa y acumula la información en el puerto sobrecargándolo. entre dato y dato que se envía
ya que si el motor no alcanza a ejecutar la secuencia anterior se empezara a generar un error de
ejecución, que el dato enviado rebote devuelta al puerto sobrecargando este.
4.0.4. Procedimiento.
62
1. Una implementación del programa de comunicación mediante los puertos paralelo o se-
rial.
Con solo el manejo de correcto de los datos por puertos, no garantiza la correcta funcionalidad
del prototipo con el programa, este se garantiza con la combinación de las rutinas controladoras
y la tarjeta de enlace.
El primer factor que afecta el funcionamiento y el ideal a alcanzar es el tipo de puertos existentes
y sus modos de funcionamiento, para el caso de los pap el puerto paralelo, este tiene varios
tipos de hardware el mas común y el que se encuentra en los computadores es el estándar que se
adapta al modo de funcionamiento bidireccional es el que mas se adapta a lo que se realizó. Con
la programación en java se cuenta con el paquete javacomm con el cual no es sencillo manejar
puertos estándar ya que al inicia la conexión desde el paquete este inicia en modo unidireccional
y al intentar cambiar el modo quesera un mensaje de el hardware no es compatible con modo, la
única manera de llegar al modo bidireccional es pasando del modo unidireccional a modo byte
y por ùltimo a bodo bidireccional, lo que hace frustrante la utilización de este paquete. Con la
utilización de la JNI enlazar la entrada y salida de datos es más sencilla y es más versátil ya que
no solo se limita al puerto paralelo sino que cambiando la dirección base este puede enlazar el
serial y el USB, no es necesario cambiar de modo, su funcionamiento se basa en tres funciones
sencillas: una de asignación del bus de datos otra de lectura y la ultima de escritura.
63
Los componentes electrónicos en si no fueron un obstáculo para la consecución de el diseño del
prototipo, uno de los cuidados que se tiene que tener es en la elección del cable de conexión a
utilizar que un cable que no cumpla con los estándares, ya que si esto no se cumple la infor-
mación que se envía llegaría distorsionada al motor provocando funcionamiento errático o en
el peor de los caso que la información rebote hacia el puerto causando sobrecarga en este, otro
factor es la frecuencia con la que se envía la información si esta es muy alta no alcanza a ser
procesada y se provoca funcionamiento errático o en el peor de los casos que la información
que se envía se devuelva hacia el puerto causando daños a este.
Aunque las tarjetas buffer diseñadas te tal manera que: protejan al puerto de una sobre carga
esto no garantiza que en algún momento el voltaje sobre este se exceda del máximo que resisten
estos, su otra función es de al momento de activar una bobina esta tenga el voltaje de entrada
máximo de la tarjeta y no el voltaje de salida del puerto ya que este solo funciona de indicador
de activación y es muy bajo para alcanzar el máximo rendimiento del motor.
La programación de procesos en paralelo para el control de dos motores pap con el uso de mul-
tihilos que inicialmente controlan la velocidad de envío de la secuencia de pulsos de activación
de las bobinas y mediante la interacción con interfaz grafica la ubicación espacial en un plano
bidimensional, este pone limitaciones al desplazamiento, si no se colocaran estas limitaciones
se producirá un funcionamiento errático no solo de los motores sino del aplicativo en sí.
Una de tareas es la de calibrar el programa con los motores, ya que el programa se diseño
basado en condiciones ideales del funcionamiento del motor aparte se programo basado en la
utilización de motores de 12V con 1.8° de rotación por pulso, en el caso de cambiar de motor
se vería afectado el funcionamiento correcto del las tareas o procesos ejecutados, la solución
es sencilla ya que internamente se pueden cambiar las variables encargadas de esto o que por
medio de la GUI se realice este cambio sin que esto afecte el resto de procesos que este realiza.
Ver anexo 1.
4.0.5.2. La JNI
Con la JNI se tienen las rutinas básicas de comunicación que están en el lenguaje nativo del
computador, el cual está en lenguaje C. Para utilizar la JNI es necesario ubicar las librerías
en las cuales están las funciones que se desean utilizar. Lo primero es la identificación de los
puertos que se tienen instalados y sus direcciones base, en particular el la dirección del bus de
datos 1.6 en la página 31, al identificar la dirección base ya se puede enlazar la entrada y la
salida de datos del puerto. Una limitante de la JNI es que no se puede detectar si el puerto esta
o no disponible por lo cual se puede presentar errores de comunicación.
64
4.0.5.3. El modelo matemático.
Lo primero es identificar las variables intervienen en el movimiento mecánico del motor luego
mediante que leyes físicas interactúan las variables entre ellas este proceso lleva a la ecuación
de estado correspondiente con el sistema que se quiere describir. Con la solución del modelo
matemático se tiene la función de estado con la cual se puede realizar una simulación y deter-
minar el grado de exactitud del modelo al sistema real.
Para sistemas mecánicos de rotación se cumple la segunda Ley de Newton de la siguiente forma:
ΣM = Jα
Donde:
J Momento de inercia.
α Aceleración angular.
dw
Puede formularse en función de la variación angular (w) ya que α = dt
ΣM = J dw
dt .
d2θ
También en función de la variación de la posición angular ya que α = dt 2
2
ΣM = J ddtθ2 .
Con la interfaz nativa de comunicación con los puertos y el modelo matemático de cada motor,
se procede a diseñar los algoritmos que permitan el control de dispositivos mecánicos conec-
tados a los puertos. Como la comunicación se hace mediante secuencia de bits es necesario
definir el tipo de datos en el algoritmo. La interfaz nativa toma los datos de tipo hexadecimal
para enviarlos ya que C trabaja de esta forma. Para definir la secuencia de datos a enviar hay
que tener en cuenta los bits que tienen que estar activos en el puerto en el cual se escriben, si es
el puerto paralelo se tienen 8 bits de salida, en el serial RS-232 se tienen 4 bits de salida.
65
Aplicación motor PaP.
Para este tipo de motor es necesario enviar un arreglo de bits para el control del mismo, el
arreglo de datos debe estar ordenado de acuerdo con el orden de secuencia de activación de las
bobinas del motor y la secuencias deben estar diseñadas de modo tal que se acoplen con los
tres modos de funcionamiento de los PaP unipolares 1.0.7.3 en la página 42 que son: Secuencia
normal, Wave Drive y Secuencia de Medio paso. Es aquí donde toma fuerza la utilización de
vectores y la programación en JAVA utilizando los hilos como secuencia de control ya que
poseen control de velocidad y permiten el manejo sincrónico y asincrónico de la secuencia de
datos escrita en el puerto.
Para crear la aplicación se crea una clase tipo hilo para el control del motor, esta clase se
extiende la de clase Thread por lo tanto hereda todos los métodos de la clase Thread y lo que se
hace es sobre escribir el método run, que es donde se escribe el código encargado del cálculo
del dato de la secuencia a enviar. Luego se crea otra clase de control tipo hilo extendida de la
clase Thread y al igual que la anterior clase se sobre escribe el método run que es donde se
envía el dato calculado.
Este procedimiento de varios hilos uno para cálculo del dato y otro de envió de dato es útil para
el trabajo de dos motores de modo sincrónico ó asincrónico, esto se hace variando en cada clase
de calculo del dato a enviar para cada motor el tiempo del método sleep el cual es el intervalo
de espera entre dato y dato, este método es independiente de la clase en que se modifique el
tiempo lo cual le da a la aplicación la facilidad de cambiar la velocidad de envió de datos de
forma individual.
A diferencia del PaP este motor funciona mediante una señal que este dentro de su rango de
trabajo, esto facilita la programación de la secuencia de datos que se escribe en el puerto ya que
sólo hay que utiliza un dato a diferencia del PaP que hay que utilizar un arreglo de datos, el
tiempo del dato enviado se puede controlar fácilmente con la utilización de dos hilos los cuales
permiten mantener el dato el tiempo necesario para hacer mover el servo el ángulo deseado,
para esto un hilo se encarga de la escritura en el puerto y el otro se encargara de la duración del
mismo en el puerto.
Para la implementación de la aplicacion de control para los servos se crean tres hilos cada uno
extendido de la clase Thread y sobre escribiendo el método run. El primer hilo determinal el
tiempo OFF, el segundo hilo controla el tiempo ON, la señal activa, y este lo hace por control
del primer hilo, cuando el primier hilo está en estado sleep, el segundo hilo envía una señal
durante el tiempo que se encuentre el primer hilo en estado sleep, cuando cambia el estado del
66
primer hilo el segundo hilo deteiene el envio de la señal. El tercer hilo es el encargado de enviar
el dato que esta generando el primer hilo, este hilo envía continuamente el dato generado por el
primer hilo.
Por medio del paquete de diseño asistido ORCAD, el cual con el programa Layout permite hacer
el diseño de la tarjeta, inicialmente solo muestra los componentes de la tarjeta desconectados y
acomodados por defecto, una de las precauciones que hay que tener es al realizar las conexiones,
ya que se pueden estar conectando de manera errónea los componentes y cuando se genere
la tarjeta se pueden tener cortos, lo primero es acomodar los componentes de acuerdo con
la disposición de la entrada de datos y la salida de datos al motor, después de colocados los
componentes se procedió al ruteado de los mismos. Para esto se puede utilizar el Autoroute que
posee el Layout o utilizar SPECCTRA, otro de los programas que hacen parte de ORCAD, el
cual hace un ruteado optimizado. Otra posibilidad para esto es hacer el ruteado manualmente.
Layout tiene la capacidad de cambiar el grosor de los caminos de conexión de conexión.
67
Capítulo 5
RESULTADOS.
Mediante el uso de las JNI y la librería jnpout32.dll se desarrollo una rutina la cual permite
enlazar la salida del puerto paralelo para enviar las serie de datos los cuales permiten al motor
tipo paso a paso y al servo cambiar de estado.
La programación de la JNI:
package jnpout32 ;
public class ioPort {
/ / d e c l a r a c i ó n d e l método n a t i v o j n p o u t 3 2 . d l l
p u b l i c n a t i v e v o i d Out32 ( s h o r t P o r t A d d r e s s , s h o r t d a t a ) ;
/ / s a l i d a d e l v a l o r e s p e c i f i c o d e l nombre d e l p u e r t o
p u b l i c n a t i v e s h o r t Inp32 ( s h o r t PortAddress ) ;
/ / a s i g n a c i ó n de un v a l o r a una d i r e c c i ó n de un p u e r t o
s t a t i c { System . l o a d L i b r a r y ( " j n p o u t 3 2 p k g " ) ; }
/ / c a r g a de l a l i b r e r í a j n p o u t 3 2 . d l l p a r a e l p a q u e t e
}
68
5.2. RUTINAS DE CONTROL DE MOTOR PaP.
La clase básica que todas estas rutinas usan para el enlace con el puerto seleccionado es la
siguiente:
class puerto
{
s t a t i c short dato ;
s t a t i c s h o r t addr ;
s t a t i c pPort port ;
public puerto ()
{
p o r t = new p P o r t ( ) ;
a d d r =0 x378 ; / / d i r e c c i ó n d e l p u e r t o que d e s e a m o s u s a r
}
public void e s c r i b e ( s h o r t dato )
{
p o r t . o u t p u t ( a d d r , d a t o ) ; / / l a f u n c i ó n que toma e l d a t o
a enviar y el puerto
}
public short lee ()
{
d a t o =( s h o r t ) p o r t . i n p u t ( addr ) ; / / c a p t u r a e l d a t o
que e s t a a c t u a l m e n t e en e l p u e r t o
return ( dato ) ;
69
}
}
Para esta rutina es necesario conocer el ángulo de rotación del motor el cual permite establecer
el algoritmo basado en modelo matemático correspondiente, esta rutina funciona con un solo
hilo de control y un hilo de enlace de datos.
El código es el siguiente:
70
5.2.1.1. Funcionamiento.
El funcionamiento es muy sencillo ya que lo único que hay que hacer es designar el ángulo de
rotación y el programa internamente con vierte esa distancia en el numero de pulsos que tiene
que realizar para completar la tarea y dar clic en inicio, si no se quiere que recorra esa ángulo y
ya se dio clic en inicio solo se detiene con el botón de pausa.
En este caso es también es necesario conocer el ángulo de rotación de un paso del motor y
mediante el cálculo de recorrido de este ángulo de rotación es posible establecer un algoritmo
71
que permita determinar la rotación del motor.
72
}
5.2.2.1. Funcionamiento.
El funcionamiento es muy sencillo ya que lo único que hay que hacer es designar la distancia
a recorrer el programa internamente con vierte esa distancia en el numero de pulsos que tiene
que realizar para completar la tarea y dar clic en inicio, si no se quiere que recorra esa distancia
y ya se dio clic en inicio solo se detiene con el botón de pausa.
Para este tipo de rutina es necesario hacer el programa con varios hilos de control como el
anterior, este permite calcular individualmente los datos de cada motor a la velocidad corre-
73
spondiente da cada uno de ellos y un hilo el cual toma los datos calculados, este hilo trabaja
independientemente de la velocidad de los otros y es el que controla la comunicación con el
puerto.
74
{
f o r ( i n t i = 0 ; i <= v u e l t ; i ++)
{
f o r ( i n t c o n t = 0 ; c o n t < d a t o e . l e n g t h ; c o n t ++)
{
dato1=datoe [ cont ] ;
try {
s l e e p ( m i l l i s , nanos ) ;
} catch ( InterruptedException e ){
e . printStackTrace ( ) ;
}
}
}
}
}
p u b l i c s h o r t s e c 1 ( ) / / E s t a f u n c i ó n e s l a que s e l l a m a p a r a
poder e n v i a r e l dato
{
r e t u r n ( dato1 ) ;
}
}
75
}
p u b l i c v o i d Vmil ( l o n g m ) / / m o d i f i c a l a v e l o c i d a d en
m i l i s e g u n d o s de e s t e h i l o
{
m i l l i s =m;
}
p u b l i c v o i d Vna ( i n t n ) / / m o d i f i c a l a v e l o c i d a d de e s t e
h i l o en nano s e g u n d o s
{
n a n o s =n ;
}
p u b l i c v o i d Vuel ( i n t vu ) / / c a m b i a e l numero de c i c l o s d e l
motor 2
{
v u e l t =vu ;
}
public void detener2 ( ) / / d e t i e n e el proceso del h i l o 2
{
try {
suspend ( ) ;
} catch ( SecurityException e ){
e . printStackTrace ( ) ;
}
}
public void continuar2 ( ) / / reanuda el proceso del h i l o 2
{
try {
resume ( ) ;
} catch ( SecurityException e ){
e . printStackTrace ( ) ;
}
}
p u b l i c v o i d r u n ( ) / / e s t e e l e l método que s e r e e s c r i b e
p a r a e l c á l c u l o de l o s d a t o s
{
while ( c o r r e r )
{
f o r ( i n t i = 0 ; i <= v u e l t ; i ++)
76
{
f o r ( i n t c o n t = 0 ; c o n t < d a t o e . l e n g t h ; c o n t ++)
{
dato1=datoe [ cont ] ;
try {
s l e e p ( m i l l i s , nanos ) ;
} catch ( InterruptedException e ){
e . printStackTrace ( ) ;
}
}
}
}
}
p u b l i c s h o r t s e c 2 ( ) / / método a l que s e l e h a c e
llamado para obtener e l dato .
{
r e t u r n ( dato1 ) ;
}
}
5.2.3.1. Funcionamiento.
77
Figura 5.3: Pantalla de control de dos motores.
Para esta aplicación se usa la rutina de control de dos motores y se le añade un algoritmo de
retroceso y por medio de la interfaz gráfica del usuario se le da el control bidimensional, el
cual esta restringido a valores positivos y es una representación del estado físico en el cual se
mueven los motores.
El control bidimensional es parte de la interfaz gráfica, este control se realiza con los métodos
MouseListener y MouseMotionListener.
p a n e l . a d d M o u s e L i s t e n e r ( / / Se l e a d i c i o n a a l un p a n e l e l
78
método M o u s e L i s t e n e r
new M o u s e L i s t e n e r ( ) / / Lo que s e h a c e e s s o b r e e s c r i b i r e l método
{
p u b l i c v o i d m o u s e P r e s s e d ( MouseEvent e ) / / r e g i s t r a e l l u g a r
donde s e h a g a c l i k
{
e . consume ( ) ;
x1 = e . getX ( ) ; / / c a p t u r a l a p o s i c i ó n en x .
y1 = e . getY ( ) ; / / c a p t u r a l a p o s i c i ó n en y .
r u n n e r . d i s t ( x1 , y1 ) ; / / Se l e e n v í a a l H i l o que e s t a e n c a r g a d o
de e n v i a r l o s d a t o s p a r a que e s t e l o e n v í e a s u s
respectivos hilos .
}
p u b l i c v o i d m o u s e E n t e r e d ( MouseEvent e )
{
}
p u b l i c v o i d m o u s e E x i t e d ( MouseEvent e )
{
}
});
p a n e l . a d d M o u s e M o t i o n L i s t e n e r ( / / Se a d i c i o n a e l
método M o u s e M o t i o n L i s t e n e r
new M o u s e M o t i o n L i s t e n e r ( ) / / Lo que s e h a c e e s s o b r e
e s c r i b i r e l método
{
p u b l i c v o i d mouseDragged ( MouseEvent e ) / / r e g i s t r a e l p o r
donde s e va o p r i m i e n d o c o n t i n u a m e n t e
{
e . consume ( ) ;
x2 = e . getX ( ) ; / / Se c a p t u r a l a p o s i c i ó n en x
y2 = e . getY ( ) ; / / Se c a p t u r a l a p o s i c i ó n en y
r u n n e r . d i s t ( x2 , y2 ) ; / / Se l e e n v í a a l H i l o que e s t a e n c a r g a d o
de e n v i a r l o s d a t o s p a r a que e s t e l o e n v í e a s u s
respectivos hilos .
}
p u b l i c v o i d mouseMoved ( MouseEvent e ) / / r e g i s t r a p o r
donde s e mueve e l mouse
{
79
}
p u b l i c v o i d m o u s e E n t e r e d ( MouseEvent e )
{
}
p u b l i c v o i d m o u s e E x i t e d ( MouseEvent e )
{
}
});
5.2.4.1. Funcionamiento.
El de este es parecido al anterior y es una recopilación de rutinas anteriores, inicia con la clase
80
EspacialFrame la cual se encarga sólo de la interface grafica en donde mediante las clases
Scrollbar se generan las barras de cambio de velocidad y la combinación de las clases Panel
con MouseListener se envía la información a la clase prog de la ubicación espacial donde se
desea que se desplacen los motores, la cual funciona de puente con la clase escribir esta es la
encargada de escribir los datos en el puerto los que recibe de las clases hilo1 e hilo2, los cuales
tienen las rutinas de cálculo de dato a enviar.
Dado que el movimiento del servo motor se requiere de una señal activa de determinada am-
plitud1 y el modelo matemático de este tipo de dispositivo es lineal, lo cual facilita su pro-
gramación, y que se puede enviar una señal activa por el puerto de una determinada amplitud,
permite diseñar un programa en java que controle en servo dependiendo de los rangos de señales
de los mismos.
El programa esta constituido por tres hilos de control, el hilo general que es el encargado de
enviar la información al puerto, los otros dos hilos son lo que determinan la amplitud de la señal
activándose y desactivándose dependiendo del estado del otro hilo.
81
envía la señal activa
{
d a t o 1 =0 x01 ;
try {
sleep ( milli );
} catch ( InterruptedException e ){
e . printStackTrace ( ) ;
}
}
e l s e / / en c a s o c o n t r a r i o a p a g a l a s e ñ a l a c t i v a
{
d a t o 1 =0 x00 ;
try {
sleep ( milli );
} catch ( InterruptedException e ){
e . printStackTrace ( ) ;
}
}
}
}
public short datoe ()
{
r e t u r n ( dato1 ) ;
}
}
c l a s s h i l o 2 e x t e n d s Thread implements Runnable
/ / C l a s e que c o n t r o l a e l e n c e n d i d o de l a s e ñ a l
{
public long m i l l i ;
p u b l i c h i l o 2 ( l o n g m ) / / C o n s t r u c t o r de l a c l a s e
{
m i l l i =m;
}
p u b l i c void run ( )
{
while ( t r u e )
{
try {
82
sleep ( milli );
} catch ( InterruptedException e ){
e . printStackTrace ( ) ;
}
}
}
}
c l a s s e s c r i b i r e x t e n d s Thread implements Runnable / / Clase
que e n v í a l a s e ñ a l a l p u e r t o .
{
private puerto lpt ;
p u b l i c h i l o 1 h1 ;
p u b l i c e s c r i b i r ( l o n g m ) / / C o n s t r u c t o r de l a c l a s e e l que
g e n e r a e l e n l a c e con e l p u e r t o
{
h1=new h i l o 1 (m ) ;
l p t =new p u e r t o ( ) ;
}
p u b l i c void run ( )
{
h1 . s t a r t ( ) ;
while ( t r u e )
{
l p t . e s c r i b e ( h1 . d a t o e ( ) ) ;
}
}
}
5.3.0.2. Funcionamiento.
Para este motor, dada la condición de no poder hacer que se devuelva, solo cuenta con la
variación de velocidad y de desplazamiento, dar clic en inicio, si no se quiere que recorra esa
distancia y ya se dio clic en inicio solo se detiene con el botón de pausa.
83
5.4. VENTAJAS Y DESVENTAJAS DE LOS MOTORES PASO A
PASO Y LOS MOTORES SERVO.
5.4.1.1. Ventajas.
Puesto que la operación del motor paso a paso se sincroniza con las señales de pulso del coman-
do generadas de los pulsos en enviados por los puertos, son convenientes para el control exacto
de su rotación.
Bajo costo.
5.4.1.2. Desventajas.
El flujo actual de un driver a la bobina del motor no se puede aumentar o disminuir durante
la operación. Por lo tanto, si el motor se carga con una carga más pesada que la característica
diseñada del esfuerzo de torsión del motor, saldrá de paso con los pulsos.
El motor paso a paso produce mas ruido y vibración que los servos.
El motor paso a paso no se puede utilizar para tareas de rotación de alta velocidad.
5.4.2. Servomotor.
5.4.2.1. Ventajas.
Si una carga pesada se pone en el motor, el driver aumentará la corriente a la bobina del motor
como intento de rotar el motor.2
84
5.4.2.2. Desventajas.
Puesto que el servomotor intenta rotar según los pulsos del comando, pero se retrasa, no es
conveniente para el control de la precisión de la rotación.
Costo alto.
Cuando está parado, el rotor del motor se continúa moviendo hacia adelante y hacia atrás un
pulso, de modo que no sea conveniente si usted necesita prevenir la vibración.
El comportamiento físico del sistema mecánico de los motores paso a paso esta basado en el
tipo la secuencia de señales que se le administre y el servo en el tiempo que se mantenga una
señal activa, ese pulso o señal administrada hace que el motor gire en un ángulo especificado
por el fabricante.
85
5.5.1. Descripción física motor PaP.
Al recibir una secuencia de señales el motor PaP, este realiza un desplazamiento el cual se
moverá un paso completo o medio paso, la distancia del paso dependerá del ángulo mínimo del
motor.
Al recibir una señal de una amplitud que este entre los rangos de funcionamiento del servo este
realiza un desplazamiento dependiendo de el tiempo de amplitud de la señal.
Momento de inercia.
Amortiguación mecánica.
Inductancia
Resistencia.
Tensión aplicada.
La interacción de las variables eléctricas se da mediante las ecuaciones de las leyes de Kirchhoff
:
2
L ddt 2q + R dq 1
dt + C q = E (t)
86
5.5.3.1. Motor PaP
El modelo matemático de este motor esta afectado por las siguientes variables: el voltaje con-
stante que induce la rotación del rotor el cual se enclava en la posición en donde se activen las
bobinas, este funcionamiento lo que afecta el la velocidad de cambio entre bobina y bobina. La
secuencia de activación, esta secuencia designa el ángulo de rotación que da entre dos bobinas,
el cual puede ser secuencia de medio paso, normal o wave drive, con estas secuencia cambia la
rotacion por ejemplo: si el motor pap es un motor de 12V y 7.5º de rotación, con la secuencia
normal un paso es de 7.5º asi como con secuencia wave drive lo que varia entre cada una de es-
tas es la manera cono se enclava ya que con la secuencia normal es nesesario tener dos bobinas
activas, y para un giro completo se necesitarían 48 pulsos, para la secuencia de medio paso los
pasos serian de 3.75º y para un giro completo se nesecitarian 96 pulsos.
El modelo matemático de este tipo de motor es muy particular, ya que este basado en su fun-
cionamiento se puede determinar un modelo el cual es lineal, lo que facilita su programación,
luego para conseguir un ángulo de torción θ estará dado por la siguiente fórmula:
θ
t = µ + 100
87
5.6. TARJETA DE ENLACE.
El tarjeta es el enlace entre el computador y el motor PaP, consta de los siguientes componentes:
88
1. Se envía una señal desde el puerto a la tarjeta, la cual entra por el buffer.
3. El transistor al recibir la señal se activa y envía el voltaje hacia la salida del la bobina del
motor correspondiente.
La visualización en el aplicativo bidimensional no ver esa pantalla gris sino poder enlazar la
salida de video y en ese espacio visualizar el punto donde se están ubicando los motores, hacer
mas interactivo el programa.
89
Capítulo 6
CONCLUSIÓN.
1. Aunque los sevomotores tienen una mayor potencia, para el tamaño que estos tienen, al-
gunos carecen de la posibilidad de cambiar su sentido de rotacion, aun asi son utiles para
trabajos pesados en los que se requieran de velocidad y potencia. Los motores PaP tienen
una gran ventaja que radica en su manera de funcionar ya que es muy sencillo cambiar
el sentido de rotación e incluso cambiando el intervalo de las señales de activación lle-
varlo a su máxima velocidad, son motores de gran versatilidad utilizados en todo tipo de
dispositivos desde robots hasta unidades de CD recomendables para cualquier tarea de
precisión.
3. Aunque la mecánica de estos motores sea sencilla al combinarlos para tareas diversas se
convierte en sistemas de gran complejidad, versatilidad y de precisión que junto con los
programas controladores y un sistema funcional y práctico que facilita al usuario final
realizar tareas de precisión que manualmente no darían los resultados esperados o de
generación de rutinas las cuales manualmente seria un proceso largo y tedioso.
90
grandiosos, dispositivos que realicen tareas más complejas pero que su valor radique en
la sencillez de los mismos.
91
ANEXOS
Anexo1.
92
Bibliografía
[1] P. P. Acarnley. Stepping motors : a guide to modern theory and practice. London : Peter
Peregrinus, 2nd ed. edition, 1984.
[2] Paul P. Acarnley. Stepping motors : a guide to theory and practice. London : The Institu-
tion of Electrical Enginners, 2002.
[3] Antonio Barrientos. Fundamentos de robótica. McGraw Hill. Madrid, España, 1997.
[4] H. M. Deitel. Java How to Program. Editorial Prentice Hall, New Jersey, United States,
sexta edición edition, 2004.
[6] Stubberud y Williams DiStefano III. Feedback and control systems. Editorial Schaum,
New York, 1967.
[9] Juan Martín García. Teoría y ejercicios prácticos de Dinámica de Sistemas. Sysware,
2003.
[11] Ogata Katsuhiko. Ingenieria de Control Moderna. Pearson, Prentice Hall. Madrid, 2003.
93
[14] Virgilio Gómez Negrete. El puerto paralelo de la pc. Virtech, 3:10, 2005.
[15] Norman Nise. Control Systems Engineering. John Wiley & Sons Inc, 4 edition, 2004.
[16] E.H. Wernick. Electric motor handbook. New York : MacGraw-Hill, 1978.
94
Autor: Javier Alejandro Salamanca Pachón
A J i Al j d S l P hó
Trabajo de grado para optar al titulo de:
Informático Matemático.
Trabajo dirigido por:
Ing. Jesús Daza Coordinador centro de
p electrónica. Pontificia Universidad
microscopia
Javeriana Facultad de Ciencias.
INTRODUCCIÓN
Con el uso de los lenguajes
computacionales como java,
desarrolladores matemáticos y
mediante la programación de
protocolos
t l
los cuales permiten enlazar la salida y
entrada de datos de los puertos
paralelo y serial lo cual hace posible
enviar o recibir paquetes de datos o
señales activas por medio de estos
para el control de sistemas externos.
OBJETIVOS
Objetivo general.
Establecer
E t bl un método
ét d d de manejo
j dde
periféricos por puertos del computador.
D
Desarrollar
ll e iimplementar
l t un software
ft
capaz de realizar tareas de precisión y
ubicar
bi una coordenada
d d especifica
ifi por
instrucciones sobre diferentes tipos de
motores
t servo y paso a paso por puertos
t
paralelo y serial del computador.
Objetivos específicos.
• Implementar los protocolos para envió de
señales desde los puertos del computador.
Puerto Dirección base
LPT1 0x378
LPT2 0x278
LPT
LPT3 0x3BC
BC
Tipos de puerto.
Tipos de puerto
SPP. Es el puerto más sencillo, tiene tres
SPP Es el puerto más sencillo tiene tres
buses o registros, en la dirección Base: bus de
datos, este es de 8 bits y todos sus pines son
salidas
Bidireccional (PS/2). Este puerto tienen las
mismas características que el SPP con la
í l l
diferencia que el bus de datos es
bidi
bidireccional, es decir que cambiando el
i l d i bi d l
estado de algunos bits del bus de control se
puede actuar sobre el bus de datos haciendo
que trabaje en su totalidad como entradas o
como salidas
EPP (Enhaced Parallel Port). Este tipo de
puerto tiene la característica de ser tan rápido
como el bus del sistema, alcanzando
velocidades de transferencia de hasta 1Mb
l id d d f i d h Mb
por segundo
ECP (Extended Capabilities Port). Puede al
igual que el EPP, escribir y leer a la velocidad
del Bus.
P
Puerto serial.
t i l
El puerto seria o RS‐232 es un estándar para
realizar la transmisión de datos. El RS‐232
consiste en un conector tipo DB‐25 de 25
pines, aunque es normal encontrar la versión
d i DB
de 9 pines DB‐9.
Las señales con las que trabaja este puerto
L ñ l l b j
son digitales, de 12V(0 lógico) y ‐12V(1
lógico) para la entrada y salida de datos y a
lógico), para la entrada y salida de datos, y a
la inversa en las señales de control. El estado
de reposo en la entrada y salida de datos es ‐
12V.
En un ordenador puede haber varios puertos
p p
series, a los que normalmente se les
denomina COM 1, COM 2, COM 3, por
defecto el COM 1 suele pertenecer al ratón
usando éste el IRQ 4, aunque también es
posible encontrarle en el COM 2, así que lo
í
normal es encontrarnos libre el puerto serie
d l COM tili d l IRQ
del COM 2 utilizando el IRQ 3.
Motor paso a paso.
A diferencia de los motores de corriente
A dif i d l d i
continua (CC) que gira a todo lo que dan
cuando son conectados a la fuente de
alimentación, los motores paso a paso (PaP)
solamente giran un ángulo determinado los
solamente giran un ángulo determinado, los
CC sólo disponen de dos terminales de
conexión, mientras los PaP pueden tener 4, 5
ó 6, según el tipo de motor que se trate
Por otro lado los motores de corriente
continua no pueden quedar enclavados en
una sola posición, los motores paso a paso
tienen la posibilidad de quedar enclavados en
una posición o bien totalmente libres.
i ió bi l lib
Principio de funcionamiento.
El motor está constituido por un rotor sobre
El á i id b
el que van aplicados distintos imanes
permanentes y por un cierto número de
bobinas exitadoras, bobinas en su estator.
Las bobinas son parte del estator y el rotor es
un imán permanente.
Bipolar.
Estos tienen, generalmente, cuatro cables de
salida. Necesitan ciertos trucos para ser
controlados, debido a que requieren del
cambio de dirección del flujo de corriente a
través de las bobinas en la secuencia
apropiada para realizar un movimiento.
Unipolares.
U i l
Estos motores suelen tener 6 ó 5 cables de
salida, dependiendo de su conexionado
ld d d d d d
interno. Este tipo se caracteriza por ser más
simple de controlar.
i l d t l
Secuencia para manejar
motores paso a paso
bi l
bipolares.
A B C D
+V ‐V +V ‐V
+V ‐V ‐V +V
‐V +V ‐V +V
‐V +V +V ‐V
Secuencia para manejar
motores paso a paso
unipolares.
Secuencia Normal.
Secuencia Normal
Con esta secuencia el motor avanza un paso
por vez debido a que siempre hay dos
bobinas activadas, se obtiene un alto torque
de paso y de retención.
de paso y de retención
PASO BOBINA A BOBINA B BOBINA C BOBINA D
1 ON ON OFF OFF
2 OFF ON ON OFF
3 OFF OFF ON ON
4 ON OFF OFF ON
Secuencia del tipo wave drive.
S i d l i d i
En esta secuencia se activa sólo una bobina a
l
la vez. En algunos motores esto brinda un
l b d
funcionamiento más suave. La contrapartida
es que al estar sólo una bobina activada, el
l t ól b bi ti d l
torque de paso y retención es menor.
PASO BOBINA A BOBINA B BOBINA C BOBINA D
1 ON OFF OFF OFF
2 OFF ON OFF OFF
3 OFF OFF ON OFF
4 OFF OFF OFF ON
Secuencia del tipo medio paso.
S i d l i di
En esta secuencia se activan las bobinas de tal
f
forma de brindar un movimiento igual a la
d b d l l
mitad del paso real. Para ello se activan
primero 2 bobinas y luego sólo 1 y así
i b bi l ól í
sucesivamente.
PASO BOBINA A BOBINA B BOBINA C BOBINA D
1 ON OFF OFF OFF
2 ON ON OFF OFF
3 OFF ON OFF OFF
4 OFF
O ON
O ON
O OFF
O
5 OFF OFF ON OFF
6 OFF OFF ON ON
7 OFF OFF OFF ON
8 ON OFF OFF ON
Servo Motores.
Los servos son un tipo especial de motor de
L i i l d d
C.C. que se caracterizan por su capacidad
para posicionarse de forma inmediata en
cualquier posición dentro de de su intervalo
de operación.
de operación
Un Servo es un dispositivo pequeño que tiene
un eje de rendimiento controlado. Este puede
ser llevado a posiciones angulares específicas
ll d i i l ífi
al enviar una señal codificada. Con tal de que
una señal codificada exista en la línea de
entrada, el servo mantendrá la posición
angular del engranaje Cuando la señala
angular del engranaje. Cuando la señala
codificada cambia, la posición angular de los
piñones cambia.
Funcionamiento de un servo.
El motor del servo tiene algunos circuitos de
El motor del ser o tiene alg nos circ itos de
control y un potenciómetro esta es conectada
al eje central del servo motor.
al eje central del servo motor
METODOLOGÍA
Las fases propuestas para el estudio
as ases p opuestas pa a e estud o
metodológico son: la investigación
del funcionamiento de las JNI y los
paquetes java comm, analizar la
estructura mecánica de los motores
t t á i d l t
paso a paso para determinar las
instrucciones que mueven el motor,
realizar el modelamiento matemático
del sistema mecánico del motor
establecer un método de comunicación
estab ece u étodo de co u cac ó
con los puertos paralelo y serial que
permite implementar una rutina de
enlace para entrada y salida de datos
a través de los puertos, diseñar un
t é d l t di ñ
algoritmo de comunicación a través
de los puertos para hacer control en
dispositivos externos.
p
Procedimiento.
El programa que administra el movimiento de
p g q
motores debe contemplar:
1. Una implementación del
p
programa de comunicación
mediante los puertos paralelo o
serial.
2. Activación de bobinas y control
de pulso para motor PaP y servo
correspondientemente.
33. Elaboración del modelo
matemático de motor tipo paso a
paso y servo.
paso y servo
4. Simulación del modelo
4
matemático.
5 Implementación del programa
5.
que controla el motor desde el
computador.
1. Aunque los sevomotores tienen una
mayor potencia, para el tamaño que estos
tienen, algunos carecen de la posibilidad
de cambiar su sentido de rotación, aun
así son útiles para trabajos pesados en los
que se requieran de velocidad y potencia.
Los motores PaP tienen una gran ventaja
g j
que radica en su manera de funcionar ya
q y
que es muy sencillo cambiar el sentido de
rotación e incluso cambiando el intervalo
de las señales de activación llevarlo a su
máxima velocidad, son motores de gran
versatilidad utilizados en todo tipo de
p
dispositivos recomendables para cualquier
p
tarea de precisión.
2. El resultado final no solo es de
componentes electrónicos si no de la
componentes electrónicos, si no de la
combinación de la programación
avanzada y la modelización matemática.
avanzada y la modelización matemática
En donde la electrónica nos brinda la
posibilidad de enlazar los motores con el
computador, la modelización matemática
nos brinda una descripción del
funcionamiento en forma matemática y así
establecer que factores afectan el sistema y
como a partir de estos hacerlo computable
la programación da la posibilidad de
controlar y manipular los motores a
nuestra voluntad mediante lo
visualizado en el modelo matemático
que permitió crear las rutinas que son
de gran funcionalidad debido a su
diseño y a sus posibles mejoras.
3. Aunque la mecánica de estos motores
p
sea sencilla al combinarlos para tareas
diversas se convierte en sistemas de
g
gran complejidad, versatilidad y de
p j , y
precisión que junto con los programas
y
controladores y un sistema funcional
y práctico que facilita al usuario final
realizar tareas de precisión que
manualmente no darían los resultados
esperados o de generación de rutinas las
cuales manualmente seria un proceso
l l
largo y tedioso.
4. Con la combinación de las aéreas de la
electrónica de los sistemas y la
matemática de una forma tan básica, si
se profundiza en esta combinación los
resultados obtenidos serán grandiosos
dispositivos que realicen tareas más
complejas pero que su valor radique en la
sencillez de los mismos.
RECOMENDACIONES
Una de las mejoras que se le puede realizar al
U d l j l d li l
programa y al dispositivo es la integración la
i t
integración con los puertos USB y el diseño
ió l t USB l di ñ
de los protocolos de comunicación utilizando
l i
los mismos.
La visualización en el aplicativo bidimensional no
ver esa pantalla gris sino poder enlazar la salida
de video y en ese espacio visualizar el punto
donde se están ubicando los motores hacer mas
donde se están ubicando los motores, hacer mas
interactivo el programa.