Anda di halaman 1dari 72

Universidad Autnoma Metropolitana Unidad lztapalapa

Brazo mecnico controlado por motores de paso acoplados a un sistema con microprocesador

Reporte final presentado a la Divisin de Ciencias Bsicas e Ingeniera, como parte del Proyecto de Ingeniera Electrnica II

Departamento de Ingeniera Elctrica

Carrera: ,.:,;;J.. ,t r .."" d Ingeniera E l e c

Asesor: \r Donaciano Jimnz V z


<P

: /

Por Rodolfo Hernndez Valdez Miguel Angel Mendoza Delgado

91320399 92220209

Abril de 2000

lndice
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Propsito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Justificacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Captulo 1
Qu es un robot?

1
2 2 2 3 3 5 5 6

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1. 1 El trmino robof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Generaciones de robots


. . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3 Clasificacin de los robots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Partes de un robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Captulo 2 Caractersticas generales de los robots . . . . . . . . . . . . . . . . . . .

11
11
12 14

2.1Grados de libertad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 . 1 Punto de vista de la teora de mecanismos y mquinas . . . . . . . . 2.1.2PuntodevistadelaRobtica 2.2Volumendetrabajo:Capacidaddecarga 2.3 El conceptodegr@per(elementoterminal) 2.3.1 Tipos de herramientas 2.4 Precisin en la repetibilidad
. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . 14
. . . . . . . . . . . . . . . . . . . 14

. . . . . . . . . . . . . . . . . . . . . . . . .

15 15 16 16 17

. . . . . . . . . . . . . . . . . . . . . . . . . .

2.5 Velocidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Lenguajes de programacin


. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .

2.6.1 Lenguajes de la primera generacin 2.6.2Lenguajesdelasegundageneracin Captulo3Cinemtica

. . . . . . . . . . . . . . . . . . 17

y posicionamientoderobots

. . . . . . . . . . . . . . . . . . .

18 18 19 19

3.1 Articulaciones robticas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2 LacinemticaaplicadaalaRobtica
3.3 Problema cinemtico directo 3.4 Problema cinerntico inverso

. . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

21

Captulo 4 Motores elctricos de paso a paso 4.1Elementosmotricesde

. . . . . . . . . . . . . . . . . . . . . . .

24 24 25 28

los robots . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .

4.2Motoreselctricosdepasoapaso 4.3Sistemasdecontrolparamotores

PAP . . . . . . . . . . . . . . . . . . . . .

4.3.1 Sistemas de control en lazo abierto, basados en microprocesador Captulo 5 Sistemas de control con microprocesador 5.1Estructura y funcionesdelsistemadecontrol

. . . 28

. . . . . . . . . . . . . . . . . . . 30
. . . . . . . . . . . . . . . . .

30 31 32 32 32 34 35 36 36 38 66 68

5.2Niveles de controlporcomputadora . . . . . . . . . . . . . . . . . . . . . . . Captulo6Implementacindelbrazomecnico 6.1 Circuito interface entre 6.1 . 1Diseodelcircuito 6.1.2 Lista de material 6.2Descripcinde
. . . . . . . . . . . . . . . . . . . . .

la PC y los motores de paso . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

los motores

6.3Programadesimulacin 6.3.1 Instrucciones de 6.3.2 Cdigo fuente

y controldelbrazomecnico

uso . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bibliografa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Introduccin
La Robtica es un concepto de dominio pblico. La mayor parte de la gente tiene una idea de lo que es la Robtica, sabe sus aplicaciones y 'el potencial que posee; sin embargo, no conocen el origen de la palabra

robot, ni tienenidea de la naturaleza de las aplicaciones tiles de la Robtica como ciencia.


La Robtica, como la conocemos hoy en da, tiene sus orgenes hace miles de aos. Comenzaremos aclarando que, antiguamente, los robots eran conocidos con el nombre de autmatas, y la Robtica no era reconocida como ciencia,es ms, la palabra robot surgi hasta muchodespus del origen de los autmatas. Desde el principiode los tiempos, el hombreha deseado crear vida artificial. Se ha empeado en dar vida a seres artificiales que le acompaen en su morada, o que realicen sus tareas repetitivas, pesadas o difciles de realizar por un ser humano. Estos primeros autmatas utilizaban, principalmente, la fuerza bruta para poder ejecutar sus movimientos. A las primeras mquinas herramientas que ayudaron al hombre a facilitarle su trabajo no se les daba el nombre de autmata, sino ms bien se les reconoca como artefactoso simples mquinas. Antiguamente, se creaban artefactos capaces de realizar tareas diarias y comunes para los hombres,

o bien para facilitarles las labores cotidianas; se daban cuenta de que haba tareas repetitivas quese podan
igualar con un complejo sistema, y es ascomose comienzan a crear mquinas capaces de repetir las ms bien hacia el saber humano que hacia las mismas labores que el hombre realizaba. Los ingenieros griegos aportaron grandes conocimientos acerca de

los autmatas, aunque

su inters estaba enfocado

aplicaciones prcticas. Tiempo despus, los autmatas fueron los protagonistas principales de una infinidad de relatos de ciencia-ficcin. Los primeros robots creados en toda la historia de la humanidad no tenan ms que un solo fin: entretener a sus dueos. Sus inventores slo se interesaban en conceder los deseos de recrear a quien les peda construir el robot. Sin embargo, estos inventores se comenzaron a dar cuenta de que los robots podan imitar movimientos humanos o de alguna criatura viva. Estos movimientos pudieron ser mecanizados y, de esta manera, se podan automatizar y mecanizar algunas de las laboresms sencillas de aquellos tiempos.El origen del desarrollo de la Robtica se basa en el empeo por automatizar la mayora de las operaciones en una fbrica; estose remonta al sigloXVII, en la industria textil,donde se disearon telaresque se controlaban con tarjetas perforadas.

Objetivo
Disear yconstruir un brazo mecnicocontrolado por unprograma de computadora que manipule los motores de paso correspondientes a cadagrado de libertad del brazo.

Propsito
Conocer las ventajas y desventajas del usodela implementacin de un brazo de robot. computadorapersonaly

los motores depasosen

la

Con el nacimiento de la Revolucin Industrial,muchas fbricastuvieron gran aceptacin por la automatizacin de procesos repetitivos en la linea de ensamblaje. La automatizacin consiste, principalmente, en disear sistemas capaces de ejecutar tareas repetitivas hechas por los hombres y de controlar operaciones sin la ayuda de un operador humano. El trmino automatizacin tambin se utiliza para describir a los sistemas programables que pueden operar independientemente del control humano. La mayora de las industrias han

sido automatizadas o utilizan tecnologia para automatizar algunas labores; en la industria de la telefonia, la
marcacin, la transmisin y la facturacin estn completamente automatizadas. La aparicin de los robots es consecuencia directa del desafio que ha representado para el hombre hacer cadavezms eficientes los procesosdeproduccin. Asi, lasaplicaciones dela Robticaen la de aparatos automatizacin deesos procesos se han convertido en parte imprescindible de fbricas

electrnicos, automviles, etc. Hay estadsticas que indican claramente las ventajas de la utilizacin de un robot en lugar de mano de obra humana enciertas tareas (sin mencionar las implicaciones sociales de la Robtica, que no trataremos en este Proyecto). Entre esas ventajas estn la velocidad y la precisin con que operan los robots, incluyendo el hecho de que "no se cansan" y "noprotestan". Adems, existen aplicaciones donde la Robtica juega un papel fundamental, es decir, sin sta sera prcticamente imposible llevar a cabo tales aplicaciones, por ejemplo, el manejo de sustancias radioactivas mediante brazos manipuladores.

1
Qu es un robot?
1.I El trmino robot
Desde la antigedad se ha tenido la idea de crear autmatas que imitaran a los hombres o a al hombre en tareas

los animales.
Este

Pero no fue sino hasta este siglo cuando se desarroll la tecnologa paraconstruir mquinas que sustituyeran pesadas, peligrosas o montonas. Tales mquinasrecibenelnombrederobot. trmino, de origen checo, aparece por vez primera en novelas de ciencia ficcin,aunque es hasta el ao 1961 cuando llega a la industria el primer robotutil. Mikell Groover, en su libro Automation, Production Systems and Computer lntegrated Manufacturing, define al robot industrial como "...una mquina programable, de propsito general, que posee ciertas caractersticas antropomrficas, es decir, con caractersticas basadas en la figura humana...". Lafigura 1 . 1 muestra la analogaexistente entre las partes del brazo humano y el mecnico.

TEBRATO
-"

_""

BRAZO
" "

Figura 1.1. El brazo mecnico es un robofcon caractersticas anfropomtficas.

Cabe destacar que la caracterstica antropomrfica ms comn en nuestros das mecnico, el cualrealiza diversas tareas industriales.

es la de un brazo

Pero el robot industrial, que se conoce y emplea en nuestros das, no surge como consecuencia de la tendencia o aficindereproducirseresvivientes, sino de la necesidad. Con elobjetivo de disearuna mquina flexible, adaptable al entorno y de fcil manejo, George Devol, pionero de la Robtica Industrial, fue el germen del robot industrial. patent, en 1956, un manipulador programable que Para las normas ISO, un robot industrial es un manipulador automtico reprogramabley multifuncional, que posee ejes capaces de agarrar materiales, objetos, herramientas, mecanismos especializados, a travs de operaciones programadas para la ejecucin de una variedad de tareas. Un robot industrial es una mquina que puede efectuar un nmero diverso de trabajos,

automticamente, mediante la programacin previa; su estructura es en forma de brazo mecnico y tiene la capacidad de adaptarse a diferentes aprehensores o herramientas. Un robot tiene la posibilidad de llevar a cabo trabajos completamente diferentes e, incluso, tomar decisiones segn la informacin procedente del mundo exterior mediante el adecuado programa operativo de su sistema informtico.

Los usos actuales de los robots son:


Militares Industriales Personales Educativos Existen en el mercado diversas empresas dedicadas a la fabricacin de robots industriales, por 10 que existen diferentes marcas y modelos. Estos ltimos normalmente son asignados para identificarlos o de acuerdo a su funcin. La Robtica es una tecnologa transdisciplinaria, ya que no solamente hace uso de los recursos que le proporcionan varias ciencias afines, sino que la misma Robtica produce notables transformaciones en cada
... una de estas ciencias: Electrnica,Computacin, Automtica, Matemticas, Mecnica,

1.2 Generaciones de robots


La primerageneracinse y musicales o juguetes de cuerda movimientos. La segunda generacin,en vez de utilizar interruptores, usa una secuencia numrica de control de movimientos almacenados. El 90 YO de los robots industriales en USA pertenecen a esta generacin. La tercera generacin de robots utiliza las computadoras para su estrategia de control y tiene algn conocimiento del ambiente local a travs del uso de sensores. Lacuartageneracin mejoralas extensionessensoriales,paracomprender accionesy el caracteriza por mecanismos derelojeraquepermitenmover lavarropas de ciclo fijo. Estn limitados a un nmero cajas pequeo de

sus

mundo que los rodea. Utilizan lgicas difusas y procesamiento dirigido por expectativas. La quinta generacin pretende que el control emerja de la adecuada organizacin y distribucin de mdulos conductuales; esta nuevaarquitectura es denominada arquitectura de subsumcin.

1.3 Clasificacin de los robots


Hay diversas propuestas en la clasificacin de los robots; Japn, pas lder tanto en la construccin como en la aplicacin de continuacin: Robots Manipuladores: Son sistemas mecnicos multifuncionales, con un sencillo sistema de control, que permite gobernar el movimiento de sus elementos, de los siguientes modos: robots en diversos campos, ofrece una clasificacin muy amplia, que se presenta a

0 0 0

Manual:cuando el operario controla directamente la tarea del manipulador.

De secuencia fija:cuando se repite, de forma invariable, la tarea del manipulador.

D e secuencia variable:se pueden alterar algunas caractersticas de los ciclos de trabajo.

Robots de repeticin o aprendizaje: Son manipuladoresque se limitan a repetiruna secuencia de movimientos, previamente ejecutada por un operador humano, haciendo uso de un controlador manual o un dispositivo auxiliar. En este tipo de robots, el operario en la fase de enseanza, se vale de una pistola de

programacin con diversos pulsadores o teclas, o bien, de joystics, o bien utiliza un maniqu o, a veces, desplaza directamente la manodel robot. Robots con control por computadora: Son manipuladores o sistemas mecnicos multifuncionales, no necesita mover realmente el se puede

controlados por una computadora. En este tipo de robots, el programador lenguaje especifico, compuesto por varias instrucciones

elemento de la mquina, cuando la prepara para realizar un trabajo. El control por computadora dispone de un adaptados al robot, con las que

