UNIVERSIDADE CATÓLICA DE GOIÁS
DEPARTAMENTO DE COMPUTAÇÃO
GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
EDUARDO HENRIQUE ALVES AMORIM
JUNIO ALVES DE OLIVEIRA
DEZEMBRO
2007
2
UNIVERSIDADE CATÓLICA DE GOIÁS
DEPARTAMENTO DE COMPUTAÇÃO
GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
Trabalho de Projeto Final de Curso II apresentado por Eduardo
Henrique Alves Amorim e Junio Alves de Oliveira à
Universidade Católica de Goiás, sob a orientação da Profª. Mírian
Sandra Rosa, MSc, como requisito parcial para a Graduação do
Curso de Engenharia de Computação.
Goiânia, Dezembro de 2007
3
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
EDUARDO HENRIQUE ALVES AMORIM
JUNIO ALVES DE OLIVEIRA
Trabalho de Projeto Final de Curso apresentado por Eduardo Henrique Alves Amorim e Junio
Alves de Oliveira à Universidade Católica de Goiás – Departamento de Computação, como
requisito para a Graduação do Curso de Engenharia de Computação.
_________________________________
_________________________________
Profª. Mírian Sandra Rosa, MSc.
Professor Jeová Martins Ribeiro.
Orientadora
Coordenador de Projeto Final de Curso.
Goiânia, Dezembro de 2007
4
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
Trabalho de Conclusão de Curso apresentado por Eduardo Henrique Alves Amorim e Junio
Alves De Oliveira à Universidade Católica de Goiás como parte dos requisitos para obtenção
do grau de Engenheiro de Computação.
Aprovado por:
Professor Ildeu Lúcio Siqueira, MSc.
Professor Pedro Araújo, MSC.
Professora Mírian Sandra Rosa Gusmão , MSc.
5
DEDICATÓRIA
À Deus, pelo dom mais preciso: a vida.
Às nossas famílias, pela compreensão e apoio em todos os
momentos de nossa vida acadêmica.
“Sucesso é conseguir o que você quer e
Felicidade
é
gostar
do
que
você
conseguiu.”
Dale Carnegie
6
RESUMO
Este projeto destina-se ao desenvolvimento de um manipulador robótico com
quatro graus de liberdade acionados por motores de passo. O manipulador é controlado pelo
microcontrolador PIC 16F877 ao qual é conectado um computador pessoal através da
interface serial. Um software em execução no PC envia comandos ao PIC que os interpreta e
executa determinada tarefa.
Palavras-Chave: microcontrolador, motor de passo, manipulator.
7
ABSTRACT
This project is intended to develop a robotic handler with four degrees of freedom
powered by engines step. The handler is controlled by microcontroller PIC 16F877 to which
is attached a personal computer through the serial interface. The software running on the PC
sends commands to PIC which interprets and executes certain task.
Key-words: microcontroller, engine step, manipulator
8
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
SUMÁRIO
LISTA DE FIGURAS .........................................................................................................
9
LISTA DE TABELAS ........................................................................................................
10
LISTA DE ABREVIATURAS E SIGLAS ........................................................................ 11
1. INTRODUÇÃO ............................................................................................................... 12
2. FUNDAMENTAÇÃO TEÓRICA .................................................................................
13
2.1. Componentes Eletrônicos ..........................................................................................
13
2.1.1 Diodo ...............................................................................................................
13
2.1.2 LED .................................................................................................................
14
2.1.3 Capacitor .......................................................................................................... 15
2.1.4 Transistor .........................................................................................................
15
2.1.5 Resistor ............................................................................................................
16
2.1.6 Cristal ...............................................................................................................
17
2.1.7 Circuito Integrado ............................................................................................ 18
2.1.8 Motor de passo .................................................................................................
19
2.1.9 ULN2803 .........................................................................................................
20
2.1.10 RS-232 ...........................................................................................................
20
2.1.11 MAX 232 ....................................................................................................... 22
2.2 Rolamentos .................................................................................................................
2.3 O Microcontrolador PIC16F877 .................................................................................
3. DESCRIÇAO DO PROJETO ........................................................................................
3.1 Física ...........................................................................................................................
3.1.1 A estrutura .......................................................................................................
3.1.2 Os motores ......................................................................................................
23
24
29
29
29
32
9
3.2 Lógica .........................................................................................................................
3.2.1 O firmware ......................................................................................................
3.2.2 A interface homem-computador (IHC) ...........................................................
3.2.2.1 O menu arquivo ...................................................................................
3.2.2.1.1 Tela cadastro de motores .....................................................
3.2.2.1.2 Tela gerenciador de script ....................................................
3.2.2.1.3 Tela configurações ...............................................................
3.2.2.1 O menu modo de operação .................................................................
3.2.2.2.1 Modo manual .......................................................................
3.2.2.2.2 Modo automático .................................................................
3.3 Lógica O circuito eletrônico .......................................................................................
4. EXPERIMENTOS REALIZADOS ...............................................................................
4.1 Experimento com portas de entrada e saída ................................................................
4.2 Transmissão, recepção e tratamento de dados via RS-232 .........................................
4.2 Acionamento de motores de passo ..............................................................................
3. CONCLUSÃO .................................................................................................................
REFERÊNCIAS BIBLIOGRÁFICAS ..............................................................................
32
33
35
36
36
38
39
40
40
42
42
44
44
44
45
46
47
10
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
LISTA DE FIGURAS
Figura 1 – Símbolo de um diodo semicondutor. ................................................................
14
Figura 2 –LED. ................................................................................................................... 14
Figura 3 – Esquema de funcionamento do capacitor. [PHY2007]. .................................... 15
Figura 4 – Esquema e símbolos de transistores NPN e PNP. [BOY2004].........................
16
Figura 5 – Resistor. [DRA2007].........................................................................................
17
Figura 6 – Cristais de quartzo.............................................................................................
17
Figura 7 – Circuito integrado. [WIK2007-4]......................................................................
18
Figura 8 – Motor de passo. [WIK2007-5]........................................................................... 19
Figura 9 – ULN2803. [HOB2007]......................................................................................
20
Figura 10 – Conector DB-9. Padrão RS-232. [AGG2007..................................................
22
Figura 11 – Configuração do CI MAX 232........................................................................
22
Figura 12 – Rolamentos. [LAC2007].................................................................................. 23
Figura 13 – Rolamentos axiais. [LAC2007].......................................................................
23
11
Figura 14 – Microcontrolador PIC16F877.......................................................................... 24
Figura 15 – Diagrama de pinos do PIC16F877. [ROG2007-2]..........................................
25
Figura 16 – Robô ARM modelo RA-01 [IMA2007]..........................................................
30
Figura 17 – Esquema do protótipo......................................................................................
31
Figura 18 – Fluxograma de funcionamento do firmware.................................................... 34
Figura 19 – Tela inicial.......................................................................................................
36
Figura 20 – Tela cadastro de motores.................................................................................
37
Figura 21 – Tela gerenciador de script................................................................................ 38
Figura 22 – Tela de configurações......................................................................................
39
Figura 23 – Tela modo de operação manual.......................................................................
40
Figura 24 – Diagrama esquemático do CI ULN 2803.[BOY2004]....................................
42
Figura 25 – Esquema elétrico do circuito............................................................................ 43
Figura 26 – Imagem do circuito do primeiro experimento.................................................
44
12
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
LISTA DE TABELAS
Tabela 1 – Estados do motor de passo................................................................................. 19
Tabela 2 – Nomenclatura dos pinos do PIC16F877. [MIC2006]........................................ 25
Tabela 3 – Tabela de correspondência ASCII..................................................................... 33
Tabela 4 – Relação valores em decimal x bobinas energizadas em passo inteiro............... 35
Tabela 5 – Relação valores em decimal x bobinas energizadas em meio passo.................
35
Tabela 6 – Correspondência das ações executadas por um joystick ..................................
41
Tabela 7 – Correspondência das ações executadas pelo teclado......................................... 41
Tabela 8 – Relação entre caractere e pino no microcontrolador.........................................
45
13
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE LIBERDADE
CAPÍTULO I
1. INTRODUÇÃO
Desde os primórdios o homem vem criando ferramentas e utensílios que o auxilie ou o
substitua na execução de determinadas tarefas. A revolução industrial marcou grande avanço
do homem no domínio de várias tecnologias utilizadas com esse fim. A robótica, por sua vez,
veio acrescer muito na utilização da máquina pelo homem, que agora além de utilizar a
máquina para realizar tarefas, faz com que ela seja capaz de tomar decisões e resolver
problemas.
Este trabalho propõe a utilização dos princípios fundamentais da robótica, da
eletrônica e da programação para o desenvolvimento de um mecanismo capaz de realizar
tarefas comumente presentes nas indústrias. Um instrumento que receba uma rotina de tarefas
e que tenha capacidade de interpretar uma linguagem criada para a comunicação entre ele e o
usuário e realizar a(s) tarefa(s) a ele designado.
Inicialmente é feita uma abordagem teórica, no segundo capítulo, mostrando todas as
peculiaridades dos pré-estudos realizados, necessário para a realização deste projeto.
Em seguida no terceiro capítulo, é apresentado o projeto num todo, dividido em três
etapas principais: a etapa física, onde são apresentados os detalhes da fabricação das peças do
protótipo, relação de materiais e ferramentas utilizadas; a etapa eletrônica, onde é mostrado o
circuito eletrônico utilizado no projeto, em seus detalhes; e a etapa lógica que apresenta os
detalhes do firmware que será executado no microcontrolador e o software de interface com o
usuário.
No quarto capítulo estão descritos os experimentos realizados para que se chegasse ao
ponto culminante do estudo.
E finalmente no quinto capítulo está a conclusão seguida da referência bibliográfica e
Apêndice contento o código fonte do microcontrolador.
14
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
CAPÍTULO II
2. FUNDAMENTAÇÃO TEÓRICA
Neste capítulo será abordado o conteúdo teórico estudado para a realização deste
projeto, desde o funcionamento de componentes simples como o LED e diodo até um estudo
mais elaborado da arquitetura do microcontrolador utilizado neste trabalho.
2.1.Componentes Eletrônicos
Durante muito tempo os circuitos valvulados dominaram o mundo. Com a introdução
dos transistores a cerca de 60 anos e dos circuitos integrados uma grande revolução aconteceu
no mundo da eletrônica. Hoje com a grande força da miniaturização é possível encontrar
milhares de componentes incorporados em um pequeno CI.
Este subitem define o funcionamento dos principais componentes utilizados neste
projeto, desde os primeiros experimentos à conclusão final.
2.1.1
Diodo
O diodo é um dos mais simples de todos os componentes eletrônicos. Tem o
funcionamento muito semelhante à de uma simples chave e pode ser utilizado em circuitos
desde os mais simples até circuitos bem complexos.
A função básica de um diodo é conduzir corrente em um sentido e agir como um
circuito aberto para qualquer tentativa de estabelecer corrente no sentido oposto.
De acordo com sua montagem, o diodo pode apresentar duas diferentes respostas:
conduz facilmente quando está polarizado diretamente ou muito pouco quando polarizado
reversamente. Tem-se em sua estrutura duas regiões. Uma do tipo P, formada por uma
15
maioria
de
átomos
polarizados
positivamente
e
uma
região
tipo
N,
formada
predominantemente por átomos polarizados negativamente.
Figura 1 – Símbolo de um diodo semicondutor.
2.1.2
LED
O LED é um diodo semi-condutor (junção P-N) que quando energizado emite luz
visível. O processo de emissão de luz pela aplicação de uma fonte elétrica de energia é
chamado eletroluminescência. Em qualquer junção P-N, polarizada diretamente, dentro da
estrutura, próximo à junção, ocorrem recombinações de lacunas e elétrons. Essa
recombinação exige que a energia possuída por esse elétron, que até então era livre, seja
liberada na forma de calor ou fótons de luz.
Em geral, os LED’s operam com nível de tensão de 1,6 a 3,3V, sendo compatíveis
com os circuitos de estado sólido. É interessante notar que a tensão é dependente do
comprimento da onda emitida. Assim, os LEDs infravermelhos geralmente funcionam com
menos de 1,5V, os vermelhos com 1,7V, os amarelos com 1,7V ou 2,0V, os verdes entre 2,0V
e 3.0V, enquanto os LED’s azuis, violeta e ultra-violeta geralmente precisam de mais de 3V.
A potência necessária está na faixa típica de 10 a 150 mW, com um tempo de vida útil de
100.000 ou mais horas. A figura 2 ilustra LED’s de cores diferentes.
Figura 2 –LED.
16
2.1.3
Capacitor
Um Capacitor é um componente que armazena energia num campo elétrico,
acumulando um desequilíbrio interno de carga elétrica. Consistem em dois eletrodos ou placas
que armazenam cargas opostas. Estas duas placas são condutoras e são separadas por um
isolante ou por um dielétrico. A carga é armazenada na superfície das placas, no limite com o
dielétrico. Devido ao fato de cada placa armazenar cargas iguais, porém opostas, a carga total
no dispositivo é sempre zero.
Figura 3 – Esquema de funcionamento do capacitor. [PHY2007].
2.1.4
Transistor
O transistor é um componente eletrônico que começou a se popularizar na década de
1950 tendo sido o principal responsável pela revolução da eletrônica na década de 1960, e
cujas funções principais são amplificar e chavear sinais elétricos [BOY2004].
O transistor é considerado por muitos, uma das maiores descobertas ou invenções da
história moderna, tendo tornado possível à revolução dos computadores e equipamentos
eletrônicos. A chave da importância do transistor na sociedade moderna é a sua habilidade de
ser produzido em enormes quantidades usando técnicas simples, resultando em preços
irrisórios. É conveniente salientar que é praticamente impossível encontrarmos circuitos
integrados que não possuam internamente centenas, milhares ou mesmo milhões de
transistores, juntamente com outros componentes como eletrônicos.
Entende-se por "amplificar" o procedimento de tornar um sinal elétrico fraco em um
mais forte. Um sinal elétrico de baixa intensidade, como os sinais gerados por um microfone,
é injetado em um circuito eletrônico, cuja função principal é transformar este sinal fraco
gerado pelo microfone em sinais elétricos com as mesmas características mas com potência
17
suficiente para excitar os alto-falantes, a este processo todo se dá o nome de ganho de sinal, já
o uso do transístor como chave implica em polarizá-lo na região de corte ou de saturação, a
abertura ou fechamento da chave é controlada pela tensão de gate.
Figura 4 – Esquema e símbolos de transistores NPN e PNP. [BOY2004]
2.1.5
Resistor
Um resistor é um dispositivo elétrico muito utilizado em eletrônica, com a finalidade
de transformar energia elétrica em energia térmica, a partir do material empregado, que pode
ser por exemplo carbono. [WKY2007]
Os resistores são usados como parte de um circuito elétrico e incorporados dentro de
dispositivos microeletrônicos ou semicondutores. A medição de um resistor é a resistência,
que serve como relação de voltagem para corrente e é medida em ohms. Na figura 5 é
ilustrado um modelo de resistor.
Figura 5 – Resistor. [DRA2007]
As especificações técnicas de um resistor (que podem ser identificadas através do
código de cores) são:
•
Valor nominal da resistência [Ohm]
•
Tolerância [%] (indica a diferença máxima (+/-) entre o valor nominal e o valor real da
resistência)
18
•
Potência de dissipação nominal [W]
•
Diagrama de potência-temperatura
•
Coeficiente de temperatura
•
Tensão máxima nominal [V]
•
Tensão de ruído
•
Coeficiente de tensão
•
Característica resistência-freqüência
2.1.6
Cristal
Cristal de quartzo é um componente utilizado em circuitos variantes no tempo, para
contagem de tempo. O componente possui 2 terminais, ligados a um cristal piezoeléctrico
interno. Esse cristal contrai quando submetido a tensão elétrica, e o tempo de contração varia
conforme a construção do cristal. Quando a contração chega a um certo ponto, o circuito
libera a tensão e o cristal relaxa, chegando ao ponto de uma nova contração. Assim, os tempos
de contração e relaxação desse ciclo determinam uma freqüência de operação, muito mais
estável e controlável que circuitos com capacitores. Cristais de quartzo são usados sobretudo
em micro-controladores. [WIK2007-2]
Figura 6 – Cristais de quartzo.
19
2.1.7
Circuito integrado
Circuito integrado é um dispositivo microeletrônico que consiste de muitos outros
componentes interligados capazes de desempenhar muitas funções. Suas dimensões são
extremamente reduzidas, os componentes são formados em pastilhas de material
semicondutor. [WIK2007-3]
A importância da integração está no baixo custo e alto desempenho, além do tamanho
reduzido dos circuitos aliado à alta confiabilidade e estabilidade de funcionamento. Uma vez
que os componentes são formados ao invés de montados, a resistência mecânica destes
permitiu montagens cada vez mais robustas a choques e impactos mecânicos, permitindo a
concepção de portabilidade dos dispositivos eletrônicos.
A Figura 7 mostra um exemplo simples de um circuito integrado composto de um
resistor, um capacitor e um transistor.
Figura 7 – Circuito integrado. [WIK2007-4]
20
2.1.8
Motor de passo
Motores de passos são dispositivos mecânicos eletro-magnéticos que podem ser
controlados digitalmente através de um hardware específico ou através de softwares.
Motores de passos são encontrados em aparelhos onde a precisão é um fator muito
importante. São usados em larga escala em impressoras, plotters, scanners, drivers de
disquetes, discos rígidos e muitos outros aparelhos. [ROG2007]
Um motor de passo pode assumir três estados diferentes, como mostra a tabela 1:
Tabela 1 – Estados do motor de passo
DESLIGADO
Não há alimentação suprindo o motor. Nesse caso não existe consumo de
PARADO
energia, e todas as bobinas estão desligadas.
Pelo menos uma das bobinas fica energizada e o motor permanece
estático num determinado sentido. Nesse caso há consumo de energia,
RODANDO
mas em compensação o motor mantem-se alinhado numa posição fixa.
As bobinas são energizadas em intervalos de tempos determinados,
impulsionando o motor a girar numa direção.
Um motor de passo pode operar em modos diferentes. Esse modo é definido de acordo
com a necessidade da aplicação onde se encontra inserido o motor. Os modos mais
comumente utilizados são o passo completo (full-step) e o meio passo (half-step). A figura 8
ilustra o movimento do rotor em função da energização de cada bobina.
Figura 8 – Motor de passo. [WIK2007-5]
Os motores de passo são classificados pelo torque que produzem. Para atingir todo o
seu torque, suas bobinas devem receber toda a corrente marcada durante cada passo. Os seus
controladores devem possuir circuitos reguladores de corrente para poderem fazer isto. A
marcação de tensão (se houver) é praticamente sem utilidade.
O controle da velocidade de rotação é determinado pelo clock, quanto maior for a
freqüência mais rápido será o giro, porém o torque diminui.
21
2.1.9 Acionamento do motor de passo
O acionamento dos motores de passo requer além de uma seqüência lógica a utilização
de um driver de potência. É muito comum a utilização de transistores na confecção desses
drivers. Porém, a grande maioria dos drivers de motor de passo escolhem utilizar o CI
ULN2803.
O ULN 2803 contém oito transistores tipo darlington com emissor comum e diodos de
supressão para cargas indutivas. O ULN 2803 possui oito entradas e oito saídas, podendo
assim um único chip controlar até dois motores de passo. O ULN 2803 suporta corrente
máxima de 500mA e tensão de 50V.
A Figura 9 mostra o diagrama esquemático do CI ULN2803.
Figura 9 – ULN2803. [HOB2007]
2.1.10 Porta Serial
Como
qualquer
dispositivo
de
transmissão
serial,
os
bits
são
enviados
seqüencialmente, e normalmente com o bit menos significante primeiro (LSB). Por ser um
protocolo assíncrono isto é, sem uma linha de relógio (clock), é de responsabilidade do
transmissor e do receptor efetuarem controles necessários a fim de saber quando cada bit
inicia e termina.
22
Na sua forma padrão o RS-232 utiliza dois sinais de controle, o RTS (ready to send) e
o CTS (clear to send) para efetuar o controle de fluxo via hardware. Basicamente, quando o
transmissor deseja começar um envio ele sinaliza através do pino RTS. O receptor, ao
perceber que o transmissor deseja enviar algum dado, prepara-se para recebê-lo e seta o pino
CTS. Apenas depois de receber o sinal CTS o transmissor pode começar a transmissão.
Para cada byte existem o bit de start e stop; o mais comum é utilizar 1 bit de início
(start bit) e 1 bit de parada (stop bit), mas é possível encontrar aplicações que utilizam 1, 5 ou
2 bit de início/parada.
Tratando-se de uma transmissão assíncrona, é necessário que os dois dispositivos
realizem um ajuste inicial de velocidade, a fim de realizar a identificação dos bits na
transmissão.
No transmissor o envio basicamente resume-se à enviar um bit de início, aguardar um
tempo, e enviar os próximos 8 bit + 1 bit de parada, com o mesmo intervalo de tempo entre
eles.
No receptor, após a primeira borda de descida (nível lógico de "1" para "0") (start bit)
o receptor sabe que uma seqüência de mais 8 bit de dados + 1 bit de parada chegará. Ele
também conhece a velocidade de transmissão, então tudo que ele precisa fazer é aguardar o
tempo de transmissão entre cada bit e efetuar a leitura. Após receber o bit de parada, a
recepção encerra-se e ele volta à aguardar o próximo start bit.
Na interface RS-232 o nível lógico "1" corresponde à uma tensão entre -3V e -12V e o
nível lógico "0" à uma tensão entre 3V e 12V. Valores de tensão entre -3V e +3V são
indefinidos e precisam ser evitados.
A grande maioria dos periféricos que trabalham com portas seriais não utilizam o
padrão RS-232 para níveis elétricos diretamente. Portanto é sempre necessário um circuito de
conversão de níveis TTL / RS-232. O circuito integrado mais comum para efetuar esta
conversão, de baixo custo, é o MAX-232 que possui alimentação TTL. [ROG2007-2]
A figura 10 mostra o conector mais utilizado no padrão RS-232 (DB-9) e seus
respectivos pinos.
23
Figura 10 – Conector DB-9. Padrão RS-232. [AGG2007]
Grande parte da confiabilidade do padrão deve-se à sua boa imunidade à
ruídos, por ter níveis elétricos diferenciais em suas linhas. Mesmo assim, o padrão RS-232 é
destinado à aplicações de curto alcance. Outras interfaces, como RS-485 são mais
recomendadas quando grandes distâncias são necessárias.
2.1.11 Conversor de nível de tensão TTL / CMOS
O MAX-232 é um conversor de nível de tensão padrão RS-232 para TTL / CMOS,
acrescido de quatro capacitores, e em conjunto com o conector DB-9. Esse circuito estabelece
a conversão dos níveis de tensão do circuito CMOS externo para os níveis de tensão da porta
serial do PC padrão RS-232 (-12V / +12V) e vice-versa. A figura 11 ilustra esse CI.
Figura 11 – Configuração do CI MAX 232.
2.2.Rolamentos
A maioria dos rolamentos é constituída de anéis com pistas (um anel interno e um anel
externo), corpos rolantes (tanto esferas com rolos) e um elemento retentor dos corpos
rolantes. O retentor separa os corpos rolantes em intervalos regulares e retém estes no lugar
entre as pistas internas e externas permitindo que estes girem livremente.
24
Figura 12 – Rolamentos. (adaptado) [LAC2007]
Os rolamentos são classificados em dois principais grupos: rolamentos de esferas e
rolamentos de rolos. Os rolamentos de esferas são classificados de acordo com a configuração
dos seus anéis: rígidos de esferas, de contato angular e axiais. Sendo que neste projeto foram
utilizados os do tipo axial, os quais podem ser vistos com mais detalhes na figura 13.
Figura 13 – Rolamentos axiais. [LAC2007]
2.3.O Microcontrolador PIC16F877
25
O PIC é uma família de microcontroladores RISC fabricada pela Microchip, derivada
do PIC1650 originalmente desenvolvida pela divisão de microeletrônica da General
Instruments. Embora a Microchip não utilize PIC como um acrônimo, geralmente é conhecido
como Peripherical Interface Controller (Controlador de Interface Periférica). O PIC16F877 é
um modelo da família PIC, que pode ser visto na Figura 14.
Figura 14 – Microcontrolador PIC16F877.
Ele agrupa uma grande quantidade de recursos disponíveis, onde suas principais
características são:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
40 pinos;
Via de programação com 14 bits e 35 instruções;
33 portas configuráveis como entrada ou saída;
15 interrupções disponíveis;
Memória EEPROM FLASH, que permite a gravação rápida do programa
diversas vezes no mesmo chip, sem a necessidade de apagá-lo por meio de
luz ultravioleta.
Memória com 8kwords, com capacidade de escrita e leitura pelo próprio
código interno;
Memória EEPROM (não volátil) interna com 256 bytes;
Memória RAM com 368 bytes;
Três timers (2x8 bits e 1x16 bits);
Comunicações seriais: SPI, I2C e USART;
8 canais de conversores analógicos/digitais de 10 bits e dois comparadores
analógicos;
Dois módulos CCP: Captura, Compare e PWM;
Programação in-circuit (alta e baixa tensão);
Power-on Reset (POR) interno;
Brown-out (BOR) interno.
A pinagem do PIC16F877 é exibida na Figura 15 e a Tabela 2 identifica cada pino
com
numeração
e
nome
fazendo
uma
pequena
descrição
dos
mesmos.
26
Figura 15 – Diagrama de pinos do PIC16F877. [ROG2007-2]
Tabela 2 – Nomenclatura dos pinos do PIC16F877. [MIC2006].
Nome do pino
OSC1 / CLKIN
OSC2 /
CLKOUT
MCLR /Vpp
Vss
Vdd
RA0 / AN0
RA1 / AN1
RA2 / AN2
/VREF- / VREF
RA3 / AN3 /
VREF+
RA4 / T0CKI /
C1OUT
RA5 / SS / AN4
Num
pino
13
Descrição
Entrada para cristal.
Entrada para osciladores externos (híbridos ou RC)
14
Saída para cristal. Os cristais ou ressonadores devem ser ligados aos
pinos OSC1 e OSC2.
Saída com onda quadrada em ¼ da freqüência imposta em OSC1
quando em modo RC equivalente aos ciclos de máquina internos.
1
Master Clear externo.
12/31 GND.
11/32 Alimentação positiva.
2
I/O digital ou entrada analógica AN0.
3
I/O digital ou entrada analógica AN1.
4
I/O digital ou entrada analógica AN2 ou tensão negativa de referência
analógica
5
I/O digital ou entrada analógica AN2 ou tensão positiva de referência
analógica
6
I/O digital ou entrada externa do contador TMR0 ou saída do
comparador 1.
7
I/O digital ou entrada analógica AN4 ou habilitação externa para
27
/C2OUT
RB0 / INT
33
comunicação SPI ou saída do comparador 2.
I/O digital com interrupção externa.
Continuação Tabela 2 – Nomenclatura dos pinos do PIC16F877. [MIC2006].
RB1
RB2
RB3 / PGM
RB4
RB5
RB6 / PGC
34
35
36
37
38
39
17
18
I/O digital.
I/O digital.
I/O digital ou entrada para programação em baixa tensão (5V).
I/O digital com interrupção por mudança de estado.
I/O digital com interrupção por mudança de estado.
I/O digital com interrupção por mudança de estado ou clock da
programação serial ou pino de in-circuit debugger.
I/O digital com interrupção por mudança de estado ou data da
programação serial ou pino de in-circuit debugger.
I/O digital ou saída do oscilador externo para TMR1 ou entrada de
incremento para TMR1.
I/O digital ou entrada do oscilador externo para TMR1 ou entrada do
Capture2 ou saídas para Compare2/PWM2.
I/O digital ou entrada do Capture1 ou saídas para Compare1/PWM1.
I/O digital ou entrada/saída de clock para comunicação serial SPI / I2C.
RB7
40
RC0 / T1OSO /
T1CKI
RC1 / T1OSI /
CCP2
RC2 / CCP1
RC3 / SCK /
SCL
RC4 / SDI /
DAS
RC5 / SDO
RC6 / TX / CK
15
23
I/O digital ou entrada de dados para SPI ou via de dados para I2C.
24
25
I/O digital ou saída de dados para SPI.
I/O digital ou TX para comunicação USART assíncrona ou clock para
comunicação síncrona.
I/O digital ou RX para comunicação USART assíncrona ou data para
comunicação síncrona.
I/O digital ou dado 0 (comunicação paralela).
I/O digital ou dado 1 (comunicação paralela).
I/O digital ou dado 2 (comunicação paralela).
I/O digital ou dado 3 (comunicação paralela).
I/O digital ou dado 4 (comunicação paralela).
I/O digital ou dado 5 (comunicação paralela).
I/O digital ou dado 6 (comunicação paralela).
I/O digital ou dado 7 (comunicação paralela).
I/O digital ou controle de leitura da porta paralela ou entrada analógica
AN5.
I/O digital ou controle de escrita da porta paralela ou entrada analógica
AN6.
I/O digital ou habilitação externa da porta paralela ou entrada analógica
AN7.
RC7 / RX / DT
26
RD0 / PSP0
RD1 / PSP1
RD2 / PSP2
RD3 / PSP3
RD4 / PSP4
RD5 / PSP5
RD6 / PSP6
RD7 / PSP7
RE0 / RD / AN5
19
20
21
22
27
28
29
30
8
RE1 / WR /
AN6
RE2 / CS / AN7
9
16
10
Na maioria dos modelos da linha PIC, o clock interno equivale ao clock externo
dividido por quatro. Isso ocorre por que a execução de cada instrução é dividida em quatro
sub-ciclos que não podem ser processados em paralelo. Assim, a freqüência do clock interno é
de um quarto do clock externo.
No início do primeiro sub-ciclo, o PC (contador de programa) é incrementado
automaticamente. No decorrer dos quatro sub-ciclos, a instrução previamente carregada é
executada, com informações entre a memória de dados e o registrador Work sendo trocadas
28
sempre que necessário. No final do quarto sub-ciclo, a próxima instrução é buscada da
memória de programa e armazenada na ULA.
A memória de programa é de 14 bits do tipo FLASH, que é uma memória regravável
eletronicamente com escrita rápida. Ela pode ser acessada por software, possibilitando que o
programa seja reescrito dinamicamente ou que ela seja utilizada como uma expansão da
memória de dados.
O vetor de reset é o primeiro endereço de memória que será executado após um Startup ou Reset. Encontra-se no endereço 0000h. O PIC16F877 possui 15 tipos de interrupções
diferentes. Quando uma interrupção acontece, o programa será desviado para um endereço de
memória específico, denominado Vetor de Interrupção, que se encontra na posição de
memória 0004h.
Ele possui uma memória de 8.192 endereços diferentes e palavras de 14 bits. A
memória total foi dividida em quatro páginas de 2K cada uma. As instruções CALL e GOTO
possuem capacidade de gerenciamento para esse tamanho, portanto funcionam perfeitamente
dentro da página. Para utilizar essas instruções entre páginas diferentes, é preciso
primeiramente selecionar a página correta do endereço de destino através dos bits 3 e 4 de
PCLATH.
Este PIC possui uma pilha de oito níveis, possibilitando assim oito desvios
consecutivos. Caso se tente chamar um número de rotinas maior que oito, o endereço de
retorno mais antigo será perdido. Como a pilha armazena os endereços completos (endereços
de 13 bits), os retornos de rotina não apresentam problemas com a paginação de memória de
programa.
A memória de dados, ou memória RAM, guarda as variáveis e os registradores usados
pelo programa. Ela armazena dados de oito bits e é volátil. Os registradores especiais,
denominados SFRs (Special Functions Registers) são utilizados pelo microcontrolador para a
execução do programa e processamentos da ULA. Eles podem ser escritos e lidos pelo
hardware e pelo usuário. Eles também servem para a configuração de muitas funções e para a
utilização de todos os periféricos. Os registradores de uso geral são destinados ao
armazenamento de variáveis definidas pelo usuário para serem lidas e escritas pelo programa.
Esse PIC possui 368 bytes disponíveis para este propósito.
A arquitetura do PIC16F877 está preparada para operar com uma RAM de até 512
bytes, mas nem toda a memória está disponível para o usuário. Existem 19 endereços
29
indisponíveis que retornam zeros no caso de leitura e 48 equivalentes às posições espelhadas
de 16 endereços válidos.
A memória de dados é divida em quatro bancos de 128 bytes cada. A seleção de
bancos é feita pelos bits RP1 e RP0 do registrador STATUS. Desta forma, antes de qualquer
comando que trabalhe com os registradores da RAM, deve-se comutar para o banco onde o
mesmo se encontre.
30
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
CAPÍTULO III
3. DESCRIÇÃO DO PROJETO
Este projeto está divido em três etapas, sendo elas: física, eletrônica e lógica. Na etapa
física serão descritos todos os métodos utilizados no planejamento e fabricação das peças do
protótipo, bem como detalhes técnicos sobre o material utilizado. Na etapa eletrônica serão
abordados os circuitos elétricos utilizados desde os primeiros experimentos ao circuito final
utilizado no projeto. Por fim, na etapa lógica será descrita a lógica implementada no programa
que é executado no microcontrolador e o software que faz o interfaceamento do usuário com o
sistema.
3.1.
Física
A parte física do protótipo é sem dúvida uma das etapas mais complexa e melindrosa
do projeto. Considerando que o curso de graduação oferece muito pouco conteúdo sobre
mecânica aplicada, o projeto físico contou com muita tentativa e erro até convergir para um
resultado final.
A inspiração do projeto foi a de construir um protótipo de um manipulador robótico
que poderia ser amplamente utilizado em uma linha de montagem industrial, realizando
operações de soldas, pinturas, carregamento de peças etc.
A etapa física do projeto será abordada nos tópicos seguintes.
3.1.1 A estrutura
O desenho da estrutura foi inspirado em um robô ARM modelo RA-01, conforme
figura 16, com algumas modificações e adaptações, principalmente pelo fato do desenho
inspirador utilizar motores diferentes (servos-motores) dos optados neste projeto (motores de
passo).
31
Figura 16 – Robô ARM modelo RA-01 [IMA2007]
A idéia inicial era desenvolver um manipulador com movimentos semelhantes à de um
braço humano, para além de atender às nossas expectativas de movimentos, ficar de acordo
com as aplicações às quais o modelo real poderá ser utilizado.
A estrutura do protótipo é constituída de quatro peças com exceção da garra, conforme
figura 17.
32
33
Figura 17 – Esquema do protótipo
O protótipo oferece quatro graus de liberdade, sendo que a base à qual todo o restante
está acoplado é fixa. A segunda peça conectada à base é giratória e possibilita um giro de até
270º. A terceira e a quarta peça tem o objetivo de oferecer a estrutura um movimento em
relação ao eixo horizontal, com limite de giro de até 90º. Para manipular os objetos é utilizada
uma garra presa à quarta peça, formando o quarto grau de liberdade.
Para um perfeito acoplamento das peças, foram utilizados alguns mecanismos
objetivando eliminar o atrito, facilitando o movimento entre elas. Foi utilizado um rolamento
do tipo axial entre a primeira e segunda peça, onde o eixo do motor da base foi fixado à parte
superior do rolamento através de uma eixo, facilitando a movimentação entre as peças
envolvidas.
Segundo a NBR 6215 o aço carbono é aquele que não contém elementos de liga isto é,
apenas teores residuais de Cr = 0,20%, Ni = 0,25% e no qual os teores de Si e Mn não
ultrapassam os limites máximos de 0,60% e 1,65% respectivamente. Auxiliados por um
profissional, as peças foram confeccionadas utilizando o aço carbono, com teor de carbono
entre 0,30% e 0,40%, que oferece uma boa tenacidade e leveza na estrutura, possibilitando um
resultado final com um protótipo leve e resistente.
3.1.2 Os motores
A utilização dos motores de passo deu-se por algumas propriedades como:
a) custo acessível na aquisição – este tipo de motor é facilmente encontrado em
impressoras (desde as antigas até as atuais), scanners, controladores de disco. Essa variedade
de equipamentos que utilizam desse motor faz dele um componente fácil de ser encontrado
como sucata.
b) didático – possui uma vasta literatura voltada para a utilização do motor de passo.
Existem na Internet e em alguns livros vários projetos que fazem uso desse motor.
c) fácil manipulação – a partir do instante que alguém consiga manipular uma
seqüência lógica binária e fazer uso de um circuito digital simples é possível desenvolver
aplicações com esse motor.
d) precisão – quando energizado suas bobinas em uma seqüência lógica, e
posteriormente desenergizado, o motor vai girar e parar em uma posição precisa e conhecida.
34
3.2.
Lógica
Este projeto conta com uma Interface Homem-Computador (IHC) que é responsável
por enviar dados do usuário do sistema para serem executados pelo protótipo, e também conta
com um firmware, que é responsável por receber os dados enviados pelo IHC interpretar e
enviar sinais para os motores para realizar a tarefa solicitada.
Nos próximos itens será realizada uma abordagem sobre toda a programação
envolvida neste projeto.
35
3.2.1 O firmware
Um firmware, em seu aspecto relacionado à programação em hardware tem a seguinte
definição: programa ou dados de computador que são armazenados num chip de memória de
hardware, como uma ROM ou EPROM. Qualquer software armazenado sob a forma de
memória de leitura, ROM, EPROM, EEPROM, e que, portanto, preserva seu conteúdo
mesmo quando a eletricidade é desligada, não volátil. Na grande maioria dos produtos
eletrônicos microcontrolados ou microprocessados, o firmware é utilizado como um software
de testes, com a finalidade de atestar e garantir o funcionamento do hardware, ainda na fase
de manufatura. [WIK2007-6]
O firmware proposto foi desenvolvido para um microcontrolador PIC 16F877,
utilizando a linguagem C, compilado pelo compilador PICC STD, da empresa Hi-Tech. O
código gravado no microcontrolador tem capacidade de receber dados utilizando o padrão
RS-232 e enviar pulsos às fases dos motores de passo conectados em suas portas de E/S, onde
todas essas foram configuradas como saída. Foi utilizado um protocolo para a comunicação,
utilizando a tabela de código ASCII, conforme tabela 4.
Tabela 3 – Tabela de correspondência ASCII.
Parâmetros
Motor
Opção
Código ASCII (em decimal)
Ombro, Base, Cotovelo, Punho, 40 até 44
Sentido
Número de Giros
Tipo de Passo
Garra
Horário ou Anti-horário
Número máximo 83 giros
Passo Inteiro ou meio passo.
35 ou 36
45 até 144
37 ou 38
Cada um dos parâmetros enviados pela IHC foi codificado de uma maneira diferente
do seu código ASCII normal. Assim, caso o usuário digite A de anti-horário, por exemplo, a
IHC codifica-o para o número decimal 37. Isso foi feito para aproveitar melhor a tabela
ASCII, visto que ela possui apenas 127 posições.
O código gravado no PIC tem a capacidade de interpretar os dados enviados pelo
computador de forma a fazer com que rotacione o motor desejado, com o sentido, número de
giros e o tipo de passo especificado pelo usuário.
A figura 18 mostra detalhadamente a lógica do funcionamento do firmware.
36
Inicio
Recebe
Serial
N
Dado
Correto ?
N
S
Variáveis
todas < > 0
?
Armazenar
Variável
Gira Motor
Limpa
variáveis
N
Ocioso
?
S
Fim
Figura 18 – Fluxograma de funcionamento do firmware.
S
37
O firmware tem a capacidade de girar motores baseados em dois parâmetros
principais: sentido (horário ou anti-horário) e tamanho do passo (passo inteiro ou meio passo).
O programa gravado no PIC é inicializado com dois vetores com valores constantes,
armazenando a seqüência direta (sentido horário) tanto para movimentos de Passo Inteiro,
quanto para Meio Passo. Cada valor armazenado nesses vetores é convertido em binário e
enviado aos pinos do microcontrolador. Esse código binário enviado ao motor ligado nas
fases na sequëncia correta, faz com que ele gire. Caso o motor precise ser movimentado na
seqüência reversa (sentido anti-horário), o vetor será lido também na ordem reversa.
Nas tabelas 5 e 6 são mostrados os números de passo, as fases do motor, e o número
em decimal, correspondente ao binário é escrito nas fases do motor via porta de E/S do
microcontrolador.
Tabela 4 – Relação valores em decimal x bobinas energizadas em passo inteiro.
Nº do
passo
1
2
3
4
F3
F2
F1
F0
Decimal
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
8
4
2
1
Tabela 5 – Relação valores em decimal x bobinas energizadas em meio passo.
Nº do
passo
1
2
3
4
5
6
7
8
F3
F2
F1
F0
Decimal
1
1
0
0
0
0
0
1
0
1
1
1
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
1
1
1
8
12
4
6
2
3
1
9
3.2.2 A interface homem-computador (IHC)
A interface com o usuário foi desenvolvida usando a ferramenta Delphi versão 7.0,
sem a utilização de banco de dados relacionais. Foram utilizados arquivos textos para
armazenamento de todos os dados necessários ao funcionamento do software. A figura 19
abaixo mostra a interface inicial desse software.
38
Figura 19 – Tela inicial.
O programa foi separado em menus, o que torna a navegação entre as telas mais
intuitiva. O menu arquivo corresponde às telas onde o usuário manipula os dados e o menu
modo de operação corresponde à parte que envia serialmente os dados ao manipulador.
3.2.2.1 O menu arquivo
O menu arquivo é composto por três sub-programas. A função de cada sub-programa é
definida a seguir.
3.2.2.1.1 Tela cadastro de motores
Esse cadastro serve para que o usuário do sistema tenha condições de consultar de uma
forma mais otimizada os motores que compõem o manipulador, (figura 20) sem a necessidade
de anotações. Os campos desta tela são descritos a seguir:
•
ID. motor: campo que funciona como uma chave única, ou seja, cada motor do
manipulador será mapeado por esse identificador. Na tela de cadastro de scripts,
39
mostrado a seguir, é feito uma validação dos identificadores lá informados e os
identificadores aqui cadastrados.
•
Descrição motor: campo para o usuário informar alguma descrição que torne fácil seu
conhecimento após algum tempo de uso. A descrições escolhidas nesse projeto são:
motor da base, motor da garra, motor do cotovelo, motor do punho e motor do ombro.
•
QtdePassos: Campo que contém informação do número de passos que o motor irá
rodar.
•
Torque: Campo que contém informação técnica sobre o motor. Essa informação ajuda
o usuário em caso de dúvidas na operação do manipulador.
•
Voltagem: Campo que contém informação técnica sobre o motor. Caso o usuário
precise remontar o sistema, ele tenha informações precisas para o um bom
funcionamento do sistema.
•
Tipo (unipolar, bipolar, relutância): Campo que contém a informação de que tipo de
motor de passo foi utilizado.
Figura 20 – Tela cadastro de motores
Os botões inseridos na parte inferior dessa tela oferecem as ações básicas para
manipular os dados aqui inseridos. O usuário desse sistema pode conferir cada ação desses
botões antes de clicá-los, basta posicionar o mouse em cima do botão e uma informação será
mostrada. Esse artifício é conhecido por hint, muito utilizado em aplicações for Windows®.
40
3.2.2.1.2 Tela gerenciador de script
A tela de cadastro de scripts é bastante intuitiva, tornando sua utilização muito fácil.
Nesta tela o usuário cadastra as ações que o robô deverá realizar. A ordem de execução do
script é seqüencial, seguindo a mesma ordem do cadastramento.
A figura 21 ilustra bem o funcionamento dessa tela.
Figura 21 – Tela gerenciador de script.
Na Figura 21, que mostra a tela de cadastro de scripts, os botões são autoexplicativos. O usuário poderá ter vários scripts gravados em seu computador, dando-lhe uma
maior flexibilidade na execução de várias tarefas. Cada arquivo após aberto, tem seu nome e
pasta onde foi salvo mostrado no rodapé da tela. Também é mostrado o estado em que se
encontrado o arquivo no instante atual.
Após digitar o script, o usuário poderá validar esse script, clicando no botão que
possui a figura de uma engrenagem. Caso o software encontre algum erro de sintaxe, ele
imediatamente irá informar a linha de erro, esperando que o usuário faça as correções
necessárias.
41
3.2.2.1.3 Tela configurações
Nesta tela são especificados parâmetros necessários para que o envio e
recebimento dos dados aconteça de forma satisfatória. A seguir têm-se a descrição
detalhada de cada item que a compõe.
•
Tempo de espera: quantos milissegundos deverá esperar antes de enviar o próximo
byte ao manipulador.
•
ID Porta serial do manipulador (COM1, COM2,COM3): qual dos endereços será
utilizado para encontrar o manipulador.
•
ID Porta serial do controle (COM1, COM2,COM3): a porta que será utilizada para
receber dados do controlador.
•
Taxa de transferência (baud rate) com o manipulador: a taxa de transferência de dados
utilizada com o manipulador. Aqui foi utilizada a taxa de 9600 bps.
•
Taxa de transferência (baud rate) com o controlador: a taxa de transferência de dados
utilizada entre o software e o manipulador.
•
Essas configurações são necessárias para que usuário tenha condições de operar o
sistema em qualquer computador do padrão IBM-PC. Isso foi desenvolvido pensando
na necessidade de utilizar o manipulador não somente no computador onde o software
aqui descrito foi desenvolvido, mas onde o usuário quiser utiliza-lo.
Abaixo, a tela de configurações é mostrada. Existem botões para realizar as ações
necessárias ao controle dessas configurações.
`
Figura 22 – Tela de configurações
42
3.2.2.2 O menu modo operação
O menu modo operação é responsável por enviar dados serialmente ao manipulador
e/ou receber dados de um controlador e envia-los ao manipulador. Esse menu é dividido em
dois sub-programas, chamados de Manual e Automático.
3.2.2.2.1 Modo manual
O modo manual é feito através de uma tela que recebe os comandos do teclado ou
joystick e os envia ao manipulador. Essa tela tem figuras que exibem os comandos recebidos e
também dá condições para que o usuário possa escolher qual motor ele deseja girar. A figura
23 mostra a tela de modo manual.
`
Figura 23 – Tela modo de operação manual
43
As setas para cima e para baixo, da figura 23, indicam o tipo de passo que o motor
escolhido nos botões ao lado irão executar. As setas para esquerda / direita indicam o sentido
do giro do motor. Cada comando aqui enviado para o firmware representa um único giro ao
motor escolhido.
Manipulação via joystick (de acordo com a configuração dos botões), o manipulador
robótico responde aos seguintes comandos, de acordo com a Tabela 6.
Tabela 6 – Correspondência das ações executadas por um joystick
Comando
Joy-up (para frente)
Joy-down (para trás)
Joy-left (para esquerda)
Joy-Right
Botão 1
Botão 2
Botão 3
Botão 4
Botão 5
Descrição
Indica tipo de passo inteiro
Indica tipo de meio passo
Indica sentido anti-horário
Indica sentido horário
Indica motor referente à base
Indica motor referente ao Ombro
Indica motor referente ao Cotovelo
Indica motor referente ao Punho
Indica motor referente à Garra.
O usuário também pela manipulação via teclado. A Tabela 7 mostra as
correspondências dos comandos para utilização do teclado.
Tabela 7 – Correspondência das ações executadas pelo teclado
Comando
Seta para cima
Seta para baixo
Seta para a esquerda
Seta para a direita
B
O
C
P
G
3.2.2.2.2 Modo automático
Descrição
Indica tipo de passo inteiro
Indica tipo de meio passo
Indica sentido anti-horário
Indica sentido horário
Indica motor referente à base
Indica motor referente ao Ombro
Indica motor referente ao Cotovelo
Indica motor referente ao Punho
Indica motor referente à Garra.
No modo automático, um arquivo de texto com os scripts será lido e as ações
especificadas no script serão executadas pelo robô.
44
3.3.
O Circuito eletrônico
O circuito eletrônico é composto por um microcontrolador, onde está gravado o
firmware; circuito de potência, composto de circuitos integrados de potência, para atuar sobre
as fases dos motores de passo; conversor TTL x CMOS para comunicação serial e gerador de
clock para microcontrolador.
O microcontrolador, que é o dispositivo ativo desse circuito, é responsável por gerar
pulsos para os circuitos de potência. Esses pulsos, gerados de forma correta, fazem com que o
motor gire de acordo a ordem de excitação de suas bobinas.
Para receber os pulsos provindos do microcontrolador, e enviá-los às bobinas dos
motores, foi utilizado o circuito integrado (CI) ULN 2803, com oito entradas e oito saídas e
dois pinos para alimentação e o GND que controlam motores de até 500 mA. A Figura 24
mostra o diagrama esquemático do CI ULN 2803.
Figura 24 – Diagrama esquemático do CI ULN 2803.[BOY2004]
Outro CI utilizado nesse projeto foi o MAX-232 sendo responsável por converter
valores de -12V / 12V para 5V. Na interface RS-232 o nível lógico "1" corresponde à uma
tensão entre -3V e -12V e o nível lógico "0" à uma tensão entre 3V e 12V. A grande maioria
dos periféricos que trabalham com portas seriais não utilizam o padrão RS-232 para níveis
elétricos diretamente. Portanto é sempre necessário um circuito de conversão de níveis
TTL/RS232. O circuito integrado mais comum para efetuar esta conversão, de baixo custo, é
o MAX232 que possui alimentação TTL. A Figura 25 mostra o esquema elétrico do circuito.
45
Figura 25 - Esquema elétrico do circuito
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
CAPÍTULO IV
EXPERIMENTOS REALIZADOS
46
Para a realização deste projeto, alguns experimentos foram realizados para validação
do protótipo.. A seguir serão descritos com detalhes os experimentos realizados.
4.1.
Experimento com portas de entrada e saída
O primeiro experimento é uma aplicação que utiliza as portas de entrada e saída do
microcontrolador. O PIC16F877 foi programado em linguagem C para exemplificar a
facilidade do uso desta linguagem. O experimento consiste em acender seqüencialmente
quatro LED’s de maneira alternada. Os LED’s foram conectados no PORTB do pino P33 ao
P36.
Os pinos do RB0 ao RB3 foram configurados como saída, onde seus níveis são
alternados para nível alto e nível baixo em seqüência, conforme o programa (Apêndice 01).
Cada LED é aceso por um instante e depois é apagado em seqüência, ou seja, o primeiro LED
é aceso seguido por um atraso, ao término deste atraso, ele é apagado e o segundo LED é
aceso. O atraso é novamente executado, seguido por instruções de apagar o segundo LED e
acender o terceiro, e assim sucessivamente.
4.2.
Transmissão, recepção e tratamento de dados via RS-232
O segundo experimento é uma aplicação que faz uso da comunicação serial entre o
microcontrolador e o computador padrão IBM-PC. Utilizando o hyper terminal do Microsoft
Windows® 98 SE os dados foram enviados através da porta serial (COM1) para o
microcontrolador. No microcontrolador, por sua vez, foi gravado um software que recebe
dados serialmente e faz o tratamento destes.
Através do teclado do computador foram enviadas seqüências de caracteres e foi
definida, conforme tabela 8, uma relação entre o caractere enviado e o pino do
microcontrolador a ser acionado.
Tabela 8 – Relação entre caractere e pino no microcontrolador.
Caracter (teclado)
A
B
C
D
Pino (microcontrolador)
B0
B1
B2
B3
47
Através deste experimento foi possível o desenvolvimento do protocolo de
comunicação entre a aplicação de interface com o usuário e o firmware utilizado neste
projeto.
4.3.
Acionamento de motores de passo
Após a realização do experimento que mostra o funcionamento das portas de E/S do
microcontrolador e do experimento onde foi possível a definição de um protocolo de
comunicação, pode-se neste experimento juntar os conhecimentos adquiridos para realizar o
envio de dados serialmente pelo computador, a recepção pelo microcontrolador e o
acionamento dos motores de passo.
No software de interface com o usuário foi criado um script enviado ao
microcontrolador. De acordo com os dados de cada linha contidos no script foi possível
identificar o motor a ser acionado, o sentido de rotação, a quantidade de giros e o tipo de
passo (precisão) do motor.
48
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
CAPÍTULO V
CONCLUSÃO
A utilização da robótica nos dias de hoje tem crescido cada vez mais, e tomado
grandes dimensões, indo além da imaginação dos primeiros pesquisadores que iniciaram com
essa idéia. Isso faz com que os profissionais envolvidos nessa área estejam a cada dia
buscando formas de acompanhar esse grande avanço.
A escolha deste tema para o desenvolvimento deste trabalho, se deu principalmente
pelo grande interesse nessa área de estudo, além de ser um grande passo para a possibilidade
de ingressar profissionalmente na área da robótica.
Algumas modificações, em relação à idéia original, aconteceram durante o projeto,
visto que o tempo disponível para execução do mesmo no escopo da disciplina de Projeto
final é um tempo insuficiente para desenvolver todos os detalhes inicialmente propostos.
A parte física do protótipo foi analisada e repensada para atender as condições reais de
trabalho, pois o conhecimento nesta área enfatizada no curso de Engenharia de Computação é
mínimo e a infraestrutura existente na UCG não possibilita desenvolver um projeto desse
porte, por isso houve a necessidade de confeccionar as peças usando mão-de-obra externa,
gerando custo financeiro a um projeto acadêmico.
O sonho de muitos alunos neste curso é finalizá-lo com um projeto prático na área de
automação abrindo portas para futuras pesquisas avançadas, como também fazer uma ligação
entre teoria e prática favorecendo o enquadramento no disputado mercado profissional. Para
realizar esse anseio propõe-se a criação de convênios com instituições que possuem
infraestrutura mecânica, como por exemplo a CEFET (Centro Federal de Educação
Tecnológica) e o SENAI (Serviço Nacional de Aprendizagem Industrial), para desenvolver a
parte mecânica em projetos práticos.
Para trabalhos futuros neste projeto, sugere-se a integração do software que faz a
interface entre o usuário e o sistema, a possibilidade de ser controlado à distância, utilizando
um protocolo de Internet.
49
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
REFERÊNCIAS BIBLIOGRÁFICAS
[BOY2004] BOYLESTAD, ROBERT L., NASHELSKY, LOUIS, Dispositivos eletrônicos e
teoria de circuitos, 8ª edição, Prentice Hall, São Paulo, 2004.
[QUE2000] QUEVEDO, CARLOS P., CIRCUITOS ELETRÔNICOS, 2ª edição, LTC
editora, Rio de Janeiro, 2000.
[PHY2007]. Disponível em: <http://www.physics.sjsu.edu/becker/physics51/images/ 29_27_
displacement_current_capacitor.JPG> Acessado em 24 de setembro de 2007.
[DRA2007]. Disponível em: < http://www.dragonmodz.net/images/resistor.gif> Acessado em
24 de setembro de 2007.
[WKY2007]. RESISTOR. Disponível em: <http://pt.wikipedia.org/wiki/Resistor> Acessado
em 24 de setembro de 2007.
[WIK2007-2]. CRISTAL DE QUARTZO. Disponível em: <http://pt.wikipedia.org/wik
i/Cristal_de_quartzo> Acessado em 24 de setembro de 2007.
[WIK2007-3]. CIRCUITO INTEGRADO. Disponível em: <http://pt.wikipedia.org/wiki/
Circuito_integrado> Acessado em 24 de setembro de 2007.
[WIK2007-4]. CIRCUITO INTEGRADO. Disponível em: <http://pt.wikipedia.org/wiki/
Imagem:IcHipoteticDiagram.JPG> Acessado em 24 de setembro de 2007.
[ROG2007]. MOTOR DE PASSO. Disponível em: < http://www.rogercom.com/> Acessado
em 29 de setembro de 2007.
[WIK2007-5]. CIRCUITO INTEGRADO. Disponível em: <http://http://pt.wikipedia.org/
wiki/Motor_de_passo> Acessado em 30 de setembro de 2007.
50
[HOB2007].
ULN2803.
Disponível
em:
<http://hobbytron.altervista.org/schemi/
ulnstepper.jpg> Acessado em 30 de setembro de 2007.
[AGG2007]. DB-9. Disponível em: <http://www.aggsoft.com/rs232-pinout-cable/images/9pinout.gif> Acessado em 02 de outubro de 2007.
[LAC2007]. ROLAMENTOS. Disponível em: <http://www.lacarolamentos.com.br/prod_
rolamntosclass.htm> Acessado em 02 de outubro de 2007.
[ROG2007-2].
PIC16F877.
Disponível
em:
<http://www.rogercom.com/PortaSerial/
ControleAcesso/PinosPic.gif> Acessado em 02 de outubro de 2007.
[WIK2007-6]. FIRMWARE. Disponível em: <http://pt.wikipedia.org/wiki/Firmware>
Acessado em 19 de novembro de 2007.
[IMA2007]. ROBOTIC. Disponível em: < http://www.imagesco.com/catalog/robot/arm.html>
Acessado em 20 de novembro de 2007.
51
MANIPULADOR ROBÓTICO COM QUATRO GRAUS DE
LIBERDADE
APÊNDICES
Apêndice 01
#include <16f877.h>
#use delay(clock=4000000)
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP
#include <regs_16f87x.h>
main()
{
while (true)
{
output_high(pin_b7);
delay_ms(150);
output_low(pin_b7);
output_high(pin_b6);
delay_ms(150);
output_low(pin_b6);
output_high(pin_b5);
delay_ms(150);
output_low(pin_b5);
output_high(pin_b4);
delay_ms(150);
output_low(pin_b4);
}
}
52
Apendice 02 – Transmissão, recepção e tratamento de dados via RS-232.
#include <16f877.h>
#include <stdlib.h>
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP
#include <regs_16f87x.h>
int dado_controle = 0;
int com_controle = 0;
void tratar_sentido();
/* INTERUPÇÃO DA SERIAL */
#int_rda
void recebe_controle()
{
com_controle = getc();
dado_controle = 1;
}
/* FIM INTERUPÇÃO DA SERIAL */
main()
{
enable_interrupts(GLOBAL);
enable_interrupts(int_rda);
enable_interrupts(int_ext);
//char aux[1];
//int num_giros,sentido,motor,tam_passo;
while (true)
{
output_high(pin_d2);
if(dado_controle==1)
{
53
output_low(pin_d2);
tratar_sentido();
}
dado_controle = 0;
}
}
void tratar_sentido()
{
if ((com_controle == 97)||(com_controle == 104)) sentido = com_controle;
if ((com_controle == 97)||(com_controle == 104)) sentido = com_controle;
if ((com_controle == 97)||(com_controle == 104)) sentido = com_controle;
if ((com_controle == 97)||(com_controle == 104)) sentido = com_controle;
output_high(pin_b7);
delay_ms(150);
output_low(pin_b7);
}
Download

MANIPULADOR ROBÓTICO COM QUATRO