View
3
Download
0
Category
Preview:
Citation preview
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
Recommended