slo la terminal de la computadora y no el brazo. confeccionar un programa de aplicacin utilizando


Robots inteligentes: Son similares a los del grupo anterior, pero adems son capaces de relacionarse con el mundo que les rodea a travs de sensores y tomar decisiones en tiempo real (autoprogramables). La visinartificial, el sonido delamquina

y lainteligenciaartificial,sonlascienciasquemsseestn

estudiando para su aplicacin en los robots inteligentes. Micro-Robots: Con fines educacionales, de entrenamiento o investigacin. Existen numerosos robots de formacin o micro-robots a un precio muy accesible y cuya estructura y funcionamiento son similaresa los de la aplicacin industrial. Tomando en cuenta sta y otras propuestas, hemos hecho una clasificacin ms general: hay robots de tres clases. Los robots de aprendizaje graban en su memoria electrnica los movimientos que han ejecutado por vez primera para que, posteriormente, los reproduzcan fielmente, sin ninguna intervencin ulterior del hombre. Los robotsprogramadosestngobernadosporunacomputadora,cuyasinstruccionessiguen constantemente.Por ltimo, los robotsautoadaptablesdisponen de detectores,captadores,cmarasde televisin u otros medios que le permiten tener en cuenta los eventuales cambios del entorno para modificar

su programa.

1.4 Partes de un Robot


Un manipulador robtico podra ser visto ms que

slo como una serie de enlaces mecnicos. El brazo


e internos,servo-control, y

en figura 1.2, el cual consistedel mecnico slo es un componente de todo un Sistema Robtico, mostradola brazo,fuente de poderexterna,elementoterminal(gripper),sensoresexteros comounaparteintegraldetodoelsistema,dadoquelamanera interface con la computadoray control por computadora.An el software programado podra ser considerado en lacualelrobotesprogramado controlado puede tener un impacto mayor en su desempeo y un subsecuente rango de aplicaciones.

Fuente de poder externa

terminal

residente

Figura 1.2. Componentesde un Sistema Robtico.

El brazo humano puede ser representado en un robot, cuyas articulaciones le permiten hasta seis
grados de libertad y que, por consiguiente, puede orientarse en todas las direcciones; lleva en su extremo libre dos pinzas o algn sistema de fijacin para las herramientas que ha de usar; sus movimientos son regulados por mecanismos (p. ej. motores PAP) acoplados a un microprocesador. La idea comn quese tiene de un robot industriales la de un brazo mecnico articulado pero, como se habia mencionado al

o que se inicio de este apartado, este elemento no es ms que una parte de l

considera tcnicamente comoun sistema de robot industrial. Un sistema de robot industrial consta de las siguientes partes: Manipulador o brazo mecnico. Controlador. Elementos mofrices o actuadores. Elemento terminal, herramientao aprehensor. Sensores de informacin en los robots inteligentes.

As, al robot industrial se le engloba dentro de la arquitectura de la celda flexible de manufactura, en la


que se combinan los diversos dispositivosque configuran un ncleo bsico de produccin.

Manipulador: Recibe el nombre de manipulador o brazo de robot, el conjunto de elementos mecnicos


