Engenharia Mecânica – Automação e Sistemas DESENVOLVIMENTO ...

68
Engenharia Mecânica – Automação e Sistemas DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE PARA MOVIMENTAR MANIPULADOR DE TRÊS GRAUS DE LIBERDADE José Henrique Polidori Itatiba – São Paulo – Brasil Dezembro de 2009 A imagem não pode ser exibida. Talvez o computador não tenha memória suficiente para abrir a imagem ou talvez ela esteja corrompida. Reinicie o computador e abra o arquivo novamente. Se ainda assim aparecer o x vermelho, poderá ser necessário excluir a imagem e inseri-la novamente.

Transcript of Engenharia Mecânica – Automação e Sistemas DESENVOLVIMENTO ...

Engenharia Mecânica – Automação e Sistemas

DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE

PARA MOVIMENTAR MANIPULADOR DE TRÊS GRAUS DE

LIBERDADE

José Henrique Polidori

Itatiba – São Paulo – Brasil

Dezembro de 2009

A imagem não pode ser exibida. Talvez o computador não tenha memória suficiente para abrir a imagem ou talvez ela esteja corrompida. Reinicie o computador e abra o arquivo novamente. Se ainda assim aparecer o x vermelho, poderá ser necessário excluir a imagem e inseri-la novamente.

ii

Engenharia Mecânica – Automação e Sistemas

DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE

PARA MOVIMENTAR MANIPULADOR DE TRÊS GRAUS DE

LIBERDADE

José Henrique Polidori

Monografia apresentada à disciplina Trabalho de Conclusão de Curso, do Curso de Engenharia mecânica da Universidade São Francisco, sob a orientação do Prof. Ms. Paulo Eduardo Silveira, como exigência para conclusão do curso de graduação. Orientador : Prof. Ms./ Paulo Eduardo Silveira

Itatiba – São Paulo – Brasil

Dezembro de 2009

A imagem não pode ser exibida. Talvez o computador não tenha memória suficiente para abrir a imagem ou talvez ela esteja corrompida. Reinicie o computador e abra o arquivo novamente. Se ainda assim aparecer o x vermelho, poderá ser necessário excluir a imagem e inseri-la novamente.

iii

DESENVOLVIMENTO DE UM SISTEMA DE CONTROLE

PARA MOVIMENTAR MANIPULADOR DE TRÊS GRAUS DE

LIBERDADE

José Henrique Polidori

Monografia defendida e aprovada em 09 de dezembro de 2009 pela

Banca Examinadora assim constituída:

Prof. Ms. Paulo Eduardo Silveira (Orientador)

USF – Universidade São Francisco – Itatiba – SP.

Eng. Michel Lopes (Membro da banca)

USF – Universidade São Francisco – Itatiba – SP.

Prof. Dr. Fernando César Gentile (Coordenador)

USF – Universidade São Francisco – Itatiba – SP.

iv

Agradecimentos

Agradeço primeiramente ao Professor mestre Paulo Eduardo Silveira, meu orientador,

que acreditou em mim e incentivou-me para a conclusão deste trabalho mesmo nos momentos

de maior complexidade.

Agradeço também aos professores da Universidade são Francisco, colegas

universitários os quais foram companheiros dentro e fora do contexto deste trabalho.

Eu agradeço fraternalmente a todos.

“A verdadeira medida de um homem não é

como ele se comporta em momentos de conforto

e conveniência, mas como ele se mantém em

tempos de controvérsia e desafio.”

(Albert Einstein)

v

Sumário

Lista de Siglas ......................................................................................................................... vii

Lista de Figuras ..................................................................................................................... viii

Resumo ..................................................................................................................................... ix

1 INTRODUÇÃO .................................................................................................................. 1 1.1) Objetivo ......................................................................................................................... 1 1.1.1) Justificativa.................................................................................................................... 1

2 REVISÃO BIBLIOGRÁFICA ......................................................................................... 3 2.1) Historia da robótica ....................................................................................................... 3 2.2) Razões para utilização de robôs .................................................................................... 4 2.3) Estrutura dos robôs manipuladores ............................................................................... 5

2.3.1) Coordenadas Generalizadas ................................................................................... 6 2.3.2) Graus de liberdade .................................................................................................. 7 2.3.3) Espaço de trabalho ................................................................................................. 7 2.3.4) Movimento dos manipuladores ............................................................................. 8

2.4) Robôs Manipuladores ................................................................................................ 9 2.5) Coordenadas de Revolução ........................................................................................... 9

2.5.1) Descrição matemática de um robô com N GL (Graus de liberdade).................... 10 2.5.2) Matriz jacobiana .................................................................................................. 11 2.5.3) Controle dos manipuladores ................................................................................. 12 2.5.4) Precisão e repetibilidade ....................................................................................... 12

2.6) Sensores ....................................................................................................................... 13 2.6.1) Transdutores e sensores ........................................................................................ 13 2.6.2) Sensores analógicos e sensores digitais ................................................................ 13

2.7) Motores........................................................................................................................ 14 2.7.1) Aspectos construtivos de um motor CC ............................................................... 14 2.7.2) Vantagens e desvantagens dos acionamentos em corrente contínua .................... 15 2.7.3) Motor passo .......................................................................................................... 16

2.8) Dispositivos para Controle .......................................................................................... 17 2.8.1) Microcontroladores ............................................................................................... 17 2.8.2) Unidades do microcontrolador ............................................................................ 18

2.9) Circuito eletrônico ....................................................................................................... 19 2.9.1) Linguagem de programação C .............................................................................. 19

3 METODOLOGIA ............................................................................................................ 20 3.1) Etapas .......................................................................................................................... 20

3.1.1) Fluxograma ........................................................................................................... 20 3.2) Descrições das Etapas ................................................................................................. 21

3.2.1) Cinemática do manipulador .................................................................................. 21 3.2.1) Software de controle ............................................................................................. 25 3.2.2) Comunicação do software .................................................................................... 28

vi

3.2.3) Transferência das informações ............................................................................. 29 3.3) Manipulador mecânico ................................................................................................ 30

3.3.1) Interface ................................................................................................................ 31 3.3.2) Conversor Digital Analógico 4 bits ...................................................................... 32

3.4) Valores de referência ................................................................................................... 33 3.5) Range de Posições angulares....................................................................................... 33 3.6) Espaço de trabalho ...................................................................................................... 34 3.7) Testes realizados para avaliação do posicionamento do manipulador ........................ 34

4 RESULTADO E DISCUSSÕES ..................................................................................... 36 4.1) Variação da posição .................................................................................................... 36 4.2) Avaliação do erro de posicionamento Potenciômetro ................................................. 39 4.3) Análise gráfica............................................................................................................. 41

5 CONCLUSÃO .................................................................................................................. 43

Referências Bibliográficas ..................................................................................................... 44

Apêndice 1 – Código do Visual basic para ..................................................................... 45

Apêndice 2 – Código do Visual basic para ..................................................................... 45

Apêndice 3 – Código do Visual basic para ..................................................................... 45

Apêndice 4 – Código do micrcontrolador na linguagem C ................................................. 45

Apêndice 5 – Código completo do microcontrolador na linguagem C ................................ 47

Apêndice 6 – Código completo software de controle na linguagem Visual Basic ............. 51

Anexo 1 – Código Tabela ASCII ........................................................................................... 59

vii

Lista de Siglas

DOF Degree of freedom

GL Graus de liberdade

END EFFECTOR Ponto final, garra

ROBOT robô

LINKS Elo

SWITCHS Chaves NF, NA

ASSEMBLY Código binário de máquina

UNIX Sistema operacional

USART Universal Synchronous Asynchronous Receiver Transmitter

PC Microcomputador pessoal

TAN Tangente

ATAN Arco tangente

ACOS Arcos Coseno

TX Transmissão

RX Recepção

LF Alimentação linha

TCC Trabalho de conclusão do curso

BPS Bits por segundo

PWM Pulso de largura modular

viii

Lista de Figuras

FIGURA 2.1 – ESTRUTURA MANIPULADOR [2] .............................................................................. 5

FIGURA 2.2 – POSSIBILIDADE DE MOVIMENTO DO MANIPULADOR [1] .......................................... 6

FIGURA 2.3 – COORDENADAS DO MANIPULADOR [1] ................................................................... 7

FIGURA 2.4 – GRAUS DE LIBERDADE DO MANIPULADOR [3] ........................................................ 7

FIGURA 2.5 – VOLUME DE TRABALHO DE UM MANIPULADOR [1] ................................................. 8

FIGURA 2.6 - PRISMÁTICO (MOVIMENTO LINEAR ENTRE ELO) [3] ................................................ 8

FIGURA 2.7 - ROTACIONAL MOVIMENTO ANGULAR ENTRE OS ELOS [3] ....................................... 9

FIGURA 2.8 – BRAÇO MECÂNICO COM TRÊS GRAUS DE LIBERDADE [1] ...................................... 10

FIGURA 2.9 – DESENHO ESQUEMÁTICO DE UM MOTOR CC DE 2 PÓLOS [4] ................................ 14

FIGURA 2.10 - ENROLAMENTO DE UM MOTOR CC DE 2 PÓLOS [4] ............................................. 14

FIGURA 2.11 – SISTEMA DE COMUTAÇÃO [4] ............................................................................ 15

FIGURA 2.12 – ORIENTAÇÃO IMÃ, FORMA 1 [6] ......................................................................... 17

FIGURA 2.13 – ORIENTAÇÃO IMÃ, FORMA 2 [6] ......................................................................... 17

FIGURA 2.14 – ESQUEMÁTICO DO MICROCONTROLADOR [7] ..................................................... 18

FIGURA 3.1 – FLUXOGRAMA DO MANIPULADOR MECÂNICO. ..................................................... 21

FIGURA 3.2 – FLUXOGRAMA DO MANIPULADOR MECÂNICO ...................................................... 21

FIGURA 3.3 – VISTA LATERAL ................................................................................................... 22

FIGURA 3.4 – VISTA SUPERIOR .................................................................................................. 22

FIGURA 3.5 – SOFTWARE DE CONTROLE DAS POSIÇÕES ............................................................. 26

FIGURA 3.6 – MANIPULADOR MECÂNICO COM MALHA FECHADA ............................................... 30

FIGURA 3.7 - INTERFACE............................................................................................................ 31

FIGURA 3.8 - PWM (PULSO DE LARGURA MODULAR) ................................................................ 32

FIGURA 3.9 - MALHA RESISTORES R-2R .................................................................................... 32

FIGURA 3.10 – MENSAGEM DE ERRO ......................................................................................... 34

FIGURA 4.1 – MOVIMENTAÇÃO DO EIXO 1 .............................................................................. 41

FIGURA 4.2 - MOVIMENTAÇÃO DO EIXO 2 ............................................................................... 42

FIGURA 4.3 - MOVIMENTAÇÃO DO EIXO 3 ............................................................................... 42

ix

Resumo

Este Trabalho de conclusão de curso foi direcionado para construção de um software

no PC (computador pessoal) e programação do PIC (microcontrolador) para comandar

movimentos de um manipulador mecânico antropomórfico com 3 graus de liberdade.

PALAVRAS-CHAVE: Manipulador mecânico, programa.

1 INTRODUÇÃO

Este uso de máquinas e equipamento que facilitam e potencializam o trabalho humano

existe desde o inicio da revolução industrial, no século XVIII. Essa etapa do desenvolvimento

produtivo é chamada de mecanização. O que surge no século XX são equipamentos de

operação automática, nos quais a interferência humana é bem menor que na simples

mecanização. Os robôs, por exemplo, atuam na indústria automobilística de ponta (EUA,

Alemanha, Itália e Japão), em etapas que exigem alta precisão, trabalhos repetitivos ou

