Projeto Braço Articulado Gustavo Rossi, José Antônio Duarte e Xano Trevisan Kothe Trabalho Final de Robótica - UNISC 1
Objetivo Controle e montagem de um braço articulado; Com três eixos de liberdade; Que seja possível pegar e largar objetos; Controlado pelo computador; Utilizando microcontrolador como interface entre os servo-motores e o computador; Trabalho Final de Robótica - UNISC 2
Material Utilizado Servo Motores Estrutura do Braço Acrílico Arduino Duemilanove Fonte de Computador Software em Java Trabalho Final de Robótica - UNISC 3
Servo-Motores Servo-motor é uma máquina, mecânica ou eletromecânica, que apresenta movimento proporcional a um comando; Em vez de girar ou se mover livremente sem um controle mais efetivo de posição como a maioria dos motores; Servo-motores possuem, normalmente, uma liberdade de apenas 180 graus; Eles verificam a posição atual, e atuam no sistema indo para a posição desejada. Trabalho Final de Robótica - UNISC 4
Servo-Motores: Partes Sistema atuador; Sensor; Circuito de controle. Trabalho Final de Robótica - UNISC 5
Servo-Motores: Sistema Atuador O sistema atuador é constituído por um motor elétrico (normalmente de corrente contínua). Com um conjunto de engrenagens que forma uma caixa de redução com uma relação bem longa o que ajuda a amplificar o torque. Trabalho Final de Robótica - UNISC 6
Servo-Motores: Sistema Atuador O servo-motor é uma máquina composta por uma parte fixa (o estator) e outra móvel (o rotor). O estator é bobinado como no motor elétrico convencional, porém, não podem ser ligados diretamente à rede, pois utiliza uma bobinagem especialmente confeccionada para proporcionar alta dinâmica ao sistema. O rotor é composto por ímãs permanentes dispostos linearmente e um gerador de sinais (resolver) instalado para fornecer sinais de velocidade e posição. Trabalho Final de Robótica - UNISC 7
Servo-Motores: Sensor O sensor normalmente é um potenciômetro junto ao eixo do servo. O valor de sua resistência elétrica indica a posição angular em que se encontra o eixo. A qualidade desse vai interferir na precisão, estabilidade e vida útil do servo motor. Trabalho Final de Robótica - UNISC 8
Servo-Motores: Circuito de Controle O circuito de controle é formado por componentes eletrônicos discretos ou circuitos integrados Geralmente é composto por um oscilador e um controlador PID (controle proporcional integrativo e derivativo) que recebe um sinal do sensor (posição do eixo) e o sinal de controle e aciona o motor no sentido necessário para posicionar o eixo na posição desejada. Trabalho Final de Robótica - UNISC 9
Servo-Motores: Circuito de Controle Servos possuem três fios de interface, dois para alimentação e um para o sinal de controle. O sinal de controle utiliza o protocolo PWM (modulação por largura de pulso) que possui três características básicas: largura mínima, largura máxima e taxa de repetição (frequência). Trabalho Final de Robótica - UNISC 10
Servo-Motores: PWM A largura do pulso de controle determinará a posição do eixo: - largura máxima equivale ao deslocamento do eixo em + 90º da posição central; - largura mínima equivale ao deslocamento do eixo em - 90º; - demais larguras determinam a posição proporcionalmente. O pulso de controle pode ser visto na ilustração sobre sinais de controle de servo motores. Em geral, a taxa de repetição é 50Hz e a largura do pulso do sinal de controle varia de 1 a 2ms. Porém um servo motor pode funcionar a 60Hz também. Trabalho Final de Robótica - UNISC 11
Servo-Motores: PWM 50Hz e 60Hz Trabalho Final de Robótica - UNISC 12
Servo-Motores: Características De um servo-motor são exigidos, dinâmica, controle de rotação, torque constante e precisão de posição e posicionamento. As características mais desejadas nos servomotores são o torque constante em larga faixa de rotação (até 4.500 rpm), uma larga faixa de controle da rotação e variação (até 1:3000) e alta capacidade de sobrecarga (3 x Mo). Trabalho Final de Robótica - UNISC 13
Servo-Motores: Utilizados no Projeto Nosso trabalho utilizou três servo-motores modelo TR205 com torque de 6,5kg cm para possibilitar os movimentos do braço. 1 cm 5 cm 6,5kg 1,3kg Trabalho Final de Robótica - UNISC 14
Estrutura do Braço: Garra Foi usada no projeto um braço de alumínio (um dos elemento mais abundante na crosta terrestre) das seguintes especificações: Trabalho Final de Robótica - UNISC 15
Estrutura do Braço: Garra Que possui as seguintes especificações: Abertura máxima: 55 mm Comprimento máximo: 108 mm Largura total (garra fechada): 98 mm Tensão de operação: 4.8-6V Trabalho Final de Robótica - UNISC 16
Estrutura do Braço: Servos 2 servo-motores modelo TR205 (na estrutura) Trabalho Final de Robótica - UNISC 17
Estrutura do Braço: Servos 1 servo na base Trabalho Final de Robótica - UNISC 18
Acrílico Foi utilizada no projeto duas chapas de acrílico de forma a compor uma estrutura para a garra realizar seus movimentos. Chapa1 de dimensões 8x5x0,2 cm projetada para ser a área onde a garra irá pegar objetos. Chapa2 de dimensões 30x5x0,5cm projetada para ser a base onde fica fixo o servo-motor que é o encarregado do giro do braço. Trabalho Final de Robótica - UNISC 19
Fonte de Alimentação No projeto foi utilizada uma fonte ATX das seguintes especificações: Trabalho Final de Robótica - UNISC 20
Microcontrolador: Arduino Arduino é uma plataforma de desenvolvimento voltada para protipação e estudo. Trabalho Final de Robótica - UNISC 21
Microcontrolador: Arduino Ela fornece uma gama de bibliotecas que facilitam a vida do programador como: Bibliotecas de LCD, Servos, Comunicação Serial e UART, Timers, Ethernet, Sensores, PWM, entre outros. O Microcontrolador base é da família Atmega (da fabricante Atmel). Trabalho Final de Robótica - UNISC 22
Arduino Duemilanove Arduino Duemilanove (ou 2009) é uma placa microcontroladora baseada no ATmega328. Contém 14 pinos de entradas/saídas (com 6 podendo ser usados como saídas PWM), 6 entradas analóicas, e com um oscilador de cristal de 16 Mhz, conexão USB, conexão de energia, cabeçalho ICSP, e botão de reset. Ou seja, tudo para suportar o microcontrolador, basta conectar no USB ou na energia. Trabalho Final de Robótica - UNISC 23
Arduino Duemilanove Microcontrolador Alimentação de Operação ATmega328 5V Alimentação Recomendada 7-12V Alimentação Limite 6-20V Pinos Digitais IO 14 (dos quais 6 são saídas PWM) Pinos Analógicos 6 Corrente máxima por Pino 40 ma Memória Flash (Programa) SRAM (RAM) EEPROM (Regravável de Dados) Clock Speed 32 KB (ATmega328) dos quais 2 KB usados pelo bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz Trabalho Final de Robótica - UNISC 24
Interface Gráfica de Controle Tela para controlar os servo-motores. Trabalho Final de Robótica - UNISC 25
Interface Gráfica de Controle Tela para controlar os servo-motores. Trabalho Final de Robótica - UNISC 26
Programação: Interface de Controle Projeto no Eclipse com Java SE 1.6 e biblioteca RXTX Trabalho Final de Robótica - UNISC 27
Biblioteca RXTX É uma biblioteca que oferece métodos para comunicação Serial/Paralela RXTX. É fornecida gratuitamente, e é utilizada em uma ampla gama de aplicações diferentes (ex. Joystick). As principais vantagens dessa biblioteca é o fato de ser estável, simples e ao mesmo tempo completa, e além disto, é multiplataforma (funciona no Windows, no Linux e no MacOs). Trabalho Final de Robótica - UNISC 28
Interface Gráfica de Controle: Partes do Código Ao iniciar o programa, todas as portas são listadas no primeiro componente da tela. O código-fonte que lista os dispositivos é mostrado na figura a seguir: Trabalho Final de Robótica - UNISC 29
Interface Gráfica de Controle: Partes do Código Na linha 96 é onde o nome da porta é retornado. No Windows, essas portas aparecem normalmente como COM1, COM2, COM3 etc... No Linux, normalmente como ttys0, ttys1, ttys2... No MacOs, aparecem, ainda, com outros nomes. Trabalho Final de Robótica - UNISC 30
Interface Gráfica de Controle: Configuração da porta da transmissão A velocidade de transmissão, dada em bauds (símbolos por segundo/bits por segundo) pode assumir uma gama muito grande de valores, mas normalmente usam-se os seguintes: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, ou 115200. Trabalho Final de Robótica - UNISC 31
Interface Gráfica de Controle: Configuração da porta da transmissão Essa velocidade é tanto limitada pelo Microcontrolador, quanto pelo chip que faz a interface entre o USB e o Microcontrolador. No código, primeiro é necessário acoplar ao dispositivo serial, isso é feito na linha 168. Trabalho Final de Robótica - UNISC 32
Interface Gráfica de Controle: Configuração da porta da transmissão Esse acoplamento é acompanhado por um timeout e o nome do aplicativo (no caso, a classe do aplicativo) que fez o pedido. Depois, é necessário configurar a comunicação serial: velocidade 9600 bauds, 8 bits de dados, 1 bit de parada, sem pariedade (linha 170). Trabalho Final de Robótica - UNISC 33
Interface Gráfica de Controle: Classes e métodos de transmissão Com a conexão estabelecida e configurada, é possível adquirir as classes Stream, como na linha 175. Com a classe OutputStream, é possível escrever na porta, utilizando o método write para escrever bytes. Trabalho Final de Robótica - UNISC 34
Interface Gráfica de Controle: Classes e métodos de transmissão Já a classe InputStream fornece métodos para leitura, como.read() que retorna um byte do buffer de comunicação e o método.available(), que retorna quantos bytes estão no buffer. Trabalho Final de Robótica - UNISC 35
Interface Gráfica de Controle: Pacote de Dados Para facilitar o desenvolvimento e deixar a comunicação bem simples, o aplicativo escreve 4 bytes na serial com as posições que se deseja enviar para o Microcontrolador. 255 Servo 1 Servo 2 Servo 3 Trabalho Final de Robótica - UNISC 36
Interface Gráfica de Controle: Pacote de Dados 255 Servo 1 Servo 2 Servo 3 O primeiro byte é sempre 0xFF (ou valor 255), os outros 3 bytes são, respectivamente, o ângulo do eixo 1, 2 e 3. O primeiro byte é fixo, para sinalizar o começo do pacote, já que os ângulos para os servo motores tem um range entre 0 e 180 graus, nunca será transmitido o valor 255 como dados, assim, os dados não atrapalham o cabeçalho de inicio do pacote. Trabalho Final de Robótica - UNISC 37
Código no Arduino O funcionamento básico dos programas é uma função setup() (que é chamada ao ligar o Microcontrolador), que ao final entra em uma função chamada loop(). Trabalho Final de Robótica - UNISC 38
Código no Arduino: Parte 1 A classe para controlar os servos se chama Servo, no código foi instanciado então 3 servos: servo1, servo2 e servo3. O método.attach() serve para indicar em qual pino o sinal de controle do servo estará conectado. Trabalho Final de Robótica - UNISC 39
Código no Arduino: Parte 1 O Arduino também fornecesse uma biblioteca para comunicação Serial. É necessário, inicialmente, configurar os bauds da transmissão (no caso 9600 bauds). Trabalho Final de Robótica - UNISC 40
Código no Arduino: Parte 2 O programa desenvolvido espera por dados do aplicativo, olhando quantos bytes estão no buffer da serial. Então, checa se o primeiro byte é de valor 255 (indicando o inicio do pacote), então ele espera (se necessário) por mais 3 bytes. Assim, ele tem certeza que irá ler os valores corretos. Além disso, o Microcontrolador devolve os valores que leu para o aplicativo, confirmando o recebimento. Trabalho Final de Robótica - UNISC 41
Código no Arduino: Parte 2 Para escrever um ângulo no servo-motor, basta utilizar o método write, que aceita um valor inteiro entre 0 e 180, significando de 0 à 180 graus de liberdade por servo. Trabalho Final de Robótica - UNISC 42
Código no Arduino: Parte 2 Alguns servos podem, eventualmente, ter um grau de liberdade de 360, porém, estes então convertem o 180 graus de liberdade do código para os 360 graus do servomotor. Ou seja, escrevendo 90 graus no código, significaria que o servo iria para a posição 180, e escrevendo 180 no código, 360 no servo. Trabalho Final de Robótica - UNISC 43
Montagem Final O projeto foi montado de forma que a garra possua três graus de mobilidade: O primeiro grau na base podendo ser girada em um ângulo de 180º de forma a possibilitar a garra alcançar objetos que estejam dentro destes padrões de deslocamento. Trabalho Final de Robótica - UNISC 44
Montagem Final O segundo grau de movimento da garra pode ser denominado como movimento de subida e descida no qual a garra pode executar um movimento em torno do eixo x abscissas gerando uma parábola com concavidade voltada para baixo. Trabalho Final de Robótica - UNISC 45
Montagem Final O terceiro grau de movimento executa o movimento de abertura e fechamento da mesma onde o servomotor funciona a uma voltagem de 6V no momento em que a garra se encontra aberta. Trabalho Final de Robótica - UNISC 46
Montagem Final A garra foi fixada sobre uma estrutura acrílica para proporcionar maior estabilidade tendo também uma plataforma de acrílico superior onde podem ser posicionados os objetos a serem pegos pela mesma Abaixo desta estrutura de acrílico fica situado o Arduino tornando o projeto mais compacto e de aspecto limpo. Trabalho Final de Robótica - UNISC 47
Demonstração Trabalho Final de Robótica - UNISC 48