Implementación de un sistema posicional con motores tipo

Anuncio
FORMATO 1 (Anexo No.2)
CARTA DE AUTORIZACIÓN DE LOS AUTORES PARA LA CONSULTA, LA REPRODUCCIÓN
PARCIAL O TOTAL, Y PUBLICACIÓN ELECTRÓNICA DEL TEXTO COMPLETO.
(OPCIONAL)
Bogotá, D.C., Fecha Jueves, 30 de julio de 2009
Marque con una X
Tesis doctoral
Señores
BIBLIOTECA GENERAL
Cuidad
Trabajo de Grado
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.
De conformidad con lo establecido en el artículo 30 de la Ley 23 de 1982 y el artículo 11 de la Decisión
Andina 351 de 1993, “Los derechos morales sobre el trabajo son propiedad de los autores” , los
cuales son irrenunciables, imprescriptibles, inembargables e inalienables.
X
Firma, nombre completo y documento de identificación del estudiante
Javier Alejandro Salamanca Pachón
C.C. 79996854
___________________________________________________
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.
C. C. FACULTAD Ciencias Básicas PROGRAMA CADÉMICO Informática Matemática
FORMATO 2 (Anexo No.3)
FORMULARIO DE LA DESCRIPCIÓN DE LA TESIS DOCTORAL O DEL TRABAJO DE
GRADO
TÍTULO COMPLETO DE LA TESIS DOCTORAL O TRABAJO DE GRADO:
Implementación de un sistema posicional con motores tipo paso a
paso y servo controlados por computador.
AUTOR O AUTORES
Apellidos Completos
Salamanca Pachón
Nombres Completos
Javier Alejandro
DIRECTOR (ES) TESIS DOCTORAL O DEL TRABAJO DE GRADO
Apellidos Completos
Nombres Completos
Daza Figueredo
Jesús
TRABAJO PARA OPTAR AL TÍTULO DE:
Informático Matemático
FACULTAD: Ciencias Basicas
PROGRAMA: Carrera X Licenciatura ___ Especialización ____ Maestría ____ Doctorado ____
NOMBRE DEL PROGRAMA:
Informática Matemática
NOMBRES Y APELLIDOS DEL DIRECTOR DEL PROGRAMA:
Patricia A. Hernández Romero
CIUDAD: BOGOTA AÑO DE PRESENTACIÓN DEL TRABAJO DE GRADO: 2009
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):
_______________________________________________________________________________
DESCRIPTORES O PALABRAS CLAVES EN ESPAÑOL E INGLÉS: Son los términos que
definen los temas que identifican el contenido. (En caso de duda para designar estos descriptores, se recomienda
consultar con la Unidad de Procesos Técnicos de la Biblioteca General en el correo [email protected], donde se
les orientará).
ESPAÑOL
INGLÉS
Motor paso a paso ___________________ Steper motor____________________________
Java
____________________________ Java___________________________________
Motor servo_________________________ Servo motor_____________________________
Interface nativa de java________________ Java Native Interface_______________________
Puertos____________________________ Potrs____________________________________
Dinámica de sistemas_________________ System Dynamics__________________________
RESUMEN DEL CONTENIDO EN ESPAÑOL E INGLÉS: (Máximo 250 palabras - 1530
caracteres):
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.
JAVIER ALEJANDRO SALAMANCA PACHÓN.
TRABAJO DE GRADO
Presentado como requisito parcial
Para optar al titulo de
INFORMÁTICO MATEMÁTICO
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE CIENCIAS
CARRERA DE INFORMÁTICA MATEMÁTICA
Bogotá, D.C.
Julio 2009
NOTA DE ADVERTENCIA
Artículo 23 de la Resolución N° 13 de Julio de 1946
“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.
IMPLEMENTACIÓN DE UN SISTEMA POSICIONAL
CON MOTORES TIPO PASO A PASO Y SERVO
CONTROLADOS POR COMPUTADOR.
JAVIER ALEJANDRO SALAMANCA PACHÓN.
APROBADO.
________________________
Jesús Daza Figueredo.
Director.
________________________
________________________
Fernando Novoa.
Orlando Acevedo.
Jurado.
Jurado.
3
IMPLEMENTACIÓN DE UN SISTEMA POSICIONAL
CON MOTORES TIPO PASO A PASO Y SERVO
CONTROLADOS POR COMPUTADOR.
JAVIER ALEJANDRO SALAMANCA PACHÓN.
APROBADO.
________________________
________________________
Ingrid Schuler, Ph.D.
Patricia A. Hernández Romero, MSc.
Decano Académico.
Director de carrera.
4
Índice general
1. MARCO TEÓRICO.
16
1.0.1. Reseña histórica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.0.1.1.
Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.0.1.2.
Motores eléctricos. . . . . . . . . . . . . . . . . . . . . . .
17
1.0.1.3.
Dinámica de sistemas. . . . . . . . . . . . . . . . . . . . . .
18
1.0.2. Dinámica de sistemas. . . . . . . . . . . . . . . . . . . . . . . . . . .
19
1.0.2.1.
¿Qué es la dinámica de sistemas?. . . . . . . . . . . . . . . .
19
1.0.2.2.
Construcción de modelos en la dinámica de sistemas. . . . .
20
1.0.3. API de comunicaciones. . . . . . . . . . . . . . . . . . . . . . . . . .
20
1.0.3.1.
Características del API de comunicaciones. . . . . . . . . . .
21
1.0.4. La JNI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
1.0.5. Arquitectura puerto paralelo. . . . . . . . . . . . . . . . . . . . . . . .
29
1.0.5.1.
Tipos de puerto. . . . . . . . . . . . . . . . . . . . . . . . .
31
1.0.5.2.
Detección del tipo de puerto. . . . . . . . . . . . . . . . . .
33
1.0.5.3.
Puerto paralelo a nivel físico. . . . . . . . . . . . . . . . . .
35
1.0.5.4.
Interrupciones. . . . . . . . . . . . . . . . . . . . . . . . . .
36
1.0.5.5.
Canales DMA. . . . . . . . . . . . . . . . . . . . . . . . . .
36
1.0.5.6.
El puerto y su hardware. . . . . . . . . . . . . . . . . . . . .
36
1.0.6. Arquitectura puerto serial. . . . . . . . . . . . . . . . . . . . . . . . .
37
1.0.6.1.
Estructura de datos del puerto serie RS-232. . . . . . . . . .
38
1.0.7. Arquitectura motor paso a paso. . . . . . . . . . . . . . . . . . . . . .
40
5
1.0.7.1.
Principio de funcionamiento. . . . . . . . . . . . . . . . . .
40
1.0.7.2.
Secuencia para manejar motores paso a paso bipolares. . . .
42
1.0.7.3.
Secuencia para manejar motores paso a paso unipolares. . . .
42
1.0.8. Servo Motores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
1.0.8.1.
Funcionamiento de un servo. . . . . . . . . . . . . . . . . .
47
1.0.9. Sistemas Eléctricos. . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
1.0.9.1.
Elementos de los circuitos eléctricos.[8] . . . . . . . . . . .
48
1.0.9.2.
Leyes de los circuitos eléctricos.[8] . . . . . . . . . . . . . .
50
1.0.10. Modelos matemáticos. . . . . . . . . . . . . . . . . . . . . . . . . . .
53
1.0.10.1. Elaboración de modelos matemáticos (modelado matemático). 53
1.0.10.2. Simplicidad contra exactitud. . . . . . . . . . . . . . . . . .
53
1.0.10.3. Observaciones sobre la elaboración de modelos matemáticos.
54
1.0.10.4. Procedimiento para la elaboración de modelos matemáticos.[6] 54
1.0.10.5. Etapas del modelo.[10] . . . . . . . . . . . . . . . . . . . .
55
1.0.10.6. Sistemas lineales. . . . . . . . . . . . . . . . . . . . . . . .
56
1.0.10.7. Sistemas no lineales. . . . . . . . . . . . . . . . . . . . . . .
56
1.0.11. Diagrama de causa y efecto. . . . . . . . . . . . . . . . . . . . . . . .
57
2. FORMULACIÓN Y JUSTIFICACIÓN.
59
2.1. Formulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
2.1.1. Justificación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
3. OBJETIVOS.
61
3.0.2. Objetivo general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.0.3. Objetivos específicos. . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
4. METODOLOGÍA.
62
4.0.4. Procedimiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.0.5. Desarrollo metodológico. . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.0.5.1.
Análisis de causas. . . . . . . . . . . . . . . . . . . . . . . .
6
63
4.0.5.2.
La JNI . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
4.0.5.3.
El modelo matemático. . . . . . . . . . . . . . . . . . . . .
65
4.0.5.4.
Programación de aplicaciones. . . . . . . . . . . . . . . . .
65
4.0.5.5.
Diseño tarjeta de enlace. . . . . . . . . . . . . . . . . . . . .
67
5. RESULTADOS.
68
5.1. RUTINA ENCARGADA DE ESCRITURA Y LECTURA EN PUERTO. . . .
68
5.2. RUTINAS DE CONTROL DE MOTOR PaP. . . . . . . . . . . . . . . . . . .
69
5.2.1. Movimiento según el ángulo de rotación. . . . . . . . . . . . . . . . .
70
5.2.1.1.
Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . .
71
5.2.2. Movimiento según distancia a recorrer. . . . . . . . . . . . . . . . . .
71
5.2.2.1.
Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . .
73
5.2.3. Secuencia para el control de dos motores. . . . . . . . . . . . . . . . .
73
5.2.3.1.
Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . .
77
5.2.4. Ubicación de un punto en un espacio bidimensional. . . . . . . . . . .
78
5.2.4.1.
Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . .
80
5.3. RUTINA PARA CONTROL DE UN SERVO MOTOR. . . . . . . . . . . . . .
81
5.3.0.2.
Funcionamiento. . . . . . . . . . . . . . . . . . . . . . . . .
83
5.4. VENTAJAS Y DESVENTAJAS DE LOS MOTORES PASO A PASO Y LOS
MOTORES SERVO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
5.4.1. Motor paso a paso. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
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
5.4.3. Comparación de motor paso a paso y motor servo. . . . . . . . . . . .
85
5.5. MODELO MATEMÁTICO. . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
5.5.1. Descripción física motor PaP. . . . . . . . . . . . . . . . . . . . . . .
86
7
5.5.2. Descripción física servo motor. . . . . . . . . . . . . . . . . . . . . . .
86
5.5.3. Descripción matemática. . . . . . . . . . . . . . . . . . . . . . . . . .
86
5.5.3.1.
Motor PaP . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
5.5.3.2.
Servo motor. . . . . . . . . . . . . . . . . . . . . . . . . . .
87
5.6. TARJETA DE ENLACE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
5.7. FUTURAS MEJORAS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
6. CONCLUSIÓN.
90
8
Índice de cuadros
1.1. Conexiones DB25 y DB9 del interfaces RS-232 . . . . . . . . . . . . . . . . .
23
1.2. Conexiones DB25 del interfaces IEEE-1284 en modo SPP. . . . . . . . . . . .
26
1.3. Extensiones de la librerías dinámicas por SO. . . . . . . . . . . . . . . . . . .
28
1.4. Reglas de búsqueda de librerías de enlace dinámico de cada sistema operativo. .
29
1.5. Direcciones base puerto paralelo . . . . . . . . . . . . . . . . . . . . . . . . .
30
1.6. Direcciones base de los registros. . . . . . . . . . . . . . . . . . . . . . . . . .
31
1.7. Conexionado del puerto paralelo en modo ECP . . . . . . . . . . . . . . . . .
33
1.8. Conexionado del puerto paralelo . . . . . . . . . . . . . . . . . . . . . . . . .
35
1.9. Masas según señal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
1.10. Pins del puerto serie conexiones D25 y D9 . . . . . . . . . . . . . . . . . . .
39
1.11. Funciones de los pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
1.12. Secuencia para controlar motores paso a paso tipo bipolar. . . . . . . . . . . .
42
1.13. Secuencia normal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
1.14. Secuencia wave drive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
1.15. Secuencia medio paso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.1.
85
Características comparativas de motor PaP y servo motor. . . . . . . . . . . .
9
Índice de figuras
1.1. Puerto paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
1.2. Puerto RS-232. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
1.3. Conexionado mediante el uso de un ULN2803. . . . . . . . . . . . . . . . . .
41
1.4. Motor PaP con 5 cables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
1.5. Motor PaP con 6 cables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
1.6. Circuito en paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
1.7. Resistores combinados en serie y en paralelo caso 1. . . . . . . . . . . . . . .
51
1.8. Resistores combinados en serie y en paralelo caso 2. . . . . . . . . . . . . . .
51
1.9. Resistores combinados en serie y en paralelo caso 3. . . . . . . . . . . . . . .
52
1.10. Caso 1 corrientes y voltajes. . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.1. Pantalla asignación movimiento según ángulo de rotación. . . . . . . . . . . .
71
5.2. Pantalla asignación movimiento según distancia a recorrer. . . . . . . . . . . .
73
5.3. Pantalla de control de dos motores. . . . . . . . . . . . . . . . . . . . . . . . .
78
5.4. Pantalla de ubicación en un punto bidimensional. . . . . . . . . . . . . . . . .
80
5.5. Pantalla rutina de control de servo motor. . . . . . . . . . . . . . . . . . . . .
83
5.6.
88
Tarjeta de enlace entre el computador y el motor. . . . . . . . . . . . . . . . .
10
Nomenclatura
API
Application Programmin Interface
Interfaz de Programacion de Aplicaciones
BIOS Basic Imput/Output Services
Servicios básicos de la entrada-salida
bit/seg bit por segundo
C
Capacitancia
C
Coulumb
CAD Computer Asisted Desing
Diseño Asistido por Computador
CC
Corriente Continua
CCITT Consultive Commitee International Telegraph and Telephone
Comité Consultivo Internacional de Teléfonos y Telégrafos
COM puerto de comunicaciones
CTS
Clear to Send
Limpiar para enviar
DMA Direct Memory Access
Acseso Directo a la Memoria
DSR
Data Set Ready
Conjunto de datos listo
DTR
Data Terminal Ready
Teminal de Datos Lista
E/S
Entrada Salida
11
ECP
Enhanced Capabilities Port
Puerto de capacidades realzado
ECR
Extended Control Register
Registro Extendido de Control
EIA
Electronics Industry Association
Asociación de Electrónica Industrial.
EPP
Extended Parallel Port
Puerto paralelo extendido
F
Faradio
fem
Fuerza electro motriz
FIFO First In First Out
Primero en Entrar Primero en Salir
GND Ground
Tierra
GUI
Graphic user interfece
Interface grafica de usuario
H
Henrios
i
Corriente
IBM
International Business Machines
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
IRQ
Interrupt Request Level
Nivel de demanda de interrupción
ISA
Industry Standard Architecture
Arquitectura estándar industrial
JDK
Java Developement Kit
Kit Desarrollador de Java
12
JNI
Java Native Interface
Interfaz Nativa de Java
kg
Kilo gramos
L
Inductancia
LAN
Local Area Network
Red de área local
LPT
Line Print Terminal
Línea terminal de la impresión
LTI
Linear Time Invariant
Tiempo lineal invariante
LTV
Linear Time Variant
Tiempo lineal variante
M
Inductancia mutua
mA
mili amperios
Mb/s
Megabits por segundo
MIT
Massachusetts Institute Tecnology
Instituto de Tecnología de Massachusetts
ms
mili segundos
OS
Operating System
Sistema operativo
PaP
Paso a Paso
PCM Pulse Codified Modulation
Modulación codificada de Pulsos
PWM Pulse Width Modulation
Pulso con modulación
R
Resistencia
RAM Random Access Memory
Memoria de acceso aleatorio
13
RPM REVOLUCIONES POR MINUTO
rpm
Revoluciones por minuto
rpm
Revoluciones por minuto
RPP
REVOLUCIONES POR PULSO
rpp
Revoluciones por pulso
rpp
Revoluciones por pulso
RS-232 Recommended Standard 232
Estandar Recomendado 232
RTS
Request To Send
Petición de enviar
S
Siemens
SAGE Semi-Automatic Ground Equipment
Equipo de tierra semiautomático
SPP
Standard Parallel Port
Puerto Paralelo Estandar
TTL
Transistor to Transistor Logic
Lógica Transistor a Transistor
USB
Universal Serial Bus
V
Voltio
Vcc
Voltaje corriente continua
VM
Virtual Machine
Máquina virtual
14
GENERALIDADES.
INTRODUCCIÓN.
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.
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.
1 Computer
Asisted Design-Diseño asistido por computador
15
Capítulo 1
MARCO TEÓRICO.
1.0.1.
1.0.1.1.
Reseña histórica.
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 consumidores 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 accionaba 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 programa 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 construir aplicaciones de Java. Dicha colección incluía el compilador Java, un visualizador de applets, 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].
1.0.1.2.
Motores eléctricos.
Faraday, Michael (1791−1867), fue el que descubrió el principio de el motor eléctrico el descubrió 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 funcionamiento 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]
1.0.1.3.
Dinámica de sistemas.
A lo largo de los años cincuenta comenzó a desarrollarse en el Instituto de Tecnología de Massachusetts (MIT) una destacada metodología de sistemas, la Dinámica de Sistemas[9]. Jay W.
Forrester, ingeniero electrónico, había pasado del Laboratorio de Servomecanismos, donde inventó las memorias magnéticas de núcleos de ferrita, a coordinar un gran proyecto de defensa,
el sistema SAGE (Semi-Automatic Ground Equipment). En la realización de este sistema de
alerta en tiempo real se percató de la importancia del enfoque sistémico para concebir y controlar entidades complejas como las que surgen de la interacción de hombres y máquinas. Tras
esta experiencia, Forrester pasaría como profesor a la Sloan School of Management del MIT,
donde observó que en las empresas se producían fenómenos de realimentación que podían ser
causa de oscilaciones, igual que sucede en los servomecanismos. De esta forma ideó la Dinámica Industrial1 , una metodología que permitía construir modelos cibernéticos de los procesos
industriales. La peculiaridad de estos modelos residía en la posibilidad de simular su evolución
temporal con la ayuda del ordenador. Posteriormente aplicaría su metodología a problemas de
planificación urbana2 y la generalizaría para cualquier tipo de sistema continuo, cambiando su
denominación por la de Dinámica de Sistemas3 .
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.
Dynamics, 1969.
3 System Dynamics, 1968.
4 World Dynamics, 1971.
5 The Limits to Growth, 1973.
6 Mankind at the Turning Point, 1974 .
2 Urban
18
1.0.2.
Dinámica de sistemas.
La Dinámica de Sistemas es una metodología para la construcción de modelos de simulación
para sistemas complejos, como los que son estudiados por las ciencias sociales, la economía, la
ecología o la física.
1.0.2.1.
¿Qué es la dinámica de sistemas?.
La Dinámica de Sistemas es una metodología para la construcción de modelos de simulación
para sistemas complejos, como los que son estudiados por las ciencias sociales, la economía o
la ecología.
La Dinámica de Sistemas aplica métodos de sistemas duros, básicamente las ideas de realimentación y sistema dinámico, junto con la teoría de modelos en el espacio de estados y procedimientos 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:
Cuantificación: En Dinámica de Sistemas se comienza por identificar las variables de interés y las relaciones que ligan entre sí a estas variables. A continuación es imprescindible
cuantificar dichas relaciones, lo que en ocasiones plantea dificultades insalvables.[10, 11]
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 modelo es capaz de generar los comportamientos característicos del sistema real, denominados 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 incluidas en cualquier modelo mediante la aplicación de técnicas de integración numérica. Sin embargo, 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 favorable 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 estas 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.
Fases en la construcción de un modelo:
1. Conceptualización.[11, 10]
Descripción verbal del sistema.
Descripción precisa del modelo en el tiempo.
Diagrama causal.
2. Formulación.[11, 10]
Construcción del diagrama de Forrester.
Establecimiento de las ecuaciones para la simulación.
3. Análisis y evaluación.[11, 10]
Análisis del modelo (comparación, análisis de sensibilidad, análisis de políticas).
Evaluación, comunicación e implementación.[11, 10]
1.0.3.
API de comunicaciones.
El API de comunicaciones es un paquete de java el cual permite la comunicación mediante el
puerto paralelo o serial con dispositivos externos al computador.
Una API7 es un conjunto de especificaciones de comunicación entre componentes software.
Representa un método para conseguir abstracción en la programación, generalmente (aunque
no necesariamente) entre los niveles o capas inferiores y los superiores del software. Uno de
los principales propósitos de una API consiste en proporcionar un conjunto de funciones de uso
general, por ejemplo, para dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose
el trabajo de programar todo desde el principio.
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 comunicaciones 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].
Nivel bajo: Este nivel ya toca el sistema operativo y en el se encuentra el desarrollo de
drivers[12].
Los servicios que nos proporciona este paquete son:
Poder obtener los puertos disponibles así como sus características.
Abrir y mantener una comunicación en los puertos.
Resolver colisiones entre aplicaciones. Gracias a este servicio podremos tener varias aplicaciones 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 propietario 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:
getPortIdentifiers() es el método utilizado en nuestro programa y que nos entregará un
enumerado con tantos objetos CommPortIdentifier como puertos dispongamos.[12]
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 siempre 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 getPortIdentifier(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 constantes 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 eventos 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 comunicació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 devuelve 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 setOutputBufferSize(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:
PIN (DB25)
2
3
4
5
6
7
8
20
22
PIN (DB9)
2
3
7
8
6
5
1
4
9
Descripción
TD: Canal de transmisión.
RD: Canal de recepción.
RTS: Petición para transmitir.
CTS: Preparado para emitir.
DSR: Equipo preparado.
Masa
DCD: Conexión establecida.
DTR: Terminal preparado.
RI: Indicador de llamada.
Cuadro 1.1: Conexiones DB25 y DB9 del interfaces RS-232
1. Poner el DTR. Indicando que estamos preparados.
2. Poner RTS. Solicito permiso para emitir.
3. Comprobar que esta DSR. Mira sí el destinatario esta listo.
4. Esperar a CTS. Se espera a que me autoricen a enviar datos.
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 serie, este método deberá tratar la excepción UnsupportedCommOperationException que
saltara en el caso de que se le introduzcan valores no soportados.[12]
Los parámetros del método son:
1. La velocidad en el caso de que se le pase un valor no valido. Si se pasa 1210 se produciría
la excepción y no se modificarían los datos.
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.
Las funciones del mètodo son:
getBaudrate() da la velocidad a la que esta preparada para transmitir y que se puede
cambiar con el método setSerialPortParams(int, int, int, int).[12]
getDataBits() da la configuración de número de datos y al igual que el método anterior se
puede cambiar con el mismo método, los valores posibles son los mismos que utiliza el
método de configuración de parámetros.[12]
getStopBits() indica la configuración de bits de parada y al igual que en los métodos
anteriores se puede configurar con el mismo método. 4. getParity() indica la paridad que
utiliza.[12]
getParity() indica la paridad que utiliza.[12]
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 FLOWCONTROL_XONXOFF_OUT) para control de flujo por software. El método setFlowControlMode(int al igual que pasaba con setSerialPortParams(int, int, int, int) deberá de
saber capturar la excepción UnsupportedCommOperationException.[12]
6. addEventListener(SerialPortEventListener) permite escuchar los cambios de estado del
puerto, si se desea quitar este oyente se utiliza el método removeEventListener().[12]
Mediante los métodos notifyOnXXX(boolean) permitirá habilitar o deshabilitar la notificación de los diferentes cambios que pueden ser:
• DataAvailable existen datos en la entrada.
• OutputEmpty el buffer de salida esta vacío.
• CTS cambio de Clear To Send.
• DSR cambio de Data Set Ready.
• RingIndicator cambio en RI.
• CarrierDetect cambio en CD.
• ParityError se ha producido un error de paridad.
• BreakInterrupt se detecta una rotura en la línea.
La clase oyente deberá de tener el método serialEvent(SerialPortEvent) que recibirá un objeto
que trata los eventos del puerto serie con tres métodos importantes:
getEventType() informara del evento que se ha producido.[12]
getNewValue() devuelve el nuevo estado.[12]
getoldValue() dará el estado anterior al cambio.[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 tenemos el método setRTS(boolean).[12]
isCTS() informa si podemos transmitir, isDSR() dará el estado en el que se encuentra el
pin DSR. IsRI() informa de sí esta el indicador de timbre, isCD() nos indicara si tenemos
portadora.[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.
PIN
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NOMBRE
STROBE
D0
D1
D2
D3
D4
D5
D6
D7
ACK
BUSY
PE
SLCT
AUTO FD
ERROR
INIT
SLCT IN
Descripción
Indica que existen datos validos en las líneas de datos D0-7
Dato bit 0
Dato bit 1
Dato bit 2
Dato bit 3
Dato bit 4
Dato bit 5
Dato bit 6
Dato bit 7
Indica que el ultimo carácter se recibió.
Indica que la impresora esta ocupada y no puede recoger datos.
Sin papel.
Indica que la impresora esta en línea.
Indica a la impresora que realice una alimentación de línea.
Existe algún error en la impresora.
Pide a la impresora que se inicie.
Indica a la impresora que esta seleccionada.
Cuadro 1.2: Conexiones DB25 del interfaces IEEE-1284 en modo SPP.
Este estándar se puede trabajar con 5 modos de funcionamiento:
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 deshabilitar los drivers usando la línea de datos.
EPP (Extended Parallel Port) es el modo extendido y se utiliza para periféricos que principalmente 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:
addEventListener(ParallelPortEventListener ev) mediante este método se puede asignar
un oyente para cuando aparezca un error en el puerto y no lo notifique, exactamente
nos informara de cuando el buffer de salida este lleno o cuando la impresora indique
error. Los métodos que permiten habilitar o deshabilitar estos avisos son: notifyOnError(boolean) y notifyOnBuffer(boolean). Si se desea quitar el oyente se puede utilizar
el método removeEventListener().[12]
getOutputBufferFree() informa de los bytes que se tienen disponibles en el buffer de
salida.[12]
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]
isPrinterBusy() devolverá un valor true en el caso de que la impresora este ocupada y se
corresponde con el estado BUSY.[12]
isPrinterSelected() informa sí la impresora esta seleccionada.[12]
isPrinterError() chequea si ocurre un error en la impresora y esto se refleja con el estado
de ERROR que esta en el pin 15 1.2 en la página anterior.[12]
restart() realiza un reinicio en la impresora.[12]
suspend() suspende la salida.[12]
getMode() dice el modo configurado del puerto paralelo y los valores posibles son:[12]
• LPT_MODE_SPP modo compatible unidireccional.
• LPT_MODE_PS2 modo Byte.
• LPT_MODE_EPP modo extendido.
• LPT_MODE_ECP modo mejorado.
• LPT_MODE_NIBBLE modo nibble.
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:
Sistema Operativo
Mac OS X
UNIX
Windows
Extensión
.dylib
.so
.dll
Cuadro 1.3: Extensiones de la librerías dinámicas por SO.
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 programadores 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.
Lo siguiente ilustra cuando se necesita usar los métodos nativos de java.
Las librerías estándar de java no pueden soportar las características plataforma-dependientes
necesarias para la aplicación.
Se tienen librerías escritas en otros lenguajes, y se desea hacer este accesible al código de
java con el JNI.
Se quiere implementar una pequeña porción de código tiempo-critico en un lenguaje de
bajo nivel como assembler.
1.0.5.
Arquitectura puerto paralelo.
Físicamente el puerto paralelo es identificado por el usuario por su característico conector de
25 pines (hembra).[14]
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:
Puerto
LPT1
LPT2
LPT3
Dirección Base
0x378
0x278
0x3BC
Cuadro 1.5: Direcciones base puerto paralelo
8
Base+1, Base+2, ...
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.0.5.1.
Tipos de puerto.
Es posible encontrar los siguientes tipos de puertos, por orden de aparición.
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]
Dirección Base + 0: registro o bus de datos.
Dirección Base + 1: registro o bus de estado.
Dirección Base + 2: registro o bus de control.
Bus de datos
Bus de Estado
Bus de Control
LPT1
0x378
0x379
0x37A
LPT2
0x278
0x279
0x27A
LPT3
0x3BC
0x3BD
0x3BE
Cuadro 1.6: Direcciones base de los registros.
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
Basic Imput/Output Services
10 no
se puede configurar algunos pines como entrada y otros como salida
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.
3. EPP (Enhaced Parallel Port).
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]
4. ECP (Extended Capabilities Port).
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:
11 desde
Base+3 a Base+7
32
Bit
7:5
4
3
2
1
0
Significado
000 SPP (compatible ISA)
001 Bidireccional (Compatible PS/2)
010 Centronics rápido (compatible ISA FIFO)
011 ECP
100 Reservado
101 Reservado (EPP)
110 Prueba
111 Configuración
Deshabilita interrupciones de ERROR
Habilita DMA
Deshabilita el servicio de interrupción FIFO/Terminal Count
Sólo lectura (FIFO lleno)
Sólo lectura (FIFO vació)
Cuadro 1.7: Conexionado del puerto paralelo en modo ECP
1.0.5.2.
Detección del tipo de puerto.
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 efectuando 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 fabricantes 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 podemos 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]
Puerto Bidireccional (PS2 Compatible)
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.
Cuadro 1.8: Conexionado del puerto paralelo
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 velocidad 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.
Pin
Pin 18
Pin 19
Pin 20
Pin 21
Pin 22
Pin 23
Pin 24
Pin 25
Retorno de Masa
Retorno de masa correspondiente a: C0 y D0
Retorno de masa correspondiente a: D1 y D2
Retorno de masa correspondiente a: D3 y D4
Retorno de masa correspondiente a: D5 y D6
Retorno de masa correspondiente a: D7 y S6
Retorno de masa correspondiente a: C3
Retorno de masa correspondiente a: S7
Retorno de masa correspondiente a: C2
Cuadro 1.9: Masas según señal
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]
1.0.5.5.
Canales DMA.
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]
1.0.5.6.
El puerto y su hardware.
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 resistencias 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]
1.0.6.
Arquitectura puerto serial.
Figura 1.2: Puerto RS-232.
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.
1.0.6.1.
Estructura de datos del puerto serie RS-232.
La comunicación de datos en un puerto serie, se usa normalmente para efectuar comunicaciones
asíncronas, o sea sin tiempo preestablecido para iniciarse. Los datos llegan en paquetes de
información, normalmente cada paquete es de 8 bits=1 byte, algunos equipos envían carácter
por carácter, otros guardan muchos caracteres en la memoria y cuando les toca enviarlos los
envían uno tras otro.
13 muchas veces los puertos serie a partir del COM 2 se denominan puertos virtuales o son debidos a ampliaciones
de los puertos por tarjetas controladoras del tipo PCI
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.
El estándar RS-232-EIA, es equivalente al V.24 del CCITT14 .
Las especificaciones eléctricas del puerto serie están contenidas en el EIA15 RS232C estándar.
En las cuales se encuentran parámetros como:
1. A "Space" que es por defecto 0 está entre +3 y +25 Voltios.
2. A "Mark" que es por defecto 1 está entre -3 y -25 Voltios.
3. La región entre +3 y -3 voltios está sin definir.
4. Un circuito de voltaje abierto no debe superar 25 voltios.
5. Un circuito corto de corriente no debe exceder los 500mA. El driver debe utilizarse sin
problema.
Pin DB-25
2
3
4
5
6
7
8
20
22
Pin DB-9
3
2
7
8
6
5
1
4
9
Abreviación
TD
RD
RTS
CTS
DRS
SG
CD
DTR
RI
Nombre completo
Transmit data
Receive data
Request to send
Clear to send
Data set ready
Signal ground
Carrier detect
Data terminal ready
Ring indicador
Cuadro 1.10: Pins del puerto serie conexiones D25 y D9
14 Consultive
15 Electronics
Commitee International Telegraph and Telephone
Industry Association-Asociación de Electrónica Industrial.
39
Abreviación
TD
RD
CTS
DCD
DSR
DTR
RTS
RI
Nombre completo
Transmit data
Receive data
Clear to send
Data carrier detect
Data set ready
Data terminal ready
Request to send
Ring indicator
Función
Salida de datos serie TXD
Entrada de datos serie RXD
Indica si el módem está preparado para recibir y mandar datos
Detecta si hay una conexión con el otro extremo
Dice si la UART está preparada para la conexión
Dice al módem si la UART está preparada para la conexión
Informa que la UART está preparada para la conexión
Se activa cuando el módem detecta una llamada del PSTN
Cuadro 1.11: Funciones de los pins
1.0.7.
Arquitectura motor paso a paso.
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.
1.0.7.1.
Principio de funcionamiento.
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 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.[1, 2]
Unipolares.
Estos motores suelen tener 6 ó 5 cables de salida, dependiendo de su conexionado interno.
Este tipo se caracteriza por ser más simple de controlar. En la figura 2 se puede apreciar
un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el
uso de un ULN2803, el cual es un arreglo de 8 transistores tipo Darlington capaces de
manejar cargas de hasta 500mA. Las entradas de activación
16
pueden ser directamente
activadas por un microcontrolador.[1, 2]
Figura 1.3: Conexionado mediante el uso de un ULN2803.
Figura 1.4: Motor PaP con 5 cables.
16 Activa
A, B, C y D.
41
Figura 1.5: Motor PaP con 6 cables.
1.0.7.2.
Secuencia para manejar motores paso a paso bipolares.
Estos motores necesitan una inversión de la corriente que circula en sus bobinas en una secuencia 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
A
+V
+V
-V
-V
1
2
3
4
Terminal
B
C
-V +V
-V -V
+V -V
+V +V
D
-V
+V
+V
-V
Cuadro 1.12: Secuencia para controlar motores paso a paso tipo bipolar.
1.0.7.3.
Secuencia para manejar motores paso a paso unipolares.
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.
Es la secuencia más usada y la que generalmente recomienda el fabricante.
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
Cuadro 1.13: Secuencia normal.
Secuencia del tipo wave drive.
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
1
On
Off
Off
Off
2
Off
On
Off
Off
3
Off
Off
On
Off
4
Off
Off
Off
On
Cuadro 1.14: Secuencia wave drive.
Secuencia del tipo medio paso.
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
1
On
Off
Off
Off
2
On
On
Off
Off
3
Off
On
Off
Off
4
Off
On
On
Off
5
Off
Off
On
Off
6
Off
Off
On
On
7
Off
Off
Off
On
8
On
Off
Off
On
Cuadro 1.15: Secuencia medio paso.
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óxima secuencia de pulsos comience. Si la frecuencia de pulsos es muy elevada, el motor puede
reaccionar en alguna de las siguientes formas:
Puede que no realice ningún movimiento en absoluto.
Puede comenzar a vibrar pero sin llegar a girar.
Puede girar errática mente.
Puede llegar a girar en sentido opuesto.
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.
1.0.8.
Servo Motores.
Los servos son un tipo especial de motor de 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.[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]
La cantidad de voltaje aplicado al motor es directamente proporcional a la distancia que éste
necesita viajar. Si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más
lenta. A esto se le llama control proporcional.
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.
de 120°.
19 Cerca
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]
1.0.9.
Sistemas Eléctricos.
Las leyes de Kirchhoff para circuitos eléctricos.[8]
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
i=
dq
dt
una corriente de un ampére, la carga es transferencia a razón de un coulumb por segundo.
1.0.9.1.
Elementos de los circuitos eléctricos.[8]
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
R=
eR
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 =
V.
cambio en voltaje
La capacitancia de un capacitor puede darse entonces por
C=
q
eC
donde q es la cantidad de carga de carga almacenada y eC es el voltaje a través del capacitor. La unidad de capacitancia es el farad(F).
dq
dt
Como i =
y eC = Cq
entonces i =
deCC
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
razón de cambio del flujo es proporcional a
di
dt .
La autoinductancia L, es la constante de
proporcionalidad entre el voltaje inducido eL volts y la razón de cambio de la corriente
L=
eL
di
dt
La unidad de inductancia es el henry(H).
Como
di
eL = L dt
luego de
iL (t) =
1
L
´t
eL dt + iL (0).
0
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.
1.0.9.2.
Leyes de los circuitos eléctricos.[8]
Ley de Ohm.
Establece que la corriente en un circuito es proporcional a la fuerza electromotriz total
que actúa sobre el circuito e inversamente proporcional a la resistencia total del circuito.
i=
e
R
donde i es la corriente , e es la fem y R la resistencia.
Circuitos en serie.
La resistencia combinada de resistores conectados en serie de las suma de las resistencias
por separado.
Circuitos en paralelo.
Figura 1.6: Circuito en paralelo.
i1 =
e
R1 , i2
=
e
R2 , i3
=
e
R3
como i = i1 + i2 + i3 , luego
i=
1
R
e
R1
=
R=
+ Re2 + Re3 =
1
R1
e
R
donde R es la resistencia combinada, luego
+ R12 + R13
1
1
1
1
R1 + R2 + R3
=
R1 R2 R3
R1 R2 +R2 R3 +R3 R1 .
Resistencia de resistores combinados en serie y paralelo.
50
Figura 1.7: Resistores combinados en serie y en paralelo caso 1.
La resistencia combinada R2,3 =
R2 R3
R2 +R3
luego la resistencia total R = R1 + R2,3 = R1 +
R2 R3
R2 +R3 .
Figura 1.8: Resistores combinados en serie y en paralelo caso 2.
R1,2 =
R1 R2
R1 +R2
R3,4 =
R3 R4
R3 +R4
la resistencia combinada R = R1,2 + R3,4 =
51
R1 R2
R1 +R2
R4
+ RR33+R
.
4
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
(R2 + R4 ), la resistencia combinada R =
(R1 +R3 )(R2 +R4 )
R1 +R2 +R3 +R4 .
Corrientes y voltajes de circuitos en serie y en paralelo.
Figura 1.10: Caso 1 corrientes y voltajes.
La caída de voltaje e2,3 = iR2,3
donde R2,3 =
R2 R3
R2 +R3
de donde la corriente i1 que fluye a través de la resistencia R2 es
i1 =
e2,3
R2
=i
R2,3
R2
3
= i R2R+R
3
la corriente i2 que fluye por la resistencia R3 es
i2 =
e2,3
R3
=i
R2,3
R3
2
= i R2R+R
.
3
52
Leyes de Kirchhoff.[8]
• Ley de corrientes de Kirchhoff.
Un nodo en un circuito eléctrico es un punto donde tres o más conductores se unen
entre si. La ley establece que la suma algebraica de todas las corrientes que entran
al nodo o salen del él, es cero.
• Ley de voltajes de Kirchhoff.
Establece que en cualquier instante dado el tiempo la suma algebraica de los voltajes
alrededor de una malla cualquiera en un circuito eléctrico es cero. Se puede expresar
también como la suma de las caídas de voltaje es igual a la suma de elevaciones de
voltaje alrededor de una malla.
1.0.10.
Modelos matemáticos.
El modelado de sistemas físicos debe empezar a partir de una predicción de su funcionamiento antes de que el sistema pueda diseñarse en detalle o construirse físicamente. Tal predicción
se basa en una descripción matemática de las características dinámicas del sistema. A esta
descripción matemática se le llama modelo matemático.[10] Para los sistemas físicos, la mayoría de los modelos matemáticos que resultan útiles se describen en términos de ecuaciones
diferenciales.[7]
1.0.10.1.
Elaboración de modelos matemáticos (modelado matemático).
Al aplicar leyes físicas a un sistema especifico, es posible desarrollar un modelo matemático
que describa al sistema. Tal sistema puede incluir parámetros desconocidos, los cuales deben
evaluarse mediante pruebas reales. Sin embargo, algunas veces las leyes físicas que gobiernan
el comportamiento de un sistema no están completamente definidas, y la formulación de un
modelo matemático puede resultar imposible. Debe ser así, se puede utilizar un procedimiento
de modelado experimental. En este procedimiento, se somete al sistema a un conjunto de entradas conocidas y se miden sus salidas. a partir de las relaciones de entrada y salida se deriva
entonces el modelo matemático.[10]
1.0.10.2.
Simplicidad contra exactitud.
Cuando se intenta construir un modelo, debe establecerse un equilibrio entre la simplicidad
del modelo y la exactitud de los resultados del análisis. Es importante notar que los resultados
obtenidos en el análisis son validos en la medida en que el modelo se aproxime al sistema físico
dado.
53
La rapidez con la cual una computadora digital puede realizar operaciones aritméticas nos permite 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 variables 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 estudio 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 simplificado 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.
1.0.10.3.
Observaciones sobre la elaboración de modelos matemáticos.
Ningún modelo matemático puede representar cualquier componente o sistema físico con precisión. Siempre se involucran aproximaciones y suposiciones. Tales aproximaciones y suposiciones 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 involucrada en el modelo.[6]
1.0.10.4.
Procedimiento para la elaboración de modelos matemáticos.[6]
1. Dibujar un diagrama esquemático del sistema y definir las variables.
2. Utilizando leyes físicas, escribir ecuaciones para cada componente, combinándolos de
acuerdo con el diagrama del sistema y obtener un modelo matemático.
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 modificarse 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]
Etapa uno: modelado físico.
El objetivo de la especificación de sistemas y el modelado físico consiste en proporcionar
una descripción del sistema que sea lo más precisa posible, aunque lo bastante sencilla
como para permitir el análisis y diseño subsecuentes. En general, un modelo físico se
construye aislando una parte del universo como el sistema de interés y luego dividiendo
conceptualmente su comportamiento en componentes conocidos. Dos temas dominan las
etapas de modelado físico y modelado de sistemas: el compromiso y la aproximación. Los
compromisos se realizan con base en la intención o meta original del estudio, con el fin
de especificar un sistema más sencillo o un conjunto de interacciones simples en el limite
entre el sistema y el resto del mundo. Las aproximaciones se hacen en las descripciones
del comportamiento de los componentes del modelo físico, con el fin de aprovechar las
teorías existentes y bien desarrolladas, así como para reducir al mínimo la complejidad
de las herramientas analíticas necesarias.
El primer paso en el aislamiento del sistema del resto del mundo es inherente al concepto
de sistemas. El segundo paso es el proceso de enlace. Es preciso tener un conjunto suficiente de comportamientos teóricos con los cuales poder relacionar los componentes del
comportamiento conceptual.
Etapa dos: construcción de modelos.
El proceso de descomposición de sistemas es necesario para la construcción sistemática
de los modelos matemáticos de los sistemas dinámicos.
Una vez descompuesto el sistema, la conducta de cada uno de sus componentes e interacciones se pueden aproximar utilizando las teorías conocidas. Las aproximaciones que se
hacen al pasar del modelo físico al de sistemas tiene ciertas características bien definidas,
de modo que se pueden estudiar de manera individual.
• Descomposición del sistema.
Es el proceso de separar los componentes más sencillos y analizar sus partes, puede
hacerse de manera formal así:
◦ Identificar los componentes.
Asignar nombre y trazar un diagrama de cuerpo libre que muestre las entradas
y las salidas, así como las interacciones internas y externas. Indicar todos las
variables necesarias.
◦ Separar los componentes en sus elementos estáticos y dinámicos.
◦ Escribir las relaciones de entrada y salida.
55
Describir el comportamiento de estos componentes. Observar que las relaciones que describen a los elementos estáticos son bastantes distintas de las
expresiones dinámicas.
Etapa tres: solución de modelos.
Se resuelven las ecuaciones representando el modelo del sistema como una forma para
estudiar su comportamiento dinámico. Se determina si el modelo del sistema es bueno o
malo. La solución del modelo es fundamental para estudiar los sistemas dinámicos.
1.0.10.6.
Sistemas lineales.
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 concentrados 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 tiempo (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 sistemas lineales variables en el tiempo o LTV, del Inglés “Linear Time Variant”.[10]
1.0.10.7.
Sistemas no lineales.
Sistemas no lineales son aquellos representados por ecuaciones no lineales.
Ejemplo:
z = x 2 + y3 .
Una ecuación diferencial recibe el nombre de no lineal si no es lineal.
Ejemplo:
d2x
dt 2
3
+ dx
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 realmente lineales solamente en restringidos rangos de operación.
En la práctica, muchos sistemas electromecánicos, hidráulicos, neumáticos, etc., involucran
relaciones no lineales entre las variables. Por ejemplo, la salida de un componente puede saturarse para niveles elevados de señal de entrada. Puede haber una franja o zona muerta que afecta
la señal pequeña20 . En algunos componentes puede haber no linealidades cuadráticas, por ejemplo, los amortiguadores utilizados en sistemas físicos pueden ser lineales para operaciones de
baja velocidad, pero son no lineales en velocidades altas, porque la fuerza de amortiguación se
vuelve proporcional al cuadrado de la velocidad de funcionamiento.[10]
La característica más importante de los sistemas no lineales es que no es aplicable el principio de superposición. En general, los procedimientos para hallar soluciones de problemas
que involucran sistemas no lineales, son extremadamente complicados. Debido a ésta dificultad
matemática, inherente a los sistemas no lineales, a menudo se encuentra necesario introducir
sistemas lineales equivalentes en reemplazo de los no lineales. Estos sistemas lineales equivalentes son válidos solamente en un restringido rango de operación. Una vez que se ha aproximado un sistema no lineal con un modelo matemático lineal, se puede utilizar cierto número de
herramientas lineales para su análisis y diseño.
1.0.11.
Diagrama de causa y efecto.
Un diagrama de causa y efecto es la representación de varios elementos de un sistema que
pueden contribuir a un problema.
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:
1. ¿Es necesario identificar las causas principales de un problema?
2. ¿Existen ideas y/u opiniones sobre las causas de un problema?
20 Las
franja muerta de un componente no es sensible.
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 herramientas. 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 como 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 conocen 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 procesos 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 tareas 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 controlada 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 paralelas, 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 información.
60
Capítulo 3
OBJETIVOS.
3.0.2.
Objetivo general.
Establecer un método de manejo de periféricos por puertos del computador. Desarrollar e implementar 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.
3.0.3.
Objetivos específicos.
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.
Manejar secuencia de información de variables que intervienen en el control.
Diseñar e implementar la interfase de conexión entre el puerto y el motor.
Desarrollar algoritmos computacionales encargados del manejo controlado de los motores.
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.
El programa que administra el movimiento de motores debe contemplar:
62
1. Una implementación del 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.
3. Elaboración del modelo matemático de motor tipo paso a paso y servo.
4. Simulación del modelo matemático.
5. Implementación del programa que controla el motor desde el computador.
4.0.5.
4.0.5.1.
Desarrollo metodológico.
Análisis de causas.
Se realiza el análisis de causas mediante un diagrama de causa-efecto1 , para determinar que
factores intervienen en la elaboración del dispositivo.
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.
El programa diseñado tiene el protocolo de comunicación, basado en la JNI, con el puerto
paralelo y las rutinas básicas para el control de los puertos, diseñado de tal forma que cualquier
modificación futura no afecte el funcionamiento de las funciones existentes, a partir de este se
puede diseñar los protocolos de comunicación y de conexión con puertos y dispositivos basados
en conexión USB.
1 Diagrama
Ishikawa, Desarrollado en 1943 por el profesor Kaoru Ishikawa
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 informació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 multihilos 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 determinar el grado de exactitud del modelo al sistema real.
El sistema al cual se desea identificar las variables es a un sistema rotacional.
Un sistema rotacional esta constituido de un rotor o eje impulsado mediante bobinas.
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.
M Par, troqué o momento.
Puede formularse en función de la variación angular (w) ya que α =
dw
dt
ΣM = J dw
dt .
También en función de la variación de la posición angular ya que α =
d2θ
dt 2
2
ΣM = J ddtθ2 .
4.0.5.4.
Programación de aplicaciones.
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 conectados 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.
Aplicación motor servo.
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.
4.0.5.5.
Diseño tarjeta de enlace.
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.
5.1.
RUTINA ENCARGADA DE ESCRITURA Y LECTURA EN
PUERTO.
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.
El programa se desarrollo en java con el editor jcreator.
Descripción del código:
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.
Mediante la programación de la JNI y la rutina de escritura en el puerto y la modelación
matemática se puede diseñar una algoritmo implementado en java que envíe una secuencia de
pulsos por el puerto, el cual puede controlar desde el computador un motor PaP, los algoritmos
diseñados son:
Movimiento según ángulo de rotación.
Movimiento según el numero de vueltas a girar.
Movimiento según distancia a recorrer.
Secuencia para control de dos motores.
Ubicación de un punto en un espacio bidimensional.
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
}
}
5.2.1.
Movimiento según el ángulo de rotación.
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:
c l a s s ang / / e s t a e s l a c l a s e que r e t o r n a e l número
de p u l s o s p a r a que e l m o t o r s e mueva e l á n g u l o r e q u e r i d o
por e l u s u a r i o
{
s t a t i c Double p u l s o s ;
s t a t i c i n t pul ;
s t a t i c d o u b l e ang ;
p u b l i c i n t c a l c ( d o u b l e angu ) / / e s t e método de l a c l a s e
ang r e c i b e como p a r á m e t r o l a d i s t a n c i a a r e c o r r e r y
d e t e r m i n a e l número de p u l s o s p a r a c o n s e g u i r l o
p u b l i c i n t c a l c a n ( d o u b l e angu )
{
i f ( angu % 0 . 9 = = 0 ) / / d e t e r m i n a s i e l v a l o r o b t e n i d o s e a c o p l a
con l o s d a t o s d a d o s s i n o r e d o n d e a r
{
p u l s o s =new Double ( angu / 0 . 9 ) ;
pul=pulsos . intValue ( ) ;
}
else
{
p u l s o s =new Double ( ang / 0 . 9 ) ;
pul=pulsos . intValue ( ) ;
}
r e t u r n pul ;
}
}
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.
Figura 5.1: Pantalla asignación movimiento según ángulo de rotación.
Este es el funcionamiento interno del aplicativo:
Se inicia en la clase App2Frame es la encargada de la interface grafica de recibir y trasformar
el dato que le llega por pantalla y se envía a la clase ang la cual en la función calc lo convierte
en pulsos, lo devuelve por medio de esta función a la variable vueltas para el ciclo de la acción
donde se envían los datos al puerto.
5.2.2.
Movimiento según distancia a recorrer.
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.
c l a s s ang / / e s t a e s l a c l a s e que r e t o r n a e l número de
p u l s o s p a r a que e l m o t o r s e mueva l a d i s t a n c i a r e q u e r i d a
por e l u s u a r i o
{
s t a t i c Double p u l s o s ;
s t a t i c i n t pul ;
s t a t i c d o u b l e ang ;
p u b l i c i n t c a l c ( d o u b l e d i s t ) / / e s t e método de l a c l a s e
ang r e c i b e como p a r á m e t r o l a d i s t a n c i a a r e c o r r e r y
d e t e r m i n a e l número de p u l s o s p a r a c o n s e g u i r l o
{
ang = d i s t / 0 . 2 5 ; / / 0 . 2 5 e s e l r a d i o de e l e j e de r o t a c i ó n
d e l m o t o r c o n v i e r t o l a d i s t a n c i a en una e x p r e s i ó n en r a d i a n e s
ang = ( ang * 1 8 0 ) / ( Math . P I ) ; / / l a e x p r e s i ó n l a c o n v i e r t o en á n g u l o
i f ( ang % 0 . 9 = = 0 ) / / d e t e r m i n a s i e l v a l o r o b t e n i d o s e a c o p l a
con l o s d a t o s d a d o s
{
p u l s o s =new Double ( ang / 0 . 9 ) ;
pul=pulsos . intValue ( ) ;
}
r e t u r n pul ;
}
p u b l i c i n t c a l c a n ( d o u b l e angu )
{
i f ( angu %0.9==0)
{
p u l s o s =new Double ( angu / 0 . 9 ) ;
pul=pulsos . intValue ( ) ;
}
else
{
p u l s o s =new Double ( angu / 0 . 9 ) ;
pul=pulsos . intValue ( ) ;
}
r e t u r n pul ;
}
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.
Figura 5.2: Pantalla asignación movimiento según distancia a recorrer.
Se inicia en la clase App2Frame es la encargada de la interface grafica de recibir y enviar el
dato de la distancia a la clase ang la cual trasforma el dato que le llega en la función calc y lo
convierte ángulo y luego en pulsos, lo devuelve por medio de esta función a la variable vueltas
para el ciclo de la acción donde se envían los datos al puerto.
5.2.3.
Secuencia para el control de dos motores.
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 corre73
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.
Para el primer motor :
c l a s s h i l o 1 e x t e n d s Thread implements Runnable
{
p r i v a t e s h o r t d a t o e [ ] = { 0 x01 , 0 x03 , 0 x02 , 0 x06 , 0 x04 , 0 x0c , 0 x08 , 0 x09 } ;
public short dato1 ;
p u b l i c h i l o 1 ( l o n g m, i n t n , i n t vu ) / / c o n s t r u c t o r de l a c l a s e
{
m i l l i s =m;
n a n o s =n ;
v u e l t =vu ;
ant =0;
}
p u b l i c v o i d d e t e n e r 1 ( ) / / e s t a f u n c i ó n d e t i e n e e l h i l o de
c o n t r o l de d a t o s d e l p r i m e r m o t o r .
{
try {
suspend ( ) ;
} catch ( SecurityException e ){
e . printStackTrace ( ) ;
}
}
public void continuar1 ( ) / / Esta función r e i n i c i a el h i l o
de c o n t r o l de d a t o s d e l p r i m e r m o t o r
{
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 s e l método que s e r e e s c r i b e p a r a
e l e l c a l c u l o de l o s d a t o s
{
while ( c o r r e r )
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 ) ;
}
}
Para el segundo motor.
c l a s s h i l o 2 e x t e n d s Thread implements Runnable
{
p r i v a t e s h o r t d a t o e [ ] = { 0 x10 , 0 x30 , 0 x20 , 0 x60 , 0 x40 , 0 xc0 , 0 x80 , 0 x90 } ;
p r i v a t e s h o r t d a t o i [ ] = { 0 x90 , 0 x80 , 0 xc0 , 0 x40 , 0 x60 , 0 x20 , 0 x30 , 0 x10 } ;
public short dato1 ;
public long m i l l i s ;
p u b l i c i n t nanos , v u e l t ;
public boolean c o r r e r ;
p u b l i c h i l o 2 ( l o n g m, i n t n , i n t vu ) / / a s i g n a v e l o c i d a d i n i c i a l
a este hilo
{
m i l l i s =m;
n a n o s =n ;
v u e l t =vu ;
correr=true ;
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.
Se designa la velocidad del primer y segundo motor en milesimas y en nanosegundos el programa internamente asigna estos tiempos al sistema de hilos encargados de los datos de cada
motor, 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.
77
Figura 5.3: Pantalla de control de dos motores.
El funcionamiento de este mucho más complejo y se estructura diferente de los anteriores ya
que este incluye una ejecución de procesos en paralelo, inicia con la clase PruebaFrame la cual
se encarga sólo de la interface grafica en donde mediante las clases Scrollbar se generan las
barras de cambio de velocidad las cuales envían la información a la clase prog 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.
5.2.4.
Ubicación de un punto en un espacio bidimensional.
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.
Mediante la selección de un punto en la pantalla el programa envía esta información y la convierte en el número de pulsos para el movimiento de los motores y que estos se ubique en la
posición deseada, 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.
Figura 5.4: Pantalla de ubicación en un punto bidimensional.
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.
5.3.
RUTINA PARA CONTROL DE UN SERVO MOTOR.
Dado que el movimiento del servo motor se requiere de una señal activa de determinada amplitud1 y el modelo matemático de este tipo de dispositivo es lineal, lo cual facilita su programació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.
c l a s s h i l o 1 e x t e n d s Thread implements Runnable / / Clase
de c o n t r o l de s e ñ a l
{
public hilo2 runner ;
public long m i l l i ;
public short dato1 ;
p u b l i c h i l o 1 ( 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 =2;
r u n n e r =new h i l o 2 (m ) ;
}
p u b l i c void run ( )
{
runner . s t a r t ( ) ;
while ( t r u e )
{
i f ( r u n n e r . g e t S t a t e ( ) = = T h r e a d . S t a t e . TIMED_WAITING )
/ / Si e l o t r o h i l o e s t á dormido e s t e h i l o
1 La
cual depende del el fabricante.
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.
Figura 5.5: Pantalla rutina de control de servo motor.
83
5.4.
VENTAJAS Y DESVENTAJAS DE LOS MOTORES PASO A
PASO Y LOS MOTORES SERVO.
5.4.1.
Motor paso a paso.
5.4.1.1.
Ventajas.
Puesto que la operación del motor paso a paso se sincroniza con las señales de pulso del comando generadas de los pulsos en enviados por los puertos, son convenientes para el control exacto
de su rotación.
Se puede controlar fácilmente su velocidad desde el computador.
Es fácil de invertir el sentido de rotación del motor paso a paso.
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
Se puede usar en operaciones de alta velocidad.
De fácil manejo desde el computador.
Bajo consumo de energía.
2 sin
embargo, una carga demasiado pesada puede causar un error.
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.
5.4.3.
Comparación de motor paso a paso y motor servo.
Cuadro 5.1: Características comparativas de motor PaP y servo motor.
5.5.
MODELO MATEMÁTICO.
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.
5.5.2.
Descripción física servo 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.
5.5.3.
Descripción matemática.
Las variables que intervienen en el proceso de movimiento del motor son:
Momento de inercia.
Amortiguación mecánica.
Constante elástica de la barra.
Momento de torsión aplicado.
Inductancia
Resistencia.
Recíproco de la capacidad, llamado elastancia.
Tensión aplicada.
El diagrama de estados del sistema de control del motor es:
La interacción de las variables eléctricas se da mediante las ecuaciones de las leyes de Kirchhoff
:
2
1
L ddt 2q + R dq
dt + C q = E (t)
donde q (t) es la carga instantánea del capacitor y E (t) es el voltaje aplicado.
La interacción de las variables mecánicas son:
2
I ddtθ2 + c dθ
dt + kθ = T (t)
donde θ (t) representa la magnitud de la torsión.
86
5.5.3.1.
Motor PaP
El modelo matemático de este motor esta afectado por las siguientes variables: el voltaje constante 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 estas 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.
5.5.3.2.
Servo motor.
El modelo matemático de este tipo de motor es muy particular, ya que este basado en su funcionamiento 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
Donde t es el tiempo de duración de la señal en milisegundos.
µ es la duración de señal que pone al servo en posición inicial 0.
θ es el ángulo de torción en grados.
87
5.6.
TARJETA DE ENLACE.
Figura 5.6: Tarjeta de enlace entre el computador y el motor.
El tarjeta es el enlace entre el computador y el motor PaP, consta de los siguientes componentes:
Cuatro resisteancias de 1K.
Un condensador de 2200µ y 25v.
Una compuerta de tipo buffer de enlace 74LS07.
Cuatro transistores tipo darlington TIP 122.
Un regulador positivo de voltaje de 12v LM7812C.
La tarjeta de enlace funciona de la siguiente manera:
88
1. Se envía una señal desde el puerto a la tarjeta, la cual entra por el buffer.
2. La señal sale del buffer hacia la resistencia y de la resistencia al transistor.
3. El transistor al recibir la señal se activa y envía el voltaje hacia la salida del la bobina del
motor correspondiente.
5.7.
FUTURAS MEJORAS.
Una de las mejoras que se le puede realizar al programa y al dispositivo es la integración la
integración con los puertos USB y el diseño de los protocolos de comunicación utilizando 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 interactivo el programa.
89
Capítulo 6
CONCLUSIÓN.
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 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 llevarlo 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.
2. El resultado final no solo es de componentes electrónicos, si no de la combinación de la
programación 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 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.
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
90
grandiosos, dispositivos que realicen tareas más complejas pero que su valor radique en
la sencillez de los mismos.
91
ANEXOS
Anexo1.
Diagrama causa-efecto del proceso de implementación del sistema.
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 Institution 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.
[5] Electrónica Digital. Tutorial puerto paralelo, 2007. perso.wanadoo.es, Consulta 31 de
Agosto de 2007.
[6] Stubberud y Williams DiStefano III. Feedback and control systems. Editorial Schaum,
New York, 1967.
[7] Umez-Eronini Eronini. Dinámica de Sistemas y Control. Editorial Thomson Learning,
México, 2001.
[8] Arthur Eugene Fitzgerald. Electric machinery. McGraw-Hill, 2003.
[9] Juan Martín García. Teoría y ejercicios prácticos de Dinámica de Sistemas. Sysware,
2003.
[10] Ogata Katsuhiko. Dinámica de sistemas. Editorial Prentice-Hall, México, 1987.
[11] Ogata Katsuhiko. Ingenieria de Control Moderna. Pearson, Prentice Hall. Madrid, 2003.
[12] Sum Microsystems. Sum microsystems, java.comm, 2006. http://java.sun, Consulta: 21
de Julio de 2006.
[13] Sum Mycrosystems. Jdk 6 documentation, 2006. http://java.sun.com/javase/6/docs/, Consulta: 21 de Julio de 2006.
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 d
de
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.
• Determinar el modelo matemático del
sistema mecánico del motor servo y paso a
paso.
• Manejar secuencia de información de
que intervienen en el control.
variables q
• Diseñar e implementar la interface de
conexión entre el puerto y el motor.
• Desarrollar algoritmos computacionales
encargados del manejo controlado de los
motores.
Con el auge en las últimas décadas de la
tecnología en el mundo,
mundo surge la
necesidad de actualizar y obtener las
herramientas adecuadas para competir
a nivel tecnológico en el área industrial
como en el área de la investigación
científica, de una forma económica y
que cumpla
q
p con los estándares mínimos
establecidos.
El problema del desarrollo de nuestras
tecnologías radica, en el
d
desconocimiento
i i t d
de h
herramientas
i t que
el mismo computador contiene.
MARCO TEORICO
Puerto paralelo.
Cada puerto paralelo posee una dirección Base, es decir, una p
p
p
,
,
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 direcciones Actualmente las direcciones por defecto para direcciones. Actualmente las direcciones por defecto para los puertos son las siguientes:
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.
Descargar