atividades de risco para as pessoas. A tendência é a redução ao mínimo da ocupação humana,

com a diminuição drástica dos empregos. A palavra robô foi utilizada pela primeira vez em

1921, pelo escritor theco Karel Capek.

A automação industrial é a forma de organização do trabalho fabril que se

caracteriza pela utilização de máquinas automáticas e robôs visando melhorar a produtividade

das indústrias, a redução de tempo e de custos, porém exige mão-de-obra especializada.

1.1) Objetivo

O objetivo é desenvolver um sistema de controle para movimentar um manipulador

mecânico antropomórfico com três graus de liberdade, de forma que possa realizar

movimentos definidos através de um computador pessoal. No computador pessoal (PC) foi

criada uma interface homem máquina (software) para realizar os cálculos da cinemática de

movimento do manipulador mecânico. O equipamento responsável por comunicar o software

com manipulador mecânico é um kit pic. Foi desenvolvido um software para o pic

(microcontrolador).

O kit pic gera o sinal elétrico que posteriormente movimenta os motores do

manipulador mecânico antropomórfico.

1.1.1) Justificativa

A automação mecânica do manipulador mecânico antropomórfico com três graus de

liberdade visa contribuir para sanar os problemas enfrentados hoje nas indústrias que possuem

linha de produção em série. O trabalho repetitivo sendo realizado manualmente pode ao longo

2

de algumas repetições gerarem má qualidade, falta de precisão por diversos motivos, como

distração, por exemplo, comprometendo a qualidade do produto final da linha de produção.

O trabalho repetitivo sendo realizado por um manipulador mecânico pode trazer uma

série de benefícios. Aumentando a produtividade, precisão e qualidade do produto final da

linha de produção.

3

2 REVISÃO BIBLIOGRÁFICA

2.1) Historia da robótica

A humanidade sempre mostrou certo fascínio, desde tempos pré-históricos, por seres

extraordinários, homens mecânicos, e outras criaturas que, em geral, nunca passaram de

fantasias. Antigos sacerdotes egípcios construíram os primeiros braços mecânicos, os quais

eram colocados em estátuas de deuses que pretendiam estar atuando sob a direta inspiração do

deus representado, sem dúvida, para impressionar o povo com o poder desse deus. O interesse

em homens mecânicos, robôs, e outras criaturas continuam até nossos dias.

Na civilização grega, há vários séculos, existiam estátuas operadas hidraulicamente.

Heron de Alexandria construiu mecanismos simples para ilustrar a utilização dessa nova

ciência que era a hidráulica. Na época medieval, relógios montados no topo das igrejas e

catedrais tinham uma figura humana de tamanho natural, geralmente a representação de um

anjo ou um demônio que se movimentava para, com um martelo, bater num sino, marcando

dessa maneira as horas. Essas figuras, que no início eram simples e com um único movimento

de rotação, foram se sofisticando e adquirindo cada vez maior complexidade.

Em 1770, foi inventado o primeiro órgão mecânico, Um dispositivo de cames e polias

controladas por um mecanismo de relógio movimentavam peças, cordas, martelos e sinos.

Também operava válvulas e pistões para gear sons de ventos. Em 1738, Jacques de

Vaucanson fabricou um “tocador de flauta” automatizado. Um cilindro com relevo (uma

verdadeira memória de CD-ROM), ao girar, movimentava uma série de cames que

controlavam pistões de diferentes comprimentos, gerando assim os diferentes tons de uma

flauta.

O criador da palavra Robô foi o escritor theco Karel Capek. Nessa língua, a palavra

robota significa trabalhador que exerce um serviço em forma compulsória. Quando traduzida

para o inglês, o termo virou robot. Em 1921, Capek escreveu uma peça de teatro chamada

R.U.R. Iniciais de “ROSSUM´s Universal Robots”. A peça conta a histórica de um cientista

brilhante, chamado Rossum, que desenvolve uma substancia química similar ao protoplasma.

Ele utiliza essa substancia para a construção de humanóides, com o intuito de que estes sejam

obedientes e realizem todo o trabalho físico. Rossum continuou a fazer aperfeiçoamentos no

projeto do robô, eliminando órgãos desnecessários, melhorando diversas partes, até que

finalmente chega a um ser que ele considerou “perfeito”. O plano toma um rumo amargo

4

quando os robôs “perfeitos” começam a não gostar do seu papel subserviente e rebela-se

contra os seus senhores, destruindo toda vida humana.

Issac Asimov, um dos melhores escritores de ficção cientifica, é considerado como o

primeiro a ter usado a palavra robótica para descrever a ciência que trata dos robôs. Suas

historias, em relação a robôs tratam em muitos casos de situações praticamente impossíveis de

acontecer, tais como greves, revoltas, sublevações, entre outras, mas, de um ponto de vista

apenas teórico, quem conhece as fronteiras desta ciência nova e que ainda tem muito para se

desenvolver, irá identificar-se com as “três leis fundamentais da robótica” estabelecida por

Issac Asimov , que são:

1. Um robô não deve prejudicar nunca um ser humano nem através da ação

direta, nem através de inação.

2. Um robô deve sempre obedecer aos seres humanos, a menos que isso entre em

conflito com a primeira lei

3. Um robô deve sempre se proteger de danos a menos que isso entre em conflito

com a primeira lei ou a segunda lei. [1]

2.2) Razões para utilização de robôs

Existem muitas razões óbvias, para utilização de robôs na produção industrial ou em

outras aplicações. Algumas dessas razões são analisadas na presente seção.

CUSTO – O custo de um robô amortizado ao longo da vida útil é freqüentemente bem

menor que o custo de trabalho de um operário, incluindo encargos trabalhistas e diversos

benefícios que aumentam a “hora-homem” de trabalho.

MELHORA DA PRODUTIVIDADE – Em algumas aplicações, os robôs podem

trabalhar muito mais rápido que os seres humanos, por exemplo, em robôs de solda ou

pintura, alem de utilizar material nas quantidades mínimas necessárias. Um operário sempre

desperdiçará mais material e demorará mais para executar certa tarefa, principalmente se esta

requerer um pouco de precisão.

MELHORA DA QUALIDADE DO PRODUTO – A qualidade melhora por várias

questões. Um robô de soldagem, por exemplo, pode posicionar com muito mais precisão a

ferramenta de solda que um operário. Também em alguns casos a velocidade de solda resulta

em sua qualidade, e um robô pode soldar bem mais rapidamente do que um ser humano. A

precisão no posicionamento da ferramenta ou do produto, no caso de uma montagem, é

fundamental na qualidade deste, e nisso os robôs, apresentam óbvias vantagens.

5

CAPACIDADE DE OPERAR EM AMBIENTES HOSTIS OU COM MATERIAIS

PERIGOSOS – Uma das primeiras aplicações dos robôs na indústria foi à manipulação de

metais a alta temperatura. Os operários deviam fazer isso com pesados instrumentos de difícil

manuseio; um robô adequado pode fazer essa tarefa sem maiores inconvenientes. Em

ambientes perigosos ou hostis para o homem também são apreciadas as vantagens do uso de

robôs. Por exemplo, para trabalhar no vácuo (como é o caso do espaço exterior), chegar até

lugares onde o homem não poderia chegar, ou seria extremamente difícil (outros planetas, por

exemplo) ou ainda trabalhar com solda submarina em ambientes de elevada pressão ou

temperatura, assim como barulhentos ou que representem algum tipo de perigo à integridade

física do homem. [1]

2.3) Estrutura dos robôs manipuladores

Os robôs industriais são projetados com o intuito de realizar trabalho produtivo. O

trabalho é realizado quando o robô movimenta sua estrutura a fim de deslocar o objeto a ser

manipulado. A estrutura de um robô manipulador consiste basicamente numa série de corpos

rígidos, idealmente sem deformação pela ação de forças aplicadas sobre estes, que em geral,

são feitos de um material resistente como aço, e que se denominam elos (diversas

bibliografias utilizam sua denominação em inglês: links). Esses elos podem ter diversos

tamanhos e formas dependendo da aplicação. [1]

A figura 2.1 exibe os elos unidos por juntas que lhes permitem ter um movimento

relativo entre si. Assim em alguma localização do elo, existirá uma junta que o une com o elo

seguinte, permitindo-lhe um movimento. Conforma-se assim numa cadeia cinemática aberta

de elo interligado por juntas. [2]

Figura 2.1 – Estrutura manipulador [2]

6

O ponto extremo do último elo é conhecido com o nome de punho, e é onde costuma

estar fixado o efetuador; no caso particular dos braços mecânicos se assemelha à mão no

extremo do antebraço.

As possibilidades de movimento de um elo com respeito ao anterior estão

determinadas pelo tipo de junta que os une. Este movimento pode ser rotação, onde o elo pode

girar um determinado ângulo com respeito ao anterior. Nesse caso, a junta chama-se de

revolução, seja qual for à orientação deste ângulo. O movimento também pode ser de

deslocamento linear, onde um elo se afasta ou se aproxima do anterior a uma determinada

distância, o movimento é chamado de prismático. Nos braços mecânicos, as juntas costumam

ser de revolução, justamente por visarem uma semelhança com um braço humano, como

ilustrado na figura 2.2. [1]

Figura 2.2 – Possibilidade de movimento do manipulador [1]

2.3.1) Coordenadas Generalizadas

As variáveis características das juntas são aquelas grandezas físicas que permitem

representar o movimento de um elo com respeito ao anterior. No caso das juntas de revolução,

as variáveis serão ângulos de rotação entre um elo e o anterior. No caso das juntas

prismáticas, a distância entre um elo (ou um ponto determinado deste) e a junta que o une

com o elo anterior.

Na figura 2.3 é exibido um robô manipulador de duas juntas de revolução. As

coordenadas generalizadas são dadas pelo vetor [ ], cujas componentes representam os

ângulos dessas juntas. Conhecendo o valor desse vetor, assim como os comprimentos dos

elos, os quais foram denominados no desenho como e , é possível determinar a posição

do efetuador (ou, mais precisamente, do extremo do ultimo elo), em um sistema de eixos

cartesianos ortogonais (x,y) com origem solidária com a primeira junta. [1]

7

Figura 2.3 – Coordenadas do manipulador [1]

2.3.2) Graus de liberdade

O número total de juntas do manipulador é o número de graus de liberdade (ou DOF,

segundo as iniciais em inglês) do manipulador mecânico.

A figura 2.4 apresenta como exemplo uma representação dos três graus de liberdade

de um braço mecânico referentes às três primeiras juntas, necessárias para o posicionamento

do efetuador. Neste exemplo particular, observa-se que a primeira rotação é rotacional

transversal e as outras duas pendulo duplo. [1]

Figura 2.4 – Graus de liberdade do manipulador [3]

2.3.3) Espaço de trabalho

O espaço de trabalho do manipulador é o termo que se refere ao espaço dentro do qual

este pode movimentar o efetuador conforme figura 2.5. É definido como o volume total

conformado pelo percurso do extremo do último elo, o punho, quando o manipulador efetua

todas as trajetórias possíveis.

8

O volume depende da anatomia do robô, do tamanho dos elos, assim também como

dos limites dos movimentos das juntas (nas juntas de revolução, por exemplo, existirá um

ângulo máximo de giro, determinado por limites mecânicos).

A posição do punho do manipulador pode ser representada no espaço de trabalho ou

no espaço das juntas. A posição no espaço de trabalho é determinada pela posição do punho

segundo um sistema de três eixos cartesianos ortogonais, cuja origem em geral é solidária

com a base do robô. Portanto, a posição do punho é representada no espaço de trabalho como