o herramienta). Dentrode la estructura interna que propician el movimiento del elemento terminal (aprehensor
del manipulador se alojan, en muchas ocasiones, los elementos motrices, engranajes y transmisores que soportan el movimiento de las cuatro partes que, generalmente, suelen conformarel brazo: Base o pedestal de fijacin Cuerpo Brazo Antebrazo

Los cuatro elementos rgidos del brazo estn relacionados entre si mediante articulaciones, como se muestra
pueden ser en la figura 1.3, las cuales giratorias, cuando el movimiento permitido es de rotacin, o prismticas, en las que existe un movimiento de traslacin entre los elementos que relacionan.

Figura 1.3. Componentes del brazo manipulador.

A semejanza con elbrazo humano, a las uniones o articulaciones del manipuladorse les denomina:
Unin del cuerpo (base-cuerpo) Unin hombro (cuerpo-brazo) Unincodo (brazo-antebrazo) Uninmueca (antebrazo-aprehensor)

O
O

El nmero de elementos del brazo, y de las articulaciones que los relacionan, determinan los grados de
libertad del manipuladorque,en

los robotsindustriales,suelen

ser 6 y coincidencon los movimientos

independientes que posicionan las partes del brazo en el espacio.

Controlador: Recibeestenombreeldispositivo

que se encarga de regularelmovimientode

los

elementos del manipulador y todo tipo de acciones, clculos y procesado de informacin que se realiza. La complejidad del control vara segn los parmetros que se gobiernan, pudiendo existir las siguientes categoras:

Controlador de posicin:intervieneenelcontroldelaposicindelelementoterminal.Puede actuar en modo punto a punto, o bien, en modo continuo, en cuyo caso recibe el nombre de control continuo de trayectoria.

Controlador dinmico: tomaencuenta elementos asociados.

las propiedadesdinmicasdelmanipulador,motores

Controladaptativo:considera posicin.

la variacindelascaractersticas

del manipuladoralvariarla

Elementos motriceso actuadores: Son los encargados de producir el movimiento de las articulaciones
directamente o a travs de poleas o cables. Se clasifican en tres grupos: Neumticos: emplean aire comprimido como fuente de energa y son muy indicados en el control de movimientos rpidos, pero de precisin limitada.
0

Hidrulicos: son recomendables en los manipuladores que tienen una gran capacidad de carga, junto con una precisa regulacinde velocidad. Elctricos: son los ms utilizados, por su fcil y preciso control, as como por otras propiedades ventajosas que reportasu funcionamiento.

Elemento Terminal (gripper): es undispositivo que seunealamueca finalidad de activarlo para la realizacin de una tarea especfica. Por Io general, la problemtica del elementoterminalradicaen

del brazo del robot con la

queha

desoportarunaelevada

capacidad de carga y, al mismo tiempo, conviene que tenga peso y tamao reducidos. Como consecuencia de la amplia variedad de tareas a las que se destinan los robots, el elemento terminal adopta formas muy

diversas. En bastantes ocasiones es necesario disear el elemento terminal de acuerdo a la aplicacin en la que se emplea.
pinzas y

Los diversos tipos de elementos terminales podemos dividirlos en dos grandes categoras:
herramientas,
Las pinzas han sido diseadas para que el robot cargue

y descargue objetos, transporte materiales

ensamble piezas. Los tipos de pinzas ms comunes pertenecen al tipo llamado

pivotante. Los dedos de la

pinza giran en relacin con los puntos fijos del pivote. De esta manera, la pinza se abre y se cierra. Otro tipo de pinzas se denominan de movimiento h a / En este caso, los dedos se abren y se cierran ejecutando un movimiento paralelo entre s.

AI momento de disear una pinza deben tomarse en cuenta la forma y peso de la pieza de trabajo, as
como el tipo de movimiento que harn

los dedos. Con estos lineamientos, se

puede asegurar una buena

sujecin, de tal forma que la pinza nomodifique o dae la estructura de la pieza. Una regla general es que la pinzadebe sujetarala piezade trabajode su centro de gravedad. Esto ocasionaque seanulen

los

momentos que se pudieran generar por el peso de la pieza de trabajo. Para reducir

los tiempos de ciclo en y pinzasadhesivas.

operaciones de carga y descarga de piezas a mquinas-herramientas, se pueden disear efectores finales condoble pinza. Existenotrostiposdepinzas como ventosas,pinzasmagnticas

Dependiendo de la aplicacin, se pueden sustituir las pinzas por herramientas.

Sensores de Informacin:Los robots de la Mima generacin tienen capacidad para relacionarse con el entorno y tomar decisiones en tiempo real, para adaptar sus planes de accin a las circunstancias exteriores. La informacin que reciben les hace autoprogramables, o sea, alteran su actuacin en funcin de la situacin externa, Io que supone disponer de un cierto grado de inteligencia artificial,

10

Caractersticas generales de los robots


2.1 Grados de libertad
Son 10s paremetros que se precisan para determinar la posicin y la orientacin del elemento terminal del manipulador. Tambin se pueden definir los grados de libertad como los posibles movimientos bsicos (giros y desplazamientos) independientes. Los grados de libertad del brazo de un manipulador estn directamente relacionados consu anatoma o configuracin.

Un mayor nmero de grados de libertad conlleva al aumento de la flexibilidad en el posicionamiento del

6 grados de libertad, como elemento terminal. Aunque la mayora de las aplicaciones industriales requieren de
las de soldadura, mecanizadoy paletizacin, otras ms complejas exigen un nmero mayor, tal es el caso de las labores de montaje. Tareas ms sencillas y con movimientos ms limitados, como las de pintura, suelen exigir 4 5 grados de libertad.

22 grados de libertad y, al mismo tiempo, la vistay el tacto ligados al La mano humana cuenta con unos
cerebro, le permiten una habilidad increble en un sinnmero de operaciones. Entonces, es necesario limitar el nmero de grados de libertad al mnimo indispensable. Esto se hace mediante el siguiente anlisis: La posicin de un cuerpo rigido en el espacio (figura 2.1) queda determinada si conocemos la posicin de tres de sus puntos. Estos, a su vez, quedan determinados por nueve coordenadas,

Figura 2.1. Posicin de un cuerpo rgido en el espacio.

dado que el cuerpo es rgido, se cumple que las distancias entre los puntos son constantes, por Io que se obtienen las siguientes relaciones:

Estas tres relaciones permiten eliminar tres incgnitas. Entonces, tenemos 6 coordenadas libres, lo que nosindicaque se puede construirun mecanismoconseisgrados delibertad, paracolocar unobjeto en cualquier punto del espacio a su alcance y con cualquier orientacin. (De hecho, en los robots industriales, tres grados de libertad se emplean para definir la posicin en el espacio y los otros tres para orientar la mano de sujecin o herramienta).

2.1.IPunto de vista de la teora de mecanismos y mquinas


Dada una configuracin cinemtica cualquiera, el criterio de Grijbler permite establecer el nmero de grados de libertad correspondiente.

Sea un sistema formado por N elementos indeformables. En el espacio de tres dimensiones, cada uno de estos elementos dispone de seis grados de libertad, de los que tres corresponden a las tres coordenadas
{XO,

yo, ZO) del centro de coordenadas asociado a I, y los otros tres definen la posicin angular de los ejes (x,
6N parmetros para definir las
posiciones de todos ellos. Adems, uno de

y, z) respecto a la referencia global. Si los elementos no estuvieran conectados mediante pares cinemticos,
sera preciso conocer

los

elementos (el soporte) esfijo y, por lo tanto, el nmero de grados de libertad se reduce a 6(N-1).

Por otra parte, los elementos del manipuladorse encuentran unidos entre s mediante pares cinemticos

R o P, que permiten, nicamente, un desplazamiento. El par que conecta la mano de sujecin con el resto del
brazo (par esfrico E) permite tres giros. En los robots con una configuracin tradicional,cada elemento tiene dos pares cinemticos, exceptoel soporte y la mano de sujecin, que slo tienen uno.

El nmero de pares cinemticos R o P es N-2, si existe un nico par esferico E. El nmero de grados
de libertad del mecanismo se puede, entonces, calcular como:

G 6 {N-?) -5 (N-2) -3
La formahabitual de trabajo de

N -t ?
aunageneracinde la mano de sujecindel

los robotsmanipuladores se puedeasimilar

trayectorias en su forma restringida, entendiendo por tal la que trata de colocar un punto de mecanismo en una posicibn determinada. Si se impone, como nica condicin, queelcentrode parmetros sin definir. Para ilustrar mejor Io que se ha comentado aqu, supngase un brazo manipulador que actaen el plano robot ocupe una posicin dada (x, y, z), y el brazo manipulador sea de seis grados de libertad, quedarn tres

y sea de un tipo derivado de una cadena abierta formada por N elementos unidos mediante N - 1 pares R.
Si se fija uno de los elementos, por ejemplo el 1 , se obtendr un sistema cuyo nmero de grados de
libertad es:

G = 3 (N-?) -2 (N-1) = N-1,


ya que cada elemento en el plano posee tres grados de libertad y cada par R restringe dos.

I3

2.1.2 Punto de vista de la Robtica


El punto de vista desde el que se contempla el problema de clculo de los grados de libertad, en las obras que tratan exclusivamente sobre Robtica, es un tanto menos formal que el descrito en el apartado anterior, aunque, por supuesto, perfectamente vlido. La diferencia fundamental estribaen el nmero de elementos a tener en cuenta y en la formadeconstruirlamuecadela mano de sujecin.Enefecto,elrtulo se materializa mediante tres pares de rotacin y la mano mediante tres elementos diferentes, con

Io que el

o ms que los N considerados en el apartado anterior. Por otra parte, en nmero deelementos pasa a ser dos
as la Robtica se acostumbra a no considerar alfijo como un elemento.Llamando E al nmero de elementos contados, se verifica:

=N+ 1
El nmero de grados de libertad mediante pares de rotacin: se puede calcular teniendo en cuenta que

los elementos se unen

G = 6-5=
Los elementos de un robot con seis grados de libertad son: la base, el brazo, el antebrazo los tres y que componen la mano.

2.2 Volumen de trabajo: Capacidad de carga


El peso (en kilogramos) que puede transportar una garra del manipulador recibe el nombrede capacidad de carga. A veces, este dato Io proporcionan los fabricantes, incluyendo el peso de la propia carga.La capacidad de carga es unade las caractersticas que ms se tienen en cuenta la en seleccin del robot, segn la tarea a que se destine. En soldadura y mecanizado es comn precisar capacidadesde carga superiores a los 50 Kg.

2.3 El concepto de gripper (elemento terminal)


Existeunagranvariedad de elementosterminalesrequeridosparaefectuarlasdiferentesfuncionesde trabajo. Esta variedad de elementos pueden ser divididos en dos categoras principales:
Grippers Tools

Los grippers son elementos terminales utilizados para sujetar y sostener objetos.

Los objetos son

generalmente piezas de trabajo que tienen que ser movidas por el robot. Estas aplicaciones de manejo de

I4

piezas incluyen carga y descarga, tomar las piezas de una banda transportadora y colocar partes en un pallet. Adems de las piezas de trabajo, otros objetos materia prima y herramientas. manejados por el gripper del robot incluyen cajas, botes,

Los grippers pueden ser clasificados

como grippers sencillos

o grippers dobles, aunque esta

clasificacin se aplica mejor a los grippers mecnicos. El gripper sencillo se distingue por el hecho de que solamente es colocado un dispositivo de sujecin en el elemento terminal del robot. Un gripper doble tiene dos dispositivos de sujecin colocados en el elemento terminal y separado.Ambosdispositivospuedenactuarindependientemente. dispositivos de sujecin en el elemento terminal del robot. es utilizado para manejar dos objetos por El doblegripper es utilizadoparalas o ms

funciones de carga y descarga. El trmino gripper mltiple es utilizado cuando son colocados dos

2.3.1 Tipos de herramientas


Enmuchasaplicaciones, el robotrequiere manipular unaherramientaenvezde

slo piezas de trabajo

(partes). En lamayoradelasaplicaciones herramientaescolocadadirectamentealrobot.

de robots,en las cuales una herramienta es manipulada,la En estoscasos, la herramientaeselelementoterminal. son:

Algunos ejemplos de herramientas utilizadas en las aplicaciones de robot como elementos terminales Spray-paintingnozzle(PinturaenSpray),Drilling(taladrado), tool (Herramienta de cortea presin).

Spot-Welding tools (Herramientas de soldadura punto), Arc-Welding torch (Soplete de soldadura en arco), Routing, Wire brushing(pintura), Grinding, Liquid cement applications for assembly (Aplicaciones de cemento lquido), heating torches, Waterjet cuffing

Encadacaso,

el robotdebecontrolarlaactuacin

de laherramienta.Porejemplo,elrobotdebe

coordinar la ejecucin de la soldadura punto

como parte de su ciclo de trabajo. Esto es controlado de la

misma manera en que el gripper se abre y cierra.

2.4 Precisin en la repetibilidad


Esta magnitud establece el grado de exactitud en la repeticin de los movimientos de un manipulador al realizar una tarea programada. Dependiendo del trabajo que se deba realizar, la precisin en la repetibilidad de los movimientos es mayor o menor. As, por ejemplo, en labores de ensamblaje de piezas, dicha caracterstica ha de ser menor que
k

0.1 mm. En soldadura, pintura y manipulacin

de piezas, la precisin en la repetibilidad est

comprendida entre 1 y 3 mm y en las operaciones demecanizado, la precisin ha de ser menor de 1 mm.

2.5 Velocidad
En muchas ocasiones, una velocidad de trabajo elevada aumenta extraordinariamente el rendimiento del robot, por lo que esta magnitud se valora considerablementeen la eleccin del mismo. En las tareas de soldadura y manipulacin de piezas es muy aconsejable que la velocidad de trabajo sea alta. En pintura, mecanizado y ensamblaje, la velocidad debeser media e incluso baja.

2.6 Lenguajes de programacin


La programacin de robots fundamentales: es la utilizada en las aplicaciones industriales y consta de dos tcnicas

programacingestual programacin textual

La programacin gestual consiste en guiar el brazo del robot directamente a Io largo de la trayectoria que debe seguir. Los puntos del camino se graban en la memoria y luego se repiten. Este tipo de programacin

on line. exige el empleodel manipulador en la fase de enseanza, es decir, trabaja


En la programacin textual, las acciones que ha de realizar el brazo se especifican mediante las instruccionesdeun lenguaje; lastrayectoriasdelmanipulador se calculanmatemticamentecongran

precisin y se evita el posicionamientoa ojo, muy corriente en la programacin gestual. El primer lenguaje textual de un robotfue WAVE, desarrollado en 1973 como un lenguaje experimental, para la investigacin de la inteligencia artificial en el laboratorio de Stanford. Esta investigacin demostraba la factibilidad de la coordinacin mano-ojo del robot. El desarrollo de un siguiente lenguaje fue en 1974, en Stanford. Este lenguaje fue llamado AL y poda ser utilizado en el control de mltiples brazos de robot en la realizacin de las tareas que requeran la coordinacin de brazos. Muchos de los conceptos de WAVE y AL se utilizaron en el desarrollo del primer lenguaje textual comercial para programar un robot: mejorado como VAL /I y presentado en 1984. Eltrabajoeneldesarrollodelenguajespararobotstambinfuerealizado lenguajes de la tareas similares.
16

VAL (Victor's

Assembly Language) fue presentado por Unimation, Inc. para sus series de robots PUMA. Este lenguaje fue

por la IBM. Dos de los y

IBM son AUTOPASS y AML (A manufacturing Languages) utilizados para el ensamble

Otros lenguajes textuales para robots que deben ser mencionados son RAIL, presentado en 1981 por Atdomafix for robotic assembly and arc welding as como la mquina de visin MCL (Manufacturing Control Language) desarrollado por la fuerza area como un lenguaje mejorado de APT (Automatic Programmed

Tooling) y HELP utilizado por la Compaa General Electric.

2.6.1 Lenguajes de la primera generacin


Utilizanunacombinacindecomandos

y procedimientosparadesarrollarprogramasderobots.Fueron
de la programacincon

desarrolladoslargamenteparaimplementarelcontroldelmovimientopormedio

lenguaje textual. Una caracterstica tpica de estos lenguajes incluyela capacidad de definir el movimiento del manipulador, interpolacin lineal y comandos elementales de sensor que involucran seales de on/off. El lenguaje VAL esunejemplodeunlenguajedeprogramacin de unrobotdeprimerageneracin. Las limitaciones comunes de este tipo de lenguajes comprenden la incapacidad de especificar clculos complejos de aritmtica para ser utilizados durante la ejecucin del programa, la incapacidad de hacer uso de sensores complejos y sensores de datos,y una limitada capacidad para comunicarse con otras computadoras.

2.6.2 Lenguajes de la segunda generacin


Los lenguajes de la segunda generacin superan muchas de las limitaciones de los lenguajes de la primera generacin y aaden otras capacidades incorporando caractersticas que hacen que el robot parezca ms ser listados inteligente. Las caractersticas y capacidades de los lenguajes de la segunda generacin pueden como sigue:

Control del movimiento. Capacidades avanzadas de sensor: tiene la capacidad de manejar algo ms que seales

binarias onloff y la capacidad de controlar dispositivos por medio de sensores de datos.


0

lnteligencia limitada: es la capacidad de utilizar informacin recibida del ambiente de trabajo para modificar el comportamiento del sistema de una manera programable. Comunicaciones y procesamiento de datos: cuentan con la capacidad de interactuar con otras computadoras y con bases de datos computarizadas con el propsito generar reportes y controlar actividades en la celda de manufactura. de mantener registros,

17

Cinemtica y posicionamiento de robots


3.1 Articulaciones robticas
Un robotindustrial es un manipulador que puede realizar diversas tareasdentro de un espacio de trabajo determinado. Est compuesto de elementos conectados mediante articulaciones en una cadena cinemtica abierta. Normalmente, las articulaciones son giratorias (rotacin) o prisrndficas (traslacin).Una articulacin giratoria es como una bisagra y permiterelativarotacinentre dos elementos. Una articulacinprismtica permite relativo movimiento lineal entre dos elementos. El smbolo R representa las articulaciones giratorias y

P las articulaciones prismticas, como se muestra en la figura 3.1.


I

Articulacin

Figura 3.1. Representacin simblica de alficulaciones de robots.

18

Cada articulacin representa la interconexin entre dos elementos contiguos I y I ;+l. Denotamos el eje

o el eje a Io largo del cual una articulacin prismtica se desliza, por Z i de rotacin de una articulacin giratoria
si la articulacin es la interconexin de los elementos i e i +l.Las variables de articulacin, denotadas por6 , para una articulacin giratoria y como d; para una articulacin prismtica, representan desplazamiento relativo entre elementos adyacentes.

3.2 La cinemtica aplicada a la Robtica


La cinemtica del brazo del robot trata con el estudio analtico de la geometra del movimiento de un brazo de o momentos que robot con respecto a un sistema de coordenadas de referencia fijo, sin considerar las fuerzas originan el movimiento. As, la cinemtica se interesa por la descripcin analtica del desplazamiento espacial del robot como una funcin del tiempo, en particular de las relaciones entre la posicin de las variables de articulacin y la posicin y orientacin del efector finaldel brazo del robot. Hay dos problemas fundamentales en la cinemtica del robot. El primer problema se suele conocer

como el problema cinemticodirecto, mientras que el segundo problema es el problema cinemtico inverso. Como las variables independientes enun robot son las variables de articulacin,y una tarea se suele dar en trminos del sistema de coordenadasdereferencia, se utilizademaneramsfrecuenteelproblema cinerntico inverso. Denavit y Hartenberg [I9551 propusieron un enfoque sistemticoy generalizado de utilizar lgebra matricial para describir y representar la geometra espacial de los elementos del brazo del robot con respecto a un sistema de referencia fijo. Este mtodo utiliza una matriz de transformacin homognea 4 x 4 para describir la relacin espacial entre dos elementos mecnicos rgidos adyacentes y reduce el problema cinerntico directo a encontrar una matriz de transformacin homognea

4 x 4 que relaciona el

desplazamiento espacial del sistema de coordenadas de la mano al sistema de coordenadas de referencia. Estas matrices de transformacin homogneas son tambin tiles en derivar las ecuaciones dinmicas de movimiento del brazo del robot. En general, el problema cinerntico inverso se puede resolver mediante los mtodos algebraico, iterativo o geomtrico.

3.3 Problema cinerntico directo


Suponer que se desea mover el manipulador desde su posicin original A hasta una posicin B, entre cuyos puntos el robot sigue el contorno de la superficie S a C, a una velocidad constante, mientras mantiene una fuerza prescrita F normal a la superficie.

19

El primer problema encontrado es describir la posicin de la herramienta y los sitios A y B (y, muy
probablemente, la superficie enteraS) con respecto a un sistema de coordenadas comn.

A veces, elmanipuladorpuede

ser capaz de captar su posicin de algunamanera,utilizando localizados en las articulaciones 1 y 2, los cuales pueden
(32.

sensores internos (decodificadores de posicin),

medir directamente los ngulos de las articulaciones(31 y

Entonces necesitaramos, porlo tanto, expresar

las posicionesA y B en trminos de esosngulos de las articulaciones.Esto conduce al problema cinerntico directo, el cual determina la posicin y la orientacin del elemento terminalo herramienta, en trminos de los ngulos de las articulaciones. Es comn establecer un sistema fijo de coordenadas, denominado marco de la base, al cual todos

los objetos, incluyendo el manipulador, toman

como referencia. En este caso,

establecemos el marcode labase coordenadoo, x, y,, en la base del robot, como se muestra en la figura3.2.

Figura 3.2. Marcos coordenados para un robot lineal de dos elementos.

Las coordenadas (x, y) de la herramienta son expresadasen este marco coordenado como
x = al cos %I + a 2 cos (8,+ g2)

y = al sen el + a2 sen (0, + e2)

20

Adems, la orientacin del marco de la herramienta, relativa al marco de la base, est dada por los cosenos de direccin de los ejes xz y y 2 , relativos a los ejes xo y yo, esto es,

los cuales podemos combinar en una matriz de orientacin,

donde io, j o son los vectores unitarios orthonormales estndares en el

marco de la base y

iz, j 2 son los

vectores unitarios orthonormales estndares en el marco de la herramienta.

Estas ecuaciones sonllamadas las ecuaciones cinemticas directas. Para un robot de seis gradosde libertad, estas ecuaciones son bastante complejas no y pueden escribirse tan fcilmente como el manipulador de dos elementos.

3.4 Problema cinemtico inverso


Ahora, dados los ngulos de las articulaciones 0 1 y 8 2 , podemos determinar las coordenadas x y y. Con el objeto de dirigir al robot para moverse hacia la posicin B, necesitamos Io inverso; esto es, necesitamos las variables de las articulaciones en trminos de las coordenadas x y y de B. Este es el problema cinemtico inverso. En otras palabras, dados x y y e n las ecuaciones cinemticas directas, deseamos resolverlas para los ngulos de las articulaciones. Dado que las ecuaciones cinemticas directas no son lineales, una solucin puede no ser fcil de encontrar, no hay una solucin nica en general.Podemos ver, por ejemplo, en el caso de un mecanismo plano de dos elementos, que no puede haber solucin si las coordenadas dadas

(x, y)

estn fuera del alcance del manipulador. Si estas coordenadas estn en el alcance del manipulador, puede haber dos soluciones, como se muestra en la figura 3.3. Las denominadas configuraciones elbow up y elbow down, pueden ser exactamente una solucin si el manipulador debe extenderse completamente para alcanzar el punto. En algunos casos puede haber un numero infinito de soluciones (cuando el mecanismo consta ms elementos). de

21

Figura 3.3. Soluciones mltiples de la cinemfica inversa.

Considerar el diagrama de la figura ngulo 63 est dado por

3.4. Usando la ley de los cosenos, podemos verificar que el

Figura 3.4. Obfencin de los ngulos de las articulaciones de un brazo plano de dos elernenfos.

Ahora, podemos determinar 1 9 2 como

6 = cos -l (0)

No obstante, una mejor manera de encontrar 63 es darse cuenta que,si cos (82)est dado por(I), entonces
sen (82) est dado por

22

y, por lo tanto, & puede determinarse por

La ventaja de esta ltima aproximacin es que las soluciones elbow up y elbow down pueden recuperarse encontrando los signos positivo y negativo en (2), respectivamente.

E l problema cinerntico inverso puede solucionarse (en


procedimientos iterativos de resolucin

la mayora de

los manipuladores
a

correspondientes a robots industriales comercializados actualmente) sin que sea necesario recurrir de sistemas de ecuaciones no lineales. Tales procedimientos

requieren un nmero de operaciones tan grande, que haran imposible el control eficaz del robot (para pasar de una posicina otra sera preciso esperarun tiempo excesivamente largo). Por el contrario, en el caso de robots con ms de seis grados de libertad, en los que hay que recurrir a criterios de optimizacin para obtener la posicin procedimientos iterativos. resulta imprescindible utilizar de los elementos,

Motores elctricos de paso a paso


4.1 Elementos motrices de los robots
Existen tres tipos de dispositivos que producen el movimiento de las articulaciones del manipulador:

hidrulicos,neumticos y elctricos.
Los dispositivos neumticos hacen uso de aire comprimido y los hidrulicos de un fluido a presin. Se
aconseja el empleo de elementos hidrulicos con una regulacin imprecisa de sta. En cambio, los motores elctricos se caracterizan por la facilidad de realizar un control preciso de su movimiento.HanadquiridomayoraplicacinenlaRobtica debido alafacilidad de encontrarenerga elctrica en cualquier parte, unido a su funcionamiento limpio y seguro, y su fcil adaptacin a los circuitos electrnicos basados en microprocesadores. Dentrode los diversostiposdemotoreselctricos, articulaciones de los manipuladores son los de corriente en los manipuladores que deban poseer gran capacidad de

Los dispositivos neumticos ofrecen mayor velocidad, aunque carga, con un aceptable control de velocidad. la

los ms adecuadosparaelmovimientodelas

continuay los de paso a paso (PAP).

Los de corriente continua producen un par casi proporcional al voltajede entrada, por Io que tienen una regulacin precisa. Requieren captadores que informen al sistema de control sobre la posicin del eje en cada instante, realizando un trabajo en bucle cerrado.

Los motores PAP giransuejeun


aplicadosdeterminael

ngulo fijo,aplicandoa

sus bobinas unconjuntoadecuadode


no recorrer su ejetodaslas

impulsos elctricos. No requieren detectores de la posicin de su eje, ya que el simple conteode los impulsos ngulo girado.Trabajanenbucleabierto;pero,al posiciones posibles, limitan el rea de trabajo.

24

4.2 Motores elctricos de paso a paso


Un motor es un aparato que convierte energa elctrica en energa mecnica en base al hecho de que una corriente elctrica, que circula por una espira dentro de un campo magntico, experimenta una torca.

El principio de funcionamiento de losmotores PAP sebasaen


ejercidas entre polos magnticos.

las fuerzas deatraccin y repulsin

Figura 4.1. Posicionamientode/ rotor ante /as fuerzas magnticas ejercidas por /os dos estafores.

Las bobinas del estator A se alimentan de tal manera que se comportan como un polo Norte, mientras que las del estator B hacen de ste un polo Sur. Con esta situacin,el rotor giratorio, que consiste en un imn permanente, se mueve hasta alcanzar la posicin de equilibrio.

Si el estator tuviese cuatro polos, al cambiar su polaridad, mediante un control externo, el rotor girara
con incrementos angulares de

90". Para obtenerincrementosangulares ms pequeos, se incrementael

nmero de polos del estator. La interaccin entre los polos del estator y los del rotor hace que, al aplicarse dos ondas cuadradas, defasadas un cuarto de periodo entre si, a las dos bobinas de los electroimanes, el rotor gire un cuarto de paso polar por cada cambio de polaridad en la tensin aplicada a las bobinas. As, para un motor con doce pares de polos por bobina del estator, se producirn 48 pasos de revolucin, o sea, 7.5" por paso.

25

Figura 4.2. Motor de pasos elemental.

Existen dos modosde funcionamiento para los motores de paso a paso, a saber:

Paso completo (Full-step mode). Medio paso (Half-step mode).

El motor realiza el paso en cuanto la secuencia adecuada


paso al ngulo que gira el eje del motor, cada vez que

se transfiere a las bobinas. Despus de cuatro Se llama ngulo de

pasos, se conectan nuevamente las dos primeras bobinas, repitindose la secuencia. funcin del nmero de dientes del rotor y de la secuencia aplicada.

se cambia la polaridad de las bobinas, siendo una

La velocidad del motor es proporcional a la frecuencia con la que se envan los impulsos de excitacin a

los devanados.
Por su construccin, los motores de pasosse dividen en cuatro tipos:

Deimnpermanente(PM). De reluctancia variable de una pila (VR). De reluctancia variable de multipilas(VRSM). Hibridos (HSM).

26

Los motores de pasos hbridos son la combinacin

de la estructura de los motores de pasos de

y rotor) o ms, con un reluctancia variabley los de imn permanente. Pueden tener dos secciones (de estator eje de imn permanente entrelas dos secciones. Cada seccin incluye un rotor dentado y un estator con sus

polos dentados y sus devanados, respectivamente.El nmero de dientes del rotor y del estator son diferentes. Los dientes del estator estn perfectamente alineados en las dos secciones
alineados con un defasamientode 1/2 grado. y los dientes del rotor estn

Figura 4.3. Empleo de transistores para el arranque de un motor de pasos

$~~~~~

emcum

Figura 4.4. Las 4 bobinas se conectan a un circuito amplificador.

27

En la figura 4.3 se muestra la representacin esquemtica para el encendido de un motor de pasos. Se hace uso de transistores para iniciar la secuencia. Los transistores amplifican de la seal de entrada que, generalmente, proviene de un microprocesador, que enva unacorrientemuybaja. del motor). La conexin de los cables de un motor de pasos se muestra en la figura 4.4. As, los transistores amplifican esta corriente hasta cien veces (lo suficiente para energizar las bobinas e iniciar el funcionamiento

4.3 Sistemas de control para motores PAP


Una buena regulacin del movimiento de un motor PAP exige un sistema de control apropiado. De manera general, el sistema de control recibe las consignas de velocidad y sentido de giro y genera la secuencia de impulsos elctricos adecuada para su aplicacin a las bobinas del motor, como se muestra en la figura 4.5.

VELOCIDAD
b

SISTEMA D E CONTROL

SENTIDO

DE

GIRO
b

Figura 4.5. Esquema generalde la actuacin del sistemade control

4.3.1 Sistemas de control en lazo abierto, basados en microprocesador


El esquema porbloquesde muestra en lafigura 4.6. un sistemade control conmicroprocesador, funcionando en lazoabierto se

SISTEMA CON MICROPROCESADOR DE

CIRCUITO

>
ADAPTACI~N

Figura 4.6. Sistema de control en lazo abierto

28

Aqu, lassealesde

control generadas porel sistemadeben tener encuenta lasrestriccionesque

impone el motor, la carga y el circuito de adaptacin. En los sistemas en lazo abierto no existe realimentacin en la posicin real del eje del motor, entonces

debe responder con precisin a los cambios de excitacin que se aplican a sus bobinas. Si dichos cambios son muy rpidos y el movimiento del eje no puede seguirlos, se originan errores de posicionamiento. Tambin deben tenerse en consideracinlas variaciones de la carga conectada al motor. Sin embargo, el uso de un sistema basado en un microprocesador implica las siguientes ventajas:

1. Programa de control fcilmente variable, al estar basado en software.


2. Posibilidad de controlarotrasfuncionesauxiliares

3. Posibilidad de dedicar parte de la memoria a guardar datos y programas de utilidad.

El sistema decontroldotado de microprocesador puede encargarse

dela generacin dela secuencia de de las seales de

estados, as como de las seales de tiempo y de carcter auxiliar. Tambin puede entregar la informacin digital sobre la posicin y los comandos dearranque y parada, dejandolaelaboracin control de fase a un controlador posterior.

Si el sistemaconmicroprocesadorseencargade

todo el control,

puedenusarse

configuraciones

complejas que optimicen el funcionamiento del motor.Por ejemplo, se podria definir con exactitud la duracin de cada paso y ajustar con precisin la velocidad a una curva memorizada. Cuando el sistema con microprocesador opera conjuntamente con un controlador auxiliar,los programas son menos ambiciosos. Para motores PAP que alcanzan los 2000 pasosls y el paso tiene una duracin de 50 microsegundos, un control exclusivo por software queda limitado entre unas 25 y 50 instrucciones, por cada pasodel motor,restringiendoelgobiernodel nmero y secuencia de pasos). sistemaa lasfuncionesms sencillas(duracindel paso,

29

Sistemas de control con microprocesador


5.1 Estructura y funciones del sistema de control
En laactualidad,lamayorade

los robotsdisponen, como sistema de control, de un mini, un conjunto


la configuracin propia de un

y de sus funciones. Desde su multimicroprocesador o un microcomputador, dependiendo del alcance amplitud aparicin, el microprocesador ha formado parte del controlador principal de robot. La construccin dinmica de algoritmos y la simulacin de su validez empleando modelos, est siendo desarrollada, experimentalmente, en algunos centros de investigacin. Asimismo, est en fase de estudio la construccin de sistemas de control, capaces de generar de forma continua y en tiempo real, los algoritmos de gobierno, que adaptan la mquina alos cambios del mundo exterior.

Las funciones ms importantes que debe llevar acabo el sistema de control son las siguientes:

1. Control y adaptacin con los elementos motrices. 2. Control y adaptacin con los sensores exteriores y procesamientode la informacin que facilitan.
3. Elaboracin y clculo de las secuencias de movimientos.

4. Establecimiento de los mtodos de control adaptativo, si los hubiese.


5. Coordinacin con los dems dispositivos y mquinas,que conforman la clula de fabricacin flexible, en la que el robot es parte integrante y principal. Un aspecto muy relevante del moderno sistema de control, corresponde al tipo de realimentacin que usa para la concepcin del modelo dinmico. Dicha realimentacin puede ser de origen interno, si el robot utiliza informacin exclusiva de parmetros propios, y de origen externo, si tiene en cuenta el estadodel entorno del trabajo.

30

Las ecuaciones dinmicas se calculan en funcin de la actuadores, que controlan los movimientos del robot

velocidad, posicin, aceleracin, pares, etc.,

mediante un modelo matemtico apropiado. Posteriormente, se hallan los pares que han de aplicarse a los

5.2 Niveles de control por computadora


Los robots pueden clasificarse de acuerdo al tipo de control por parte del sistema microprocesador:

7. Robots punto a punto sin servocontrol.


2. Robots punto a punto con servocontrol.

3. Robots con control continuo, para seguimiento de trayectorias.

4. Robots con capacidad de generacinde trayectorias.


En el primer apartado, se encuentran los robots a los que se les muestra los puntos del camino que deben seguir, almacenando dicha informacin en la memoria del sistema del sistema. La fase de aprendizaje se puede realizar por medio de un teclado, un joystick, un brazo maestro o, directamente, trasladando el punto final del manipulador.

Si no existe un mecanismo servocontrol, la situacin de cada elemento del brazo se hace posible, ya sea utilizando topes mecnicoso empleando motores de paso a paso, cuya posicin se conoce de acuerdo con la secuencia de impulsos aplicados. El sistema de control para robots de punto a punto sin servocontrol suele emplear un nico

microprocesador. Los perifricos principales que soporta la CPU son dos:

Entrada de informacin. El teclado de control manual, junto con la puerta de informacin desde un
microcomputador, son los elementos encargados de recibir informacin desde el exterior.

Salida de informacin. Estos perifricos estn formados por los adaptadores de los pulsos de control
que se aplican a las bobinas de los motores paso a paso, por la caja de control manual y por la informacin que se trasladaa la computadora principal. La seccin de entradalsalida, que conecta al microcomputador con mundo el exterior, consta de cuatro partes importantes: gobierno de motores, teclado disponibles para el usuario. del mando manual de aprendizaje, comunicacin serie y lneas

31

Implementacin del brazo mecnico


6.1 Circuito interface entre la PC y los motores de paso
El diseo del hardware (interface entre la PC y los motores de paso) forma parte de un sistema de controlen lazo abierto, es decir, no existe retroalimentacin en la posicin real del eje del motor; en consecuencia, las seales de control generadas por el sistema con microprocesador, a travs del puerto paralelo, deben tener en cuenta las restricciones que impone el motor, la carga y el hardware controlador.

6.1.1 Diseo del circuito


El control del brazo mecnico requiere una PC, cuyo puerto paralelo transfiere los valores generados por un programa residente en esta mquina escrito en lenguaje Turbo C.

Luegodeidentificarelbusdedatosenelpuertoparalelo,las configuran de laforma siguiente:

8 lneasdigitales

(DO-D7) se

DO-D3: Son cuatro bits de informacin o dato por dondese enva la secuencia de pulsos para que gire el motor seleccionado. D4-D6: Son tres bits de direccin que seleccionan el motor, al que se enva la informacin.

El circuito interface (figura 6.1) consta de 8 circuitos integrados TTL y6 circuitos amplificadores que
decodifican el dato y activan el motor seleccionado.

Los 7 bits pasan al decodificador (se conectan D4-D6 a los tres pines de seleccin del C.I. 74138) y
a los latches(seconectan DO-D3 a los pinesdeentradade
QA-QD

los C.I. 74375). El latchactivadoporel


(ULN 2003) que

decodificador suministra las cuatro seales

a los 6 circuitos amplificadores

proporcionan la corriente necesaria a las bobinas de los motores.

32

Figura 6.1. Circuito eleclr6nko para controlar los mdores de paso a traves del puerto paralelo de una PC.

33

.......... ..... .. .

. ................ ..... ...

b+4.5 v

Figura 6.2. Conexin de/ UN2003 a /as bobinas de/ motor.

6.1.2

Lista de material

1 SN74LS138N (Multiplexor paraseleccionar


SN74LS04N (Seis inversores)

1 de 8 salidas)

1
6
1
14
2
Varios
I

I Conector DB25 Macho

SN74LS375NS (Cuatro latches de tres estados)

Base para circuito integrado Placa de circuito impreso tipo protoboard Cable plano y alambre para interconexiones

34

6.2 Descripcin de los motores


En la figura 6.3 se muestra la conexin de las lneas QA-QDa los cables de los motores utilizados.

QD

Qc

QE
QA

O
QE
I

+ 4.5v
L

Qc

: azul : azul-blanco Qc : rojo QD : rojo-blanco Alimentacin (+ 4.5 V) : negro y blanco


QA
QE

figura 6.3. Conexin de los motores del brazo mecnico,

La secuencia de estados lgicos que

se aplicanalas

cuatro bobinasdel motor PAP acontrolar,

cuando su eje gira en el sentido de las manecillas del reloj, se presenta en la figura 6.4, mientras que en la figura 6.5 se muestra el ciclo de estados lgicos para que agujas del reloj. eleje del motorgire en sentido contrario a las

Fases del motor de pasos

1 2 1

O
O

O
1

3
4

O O

O
1

figura 6.4. Tabla de excitacidn CW de las fases del motor pasos. de

35

Fases del motor d e p a s o s

figura 6.5 Tabla de excitacin CCW de las fases del motor de pasos.

Se van a controlar motores de pasos con los siguientes datos:

npo: Hbrido.
Nmero de fases: 4 fases.
Ahgulo de fase: 2'1 paso.

Nmero de dientesdelrotor. 45 dientes. Nmero de dientesdelestator. 36 dientes. Movhiento del diente delrotor 8 grados. Mowmiento deldiente delestator 10 grados. Razn depasos: 180 pasos I revolucin.
El movimiento del diente se define como la separacin angular entre dos puntos correspondientes
de los dientes adyacentes.

6.3 Programa de simulacin y control del brazo mecnico


Esteprograma,escritoenlenguajeTurbo mecnico,enviandopalabrasde

C, tiene como finalidadcontrolar los motores de paso del brazo


Adems, mientrasel

control a travs del puerto paralelo(busdedatos).

brazo ejecuta sus movimientos, se presenta en el monitor de la computadora una simulacin grfica de tales movimientos.

36

6.3.1 Instrucciones de uso


Posicionarse en el directorio donde se encuentra el archivo ejecutable y teclear Io siguiente:

A:\ >BRAZO29
Se debe ejecutar el programa en DOS, debido a que, al hacer pruebas, detectamos un conflicto entre Windows y elprogramadelrobotporelcontroldelpuertoparalelo,quesereflejaen

los retardos

adicionales (bastante significativos) que se observaron en el envo delos datos por el puerto LPTl .

Una vez hecho esto, aparecer el men de opciones del programa, donde el usuario debe teclear el nmero correspondiente a la opcin elegida,o la tecla Esc para salir aDOS.

(1) Introducir ngulos


(2) Introducir coordenadas

(3) Realizar tarea especfica

(Esc) Salir

(1) Introducirngulos:Enesta
segmento del brazo.

opcin,elusuariodebeespecificarcuntosgradosgirarcada

Primer ngulo (correspondiente a la rotacin de la base) Segundo ngulo (correspondiente hombro) Tercer ngulo (correspondiente al movimiento del codo) Cuarto ngulo (correspondiente al movimiento mueca) Quinto ngulo (correspondiente al de giro de l a mueca) Aprensar (1) o Soltar (O) al movimiento del

-90 a 270 grados


-28 a 208 grados

-180 a 180 grados

de la -180 a 180 grados

-180 a 180 grados


Elegir entre cero y uno

(2) Introducir coordenadas: Eligiendo esta opcin, el usuario debe sealar las coordenadas ( 4 J
hacia donde el punto del brazo se debe dirigir.

z j

37

Coordenada en X Coordenada en Y Coordenada en Z ngulo mano (correspondiente al movimiento de mueca) ngulo pinza (correspondiente al de giro de la mueca) Aprensar (1) o Soltar (O) la -180 a 180 grados

-180 a 180 grados


Elegir cero entre y uno

Los lmites delascoordenadasdependendelnguloconquelamuecaseacercaralobjeto(ngulo


mano).

(3) Tarea especfica: Seleccionando esta opcin, el brazo automticamente realizar


de los diferentespuntos

la tarea con

que ha sido programado previamente. Sta consiste en una accin repetida del llamado por coordenadas; se leingresancoordenadas haciadondeelbrazosedebedirigirconlaaccin

correspondiente (Aprensar o Soltar).

6.3.2 Cdigo fuente


En las pginas siguientes se muestra el programa completo, codificado en lenguaje Turbo C, correspondiente al control y simulacin del brazo mecnico.
DE UN BRAZO DE //PROGRAMA DE SIMULACION GRAFICA Y CONTROL, A TRAVES DEL PUERTO PARALELO,

//ROBOT CON 6 GRADOS DE LIBERTAD. #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> #include <math.h> #include <string.h> #define ESC
0x1b

/* Define tecla de escape */

int xO,yO,zO,xl,yl,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4,x5,y5,z5,x6,y6,z6,x7,y7,z7,x8,y8,z8,x9,y9,z9; int ancholx,ancholy,ancho2x,ancho2y,Mancholx,Mancholy,Mancho2x,Mancho2y;

38

int Eyl,Ey2,Ey3,Ey4,Ey5,Ey6,Ey7,Ey8,Ey9,Eancholx,EanchoIy,Eancho2x,Eancho2y; double fil,fi2,fi3,P,R,limiteinc,limiteinc2,limiteinc3; int L,D,B,d,e,f,g,h,i; int MxO,MyO,Mx1,Myl,Mx2,My2,Mx3,My3,Mx4,My4,Mx5,My5,Mx6,My6,Mx7,My7,Mx8,My8,Mx9,My9; int auxXO,auxYO,auxXl,auxYl,auxX2,auxY2,auxX3,auxY3,auxX4,auxY4,auxX5,auxY5,auxX6,auxY6,auxX7,auxY7, auxX8, auxY8,auxX9,auxYS; int desplaza1,desplaza2,desplaza3,desplaza4,desplaza5,pinza; double senR,cosR,senP,cosP,senfil ,cosfil ,ox,oy,oz,ax,ay,az; float x3ext,y3ext; int z3ext,angulomano,angulopinza; int finalx,finaly,finalz,Efinaly,Mfinalx,Mfinaly; int realfi3,realP,limiteAng,norosa; int tope,incremento,compensa,aprobado,incrernentofi2,CualSeMueve,SoltarSiAprisionara; int lirnrealfi3,limrealP,tolerasigno,tecla; char buf[4]; void IniciaGrafico(void)

I* autodeteccin */
int gdriver = DETECT, gmode, errorcode; I* inicializa grficosy variables locales*/ initgraph(&gdriver, &gmode,""); /* lee resultado de inicializacin*/ errorcode graphresult(); if (errorcode != grOk) I* si ocurri un error *I

I
printf("Graphics error:%s\n", grapherrorrnsg(errorcode)); printf("Presiona cualquier tecla para salir:"); getch0; exit(1);/* termina con un cdigo de error *I

1
I
//Calcula la componente X de algun vector. int CalculaX(int rnagnitud,double angulol ,double angulo2)
{

int x;

39

x=(magnitud*cos((angulol*3.1416)/180)*cos((angu102*3.1416)/180));

return(x);

1
//Calcula la componenteY de algn vector. int CalculaY(int magnitud,double angulo1,double angulo2)

I
int y;
y=(magnitud*sin((angulol*3.1416)/180)*cos((angulo2*3.1416)/180));

return(y);

1
//Calcula la componente Z de algn vector. int CalculaZ(int magnitud,doubleangulol)

I
int z;
z=(magnitud*sin((angulol*3.1416)/180));

return(z);

1
//Dibuja componentes grficos que permanecen estticos mientras el brazo se mueve. void Estatico(int Mx0,intMyO)

I
setcolor(5); line(233,308,402,308);//horizontales. line(217,323,418,323); line(200,340,435,340); line(180,360,455,360); line(l55,384,480,384); line(125,413,510,413); line(260,302,140,430);//verticales. line(280,302,200,430); line(300,302,260,430); line(320,302,320,430); line(340,302,380,430); line(360,302,440,430);

40

line(380,302,500,430); setcolor(l4);
ellipse(320,360,0,360,2*h,2*(h/7));

setcolor(9); Iine(320,360,MxO,MyO); setcolor(l4); circle(MxO,My0,4);

1
//Dibuja cada linea que conforma la estructura del brazo, dependiendo de las coordenadas que se le dan de entrada. void DibujaLineas(int Mancholx,int Mancholy,int Mancho2xjnt Mancho2yjnt Mx3,int My3,int Mx4,int My4,int Mx5, int My5,int Mx6,int My6,int Mx7,int My7,int Mx8,int My8,int Mx9,int My9,int Mfinalxjnt Mfinalyjnt color)

{ int colorl ,color2,color3,color4,color5;


if (color==O)

{colorl =0;color2=0;color3=0;color4=0;color5=0;} else


{colorl=lO;color2=ll;color3=12;color4=13;color5=14;}

setcolor(color1);
line(Mancholx,Mancholy,Mancho2x,Mancho2y); //Brazo. line(Mancholx,Mancholy,Mx6,My6); line(Mancho2x,Mancho2y,Mx7,My7);

setcolor(color2); //Antebrazo. line(Mx6,My6,Mx7,My7); line(Mx6,My6,Mx8,My8); line(Mx7,My7,MxS,MyS); setcolor(color3); line(Mx8,My8,MxS,MyS); line(Mx8,My8,Mx3,My3); line(MxS,MyS,Mx3,My3); setcolor(color4); line(Mx3,My3,Mx4,My4); setcolor(color5); //pinza. //Mueca.

41

line(Mx3,My3,Mx5,My5);
putpixel(Mfinalx,Mfinaly,colorl); //Punto final que indica la posicin

objeto. un atrapar puede pinza la //donde

//Calcula cada coordenada delos puntos donde el brazo tiene una articulacin void HazMatematicas(void)

I
x1 =xO+CalculaX(D,fil ,fi2); //Hombro.
yl=yO+CalculaY(D,fil,fi2);

zl=zO+CalculaZ(D,fi2); x2=x1+CalculaX(B,fil,fi3); y2=yl +CalculaY(B,fil,fi3); z2=zl+CalculaZ(B,fi3); x3=~2+CalculaX(d,fil ,P); //Mueca. y3=y2+CalculaY(d,fil ,P); z3=~2+CalculaZ(d,P);
finalx=x2+CalculaX((d+i),fil,P);

//Codo.

//Puntofinaldelbrazo.

finaly=y2+CalculaY((d+i),fil,P);
finalz=z2+CalculaZ((d+i),P); senR=sin((R*3.1416)/180);

cosR=cos((R*3.1416)/180);
senP=sin((P*3.1416)/180);

cosP=cos((P*3.1416)/180); senfil=sin((fil*3.1416)/180);

cosfi1=cos((fi1*3.1416)1180); ox=(-(senR*cosfil"senP)-(senfil*cosR)); /hectores "o" y "a" que sirven


oy=(-(senR*senfil*senP)+(cosfil*cosR)); //para identificar la posicin y

pinza.

la

oz=cosP*senR; de //orientacin ax=cosfil *cosP; ay=senfil*cosP; az=senP; x4=~3t((e*ox)+(rax)); //Puntosparaambosdedosde la pinza y4=y3+((e*oy)+(ray));

42

ancholx=xO+CalculaX(h,fil t90,O); //Define dos vectores anchol y ancho2

t90,O); //para el ancho del segmento del brazo. anchol y=yO+CalculaY(h,fil


ancho2x=x0+CalculaX(h,fil-90,0);

ancho2y=y0+CalculaY(h,fil-90,0);

x6=x1+x0+CalculaX(h+(yl/l2),fi1+90,0); //Define dos vectoresx6,y6,z6y

+90,0); //x7,y7,z7 para el ancho del segmento y6=yl +yO+CalculaY(h+(yl/l2),fil


z6=zl; superior. parte brazo, //del x7=x1+x0+CalculaX(h+(yl/12),fil-90,0);

y7=yl+yO+CalculaY(h+(yl/l2),fil-90,0);
z7=zl; x8=x2+x0+CalculaX(h+(y2/12),fi1+90,0); //Define dos vectoresx8,y8,z8y y8=y2+y0+CalculaY(h+(y2/12),fi1+90,0); //x9,y9,z9 para el ancho del segmento z8=z2;

ntebrazo, //del

x9=x2+x0+CalculaX(h+(y2/12),fil-90,0); y9=y2+y0+CalculaY(h+(y2/12),fil-90,0);
z9=z2;

1
//Despus de haber hecholas matemticas necesarias, esta funcin calculalos valores que deben tener las variables //para representar grficamente en el monitor un brazo de robot simulando un movimiento en 3D con perspectiva. void CalculaCoordenadas(void)

I
HazMatematicas(); Eyl=yl/7; Ey2=y2/7; Ey3=y3/7; Ey4=y4/7; Ey5=y5/7; Ey6=y6/7; Ey7=y7/7; Ey8=y8/7; //Calcula valores que representan movimiento elptico.

43

Ey9=y9/7; Efinaly=finaly/7; Eancholy=ancholy/7; Eancho2y=ancho2y/7; MxO=320;//Calculavalorespararepresentarcadapuntoenelmonitor. My0=360-~0; Mxl=320+xI ; Myl=360+Eyl -zI ; Mx2=320+x2; My2=360+Ey2-~2; Mx3=320+x3; My3=360+Ey3-~3; Mfinalx=320+finalx;
Mfinaly=360+Efinaly-finalz;

Mx4=320+x4; My4=360+~4-~4; Mx5=320+x5; My5=360+Ey5-~5; Mx6=320+x6; My6=360+~6-~6; Mx7=320+x7; My7=360+Ey7-~7; Mx8=320+x8; My8=360+Ey8-~8; Mx9=320+x9; My9=360+Ey9-~9; Mancholx=320+ancholx; //"Dibuja lneas" primero en color negro

Mancholy=360+Eancholy-~O; //para borrar la posicion anterior del brazo.

Mancho2x=320+ancho2x; //Despus, con

los colores correspondientes

Mancho2y=360+Eancho2y-~O; //paralanuevaposicin. DibujaLineas(auxXO,auxYO,auxXl ,auxY1,auxX2,auxY2,auxX3,auxY3,auxX4,auxY4,auxX5,auxY5,auxX6,auxY6,auxX7, auxY7,auxX8,auxY8,auxX9,auxY9,0);

Estatico(Mx0,MyO);

44

DibujaLineas(Mancholx,Mancholy,Mancho2x,Mancho2y,Mx3,My3,Mx4,My4,Mx5,My5,Mx6,My6,Mx7,My7,Mx8,My8,Mx9,

MyS,Mfinalx,Mfinaly,l); auxXO=Mancholx; auxYO=Mancholy; auxXl =Mancho2x; auxYI=Mancho2y; auxX2=Mx3; auxY2=My3; auxX3=Mx4; auxY3=My4; auxX4=Mx5; auxY4=My5; auxX5=Mx6; auxYS=MyG; auxX6=Mx7; auxY6=My7; auxX7=Mx8; auxY7=My8; auxX8=Mx9; auxY8=My9; auxXg=Mfinalx; auxY9=Mfinaly;

1
//Determina si el punto final del brazo del robot se encuentra adelante, es decir, si se encuentra en el cuadrante definido //por el ngulode giro fil. int ManoAdelante(v0id)

I
int resultado; if ((fil>=O)&&(fi1<90)) {if (finalx>O) {resultado=l;} else {resultado=O;}} if ((fil>=90)&&(fil480))
{if (finaly>O) {resultado=l;} else {resultado=O;}}
if ((fil~=l8O)&&(fil~270))

{if (finalxc0) {resultado=l;} else {resultado=O;}}


if ((fil>=-90)&&(fil<O))

{if (finalyC0) {resultado=l;} else {resultado=O;}}

45

if (fil==270)

{if (finalyc0) {resultado=l;} else {resultado=O;}}

return(resultad0);

1
//Esta funcin checa que los dedos de la pinza no choquen con alguno de los segmentos del brazo de robot int NoAtraviesa(void)

I
int DondeEsta; int decide=l;

if ((CualSeMueve==l)~~(CualSeMueve==4)) //Si movemos el Antebrazo u hombro.


{
DondeEsta=ManoAdelante();

fi3=fi3+incremento; P=P+incremento; HazMatematicas();


if ((finalzc=L)&&(((finalx==O)&&(finaly==O))~~(DondeEsta!=ManoAdelante()))) {decide=O;}

fi3=fi3-incremento; P=P-incremento;

1
if (CualSeMueve==2) //Si movemoslamueca.

I
DondeEsta=ManoAdelante();

P=P+incrernento; realP=realP+incremento; HazMatematicas();


if ((finalzc=L)&&(((finalx==O)&&(finaly==O))~~(DondeEsta!=ManoAdelante()))) {decide=O;}

P=P-incremento; realP=realP-incremento;
if ((realfi3~=limiteinc2-180)&&(((realPc((90-Iimiteinc2)-180))&&(incremento==1))~~((realP~((90-limiteinc2)-180))

&&(reaIP~-45)&&(incremento==-l))))

{decide=O;} if ((realfi3~=l80-limiteinc2)&&(((realP~(180-(90-limiteinc2)))&&(incremento==-l))((((realP~(l80-(90-limiteinc2)))
&&(realP>45)&&(incremento==l))))

{decide=O;}

1
if (CualSeMueve==3) //Si queremosgirarlapinza.

46

if (((realfi3~=limiteinc2-180)&&(fi2~90))~~((realfi3~=180-limiteinc2)&&(fi2~90))) {decide=O;}
if ((realP~=180-limiteinc3)~~(realP~=limiteinc3-180))

{decide=O;}

I
return(decide);

//Este procedimiento mueve el ngulo "fi3", es decir, la articulacin que corresponde al movimiento del codo,
o que fue calculado en la funcin "CalculaAngulos" //dependiendo del valor "desplaza3" que el usuario ingreso

void MueveBrazo(void)

I
int fi3inicial=realfi3; CualSeMueve=l ;
if (fi3-desplaza3!=fi3)
{

if (desplaza3<0) {incremento=-I;} else {incremento=l;} while ((fi3!=tope)&&(limiteAng==O)&&(NoAtraviesa()))

I
while ((~2~=n0r0~a)~~(z3~=norosa)~~(z4~=norosa)~~(z5~=norosa)~J(finalz~=norosa))

I
if (ManoAdelanteO) {incrementofi2=1;} else {incrementofi2=-1;} fi2=fi2+incrementofi2; fi3=fi3+incrementofi2; P=P+incrementofi2;
tope=tope+incrementofi2;
compensa=compensa+incrementofi2;

CalculaCoordenadas(); delay(1O);

1
fi3=fi3+incremento; P=P+incremento;
realfi3=realfi3+incremento;

if ((realfi3>limrealfi3)~~(realfi3~-limrealfi3)) {P=P-incremento;;fi3=fi3-incremento;realfi3=realfi3-incremento;limiteAng=l;}

41

CalculaCoordenadas(); delay( 1O);

1
limiteAng=O;
desplaza3=desplaza3-(realfi3-fi3inicial);
1 J

//Este procedimiento mueve el ngulo "P", es decir, la articulacin que corresponde al movimiento de la mueca,
o que fue calculado en la funcin "CalculaAngulos". //dependiendo del valor "desplaza4" que el usuario ingreso

void MueveMuneca(v0id)

I
int Pinicial=realP; CualSeMueve=2; if (P-desplaza4!=P)

I
if (desplaza4<0) {incremento=-I;}

else {incremento=l;} while ((P!=tope)&&(limiteAng==O)&&(NoAtraviesa()))

I
while ((~3~=norosa)~~(z4~=norosa)~~(z5~=norosa)~~(finalz~=norosa))
{

if (ManoAdelanteO) {incrementofi2=1;} else {incrementofi2=-1;}

fi2=fi2+incrementofi2; fi3=fi3+incrementofi2; P=P+incrementofi2;


tope=tope+incrementofi2; compensa=compensa+incrementofi2;

CalculaCoordenadas(); delay(1O);

1
P=P+incremento; realP=realP+incremento; if ((realP~limrealP)~I(realP~-limrealP)) {P=P-incremento;realP=realP-incremento;limiteAng=l;} CalculaCoordenadas(); delay( 1O);

48

//Este procedimiento mueveel ngulo " R , es decir, la articulacin que corresponde a la rotacin dela pinza,
o que fue calculado enla funcin "CalculaAngulos" //dependiendo del valor "desplaza5" que el usuario ingreso

void GiraPinza(void)
{

int Rinicial=R; CualSeMueve=3; if (R-desplaza5!=R)


{ if (desplaza5<0) {incremento=-I;}

else {incremento=l;} while ((R!=tope)&&(limiteAng==O)&&(NoAtraviesa()))

i
while ((z4~=norosa)~~(z5~=norosa)~~(finalz~=norosa))
{

if (ManoAdelanteO) {incrementofi2=1;} else {incrementofi2=-1;) fi2=fi2+incrementofi2; fi3=fi3+incrementofi2; P=P+incrementofi2;


compensa=compensa+incrementofi2;

CalculaCoordenadas(); delay( O); 1

1
R=R+incremento; if ((Rzl80)II(R<-180)){R=R-incremento;limiteAng=l;} CalculaCoordenadas(); delay( O); 1

1
limiteAng=O;
desplaza5=desplaza5-(R-Rinicial);

49

//Este procedimiento mueveel ngulo "fi2", es decir, la articulacin que corresponde al movimiento del hombro, //dependiendo del valor"desplaza2 que el usuario ingreso o que fue calculado enla funcin "CalculaAngulos". void MueveHombro(void)

I
CualSeMueve=4;
if (fi2-desplaza2!=fi2) { if (desplaza2<0) {incremento=-I;}

else {incremento=l;}
if ((z2~=O)~~(z3~=O)~~(z4~=O)~~(z5~=O)~~(finalz~=O))

{if (((tope>fi2)&&(ManoAdelante()))ll((tope<fi2)&&(!ManoAdelante()))){aprobado=l;}} while (((fi2!=tope)&&(limiteAng==O)&&(NoAtraviesa()))~~(aprobado==l))

I
fi2=fi2+incremento; fi3=fi3+incremento; P=P+incremento;
~-limiteinc)(((fi2+1zlimiteinc+l80)) {fi2=fi2-incremento;fi3=fi3-incremento;P=P-incremento;limiteAng=l;) if ((fi2-1

CalculaCoordenadas(); if ( ( z l ~ = O ) ~ ~ ( z 2 ~ = O ) ~ ~ ( z 3 ~ = O ) ~ ~ ( z 4 ~ = O ) ~ ~ ( z 5{aprobado=O;lirniteAng=l;} ~=O)~~(finalz~=O)) delay(1O);


}

1
limiteAng=O;

1
//Este procedimiento mueve el ngulo"fil", es decir, la articulacin que corresponde a la rotacin de la base, //dependiendo del valor"desplazal" que el usuario ingresoo que fue calculado enla funcin "CalculaAngulos". void GiraBase(void)

I
if (fil-desplazal!=fil)
{
if (desplazal<O) {incremento=-I;}

else {incremento=l;} while ((fil!=tope)&&(limiteAng==O))


{

50

fil=fil+incremento;
if ((fi1>270)11(fil<-90)) {fil=fil-incremento;limiteAng=l;}

CalculaCoordenadas(); delay(1O);

1 1 1
//Este procedimiento cambia la posicin de la pinza, es decir, pasa de abierta a cerrada o viceversa, dependiendo del //valor de "pinza" que el usuario ingreso. void SueltaAprisiona(void)
{

if ((pinza==l)&&(SoltarSiAprisionara==O)&&(e!=l)) //Aprisionar.

I
while (e>l)

I
e=e-2; f=f+ 1; CalculaCoordenadas(); delay(30);

1 1
if ((((pinza==O)&&(SoltarSiAprisionara==O))~~((pinza==l)&&(SoltarSiAprisionara==l)))&&(e!=g)) //Soltar

I
while (ecg)

I
e=e+2; f=f-I ; CalculaCoordenadas(); delay(30);

1 1 1
//Este procedimiento llama alos 6 anteriores para cambiar la posicin total del brazo de robot segn se requiera void CambiaAngulos(void)
{

51

int NoMovioR=O; int NoMovioP=O; int NoMoviofi3=0; compensa=O; aprobado=O; limiteAng=O; SoltarSiAprisionara=l; SueltaAprisiona(); //Cambia el estado de la pinza. SoltarSiAprisionara=O; tope=R+desplaza5; //Primero Gira la pinza, mueve la mueca Girapinza(); //mueve antebrazo el
if (tope!=R) {NoMovioR=l;}
y

si requieren se mover.

tope=P+desplaza4; MueveMunecaO;
if (tope!=P) {NoMovioP=l;}

tope=fi3+desplaza3; MueveBrazoo;
if (tope!=fi3) {NoMoviofi3=1;}

if (NoMovioR) //Encaso

denohaberpodidogirarlapinzase

{ tope=R+desplazafj;//ledaotraoportunidad.

Girapinza();
if (tope!=R) {NoMovioR=l;} else {NoMovioR=O;}

1
if (NoMovioP)//En

caso de nohaberpodidomover

la muecase

{ tope=P+desplaza4;

//ledaotraoportunidad.
la pinzase

MueveMunecaO;}
if (NoMovioR) //Encasodenohaberpodidogirar { tope=R+desplaza5;

//le daunaltimaoportunidad.

Girapinza();}

desplaza2=desplaza2-compensa; //Mueve el ngulo que corresponde al hombro.


tope=fi2+desplaza2; MueveHombro();
if (NoMoviofi3)//Encasodenohaberpodidomoverelantebrazose

52

{ tope=fi3+desplaza3; //le da otra oportunidad.

MueveBrazo();} tope=fil tdesplazal; GiraBaseO; SueltaAprisiona(); //Cambia el estado de la pinza. //Mueveelnguloquecorrespondealabase.

I
//Convierte un nmero entero en una cadena de caracteres para poder ser desplegado en pantalla en modo grfico. char *Convierte(double Numero-temporal)

I
char *Num-cadena; int dec,sig,num-dig; double cant-temp; div-t x;
cant-temp=Numero-temporal;

num-dig=O; x.quot=l; while (x.quot!=O) //Se verifica la cantidad de caracteres en el nmero


{ num-dig=num-digtl; //de linea para

hacer la conversin.

x = div(cant-temp,lO); cant-temp=x.quot;

1
Num-cadena ecvt(Numero-tempora1,num-dig,&dec,&sig); //Convierte un valor numrico //a una cadena de caracteres. return (Num-cadena);

I
//Despliega en pantallalos valores de los ngulos y de la coordenada en x,y,z del punto final del brazo de robot, una vez //que se ha dejado de mover. void CoordFinal()
{

double temp; char *cad-salida='\O'; temp=finalx; //Despliega coordenada en strset(cad-salida,'\O);


if (finalx<O)

X.

53

{strcat(cad_salida,"-");}
strcat(cad-salida,Convierte(temp));
outtextxy(O,O,"Coordenada en eje X:");

outtextxy(l60,0,cad~salida);

temp=finaly; //Despliega coordenada en


strset(cad_salida,'\0');
if (finaly<O)

Y.

{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp)):
outtextxy(0,20,"Coordenada en eje Y:");

outtextxy(l60,20,cad-salida);

temp=finalz; //Despliega coordenada en


strset(cad-salida,'\O');

Z.

if (finalz<O)

{strcat(cad_salida,"-");}
strcat(cad-salida,Convierte(temp));

outtextxy(0,40,"Coordenada en eje Z:");

outtextxy( 160,40,cad-salida); temp=fil;


strset(cad-salida,'\O');

//Despliega valor ngulo base. del la de

if (filC0)
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp));

outtextxy(0,60,"ngulo fil:");
outtextxy(l40,6O,cad_salida);

temp=fi2; //Despliega ngulo valor del del strset(cad-salida,'\O);


if (fi2<0) {strcat(cad-salida,"-");}
strcat(cad-salida,Convierte(temp));

hombro

outtextxy(0,80,"ngulo fi2:");
outtextxy(l40,80,cad-~alida);

temp=fi3; //Despliega ngulo valor codo. del del


strset(cad-salida,'\O');
if (fi3<0)

{strcat(cad-salida,"-");}

strcat(cad-salida,Convierte(temp));

54

outtextxy(0,100,"ngulo fi3:");
outtextxy(140,100,cad~salida);

temp=P; //Despliega valor ngulo mueca. del la de


strset(cad-salida,'\O');

if (P<O)
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp));

outtextxy(450,0,"ngu10P

:'I);

outtextxy(590,0,cad-salida);

temp=R; //Despliega valor del ngulo de rotacin de la pinza.


strset(cad-salida,'\O'); if (R<O)
{strcat(cad-salida,"-");} strcat(cad-salida,Convierte(temp));

outtextxy(450,20,"ngulo R :");

outtextxy(590,20,cad-salida);
temp=realP; //Despliega valor del ngulo real de la mueca.
strset(cad-salida,'\O');
if (realPc0) {strcat(cad-salida,"-");}
strcat(cad-salida,Convierte(temp)); outtextxy(450,40,"ngu10realp:"); outtextxy(590,40,cad-salida);

temp=realfi3; //Despliega valor del ngulo real del codo.


strset(cad-salida,'\O');
if (realfi3~0) {strcat(cad-salida,"-");}
strcat(cad-salida,Convierte(temp)); outtextxy(450,60,"ngulo realfi3:"); outtextxy(590,60,cad-salida);

1
//Borra un sector dela pantalla donde se ha escrito texto para poder volver a escribir en ese mismo lugar los nuevos //valores. void BorraSector(void)

55

setf1llstyle(SOLID-FILL,5);

bar(0,0,190,110); bar(445,0,680,70);

1
//Genera una pausa hasta que el usuario oprima cualquier tecla para continuar. void Pausa(void)
{

outtextxy(250,O,Presiona una tecla);

int c; c = getch(); ESC if( 1


== c ){

teclado del carcter un I* Lee


I* El usuario desea salir? *I */

*I

closegraph(); exit( );

texto modo

a I* Cambia a I* Regresa MSDOS

*I

1
if( o == c ){ c getch();
I* Si elusuarionopresionounatecla
/* Lee cdigo rastreo de del teclado

ASCII ? */
*I

I
setfillstyle(S0LID-FILL,O);

bar(250,0,393,8);

1
//Este procedimiento calculalos nuevos cambios en los ngulos de las extremidades del brazo de robot, una vez que el //usuario ingres las nuevas coordenadas del punto final hacia donde el brazo debe desplazarse. void CalculaAngulos(float x3ext,floaty3extjnt z3extjnt angulomano,int angulopinza,int modopinza)

I
double filaux,filaux2,Paux,anguloxyz,C,A,angB,potc,c,Arad; float div; int x2ext,y2ext,z2ext; double fin1 ,fin2,fin3,fin4;
if (x3ext==0) //Si este valor es cero el clculo de fil se indetermina

{ if(y3exPO){filaux=SO;}//poresoseledanestosvalores

else if (y3extcO) {filaux=270;}

//pordefault.

I
else //En caso contrario puede calcularse normalmente.
{ div=y3extlx3ext;

56

filaux=(atan(div)*l80)/3.1416;

1
if (y3ext==0) //Si este valor es cero el clculo de fil toma el mismo valor

{ if (x3ext>0) {filaux=O;} //para diferentes valores de x3ext, por eso se

else if (x3extcO){filaux=180;}//ledanestosvalores.

1
//Para estos valores de x3ext y y3ext el valor de fil debe recalcularse.
if (((x3ext~0)&&(y3ext~0))~~((x3ext~O)&&(y3ext~O))) {filaux=filaux+l80;}

Paux=anguIomano; //Aqu se toman valores absolutos de x3ext y y3ext para trabajar en 2D.
if (x3extcO) {x3ext=(-l)*x3ext;}
if (y3extcO) {y3ext=(-l)*y3ext;}

if (x3ext==0){filaux2=90;}

else

{ div=y3extlx3ext;
fi1aux2=(atan(div)*l80)/3.1416;}
if (y3ext==0){fil aux2=0;}

//Secalculan las coordenadas del vector del punto donde se articula la mueca.

x2ext=x3ext-((d+i)*cos((tilaux2*3.1416)/180)*cos((Paux*3.1416)/180));
y2ext=y3ext-((d+i)*sin((filaux2*3.1416)/180)*cos((Paux*3.1416)/180));

z2ext=z3ext-((d+i)*sin((Paux*3.1416)/180))-L;
//Se calcula el ngulo que forma el vector de las coordenadas anteriores con el sistema de coordenadas base.
if ((~2ext==O)&&(y2ext==O)){anguloxyz=O;}

else

{anguloxyz=(atan(z2extl(sqrt(pow(x2ext,2)tpow(y2ext,2))))*180)/3.1416;}
//Para estos valores de x2ext, y2ext y z3ext el valor de "anguloxyz"debe recalcularse
if ((z2ext~0)&&((x2ext~O)~~(y2ext~O))) {anguloxyz=180-anguloxyz;}

//Se calcula la magnitud del vector.


potc=pow(x2ext,2)+pow(y2ext,2)+pow(z2ext,2);

c=sqrt(potc);

57

//Se calcula el ngulo que forma el segmento del brazo con el vector anterior. if (c==O) {Arad=l.5708;} else
{Arad=acos((-(pow(B,2))+pow(D,2)+potc)/(2*D*c));}

A=(Arad*180)/3.1416; //Se calcula el ngulo que forma el segmento del antebrazo con el vector.
angB=(asin((D*sin(Arad))/B)*l80)/3.1416;

//Se calcula el ngulo que forma el brazo con el antebrazo. C=180-A-angB; //Se calculan los desplazamientos que deben tener los ngulos de las articulaciones para alcanzar el nuevo punto final. finl=filaux; fin2=A+anguloxyz; fin3=C-180;
fin4=Paux-((A+anguloxyz)+(C-l80));

desplazal=finl-fil; desplaza2=fin2-fi2;
desplaza3=fin3-(fi3-fi2);

desplaza4=fin4-(P-fi3);
desplaza5=angulopinza-R;

pinza=modopinza;

1
//Funcin que verifica si el carcter ledo de la variable se trata de un nmero, regresa un cero si es algn otro carcter. int DIGITO(char simbolo2)

I
char digitos[l I ] "1234567890";

in t ap2;
int result2; result2=0; for (ap2=0; ap2<=9; ap2++)
{ if (digitos[ap2]!=simbolo2)

{result2=0;} else {result2=1;

58

ap2=1O;

1
1
return(result2);

1
//Funcin que valida la cadena que el usuario introdujo desde el teclado, regresa un uno si la cadena es una serie de //nmeros y un cero en caso contrario. int EsNumero(char buf[4])
{

int resultl=O; int apl; for (apl =O; apl cstrlen(buf); apl++)
{ if ((apl==O)&&(buf[apl]=='-')&&(tolerasigno))//Verifica si es un

{resultl = I ;} else if (!DIGITO(buf[apl])) {resultl =O; break;} else {resultl=l;}

//numero negativo.

1
return(result1);

1
//Este procedimiento despliega mensajes en pantalla para pedir al usuario que ingrese los nuevos valores de las //coordenadas del punto final, y despus llama al procedimiento "CalculaAngulos". void PideCoordenadas(void)

I
clrscr(); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,10); printf("coordenada x : gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf));

59

x3ext=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("coordenada y : gotoxy(45,1O); scanf("%s",buf);} while (!EsNumero(buf)); y3ext=atoi(buf); tolerasigno=O;
do{ strset(buf,'\O');

gotoxy(30,10); printf("coordenada z : gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); z3ext=atoi(buf); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,1O); printf("ngu1omano : gotoxy(45,lO); scanf("%s",buf);} while (!EsNumero(buf)); angulomano=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,1O); printf("ngu1o pinza: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); angulopinza=atoi(buf);
do{ ") ; ") ;

gotoxy(30,10);

60

printf("Aprensar(1) o soltar(0): gotoxy(55,10); tecla getche(); if( '1' == tecla )

");

//El usuario debe elegir una de las dos opciones.

I
pinza=l;

1
if( 'O' == tecla )

pinza=O;
}

}while ((tecla!='l')&&(tecla!='O'));

CalculaAngulos(x3ext,y3ext,z3ext,angulomano,angulopinza,pinza);

1
//Este procedimiento despliega mensajes en pantalla para pedir al usuario que ingrese los desplazamientos que debe
los ngulos de las articulaciones. //hacer el brazo para cada uno de

void PideAngulos(void)
{

clrscr(); tolerasigno=l; do{ strset(buf,'\O'); gotoxy(30,10); printf("primer ngulo: gotoxy(45,l O); scanf("%s",buf);} while (!EsNumero(buf)); desplaza1 =atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("segund0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza2=atoi(buf);

"1;

"1;

61

do{ strset(buf,'\O'); gotoxy(30,10); printf("tercer ngulo: gotoxy(45,l O); scanf("%s",buf);} while (!EsNumero(buf)); desplaza3=atoi(buf);
do{

") ;

strset(buf,'\O'); gotoxy(30,10); printf("cuart0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza4=atoi(buf); do{ strset(buf,'\O'); gotoxy(30,10); printf("quint0 ngulo: gotoxy(45,10); scanf("%s",buf);} while (!EsNumero(buf)); desplaza5=atoi(buf); do{ gotoxy(30,1O); printf("Aprensar(1) o soltar(0): gotoxy(55,l O); tecla getche(); if( '1' == tecla )
{

") ;

");

//El usuario debe elegir una de las dos opciones,

pinza=l;

1
if( 'O' == tecla )

I
pinza=O;

62

}while ((tecla!='l')&&(tecla!='O'));

I
//Este procedimientoes la primer opcin del men principal donde el usuario debe introducir cambios en las //articulaciones del brazode robot. void MedianteAngulos(void)
{

PideAngulos(); IniciaGrafico();

//Elusuario ingresa valores.

CalculaCoordenadas(); //Dibujaposicininicialdelbrazo. Pausa(); CambiaAngulos(); Borrasector(); Pausa(); closegraph();


}

//Hace simulacin del movimiento del brazo. //Borra un sector donde se escribi texto.
y coordenadas.

CoordFinal(); //Despliega

los valores de ngulos

//Este procedimiento es la segunda opcin del men principal donde el usuario debe introducir nuevas coordenadas para //el punto final del brazode robot. void MedianteCoordenadas(void)
{

PideCoordenadas();//Elusuario ingresa nuevos valores, y el ordenador IniciaGrafico(); //calcula Pausa(); CambiaAngulos(); //Hacesimulacindelmovimientodelbrazo. Borrasector(); //Borra un sector donde CoordFinal(); Pausa(); closegraph();
} los desplazamientos.

CalculaCoordenadas();//Dibuja posicin inicial del brazo.

se escribi texto.
y coordenadas.

de ngulos //Despliegalos valores

//Este procedimiento es la tercer opcin del men principal donde el usuario eligi realizar una secuencia de movimientos //del brazode robot previamente programada. void TareaEspecifica(void)

I
63

IniciaGrafico(); CalculaCoordenadas();//Dibujaposicininicialdelbrazo Pausa();


CalculaAngulos(100,50,150,0,90,1)~ //Calcula los desplazamientos.

CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra CoordFinal(); //Despliega un sector donde se escribi texto.
los valores de ngulos

y coordenadas.

CalculaAngulos(-100,-100,0,-90,0,0);//Calcula los desplazamientos.

CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un CoordFinal(); //Despliega sector donde se escribi texto.
los valores de ngulos

y coordenadas,

CalculaAngulos(100,50,150,0,90,1);//Calcula los desplazamientos.

CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un CoordFinal(); //Despliega sector donde se escribi texto.
los valores de ngulos

y coordenadas,

CalculaAngulos(-l00,lOO,O,-90,0,0); //Calcula los desplazamientos. CambiaAngulos(); //Hace simulacin del movimiento del brazo. Borrasector(); //Borra un sector donde CoordFinal(); //Despliega Pausa(); closegraph(); se escribi texto.
y coordenadas,
los valores de ngulos

I
//Procedimiento principal. int main(void)
{ float divtempl ,divtemp2;

fil =O; fi2=0;


fi3=0;
P=O; R=O;

//ValoresinicialesdeAngulos

realfi3=0:

64

realP=O; L=50;//ValoresconstantesdeMagnitudesde D=lOO; B=lOO; d=30; h=15; //Ancho i=30; //Magnitud e=g; f=g; norosa=lO; xO=O; //Coordenadas del segmento base. de cada segmento. de las tenazas.
los segmentos.

g=i/(sqrt(2)); //magnitud de los vectores "a" y "o" de la pinza.

yo=o;
zO=L;

divtempl=L;

//Calculalmitesdemovimientoparalasarticulaciones demagnitudes las


//los segmentos.

divtemp2=D; //dependiendo
divtempl=divtempl/divtemp2;

de

limiteinc=(asin(divtempl)*180)/3.1416;;

divtempl=d+i; divtemp2=B; divtempl =divtempl/divtemp2;


limiteinc2=(asin(divtempl)*180)/3.1416;;

divtempl =i; divtemp2=d; divtempl =divtempl/divtemp2;


limiteinc3=(asin(divtempl)*180)/3.1416;;

limrealfi3=180; //Lmites para el movimiento del antebrazo y limrealP=l80; do mueca. //la

I
clrscr(); //Despliega principal men gotoxy(30,5); printf("1ntroducir Angulos(I)"); gotoxy(30,1O); printf("1ntroducir Coordenadas(2)"); gotoxy(30,15); printf("Rea1izar Tarea Especifica(3)");

65

gotoxy(30,20); printf("Salir (Esc)"); tecla = getche();


if( '1' == tecla )
{

//El usuariodebeelegirunadelastresopciones

/ / ola tecla Esc para salir del programa.

MedianteAngulos();
if( '2' == tecla )

I
MedianteCoordenadasO;

1
if( '3' == tecla )

I
TareaEspecifica();

1
}while (tecla!=ESC); return O;
}

66

Conclusiones
El diseo y la construccindelbrazomecnico,enesteProyecto,nos
de las ventajas (y desventajas) de estas herramientas. permiti aplicar,a la Robtica,las herramientas que ofrecen ciencias como la Computacin, la Electrnica y la Mecnica, as como percatarnos

El programa de control y simulacindelbrazode

robot seelaboren

basea un anlisis de la

cinemtica de un manipulador de seis grados de libertad y, as, enviar las secuencias de fases adecuadas a

los motores de pasos, para ejecutar los movimientos del brazo.


La interfaceentre los motoresde control, enviadas a travs del sta. En elcircuito que constituy esta interface se emple un decodificador para interpretar los bits de direccin y activar el motor seleccionado. Se utilizaron circuitos amplificadores ULN 2003 (para abastecer la corriente indispensable a las bobinas de pasosyla

PC se dise tomando encuentalaspalabrasde

puerto paralelo de la computadora y generadas por el programa residente en

los motores) que redujeron

considerablemente el nmero de

elementos del circuito electrnico y, por ende, las dimensiones de ste, debido a que, en diseos propuestos por diversos autores, se haba contemplado el empleo de transistores Darlington, resistencias y diodos. Una vezamplificadaen seleccionado. corriente la secuencia de pulsos, se produjo el movimiento

paso a paso delmotor

movieron En consecuencia, los motores

las partes mecnicas del brazo, ejecutando ciertas

maniobras determinadas por el software manejado por el usuario.

El uso de un programa de computadora facilit la tarea de darle versatilidad a la forma de controlar los movimientos del brazo, ya que se pudieron implementar algoritmos basados en ngulos o coordenadas,
adems de ofrecer un manejo fcil del sistema.

Sin embargo, el sistemade control delbrazo notiene unalneade informaral programa la posicin realdelejedel cambios bruscos en los movimientos ordenados por el usuario.

retroalimentacin quepudiese

motor, originando errores de posicionamiento al ejecutarse

Esto sugiere que

se pueden realizar mejoras

significativas al sistema, por ejemplo: dando

al

manipulador la capacidad de captar su posicin, empleando sensores localizados en

sus articulaciones, que


67

pudieran medir los ngulos entre stas, y proporcionar esta informacin al programa de la computadora para que haga las rectificaciones necesarias. en los que se refiere ala

Adems, enlaspruebasfinales,

tuvo queefectuarse

unajuste

parte

mecnica: se aadi un contrapeso a la articulacin correspondiente a la unin hombro (cuerpo-brazo), conel objeto de que al motor de pasos se le facilitara la tarea de mover el elemento brazo. A pesar de esto, cuando algn motor ejecutaba su respectiva secuencia de pasos, seobservaban vibraciones en el brazo.

En general, podemos decir que electrnico, motores depasos Proyecto.

el sistema completo (software, computadora personal,

circuito

y partes mecnicas) se comport deacuerdoalasexpectativasdeeste

68

Bibliografa
1. ANGULO, J. M.; Robtica frhctica. Tecnologa y Aplicaciones; Ed. Paraninfo; Espaa; 1992. 2. ANGULO, J. M.; Curso de Robtica; Ed. Paraninfo; Espaa; 1989. 3. 4.
5.

AUD, D.; Cmo y cundo aplicar un robof industrial; Ed. Marcombo;Espaa; 1988. SPONG, M.; Robot dinamics and control; Ed. John Wiley; USA; 1989. KOIVO, A,; Fundamentals for controlof robotic manipulators; Ed. John Wiley; USA; 1989. GRAY, C. B.;Mquinas elctricas y sistemas accionadores; Ed. Alfaomega; Mxico; 1993. URBIETA, R.; Diseiio y construccin de un controlador digital para motor de paso; Polibits. Revista de Computacin; CINTEC-IPN; Mxico; 1990. RAMAKANT, G.; Analog and Digital Control; Ed. Prentice-Hall; USA; 1988.

6.

7 . HUMPHRIES, J.; lndusfrial Electronics; Ed. Delmar Publishers; USA; 1993.


8. 9.

10. MANO, M.; Lgica digitaly diseAo de computadoras; Ed. Prentice-Hall; Mxico; 1990.

11. TEXAS INSTRUMENTS; The TTL Data Book; USA; 1992. 12. SCHILDT, H.; Turbo C/C++; Ed. McGraw-Hill; Mexico; 1995. 13. http://www.eupmt.es/cra/robotica.htm 14. http://www.angelfire.com/ri/cocrow/index.html 15. http://www.geocities.com/ResearchTriangle/Fac~lity/9407/Robotica/robot.html 16. http://www.alek.pucp.edu.pe/ApoyoaEn/MaquinasEl/mpaso.htm

68

Anda mungkin juga menyukai