um vetor de três componentes [x, y, z]. A posição no espaço das juntas é representada pelo

vetor de coordenadas generalizadas, ou vetor cujas componentes representam a posição de

cada junta (ângulo se for de revolução ou distancia se for prismática), relativas a uma posição

inicial arbitrária. [2]

Figura 2.5 – Volume de trabalho de um manipulador [1]

2.3.4) Movimento dos manipuladores

As articulações podem se movimentar de duas maneiras, prismático na figura 2.6 ou

rotacional figura 2.7 [3]:

Figura 2.6 - Prismático (Movimento linear entre elo) [3]

9

Figura 2.7 - Rotacional Movimento angular entre os elos [3]

2.4) Robôs Manipuladores

Os robôs manipuladores podem realizar algumas trajetórias denominadas:

Controle Ponto a Ponto – PTP - O robô é capaz de se deslocar de um ponto para qualquer

outro ponto do seu volume de trabalho, sendo a trajetória e velocidade não controladas ao

longo desse movimento.

Trajetória Contínua – CP - A trajetória é total ou parcialmente contínua, permitindo o

controle do movimento e velocidade de cada eixo em simultâneo. Essencial para aplicações

de pintura, solda, etc.

Trajetória Controlada - Possibilidade de gerar trajetórias com geometrias diferentes, como

sejam linhas, círculos, curvas interpoladas. Apenas é necessário memorizar o ponto de início e

o de fim da trajetória.

Controle Inteligente - Este tipo de controle de movimento permite ao robô ajustar as

trajetórias por interação com o meio ambiente. Estas tomadas de decisões lógicas baseiam-se

na informação recebida por sensores. [3]

2.5) Coordenadas de Revolução

Os robôs manipuladores de coordenadas de revolução são chamados desta forma por

possuírem as três primeiras juntas [ ] figura 2.8, as que posicionam o efetuador (braço

mecânico), sendo, portanto, as três primeiras coordenadas generalizadas tem ângulos de

rotação. Esses três ângulos recebem diversos nomes na bibliografia, aqui serão chamados de

[ ]. A maioria dos braços mecânicos de anatomia antropomórfica tem essa

configuração, três primeiras juntas se correspondem com os ângulos de rotação da base,

ombro e cotovelo, respectivamente, imitando os movimentos de um braço mecânico.

10

Figura 2.8 – Braço mecânico com três graus de liberdade [1]

A maior vantagem dos robôs de juntas de revolução é a poder alcançar qualquer ponto

dentro do volume de trabalho com relativa facilidade. A maior desvantagem está na

dificuldade de visualizar e controlar os três elos. O mesmo ponto no espaço pode ser atingido

de diferentes maneiras, isto dificulta em decidir qual será a forma mais adequada. Isto

complica substancialmente os algoritmos de controle do braço, sendo preciso, para seu

controle utiliza computadores ou microcontroladores. [1]

2.5.1) Descrição matemática de um robô com N GL (Gr aus de

liberdade)

A transformação de coordenadas de um robô com n graus de liberdade pode ser

formulada da seguinte maneira. A partir de uma configuração inicial do robô, na qual as suas

variáveis articulares ° são conhecidas, a posição completa de seu elemento terminal (ou

ferramenta de trabalho) ° será conhecida a partir do modelo do sistema.

A mudança de coordenadas consistirá de um funcional que descreverá a

correspondência existente entre a cadeia cinemática para um conjunto de variáveis articulares e sua posição correspondente a equação 2.1,

Equação 2.1

Onde o vetor possui n < 6 componentes descrevendo a posição e orientação do elemento

terminal do robô (no caso de n = 6). No caso de transformação inversa de coordenada, uma

determinada posição do volume de trabalho será atingida pelo robô a partir de uma posição

de repouso . A equação 2.2 não apresentará uma solução única, e a mesma poderá ser

utilizada para o controle cinemática de mecanismos.

11

Equação 2.2

A transformação direta de coordenadas não apresenta dificuldades na sua resolução, o

mesmo não acontecendo com a transformação inversa que é muito complexa, não

apresentando uma solução única. Para eliminarmos as indeterminações que aparecem no

problema inverso, utiliza-se geralmente a matriz jacobiana, onde a mesma poderá ser utilizada

para controle o cinemático de mecanismos [2].

2.5.2) Matriz jacobiana

Dado uma configuração inicial e de um robô, as coordenadas do elemento

terminal são descritas pela equação 2.3. Para pequenos deslocamentos associados aos

deslocamentos das variáveis θ articulares pode-se escrever: Equação 2.3

A matriz jacobiana será definida como equação 2.4: , / Equação 2.4

Que poderá ser construída a partir das relações cinemáticas que descrevem a

arquitetura de um manipulador na equação 2.5:

, … "

= , … " Equação 2.5

....

" "", " … "

Através de derivadas parciais, a matriz Jacobiana J(θ) será definida como na equação

2.6 [2]:

#$%1$&1 ' $%n$&n) * )$%n$&n ' $%n$&n+ Equação 2.6

12

2.5.3) Controle dos manipuladores

Existem diversos tipos de algoritmos de controle para robôs manipuladores que são

utilizados na pratica. Esses algoritmos, dependendo da sua complexidade, podem ser

implementados por controladores de diversas tecnologias, desde alguns muito simples tais

como sistemas eletromecânicos de relay e switchs até microcomputadores ou

microcontroladores digitais.

Existem dois tipos básicos de controle de manipuladores.

O primeiro é utilizado em robôs acionados por pistões que podem ser hidráulicos ou

pneumáticos, sendo esta última possibilidade a mais freqüente.

O segundo tipo de controle é aplicado a manipuladores mais sofisticados, que tem um

sistema de sensores para medir a posição das juntas. Este tipo de controle é chamado de

controle de posição, ou controle ponto a ponto, e exige controladores mais complexos. Nesses

algoritmos de controle existe um sinal de referência que indica a posição a deslocar do

efetuador.

O programa também pode determinar que o braço efetue uma trajetória dentro do

espaço de trabalho ao longo do tempo, cuidando a cada instante da sua posição e velocidade,

neste caso está se falando de controle de trajetórias. Este tipo de controle é implementado

quando interessa que o efetuador acompanhe uma trajetória determinada dentro do espaço de

trabalho, o que acontece com os robôs de solda, por exemplo, onde a posição deve apenas

atingir uma posição final, lugar desejado onde será realizado a solda, aguardar um tempo

determinado e retornar para posição de origem, e repetir a trajetória até que exista alguma

intervenção por parte do operador do braço para que seja realizado uma nova trajetória. [1]

2.5.4) Precisão e repetibilidade

A repetibilidade do manipulador representa a capacidade deste de retornar

seguidamente a um ponto determinado do espaço de trabalho. Se o manipulador parte de uma

posição qualquer – seja essa posição representada no espaço das juntas, como o vetor das

coordenadas generalizadas, ou no espaço de trabalho, com um vetor das três componentes [x,

y, z] – vai para um segundo ponto e retorna ao primeiro, é possível que não consiga colocar o

efetuador exatamente na posição inicial.

13

A Precisão define-se como a capacidade do manipulador de atingir um ponto

especificado, seja qual for o sistema de coordenadas utilizado. Usualmente, essas quantidades

referem-se à máxima carga útil que pode ser transportada e à máxima velocidade de

deslocamento permitida, pois a precisão e repetibilidade são altamente dependentes dessas

duas especificações. [1]

2.6) Sensores

2.6.1) Transdutores e sensores

Um transdutor é um dispositivo que transforma uma forma de energia numa outra

adequada para fins de medida; mede uma forma de energia que está relacionada à outra

através de uma relação conhecida. Por exemplo, pode se medir pressão utilizando um

transdutor que transforma a força exercida pela pressão numa tensão elétrica proporcional à

pressão. O transdutor é um sistema completo que produz um sinal elétrico de saída que

representa a grandeza física sendo medida.

O sensor, por outro lado, é apenas a parte sensitiva do transdutor, que se completa em

muitos casos com um circuito eletrônico para a geração desse sinal elétrico que depende do

nível de energia da grandeza física que afeta o dispositivo sensitivo. Continuando com o

exemplo anterior, no caso do transdutor de pressão, o sensor seria apenas o diafragma

sensitivo sobre o qual é exercida a pressão que se deseja medir. No entanto, para os fins deste

texto, será utilizado genericamente o termo sensor para se referir tanto à parte sensitiva do

transdutor como a todo o sistema que em geral produz esse sinal elétrico proporcional à

grandeza física medida. [1]

2.6.2) Sensores analógicos e sensores digitais

Os sensores medem uma grandeza física e entregam um sinal elétrico como saída. Se

esse sinal puder tomar qualquer valor dentro de certos limites ao longo do tempo, esse sensor

é chamado analógico. Se esse sinal puder tomar dois valores ao longo do tempo, sejam estes

sinais de qualquer amplitude, o sensor é chamado de digital. [1]

14

2.7) Motores

2.7.1) Aspectos construtivos de um motor CC

O motor de corrente contínua é composto de duas estruturas magnéticas:

· Estator (enrolamento de campo ou ímã permanente);

· Rotor (enrolamento de armadura).

O estator é composto de uma estrutura ferromagnética com pólos salientes aos quais

são enroladas as bobinas que formam o campo, ou de um ímã permanente. As figuras 2.9 e

2.10 apresentam o desenho de um motor CC de 2 pólos com enrolamento de campo.

Figura 2.9 – Desenho esquemático de um motor CC de 2 pólos [4]

Figura 2.10 - Enrolamento de um motor CC de 2 pólos [4]

O rotor é um eletroímã constituído de um núcleo de ferro com enrolamentos em sua

superfície que são alimentados por um sistema mecânico de comutação. Esse sistema é

formado por um comutador, solidário ao eixo do rotor, que possui uma superfície cilíndrica

com diversas lâminas às quais são conectados os enrolamentos do rotor; e por escovas fixas,

que exercem pressão sobre o comutador e que são ligadas aos terminais de alimentação. O

propósito do comutador é o de inverter a corrente na fase de rotação apropriada de forma a

que o conjugado desenvolvido seja sempre na mesma direção.

15

Os enrolamentos do rotor compreendem bobinas de n espiras. Os dois lados de cada

enrolamento são inseridos em sulcos com espaçamento igual ao da distância entre dois pólos

do estator, de modo que quando os condutores de um lado estão sob o pólo norte, os

condutores do outro devem estar sob o pólo sul. As bobinas são conectadas em série através

das lâminas do comutador mostrado na figura 2.11.

Figura 2.11 – Sistema de Comutação [4]

Todos os motores de corrente contínua da Siemens possuem uma estrutura magnética

completamente laminada, sendo, portanto adequados para utilização com conversor CA/CC, e

no caso de processos com alta dinâmica, consegue-se uma taxa de aumento da corrente de até

250xIN por segundo. [4]

2.7.2) Vantagens e desvantagens dos acionamentos em

corrente contínua

Dependendo da aplicação, os acionamentos em corrente contínua são geralmente os

que apresentam os maiores benefícios em termos de confiabilidade, operação amigável e

dinâmica de controle. Por outro lado, esse tipo de acionamento apresenta algumas

desvantagens. [4]

VANTAGENS

• Operação em 4 quadrantes com custos relativamente mais baixos

• Ciclo contínuo mesmo em baixas rotações

• Alto torque na partida e em baixas rotações

• Ampla variação de velocidade

• Facilidade em controlar a velocidade

16

• Os conversores CA/CC requerem menos espaço

• Confiabilidade

• Flexibilidade (vários tipos de excitação)

• Relativa simplicidade dos modernos conversores CA/CC

DESVANTAGENS

• Os motores de corrente contínua são maiores e mais caros que os motores de indução,

para uma mesma potência

• Maior necessidade de manutenção (devido aos comutadores)

• Arcos e faíscas devido à comutação de corrente por elemento mecânico (não pode ser

aplicado em ambientes perigosos)

• Tensão entre lâminas não pode exceder 20V, ou seja, não podem ser alimentados com

tensão superior a 900V, enquanto que motores de corrente alternada podem ter

milhares de volts aplicados aos seus terminais.

• Necessidade de medidas especiais de partida, mesmo em máquinas pequenas. [4]

2.7.3) Motor passo

O motor de passo é um motor com uma precisão muito grande de movimento. São

utilizados onde o controle do número de rotações é muito importante, tais como em

impressoras, drives de disquete e sistemas de automação industrial e robótica, pois, se não

houvesse esse controle, o movimento contínuo poderia estragá-los. O passo que esse motor

pode dar é o menor deslocamento angular para o qual está projetado. O número de passos

destes motores depende do número de pólos que seu rotor possui. Assim, existem diversas

resoluções para eles como, por exemplo, 0.72, 1.8, 3.6, 7.5, 15 e até 90°, ou seja, 500, 200,

100, 48, 24 e 4 passos por rotação, respectivamente. Além do mais, hoje existem

controladores de modulação de largura de pulso onde se obtém micropassos, desse modo

observa-se uma resolução de posicionamento infinitamente preciso. Para se ter uma idéia, há

controladores que operam na faixa de 50.000 micropassos por rotação. No seu interior há

estatores formados por bobinas que geram, quando percorridos por uma corrente elétrica, o

campo magnético necessário para o movimento do rotor, que é construído com ímas

permanentes confeccionados de acordo com o número de passos como mostra figuras 2.12 e

17

2.13. Essa rotação é controlada por meio de um circuito externo que promove a oscilação do

sinal que percorrerá os pares de estatores e, por isso, não pode ser conectado diretamente à

alimentação, pois desse modo não haveria a pulsação necessária para que o motor possa girar.

[6]

Figura 2.12 – Orientação imã, forma 1 [6]

Figura 2.13 – Orientação imã, forma 2 [6]

O movimento se dá quando há um ciclo no campo magnético dos estatores, ou seja, a

cada vez que um par de estatores é magnetizado, ocorre um passo do eixo do motor. É

necessário construir o oscilador para o motor de passo corretamente, conforme o número de

passos que se queira adquirir. [6]

2.8) Dispositivos para Controle

2.8.1) Microcontroladores

A existência hoje dos microcontroladores deve-se ao fato da evolução da tecnologia de

construir equipamentos com inúmeros recursos em tamanhos cada vez menores. Com o

desenvolvimento dos microcontroladores tornou-se possível armazenar centenas de milhares

de transistores em um único chip. Isso contribuiu para a produção de microprocessadores e os

primeiros computadores foram construídos adicionando periféricos aos mesmos tais como

memória, linhas de entrada e saída, temporizadores e outros. Um crescente aumento do nível

18

de integração permitiu o aparecimento de circuitos integrados contendo simultaneamente

processador e periférico.

Os microcontroladores são circuitos integrados que possuem num único dispositivo

todos os circuitos necessários para realizar um completo sistema programável, logo, para

serem utilizados, necessitam de ser programados. Diferenciam-se uns dos outros,

essencialmente, pela capacidade e tipo de memória (programa e dados), velocidade de

processamento, número de pinos de entrada/saída (I/O) e periféricos. A figura 2.14 mostra

como se divide um microcontrolador. [7]

Figura 2.14 – Esquemático do microcontrolador [7]

2.8.2) Unidades do microcontrolador

O microcontrolador é divido nas seguintes partes:

• Unidade de Memória

• Unidade Central de Processamento

• Bus

• Unidade de entrada/saída

• Comunicação série

• Unidade de temporização

• Watchdog

• Conversor analógico – digital

19

• Programa [7]

2.9) Circuito eletrônico

Os dispositivos eletrônicos são combinações onde se usa o circuito básico

repetitivamente e seus componentes que, uma vez agrupados de forma organizada formam

blocos. Estes interligados formam circuitos mais complexos, e assim sucessivamente fazem

funcionar os mais diversos equipamentos.

O funcionamento básico de qualquer circuito eletrônico baseia-se no controle de

tensão e intensidade de corrente elétrica, podendo ser moldadas de forma a que o projetista

possa tirar proveito desses parâmetros e configurá-los em oscilação, amplificação, etc, até

chegar ao resultado final quando, por exemplo, através de um feixe de luz, ou feixe de Laser

numa fibra óptica conseguimos nos comunicar com velocidades cada vez maiores e

quantidades de informação imensas a milhares de km de distância. [8]

2.9.1) Linguagem de programação C

A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell

Laboratories. Sua primeira utilização importante foi a reescrita do Sistema Operacional

UNIX, que até então era escrito em assembly. Em meados de 1970 o UNIX saiu do laboratório

para ser liberado para as universidades. Foi o suficiente para que o sucesso da linguagem

atingisse proporções tais que, por volta de 1980, já existiam várias versões de compiladores C

oferecidas por várias empresas, não sendo mais restritas apenas ao ambiente UNIX, porém

compatíveis com vários outros sistemas operacionais. O C é uma linguagem de propósito

geral, sendo adequada à programação estruturada útil para escrever compiladores,

analisadores léxicos, bancos de dados, editores de texto, etc. A linguagem C pertence a uma

família de linguagens cujas características são: portabilidade, compilação separada, recursos

de baixo nível, geração de código eficiente, confiabilidade, regularidade, simplicidade e

facilidade de uso. [9]

20

3 METODOLOGIA

3.1) Etapas

O trabalho de conclusão de curso foi divido em três etapas. A primeira foi estudar os

movimentos (cinemática) de um manipulador mecânico com três graus de liberdade, chamado

de antropomórfico e compreender os detalhes do movimento.

A segunda foi traduzir as equações para software desenvolvido em Visual Basic que

realize os cálculos. A terceira foi programar o microcontrolador PIC para receber as

informações do software e traduzir essas informações para manipulador mecânico,

movimentando o consequentemente.

O manipulador mecânico e a interface foram cedidos pela empresa T&S equipamentos

eletrônicos. A contribuição destes equipamentos foi essencial para o desenvolvimento do

projeto.

3.1.1) Fluxograma

O software configurado no PC é o responsável por realizar os cálculos da cinemática

inversa, erro relativo, conversão dos ângulos em valores validos para o duty cycle e enviá-los

a interface, consequentemente movimentando o manipulador mecânico. As transmissões dos

dados entre software e interface ocorrem através do protocolo RS-232.

A interface, que contém o microcontrolador, recebe as informações enviadas pelo

software e em seguida gera um sinal PWM (Pulso de largura modular) que é enviado para o

posicionador, neste trabalho de conclusão de curso chamado de driver do manipulador

mecânico. A interface possui um microcontrolador, pic18f452. Foi desenvolvido software na

linguagem C através do software MikroC da empresa Mikroelektronika.

O posicionador recebe as informações da interface referentes a cada ângulo , , (ângulo da base, parte 1 do pêndulo duplo e parte 2 do pêndulo duplo

respectivamente) e em seguida enviará um sinal para os motores CC do manipulador

mecânico, movimentando os motores e conseqüentemente as juntas , , . A figura 3.1, exibe o fluxograma. As etapas iniciam com calculo realizado pelo

software PC, enviando as informações para interface em seguida para posicionador resultado

nos movimentos das juntas do manipulador mecânico.

21

Figura 3.1 – Fluxograma do manipulador mecânico.

3.2) Descrições das Etapas

3.2.1) Cinemática do manipulador

Para iniciarem os cálculos, foi necessário adotar uma referência zero para cada

eixo do manipulador mecânico. O manipulador mecânico antropomórfico (RRR) segue

conforme a figura 3.2,

Figura 3.2 – Fluxograma do manipulador mecânico

Para encontrar os valores dos ângulos , , a partir das posições dadas , , - ., foi

necessário estudar o movimento do manipulador mecânico com três graus de liberdade. A

partir do estudo, foi possível descrever a cinemática do movimento.

Para que os movimentos e os ângulos possam ser visualizados, foram construídas duas

vistas esquemáticas do braço: lateral e superior, mostrando respectivamente o movimento

horizontal e os movimentos verticais (no plano). Estas vistas são mostradas esquematicamente

nas figuras 3.3 e 3.4, com as principais medidas a serem obtidas por relações geométricas. A

vista lateral, figura 3.3, mostra o ponto P na direção perpendicular à interseção do movimento

nos planos ,.

Software (PC) Interface Posicionador Manipulador Mecânico

Referência zero

Referência zero

22

Figura 3.3 – Vista lateral

Através da vista lateral podemos calcular utilizando Pitágoras, a distância /. A

equação 3.1, exibe o cálculo: / 0 1 . Equação 3.1

Considerando 0 à distância 0 foi calculada da seguinte forma como mostra a

equação 3.2:

0 3 456 1 3 456 1 Equação 3.2

Na figura 3.4, utilizando Pitágoras, podemos calcular a distância 0, chamada também

de pêndulo duplo:

Figura 3.4 – Vista Superior

O cálculo de 0 na figura 3.4 é apresentado na equação 3.3:

0 7 1 , 0 1 , Equação 3.3

Percebe-se que a distância 0 da figura 3.4 é a hipotenusa de um triangulo retângulo, o

que permite que esta distância seja decomposta nas direções e ,. A coordenada . é

23

calculada de maneira semelhante à utilizada nas direções - ,, mostrado na equação 3.4. A

cinemática direta fica:

8 0 3 cos 3 cos 1 3 cos 1 3 cos < 0 3 6=> 3 456 1 3 456 1 3 6=> Equação 3.4 ? 1 3 6=> 1 3 6=> 1

A cinemática inversa apresenta duas soluções para os ângulos e , cotovelo para

baixo e cotovelo para cima, como exibe a equação 3.4.

Substituindo 0 da equação 3.1, pelo valor encontrado na equação 3.3, encontramos /,

como mostra a equação 3.5:

/ 0 1 . / 1 , 1 . Equação 3.5

Aplicando a lei dos co-senos em relação ao triangulo PRS figura 3.3, obtivemos a

equação 3.6. Na figura 3.3 d é decomposto pela união de - :

/ 1 2 3 3 3 456 Equação 3.6

Rearranjando a equação e posteriormente isolando cos da equação 3.6, obtivemos

a equação 3.7:

1 , 1 ? 1 2 3 3 3 45 6 Equação 3.7

@A B C D ED F G GD G 3G3G

Isolando da equação 3.7, encontramos a equação 3.8:

456D HID JI D KLMI LII LNI3LI3LN Equação 3.8

No apêndice 1 segue o código em Visual Basic demonstrando como é realizado o

calculo de .

24

O angulo θ é obtido por meio da diferença entre os ângulos O - P como apresenta a

figura 3.3. Neste caso, a equação 3.9 exibe a tangente do ângulo O e a equação 3.10, exibe a

tangente de P.

Q> O K LMR S K LM7HIDJI Equação 3.9

Q> P LN3T" &NLID LN3UVT &N Equação 3.10

Realizando a operação de subtração entre os ângulos O - P, respectivas das equações 3.9

e equação 3.10, obtivemos a equação 3.11:

Q> O Q>P K LM7HIDJI LN3T" &NLID LN3UVT &N Equação 3.11

Realizando mínimo múltiplo comum na equação 3.11, obtivemos a equação 3.12:

Q> K LM3LID LN3UVT&N7HIDJI3LN3T "&N7HIDJI3LID LN3UVT&ND K LM3LN3T "&N Equação 3.12

Isolando , encontramos a equação 3.13:

Q> WK LM3LID LN3UVT&N7HIDJI3LN3T "&N7HIDJI3LID LN3UVT&ND K LM3LN3T "&N X Equação 3.13

No apêndice 2 segue o código em Visual Basic demonstrando como é realizado o cálculo

de .

O ângulo é calculado com base na vista superior conforme a figura 3.4, por meio do

arco tangente, como ilustra a equação 3.14:

Q> YHJZ [ Q> YHJZ Equação 3.14

No apêndice 3 segue o código em Visual Basic demonstrando como é realizado o

calculo de .

25

Cabe neste ponto um breve comentário a respeito do cálculo de ângulos com o arco

tangente. Computacionalmente o arco-tangente é uma função que retorna com um ângulo

compreendido entre \ e \. Isto é suficiente para finalidades matemáticas ou para estudo da

cinemática de robôs, mas certamente é insuficiente num caso real, quando a cinemática

inversa for calculada pelo sistema de controle do braço mecânico. O motivo disto é que o

braço pode atingir, e em geral atinge, ângulos fora desta faixa de limitação como, por

exemplo, entre \] e \] . A função arco-tangente fornece, no caso de um angulo real de \]

o valor complementar de \], o que certamente levaria o braço a posicionar-se num local

totalmente errado. Para corrigir este problema emprega-se em tais programas uma função

denominada de Q>2, equação 3.15, que necessita de dois parâmetros que são os

equivalentes ao seno e ao co-seno do ângulo, o qual gera um ângulo compreendido entre ^

e . _L" Q>2 6->_L" , 456_L" Equação 3.15

3.2.1) Software de controle

Foi desenvolvido um software para calcular os ângulos , , , dadas as posições , , - .. O software foi desenvolvido na linguagem de programação Visual Basic figura 3.5.

Na inicialização do software, o mesmo verifica se existe alguma porta serial de

comunicação (protocolo RS-232) disponível no microcomputador. Caso exista, conecta-se

preferencialmente a “COM1”, caso não exista, procura alguma que esteja disponível. O

número da porta de comunicação (“COM”) é exibido no combox “com port” . Por tratar-se de

uma comunicação através do protocolo RS-232, é necessário definir um baud rate (taxa de

comunicação), que nada mais é que a velocidade de comunicação.

Os dados de entrada para o software são as coordenadas em , , - . do ponto que o

manipulador deve alcançar e os valores das variáveis do tamanho das juntas , , do

manipulador mecânico. Inseridos os valores nas respectivas caixas de variáveis é necessário

clicar no botão calcular e os valores dos ângulos , , , motor 1, motor 2 e motor 3,

respectivamente, são exibidos no software.

A cinemática direta é exibida para comprovar a veracidade dos valores dos ângulos

encontrados. A comprovação é realizada através do cálculo da equação 3.4 com os ângulos

26

calculados pelo software. A cinemática inversa de cada coordenada , , , é

calculada através das equações 3.8, 3.13 e 3.14, respectivamente.

O erro relativo dos ângulos calculados foi realizado da seguinte maneira, primeiro é

encontrado o valor do erro absoluto e dividido pelo valor aproximado, como mostram as

equações 3.16 e 3.17: `ab65cdQ5 – ’ Equação 3.16 `g-cQ=h5 `ab65cdQ5/’ Equação 3.17

Para que os ângulos fornecidos pelo software estivessem em graus, foi necessário

realizar uma conversão de radianos para graus, pois os compiladores computacionais

fornecem os valores em radianos.

Figura 3.5 – Software de controle das posições

Pelo fato do manipulador mecânico na referência das coordenadas , , - . não estar

posicionado nos pontos 0,0,0 respectivamente, foi necessário realizar algumas conversões

para que o software não calcule um ângulo fora do limite físico do manipulador mecânico e

consequentemente enviar valores de duty cycle fora da realidade de movimento para interface.

A geometria do braço é discutida no item Manipulador Mecânica.

A titulo de exemplo, segue um trecho do código em Visual Basic, demonstrando como

foi realizado as conversões:

Private Sub btnOff_Click( ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles btnOff.Click

result1 = Math.Truncate((r1 - 20) * (10 / 122))

27

result1teta = 160 - (result1 * 16)

result2 = Math.Truncate((r2 - 20) * (255 / 100))

result3 = Math.Truncate((r3 + 120) * (255 / 170))

result1con = Convert.ToString(result1teta)

result2con = Convert.ToString(result2)

result3con = Convert.ToString(result3)

SendCommand(result1con)

SendCommand(result2con)

SendCommand(result3con)

O Result1 é a variável que contem o resultado do ângulo calculado, a sua referência

zero iniciando em 20°. Foi necessário subtrair 20° do valor calculado. A multiplicação por

10/122, é pelo fato do PWM da base (discutido no item Conversor Digital Analógico 16 bits,

poder variar de 0 a 10 posições). O PWM da base é de 16 posições porem não foi possível

utilizar todas as posições, por limitações físicas de construção do manipulador mecânico.

Resumindo, a conversão ficou da seguinte forma: O ângulo é calculado e subtraído

por 20 e multiplicado pelo número total de posições dividido pelo ângulo máximo

realizado , o valor foi truncado porque não existe duty cycle de número fracionado. A

limitação de rotação do ângulo existe devido às restrições físicas de construção do

manipulador mecânico.

O result1teta subtrai 160 do resultado da multiplicação do result1 por 16, pelo seguinte

fato: o PWM gerado para (item discutido em Conversor Digital Analógico 16 bits), utiliza

um port do microcontrolador (byte), porem são utilizados os quatro bits mais significativos do

port.

O valor de 160 foi obtido da seguinte forma: primeiramente foi convertido o valor em

hexadecimal. Admitiu-se que o valor dos quatro primeiros bits (menos significativos) seriam

zero, então o valor dos quatro bits mais significativos irão variar entre de 0 a a (10 em

decimal).

Juntando a mais 0, temos o valor a0 hexadecimal, para realizar a conversão de

hexadecimal para decimal a regra é a seguinte: Supondo que AF seja um byte em

hexadecimal:

i 16 1 a 16, como i 15 - a 10, temos o valor de 15 1 10 3 16 175. Agora utilizando o exemplo a0, temos 160.

28

O posicionador gira o ângulo no sentido anti-horário, para corrigir este detalhe, o

posicionador inicia o manipulador mecânico com a posição máxima que o ângulo pode

realizar. Como o resultado da máxima rotação é 160 no valor do duty cycle, esse valor é

subtraído do conteúdo do result1 * 16.

Para o procedimento adotado foi subtrair o valor de 20 do valor calculado para ,

pelo fato do manipulador mecânico estar na sua referência zero com o ângulo de 20°. Em

seguida é multiplicado pela divisão de 255 (referente ao total de posições que o PWM da

interface pode atingir) por 100, que significa a rotação máxima que o ângulo pode atingir.

O valor é armazenado na variável result2.

Para o procedimento adotado foi somar o valor de 120 ao valor calculado para ,

pelo fato do manipulador mecânico estar na sua referência zero com o ângulo de -120°. Em

seguida é multiplicado pela divisão de 255 (referente ao total de posições que o PWM da

interface pode atingir) por 170, que significa a rotação máxima que o ângulo pode atingir.

O valor é armazenado na variável result3.

3.2.2) Comunicação do software

O software depois que calcula os valores, envia-os a porta serial através do protocolo

RS-232. O microcontrolador recebe as informações.

Para que o microcontrolador possa receber as informações do duty cycle dos ângulos , , , respectivamente, é necessário que o software envie as informações dentro de um

byte, pois o microcontrolador apenas recebe o valor de um byte (0 a 255) por envio.

Diante desta circunstância, foi necessário adotar a seguinte estratégia. Os valores

enviados para a porta serial necessariamente são enviados como variável do tipo string. Para

que o microcontrolador, conseguisse interpretar os valores como decimal, foi necessário criar

um vetor char, de 3 posições na interface e depois converter os valores de string para decimal.

Ao total foram criados 3 vetores char, para armazenar separadamente cada um dos

valores do duty cycle , , , respectivamente e em seguida enviar os valores para o

posicionador (driver) que se encarregará de enviar as informações para os motores do

manipulador mecânico conseguintemente movimentando-o.

O Apêndice 4 demonstra o código C detalhado do microcontrolador onde é possível

verificar como a interface envia as informações para o posicionador.

29

3.2.3) Transferência das informações

O PC utiliza o protocolo RS-232 através da porta serial. O PIC utiliza protocolo

USART (Universal Synchronous Asynchronous Receiver Transmitter), o qual pode transmitir

dados dos protocolos RS-232 e RS-485.

Existem dois regimes para enviar dados através do protocolo RS-232, full-duplex

(Assíncrono) e half-duplex (síncrono). Chamamos de Assíncrono pelo fato da comunicação

ser bi-direcional, um condutor será o TX e outro RX, e a velocidade de comunicação deve ser

a mesma entre os dispositivos que estão conversando através deste modo, no caso do TCC,

PIC e PC. O modo half-duplex (síncrono), uma ponta é mestre e a outra escravo. A

comunicação é realizada nos dois sentidos no mesmo condutor, o outro é usado para pulsos de

clock emitidos pelo dispositivo mestre. No projeto foi utilizado o modo full-duplex.

No projeto TCC a velocidade de transmissão adotada foi de 9600 bps.

Foi descoberto através de testes de comunicação, tanto PC como PIC para comunicar,

em outras palavras, trocar informações no modo full-duplex, ao final de cada string enviada, é

acrescido o caractere LF (line feed) 10 da tabela ASCII, anexo 1.

O fato de existir esse caractere ao final da string obrigou a modificar a estrutura da

programação do PIC. Foi necessário criar um vetor char (tipo de variável que aceita valores

de um byte), para receber as informações da string enviada pelo PC até o caractere LF,

chegando neste, ignorá-lo, caso contrario, na conversão de string para inteiro, o valor seria

absurdo.

Na transferência dos dados do software para a interface e vice-versa, existe um detalhe

muito importante a ser levado em consideração: A velocidade do clock do PIC e

processamento do computador são diferentes. O clock do PIC é de 20 Mhz e do

microcomputador normalmente é da ordem de Ghz, devido a esta diferença de processamento

ocorreram algumas falhas no projeto identificadas como tempo no envio e recebimento das

informação entre PC e PIC.

Foi necessário criar delay (atraso) entre a comunicação TX ou RX, em torno de

milissegundos para cada dispositivo, assim foi garantido que o buffer pudesse armazenar as

informações, sem serem sobrepostas.

30

3.3) Manipulador mecânico

De posse do manipulador mecânico cedido pela empresa T&S figura 3.6, foram

realizados os estudos das dimensões e limites de alcance. Com estas informação foi possível

determinar se o ângulo que o braço irá realizar está dentro do limite físico de construção.

Figura 3.6 – Manipulador mecânico com malha fechada

A dimensão da base é de 100 mm, parte 1 do pêndulo duplo 240 mm e parte 2 do

pêndulo duplo 180 mm. O limite da variação angular da junta da base é 130°, da parte 1 do

pêndulo duplo 100° e da parte 2 do pêndulo duplo 170°.

O referencial (valor inicial) inicia com o valor de 20° para base, 20° para a parte 1 do

pêndulo duplo e de -120° para a parte 2 do pêndulo duplo.

O manipulador mecânico possui um driver quatro quadrantes (malha fechada) para

movimentar os motores e consequentemente movimentá-lo. O driver necessita receber um

referencial de zero a cinco volts para girar o braço. Cinco volts indicam curso total da junta e

zero volt indica permanecer no referencial zero.

Existem três canais de entrada, um para cada junta. Cada junta irá receber um PWM e

consequentemente movimentar o manipulador mecânico.

No manipulador mecânico existe um potenciômetro inserido no eixo de cada motor

CC. Motor base , parte 1 do pendulo duplo e parte 2 do pendulo duplo . O

potenciômetro é o responsável por enviar as informações de posição do manipulador

mecânico para o posicionador (driver). Conforme é variado a posição o potenciômetro varia a

resistência gerando uma variação de tensão, com essa variação de tensão é posicionado o

manipulador mecânico.

31

O manipulador possui algumas folgas na transmissão do movimento do motor para as

juntas, inércia dos motores, erro de precisão do posicionador, o que impossibilita uma

precisão de 100% na localização do ponto de alcance desejado.

3.3.1) Interface

O software de controle das posições manda uma variável do tipo string, através do

protocolo USART. A informação chega até a porta Rx, pino 26. O valor é armazenado no

vetor char que logo em seguida é transformado para inteiro.

A figura 3.7, exibe a interface.

Figura 3.7 - Interface

Com os valores recebidos pelo protocolo USART, são gerados dois PWM com uma

freqüência de 10 Khz cada. Os dois PWM, movimentam o pêndulo duplo. Como o PIC

18F452, utilizado no projeto possui saída para dois PWM apenas, foi necessário criar um

terceiro, para movimentar a base.

O PWM gera uma forma de onda quadrada figura 3.8, que dependendo do duty cycle,

corresponde a nível DC na saída, sendo que 100% indicam cinco volts e 0% indica zero volt.

32

Figura 3.8 - PWM (Pulso de largura modular)

O Duty cycle do PWM varia de 0% a 100%. No PIC a resolução do PWM é de 10 bits.

O valor zero indica 0% do Duty cycle, e duzentos e cinqüenta e cinco indica 100%.

Depois que os valores chegam até a interface, é gerado sinal PWM para movimentar

os motores e consequentemente as juntas do manipulador mecânico, - . Para ,base, o processo foi diferente, pois na interface não haviam disponíveis três

PWM, logo foi necessário criar um conversor digital analógico.

3.3.2) Conversor Digital Analógico 4 bits

Foi criado um conversor analógico, malha R-2R 4 bits, pelo fato de não existir na

interface 3 PWM disponíveis. A malha de resistores é mostrada na figura 3.9:

Figura 3.9 - Malha resistores R-2R

O funcionamento é simples, foi adota o valor de 470o por tratar-se resistor

encontrado com facilidade no mercado. R é o valor do resistor e 2R 940 Ω.

Pulso de largura modular

0% duty cycle – valor da largura de pulso (0)

25% duty cycle – valor da largura de pulso (64)

50% duty cycle – valor da largura de pulso (127)

75% duty cycle – valor da largura de pulso (191)

100% duty cycle – valor da largura de pulso (255)

33

Cada entrada p0, p4, pb, p, é conectada em um port da interface que, dependendo da

combinação, de entrada p0, p4, pb, p, pode ser obtido um valor de tensão no ponto P.

A saída P é conectada diretamente ao driver quatro quadrantes (malha fechada), logo podem variar dezesseis posições.

3.4) Valores de referência

Utilizando as equações 3.4 da cinemática direta do movimento, temos os seguintes

valores de referência, ponto zero, para o manipulador mecânico:

240 3 45620 1 180 3 45620 120 3 45620 [ 182 rr , 240 3 45620 1 180 3 45620 120 3 6=>20 [ , 66 rr . 100 1 s240 3 6=>20 1 180 3 6=>20 120t [ . 5 rr

3.5) Range de Posições angulares

Para tem-se a seguinte condição:

O braço inicia sua referência com ângulo de 20°, a rotação máxima que a base pode

alcançar é de 130°, logo a range do braço varia de 20° 150°. Para tem-se a seguinte condição:

A parte 1 do pêndulo duplo inicia sua referência com ângulo de 20°, a angulação

máxima que a parte 1 do pêndulo duplo pode alcançar é 100°, logo a range da parte 1 do

pêndulo duplo varia de 20 120°. Para temos a seguinte condição:

A parte 2 do pêndulo duplo inicia sua referência com ângulo de -120°, a rotação

máxima que a parte 2 do pêndulo duplo pode alcançar é 170°, logo a range da parte 2 do

pêndulo duplo varia de 120 50°. Quaisquer valores fora desses ângulos não serão aceitos, pois seria ângulo fora do

limite físico do manipulador mecânico.

34

3.6) Espaço de trabalho

Como existem limitações físicas no movimento do manipulador mecânico, foi inserida

no software uma funcionalidade que verifica se os valores dos ângulos estão dentro do espaço

de trabalho.

Segue a seguinte regra, o valor de é calculado, caso esteja fora da range, o software

acusa o erro, como mostra a figura 3.10.

Figura 3.10 – Mensagem de erro

O mesmo ocorre para os outros dois ângulos, e .

3.7) Testes realizados para avaliação do posicionam ento do

manipulador

A avaliação de posicionamento do manipulador mecânico foi obtida medindo o valor

da tensão que o pulso elétrico (PWM) gera na saída da interface e o conversor D/A. Para cada

valor de duty cycle, foi verificado qual ângulo os eixos , - atingiam. Os testes foram

realizados para sentido horário de movimento do manipulador mecânico e sentido anti-

35

horário. Os resultados obtidos, como mencionado anteriormente, servem para avaliar o

percentual de erro no posicionamento.

Para a avaliação do erro de leitura do potenciômetro inserida em cada eixo do

manipulador mecânico foi medida a queda de tensão no potenciômetro para cada valor de

duty cycle.

A partir dos dados será gerado um gráfico, para cada eixo, de posição atingida x

posição desejada.

36

4 RESULTADO E DISCUSSÕES

4.1) Variação da posição

Diante dos resultados apresentados nas legendas 4.1, 4.2 e 4.3, podem verificar que no

posicionador existe um erro de posicionamento, pois foi realizado um comparativo dos

valores dos ângulos , - respectivamente, no momento que os motores estão

movimentando-se no sentido de giro, positivo e negativo. Para as duas situações de giro,

houve uma diferença de posicionamento, indicando presença de histerese.

Os valores dos PWM para - , variam de 0 a 255, por possuir 8 bits ou 1 byte de

resolução. Já , varia 0 a 160, como explicado no item Conversor Digital Analógico 4 bits e

Software de Controle. Pelo fato de haver menos posições para variar, o percentual de erro no

posicionamento da base ou foi maior em relação à - .

Os valores de tensão (volts) encontrados na saída dos PWM foram sempre constantes,

demonstrando que o microcontrolador envia sempre o mesmo valor de tensão,

consequentemente caso houvesse erro zero para o posicionamento do posicionador, o ponto

desejado para o manipulador atingir seria com muito maior precisão.

Legenda 4.1

θ1 Sentido Horário

Ângulo (°) Volts (v) PWM

20 2,42 160

44 1,45 112

115 0,71 64

150 0 0

θ1 Sentido Anti-Horário

Ângulo (°) Volts (v) PWM

121 0,71 64

52 1,45 112

28 2,42 160

Erro de posicionamento

Rotação Máxima (sentido horário) Rotação Máxima (sentido Anti-horário) Erro

130° 122° 7%

37

A legenda 4.2 exibe o mesmo formato de resultado da legenda 4.1, porem para o

movimento da parte 1 do pêndulo duplo, ou seja, .

Tabela 4.2

θ2 Sentido Horário

Ângulo (°) Volts (v) PWM

20 0 0

36 0,79 60

62 1,58 120

84 2,37 180

115 3,37 255

θ2 Sentido Anti-Horário

Ângulo (°) Volts (v) PWM

17 2,42 180

56 1,61 120

73 0,81 60

167 0 0

Erro de posicionamento

Rotação Máxima (sentido horário) Rotação Máxima (sentido Anti-horário) Erro

95° 100° 5%

A legenda 4.3 exibe o mesmo formato de resultado das legenda 4.1 e 4.2, porem para o

movimento da parte 2 do pêndulo duplo, ou seja, .

38

Legenda 4.3

θ3 Sentido Horário

Ângulo (°) Volts (v) PWM

-120 0 0

-81 0,81 60

-37 1,61 120

10 2,42 180

50 3,44 255

θ3 Sentido Anti-Horário

Ângulo (°) Volts (v) PWM

88 2,37 180

73 1,58 120

42 0,79 60

15 0 0

Erro de posicionamento

Rotação Máxima (sentido horário) Rotação Máxima (sentido Anti-horário) Erro

170° 167° 2%

Os sensores de posição angular de cada eixo , - são potenciométricos, ou seja,

cada sensor tem sua resistência variada em função do ângulo que é realizado quando há giro

no motor.

O potenciômetro possui uma tolerância em sua construção. Uma alternativa seria

utilizar um encoders para cada eixo, porém o custo seria superior.

Não houve precisão no posicionamento do manipulador mecânico para o ponto

desejado. Diversos fatores explicam o motivo como a inércia dos motores de corrente

contínua, erro diferença de posicionamento do posicionador, folga da Correa com as polias.

O sistema completo apresentou erro máximo de posicionamento de 20º graus no eixo

da base, 25º graus no eixo da parte 1 do pêndulo duplo e 25º graus no eixo parte 2 do pêndulo

duplo.

Para se obter uma maior precisão no posicionamento do manipulador mecânico,

algumas sugestões são dadas, como melhorar a precisão do posicionador, remover as folgas

das correias com as polias. Pois analisando apenas o controle, software e interface, os valores

apresentados na prática e teoria são todos condizentes. Isto quer dizer que se houvesse

precisão dos valores de leitura do potenciômetro, não houvesse folga entre os componentes do

39

manipulador mecânico, posicionador (driver) enviasse sempre os mesmos valores de tensões

para os motores, independente do sentido de movimento que estivesse realizando, o

manipulador mecânico movimentaria com precisão.

Foi identificado que a fonte principal de erro é o posicionador uma vez que o software

e o gerador de PWM não apresentaram erros significativos, mesmo no eixo da base cuja

resolução é menor.

4.2) Avaliação do erro de posicionamento Potenciôme tro

Pelo fato de existir divergência entre os valores de posicionamento calculado pelo

software de controle e a real posição que o manipulador mecânico atinge, foram realizadas

algumas observações no comportamento dos potenciômetros, como mostra a legenda 4.4 e

4.5.

A legenda 4.4 exibe os resultados para o movimento no sentido horário do movimento

e a legenda 4.5 para o sentido anti-horário.

Para cada valor do duty cycle, foi realizado uma leitura de tensão nos terminais dos

potenciômetros para os três ângulos , - .

Legenda 4.4

Horário

Θ1 (°) Θ2 (°) Θ3 (°)

0 (duty) 0,15 v 0,6 v 0,2 v

10 (duty) 0,16 v 0,74 v 0,35 v

50 (duty) 0,66 v 0,9 v 0,58 v

100 (duty) 0,99 v 1,24 v 1,26 v

150 (duty) 1,45 v 1,63 v 1,95 v

180 (duty) 1,62 v

200 (duty) 2 v 2,63 v

255 (duty) 2,4 v 3,4 v

40

Legenda 4.5

Anti-horário

Θ1 (°) Θ2 (°) Θ3 (°)

0 (duty) 0,15 v 0,61 v 0,22 v

10 (duty) 0,15 v 0,73 v 0,35 v

50 (duty) 0,43 v 1,02 v 0,9 v

100 (duty) 0,76 v 1,36 v 1,58 v

150 (duty) 1,24 v 1,73 v 2,26 v

180 (duty) 1,61 v

200 (duty) 2,12 v 2,96 v

Para o sentido horário do movimento do manipulador mecânico foram coletados os

valores do duty cycle de zero ao máximo que pode atingir 255, referente aos valores de ângulo

de - . Para , os valores variaram de 0 a 180.

Como podemos perceber, existe uma divergência entre os valores de tensão quando o

movimento está sendo realizado no sentido horário e anti-horário. O fato de ocorrer esta

divergência de valores de tensão na leitura dos potenciômetros, reflete diretamente no

posicionamento do manipulador mecânico.

A legenda 4.6 demonstra a variação em módulo dos valores de tensão nos

potenciômetros dos eixos, responsáveis pelos movimentos de , - . Cada valor do duty

cycle representa uma posição no espaço , , - . do manipulador mecânico.

Legenda 4.6

Variação

Θ1 (°) Θ2 (°) Θ3 (°)

0 (duty) 0 0,01 0,02

10 (duty) 0,01 0,01 0

50 (duty) 0,23 0,12 0,32

100 (duty) 0,23 0,12 0,32

150 (duty) 0,21 0,1 0,31

180 (duty) 0,01

200 (duty) 0,12 0,33

255 (duty) 2,4 3,4

41

4.3) Análise gráfica

A figura 4.1 exibe um gráfico da posição de que atinge o manipulador mecânico

tanto para o sentido horário como sentido anti-horário pela posição desejada que o

manipulador atingisse.

Figura 4.1 – Movimentação do eixo

A figura 4.2 exibe como varia o valor , parte 1 do pêndulo duplo, no sentido horário

e anti-horário.

0

20

40

60

80

100

120

140

160

0 50 100 150

Horário

Anti Horário

Eixo θ1111

Referência (o)

Po

siçã

o (

o)

42

Figura 4.2 - Movimentação do eixo

A figura 4.3 exibe como varia o valor , parte 2 do pêndulo duplo, no sentido horário e

anti-horário.

Figura 4.3 - Movimentação do eixo

0

20

40

60

80

100

120

140

0 20 40 60 80 100 120 140

Horário

Anti Horário

Eixo θ2

Referência (o)

Po

siçã

o (

o)

-140

-120

-100

-80

-60

-40

-20

0

20

40

60

-150 -100 -50 0 50 100

Horário

Anti Horário

Eixo θ3

Referência (o)

Po

siçã

o (

o)

43

5 CONCLUSÃO

Foi projetada, construída e avaliada uma interface para um manipulador mecânico de

três graus de liberdade. Para atingir este objetivo foi necessário trabalhar com diversas áreas

da Engenharia, destacando-se a Mecânica, Eletrônica e Computação.

A modelagem cinemática e posterior definição do problema cinemático inverso foram

resolvidas através do desenvolvimento das equações de movimento nos eixos X, Y e Z.

Foi utilizada uma plataforma baseada em microcontrolador para realizar a

comunicação entre um PC e o sistema de posicionamento. Neste caso foi utilizada a

linguagem C e um compilador para assembler do microcontrolador. Esta plataforma é

responsável por converter a posição desejada em um sinal analógico de referência para o

posicionador. Construiu-se ainda um terceiro conversor D/A para geração da referência para o

terceiro eixo já que a plataforma tinha somente dois conversores D/A.

A precisão final obtida foi prejudicada pelo posicionador (driver) uma vez que os

valores de referência gerados pela interface e pelo microcontrolador apresentam erros

inferiores a 1°, assim recomenda-se a melhoria do posicionador.

Como sugestões para trabalhos futuros, podem ser implementadas rotinas para geração

de trajetórias no posicionador (driver) que são utilizadas em tarefas mais complexas na

robótica industrial.

44

Referências Bibliográficas

[1] - PAZOS, Fernando. Automação de sistemas e robótica. Rio de Janeiro: Axcel Books

do Brasil, 2002. 377 p. ISBN 85-7323-171-8

[2] - ROMANO, Vitor Ferreira. Robótica industrial: aplicação na indústria de manufatura e

de processos. São Paulo: E. Blücher, 2002. 256 p. ISBN 85-212-0315-2

[3] - ROSÁRIO, João Maurício. Princípios de mecatrônica. São Paulo: Prentice Hall,

2008. 356 p. ISBN 978-85-7605-010-0

[4] – SIEMENS – MOTORES DE CORRENTE CONTÍNUA – Unidade Automação e

Controle – Acionamentos e Motores Elétricos. Disponível em:

<http://www.siemens.com.br/medias/FILES/2910_20060505141908.pdf>. Acesso em: 05

maio 2009.

[5] – MAXWELL BOHR – TUTORIAL CONTROLE DE MOTOR DE PASSO – Instrumentação eletrônica. Disponível em: <http://www.maxwellbohr.com.br/downloads/Tutorial%20Eletronica%20-

%20Motor%20de%20passo.pdf>. Acesso em: 08 maio 2009.

[6] - PEREIRA, Fábio. Microcontroladores PIC: programação em C. 5. ed. São Paulo: Érica,

2006. 358 p. ISBN 85-7194-935-2

[7] - MALVINO, Albert Paul. Eletrônica. 2. ed. São Paulo: McGraw-Hill, 1987. v. 2

[8] - LIMA, Thales Coelho Borges; MILANI, Dorival Marcos; ZUCHINI, Marcio Henrique.

Algoritmos e linguagem de programação C. Itatiba: Universidade São Francisco, s. d.

45

Apêndice 1 – Código do Visual basic para

t3 = (((posicaox * posicaox) + (posicaoy * posicaoy ) + ((posicaoz - tamanhobase) * (posicaoz - tamanhobase)) - (tamanho pendulo1 * tamanhopendulo1) - (tamanhopendulo2 * tamanhopendul o2)) / (2 * tamanhopendulo1 * tamanhopendulo2)) radiano3 = (Math.Acos(t3)) r3 = (radiano3) * (180 / Math.PI)

Apêndice 2 – Código do Visual basic para

t2 = (((posicaoz - tamanhobase) * (tamanhopendulo1 + (tamanhopendulo2 * Math.Cos(radiano3)))) - ((Math.Sqrt((posicaox * pos icaox) + (posicaoy * posicaoy))) * tamanhopendulo2 * Math.Sin(radiano3)) ) / ((Math.Sqrt((posicaox * posicaox) + (posicaoy * pos icaoy))) * (tamanhopendulo1 + (tamanhopendulo2 * Math.Cos(radi ano3))) + ((posicaoz - tamanhobase) * tamanhopendulo2 * Math.Sin(radiano3) )) radiano2 = Math.Atan(t2) r2t = Math.Atan2(Math.Sin(radiano2), Math.Cos(radia no2)) r2 = r2t * (180 / Math.PI)

Apêndice 3 – Código do Visual basic para

t1 = (posicaoy / posicaox) radiano1 = Math.Atan(t1) r1t = Math.Atan2(Math.Sin(radiano1), Math.Cos(radia no1)) r1 = r1t * (180 / Math.PI)

Apêndice 4 – Código do micrcontrolador na linguagem C

do if ((Usart_Data_Ready() == 1) && (u==0)) endx[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula; b++; pula: if (endx[b] == 10 && Usart_Data_Ready() == 0) teta1=0;

46

delay_ms(100); teta1 = atoi (endx); PORTA.F2=1; b=0; u++; if ((Usart_Data_Ready() == 1) && (u==1)) endy[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula1; b++; pula1: if (endy[b] == 10 && Usart_Data_Ready() == 0) teta2=0; delay_ms(100); teta2 = atoi (endy); b=0; u++; if ((Usart_Data_Ready() == 1) && (u==2)) endz[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula2; b++; pula2: if (endz[b] == 10 && Usart_Data_Ready() == 0) teta3=0; delay_ms(100); teta3 = atoi (endz); PORTA.F3=1; usart_write(teta1); usart_write(32); delay_ms(50); usart_write(teta2);

47

usart_write(32); delay_ms(50); usart_write(teta3); usart_write(10); u++; t++; if (t==1 && u == 3) PORTA.F2=0; PORTA.F3=0; CCPR1L=62; CCP1CON=28; pwm_base=teta1; PWM_Change_Duty(teta2); PWM2_Change_Duty(teta3); u=0; t=0; b=0; endx[0]=0; endy[0]=0; endz[0]=0; endx[1]=0; endy[1]=0; endz[1]=0; endx[2]=0; endy[2]=0; endz[2]=0; endx[3]=0; endy[3]=0; endz[3]=0; while (1);

Apêndice 5 – Código completo do microcontrolador na linguagem C

//########VARIABLE#####################

unsigned char b=0,u=0,t=0;

unsigned char i=0;

48

unsigned char endx[3],endy[3],endz[3]; unsigned int teta1=0,teta2=0,teta3=0; #define pwm_base PORTD void main() //###### PARAMETROS DO USART########### INTCON.GIE=1; // Hbilita geral interrupções INTCON.PEIE=1; //Habilita as interrupções perifericos INTCON.RBIF=1; //Bit sinalização de interrupção por mudança de estado RCSTA.SPEN=1; RCSTA.RX9=0; RCSTA.CREN=1; delay_ms(100); TXSTA.TX9=0; TXSTA.TXEN=1; TXSTA.SYNC=0; TXSTA.BRGH=0; delay_ms(100); TRISC.RC7=1; TRISC.RC6=0; Usart_Init(9600); delay_ms(100); // END USART // PWM TRISC.RC2=0; TRISC.RC1=0; PR2=0b01111100; T2CON=0b00000101; CCPR1L=0b00000000; CCP1CON=0b00001100; PWM_Change_Duty(0); PWM2_Change_Duty(0); PWM_Init(10000);

49

PWM2_Init(10000); PWM_Start(); PWM2_Start(); TRISD=0; TRISA=0; u=0; t=0; pwm_base=0b10100000; do if ((Usart_Data_Ready() == 1) && (u==0)) endx[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula; b++; pula: if (endx[b] == 10 && Usart_Data_Ready() == 0) teta1=0; delay_ms(100); teta1 = atoi (endx); PORTA.F2=1; b=0; u++; if ((Usart_Data_Ready() == 1) && (u==1)) endy[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula1; b++; pula1:

50

if (endy[b] == 10 && Usart_Data_Ready() == 0) teta2=0; delay_ms(100); teta2 = atoi (endy); b=0; u++; if ((Usart_Data_Ready() == 1) && (u==2)) endz[b] = Usart_Read(); if ( Usart_Read() == 10) goto pula2; b++; pula2: if (endz[b] == 10 && Usart_Data_Ready() == 0) teta3=0; delay_ms(100); teta3 = atoi (endz); PORTA.F3=1; usart_write(teta1); usart_write(32); delay_ms(50); usart_write(teta2); usart_write(32); delay_ms(50); usart_write(teta3); usart_write(10); u++; t++; if (t==1 && u == 3) PORTA.F2=0; PORTA.F3=0; CCPR1L=62; CCP1CON=28; pwm_base=teta1; PWM_Change_Duty(teta2); PWM2_Change_Duty(teta3);

51

u=0; t=0; b=0; endx[0]=0; endy[0]=0; endz[0]=0; endx[1]=0; endy[1]=0; endz[1]=0; endx[2]=0; endy[2]=0; endz[2]=0; endx[3]=0; endy[3]=0; endz[3]=0; while (1);

Apêndice 6 – Código completo software de controle n a linguagem

Visual Basic

Option Explicit On Option Strict On Imports System.IO.Ports Public Class Form1 Dim myComPort As New SerialPort Dim r1, r2, r3 As Double Dim t1, t2, t3 As Double Dim result1, result1teta, result2, result3 As Double Dim result1con, result2con, result3con As String Dim tamanhobase, tamanhopendulo1, tamanhopendulo2 As Integer ''' <summary> ''' Call a routine to write a command to turn off a n LED and read the response. ''' </summary> ''' Private Sub btnOff_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOff.Click result1 = Math.Truncate((r1 - 20) * (10 / 1 22)) result1teta = 160 - (result1 * 16) result2 = Math.Truncate((r2 - 20) * (255 / 100))

52

result3 = Math.Truncate((r3 + 120) * (255 / 170)) result1con = Convert.ToString(result1teta) result2con = Convert.ToString(result2) result3con = Convert.ToString(result3) SendCommand(result1con) SendCommand(result2con) SendCommand(result3con) lblStatus.Text = "Foram enviados θ1 θ2 θ3" End Sub ''' <summary> ''' If myComPort is open, finish transmitting. ''' Exiting the Using block closes the port and rel eases its resources. ''' </summary> ''' Sub CloseComPort() Try Using myComPort If ( Not (myComPort Is Nothing )) Then ' The COM port exists. If myComPort.IsOpen Then ' Wait for the transmit buffer to empty. Do While (myComPort.BytesToWrite > 0) Loop End If End If End Using Catch ex As UnauthorizedAccessException ' The port may have been removed. Ignore. End Try End Sub ''' <summary> ''' Set the BaudRate property of myComPort to match the bit rate selected in the combo box. ''' </summary> '''

53

Private Sub cmbBitRate_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBitRate.SelectedIndexChanged myComPort.BaudRate = CInt (cmbBitRate.SelectedItem) End Sub ''' <summary> ''' If the previously selected COM port is open, cl ose it. ''' Set the PortName property of myComPort to match the port selected in the combo box. ''' Call a routine to open the port. ''' </summary> ''' Private Sub cmbPorts_SelectedIndexChanged( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPorts.SelectedIndexChanged CloseComPort() myComPort.PortName = cmbPorts.SelectedItem. ToString OpenComPort() End Sub ''' <summary> ''' Call a routine to close the COM port. ''' </summary> Private Sub Form1_FormClosing( ByVal sender As Object , ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing CloseComPort() End Sub ''' <summary> ''' Call routines to initalize the form and open th e selected COM port. ''' </summary> ''' Private Sub Form1_Load( ByVal sender As Object , ByVal e As System.EventArgs) Handles Me.Load InitializeForm() OpenComPort() End Sub ''' <summary> ''' Set up the form and select a default port and b it rate. ''' </summary> Sub InitializeForm() Dim bitRates(2) As Integer Dim nameArray() As String ' Find the COM ports on the system. nameArray = SerialPort.GetPortNames Array.Sort(nameArray)

54

' Fill a combo box with the port names. cmbPorts.DataSource = nameArray cmbPorts.DropDownStyle = ComboBoxStyle.Drop DownList ' Select a default port. cmbPorts.SelectedIndex = 0 'Bit rates to select from. bitRates(0) = 2400 bitRates(1) = 4800 bitRates(2) = 9600 'Place the bit rates in a combo box. cmbBitRate.DataSource = bitRates cmbBitRate.DropDownStyle = ComboBoxStyle.Dr opDownList ' Select a default bit rate. cmbBitRate.SelectedItem = 9600 End Sub ''' <summary> ''' Set port parameters and open the COM port ''' associated with the SerialPort object myComPort . ''' </summary> Sub OpenComPort() Try ' Get the selected COM port's name from the combo b ox. If Not myComPort.IsOpen Then myComPort.PortName = cmbPorts.Selec tedItem.ToString ' Get the selected bit rate from the combo box. If cmbBitRate.SelectedIndex > 0 Then myComPort.BaudRate = CInt (cmbBitRate.SelectedItem) End If ' Set other port parameters. myComPort.Parity = Parity.None myComPort.DataBits = 8 myComPort.StopBits = StopBits.One myComPort.Handshake = Handshake.Non e myComPort.ReadTimeout = 3000 myComPort.WriteTimeout = 5000 ' Open the port. myComPort.Open() End If

55

Catch ex As InvalidOperationException MessageBox.Show(ex.Message) Catch ex As UnauthorizedAccessException MessageBox.Show(ex.Message) Catch ex As System.IO.IOException MessageBox.Show(ex.Message) End Try End Sub ''' <summary> ''' Write a command to the SerialPort object and re ad the response. ''' </summary> ''' <param name= "command"> The command to send. </param> Private Sub SendCommand( ByVal command As String ) '' Dim response As String Try myComPort.WriteLine(command) '' response = myComPort.ReadLine '' Select Case response For i As Double = 1 To 10000000 Step 1 '' 1 segundo Next '' End Select '' Catch ex As TimeoutException ''MessageBox.Show(ex.Message) Catch ex As InvalidOperationException MessageBox.Show(ex.Message) Catch ex As UnauthorizedAccessException MessageBox.Show(ex.Message) End Try End Sub Private Sub Label1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub Private Sub Button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click lblStatus.Text = ""

56

Dim radiano1, radiano2, radiano3 As Double Dim cinematicax, cinematicay, cinematicaz As Double Dim r1t, r2t As Double Dim tamanhobase As Double = Convert.ToInt32(TextBox1.Text) Dim tamanhopendulo1 As Double = Convert.ToInt32(TextBox5.Text) Dim tamanhopendulo2 As Double = Convert.ToInt32(TextBox6.Text) Dim posicaox As Double = Convert.ToInt32(TextBox2.Text) Dim posicaoy As Double = Convert.ToInt32(TextBox3.Text) Dim posicaoz As Double = Convert.ToInt32(TextBox4.Text) Dim errox As Double Dim erroy As Double Dim erroz As Double 'Cinematica Direta t3 = (((posicaox * posicaox) + (posicaoy * posicaoy) + ((posicaoz - tamanhobase) * (posicaoz - tamanhobase)) - (tamanho pendulo1 * tamanhopendulo1) - (tamanhopendulo2 * tamanhopendul o2)) / (2 * tamanhopendulo1 * tamanhopendulo2)) radiano3 = (Math.Acos(t3)) If (((radiano3) * (180 / Math.PI)) < -120 Or ((radiano3) * (180 / Math.PI)) > 50) Then MsgBox( "O valor de θ3 está fora do volume de trabalho, o valor deve estar entre > -120° e < 50°" ) End If t2 = (((posicaoz - tamanhobase) * (tamanhop endulo1 + (tamanhopendulo2 * Math.Cos(radiano3)))) - ((Math.S qrt((posicaox * posicaox) + (posicaoy * posicaoy))) * tamanhopendul o2 * Math.Sin(radiano3))) / ((Math.Sqrt((posicaox * posi caox) + (posicaoy * posicaoy))) * (tamanhopendulo1 + (tamanhopendulo2 * Math.Cos(radiano3))) + ((posicaoz - tamanhobase) * tamanhopendulo2 * Math. Sin(radiano3))) radiano2 = Math.Atan(t2) r2t = Math.Atan2(Math.Sin(radiano2), Math.C os(radiano2)) r2 = r2t * (180 / Math.PI) If ((r2 < 20) Or (r2 > 115)) Then MsgBox( "O valor de θ2 está fora do volume de trabalho, o valor deve estar entre > 20° e < 105°" ) End If t1 = (posicaoy / posicaox) radiano1 = Math.Atan(t1) r1t = Math.Atan2(Math.Sin(radiano1), Math.C os(radiano1)) r1 = r1t * (180 / Math.PI) If ((r1 < 20) Or (r1 > 150)) Then MsgBox( "O valor de θ1 está fora do volume de trabalho, o valor deve estar entre > 20° e < 150°" ) End If

57

r3 = (radiano3) * (180 / Math.PI) ' Acertando as casas decimais para facilitar r1 = Math.Round(r1) r2 = Math.Round(r2) r3 = Math.Round(r3) Label11.Text = r1.ToString Label12.Text = r2.ToString Label13.Text = r3.ToString 'Cinematica inversa cinematicax = ((tamanhopendulo1 * (Math.Cos (r2 * Math.PI / 180)) + tamanhopendulo2 * Math.Cos((r2 + r3) * Math.PI / 18 0)) * Math.Cos(r1 * Math.PI / 180)) cinematicay = ((tamanhopendulo1 * (Math.Cos (r2 * Math.PI / 180)) + tamanhopendulo2 * Math.Cos((r2 + r3) * Math.PI / 18 0)) * Math.Sin(r1 * Math.PI / 180)) cinematicaz = (tamanhobase + (tamanhopendul o1 * Math.Sin(r2 * Math.PI / 180)) + (tamanhopendulo2 * Math.Sin((r2 + r3) * Math.PI / 180))) cinematicax = Math.Round(cinematicax) cinematicay = Math.Round(cinematicay) cinematicaz = Math.Round(cinematicaz) Label26.Text = cinematicax.ToString Label27.Text = cinematicay.ToString Label28.Text = cinematicaz.ToString ''erro no arrendondamento errox = (Math.Abs((posicaox - cinematicax) / posicaox) * 100) erroy = (Math.Abs((posicaoy - cinematicay) / posicaoy) * 100) erroz = (Math.Abs((posicaoz - cinematicaz) / posicaoz) * 100) Label30.Text = errox.ToString Label32.Text = erroy.ToString Label34.Text = erroz.ToString End Sub Private Sub Button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Close() End Sub Private Sub Button3_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox1.Clear() TextBox2.Clear() TextBox3.Clear() TextBox4.Clear() TextBox5.Clear() TextBox6.Clear()

58

Label11.Text = "" Label12.Text = "" Label13.Text = "" Label26.Text = "" Label27.Text = "" Label28.Text = "" Label30.Text = "" Label32.Text = "" Label34.Text = "" End Sub Private Sub PictureBox1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click End Sub Private Sub Button4_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click OpenComPort() End Sub Private Sub Button5_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click CloseComPort() End Sub End Class

59

Anexo 1 – Código Tabela ASCII

Caracter Decimal Hexadecimal Binário Comentário

NUL 0 0 0000 0000 Caracter Nulo

SOH 1 1 0000 0001 Começo de cabeçalho de

transmissão

STX 2 2 0000 0010 Começo de texto

ETX 3 3 0000 0011 Fim de texto

EOT 4 4 0000 0100 Fim de transmissão

ENQ 5 5 0000 0101 Interroga

ACK 6 6 0000 0110 Confirmação

BEL 7 7 0000 0111 Sinal sonoro

BS 8 8 0000 0100 Volta um caracter

HT 9 9 0000 1001 Tabulação Horizontal

LF 10 0A 0000 1010 Próxima linha

VT 11 0B 0000 1011 Tabulação Vertical

FF 12 0C 0000 1100 Próxima Página

CR 13 0D 0000 1101 Início da Linha

SO 14 0E 0000 1110 Shift-out

SI 15 0F 0000 1111 Shift-in

DLE 16 10 0001 0000 Data link escape

D1 17 11 0001 0001 Controle de dispositivo

D2 18 12 0001 0010 Controle de dispositivo

D3 19 13 0001 0011 Controle de dispositivo

D4 20 14 0001 0100 Controle de dispositivo

NAK 21 15 0001 0101 Negativa de Confirmação

SYN 22 16 0001 0110 Synchronous idle

ETB 23 17 0001 0111 Fim de transmissão de bloco

CAN 24 18 0001 1000 Cancela

EM 25 19 0001 1001 Fim de meio de transmissão

SUB 26 1A 0001 1010 Substitui

ESC 27 1B 0001 1011 Escape

FS 28 1C 0001 1100 Separador de Arquivo

GS 29 1D 0001 1101 Separador de Grupo

RS 30 1E 0001 1110 Separador de registro

US 31 1F 0001 1111 Separador de Unidade