Você está na página 1de 24

Universidade do Minho Escola de Engenharia Departamento de Engenharia Mecnica

Unidade de Crdito Mquinas de Comando Numrico


Mestrado em Engenharia Mecatrnica

CONTROLO DE SERVOMOTORES PARA MQUINA DE


PROTOTIPAGEM RPIDA

Grupo de Trabalho: N 21802, Fbio Jos da Silva Oliveira N 22716, Marco Daniel Costa Marques

Verso original entregue em Guimares, Julho de 2013 Reviso A de 7 de setembro de 2013


Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

ndice
1 2 Resumo ..................................................................................................................... 1 Conceitos tericos .................................................................................................... 2 2.1 2.2 2.3 2.4 3 Encoder incremental .......................................................................................... 2 Servomotor......................................................................................................... 3 Ponte H .............................................................................................................. 4 Controlo PID ...................................................................................................... 5

Componentes escolhidos .......................................................................................... 7 3.1 3.2 Escolha do hardware para processamento de dados.......................................... 7 Escolha do driver / ponte H ............................................................................... 7

Parte experimental .................................................................................................. 10 4.1 4.2 4.3 4.4 4.5 4.6 Ligao dos encoders ....................................................................................... 10 Comando dos motores do eixo X e Y .............................................................. 13 Controlo ON/OFF do motor do eixo Y ............................................................ 14 Controlo PID do motor do eixo Y ................................................................... 14 Controlo PID dos motores do eixo X e Y ........................................................ 17 Controlo PID dos motores do eixo X e Y com coordenadas variveis ............ 17

5 6 7

Dificuldades encontradas ........................................................................................ 20 Melhorias a implementar ........................................................................................ 21 Bibliografia ............................................................................................................. 22

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

ii

Resumo
O presente trabalho tem como principal objetivo implementar um sistema que

permita o controlo dos eixos X e Y da mquina de prototipagem rpida AIDA Z CORPORATION Z402. Para tal, far-se- uso da cadeia cinemtica j implementada na referida mquina, bem como dos seus motores e encoders. O controlo propriamente dito ser implementado em Arduino, que uma plataforma de prototipagem eletrnica de hardware livre.

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

2
2.1

Conceitos tericos
Encoder incremental Os encoders so transdutores de movimento capazes de converter movimentos

lineares ou angulares em informaes eltricas que podem ser transformadas em informaes binrias e, desta forma, serem trabalhadas por um programa que converta as informaes passadas em algo que possa ser entendido como distncia, velocidade, etc. Os encoders possuem internamente um ou mais discos (chamados de mscaras) perfurados, que permitem, ou no, a passagem de um feixe de luz infravermelha, gerado por um emissor que se encontra de um dos lados do disco e captado por um receptor que se encontra do outro lado do disco; este, com o apoio de um circuito eletrnico, gera um pulso. Nos encoders rotativos, a quantidade de pulsos numa volta (CPR, do ingls Counts Per Revolution), demonstra a relao impulso/volta do mesmo. Por exemplo, um encoder que gera 50 pulsos por volta teria a seguinte relao angular: 360/50 pulsos = 1 pulso a cada 7,2. O encoder incremental fornece normalmente dois pulsos quadrados desfasados 90, que so chamados usualmente de canal A e canal B. A leitura de somente um canal fornece apenas a velocidade, enquanto que a leitura dos dois canais fornece tambm o sentido do movimento. Pode-se determinar o sentido da rotao utilizando-se duas fileiras de furos, uma desfasada em 90 em relao outra. Desta forma a fileira mais prxima do centro estar adiantada em relao outra e no sentido inverso ocorre tambm o inverso. [1]

Imagem 1 Esquema possvel para um encoder tico incremental[2]

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

Imagem 2 - Demonstrao do desfasamento entre o canal A e o canal B que permite determinar o sentido de rotao[3]

2.2

Servomotor Um servomotor um atuador rotativo que permite um controlo preciso da sua

posio angular. Consiste num motor acoplado a um sensor para controlo de posio, atravs de uma caixa de reduo. Requer um controlador relativamente sofisticado, normalmente um mdulo dedicado para usar com o servomotor. Servomotores so utilizados em diferentes aplicaes como na robtica, mquinas de comando numrico e produo automatizada. Servomotores modernos utilizam encoders pticos, quer absolutos ou incrementais. Encoders absolutos conseguem determinar a sua posio quando so ligados, mas so mais complexos e caros. Encoders incrementais so mais simples, baratos e trabalham a velocidades maiores. Muitos servomotores so rotativos, mas so utilizados para o controlo de movimentos lineares. Servomotores mais sofisticados medem tanto a velocidade e a posio. Eles tambm podem controlar a velocidade do motor, em vez de rodarem sempre velocidade mxima. Estas melhorias, combinadas com um algoritmo de controlo PID (proporcional, integrativo e derivativo), permitem que o servomotor atinja a posio pretendida mais rapidamente, com maior preciso e com um overshooting menor. O tipo de motor no crtico para um servomotor e diferentes tipos podem ser utilizados. A um nvel mais bsico, motores DC so utilizados devido sua simplicidade e baixo custo. Pequenos servomotores industriais so normalmente motores sem escovas eletronicamente comutados. Para grandes aplicaes industriais, motores de induo AC so tipicamente utilizados, frequentemente com variadores de frequncia para controlo da velocidade.
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

Servomotores so geralmente utilizados como uma alternativa de desempenho elevado em relao aos motores de passo. Os motores de passo tm uma capacidade inerente para controlo de posio uma vez que funcionam atravs de passos. Esta propriedade permite que sejam utilizados em malha aberta. Esta falta de feedback para a posio limita o seu desempenho, uma vez que s podem atuar cargas que estejam entre a sua capacidade, caso contrrio, ocorrero erros de posio. O encoder e o controlador para um servomotor so custos adicionais, mas otimizam o desempenho geral do sistema. Em sistemas maiores, onde um motor poderoso representa uma maior proporo do custo, os servomotores so os mais indicados. De um servomotor so exigidos, dinmica, controle de rotao, torque constante e preciso de posicionamento. As caractersticas mais desejadas nos servomotores so o torque constante em larga faixa de rotao, uma larga faixa de controlo da rotao e variao e alta capacidade de sobrecarga. [4]

Imagem 3 - Servomotor [5]

2.3

Ponte H Ponte H um circuito eletrnico que permite que o microcontrolador fornea a

corrente necessria para o funcionamento de um motor de corrente contnua, visto que o microcontrolador normalmente trabalha a tenses e correntes baixas, enquanto o motor DC costuma exigir potncias mais elevadas. Alm disso, a ponte H torna possvel que o motor rode tanto para um sentido como para o outro. Estes circuitos so geralmente utilizados em robtica e esto disponveis em circuitos prontos, chamados de drivers, ou podem ser construdos com os componentes necessrios. O nome ponte H dado pela forma que assume o circuito quando montado. O circuito construdo com quatro "chaves" (S1 a S4) que so acionadas de forma

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

alternada dependendo do fim pretendido. As chaves S1 e S2 assim como as chaves S3 e S4 no podem ser ligadas ao mesmo tempo, pois podem gerar um curto circuito. Para construo da ponte H pode ser utilizado qualquer tipo de componente que simule uma chave liga/desliga como transstores, rels, MOSFETs. Para que o circuito eltrico fique protegido, aconselhvel que sejam utilizadas portas lgicas com o objetivo de que nunca ocorram as situaes de curto circuito descritas acima. Para evitar possveis danos quando os transstores so desligados, ideal adicionar um dodo em paralelo com cada transistor com a finalidade de drenar a corrente que poderia forar a passagem atravs dos transstores, pois as propriedades indutivas do motor no permitem que a corrente pare de fluir de imediato.[6]

Imagem 4 - Estados que os interrutores S1, S2, S3 e S4 podem assumir [7]

Imagem 5 - Estados que os interrutores S1, S2, S3 e S4 no podem assumir[8]

2.4

Controlo PID Um controlo proporcional, integral e derivativo, normalmente chamado controlo

PID ou simplesmente PID, uma tcnica de controlo de processos que une as aes derivativa, integral e proporcional, fazendo assim com que o sinal de erro seja minimizado pela ao proporcional, anulado pela ao integral e obtido com uma
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

velocidade antecipativa pela ao derivativa. Os termos proporcional, integral e derivativo so somados para calcular a sada do controlador PID. Definindo a sada do controlador, a forma final do algoritmo PID consiste.[9] como

Onde: : Ganho proporcional, parmetro a definir; : Ganho integral, parmetros a definir; : Ganho derivativo, parmetro a definir, : Erro estado pretendido estado atual; , at ao tempo atual.[10]

: Tempo atual; : Varivel de integrao; assume valores deste

Imagem 6 Resposta do sistema em funo dos parmetros PID escolhidos[11]

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

3
3.1

Componentes escolhidos
Escolha do hardware para processamento de dados Para o nosso trabalho necessitmos de hardware que realizasse a leitura dos

nossos sensores (encoders), fizesse o processamento dos dados por eles enviados e controlasse os nossos atuadores (motores). Existem enumeras possibilidades de hardware no mercado para se fazer isto. Para o nosso sistema escolhemos a Arduino, que uma plataforma de prototipagem eletrnica de hardware livre. Esta escolha foi influenciada pelo seu custo acessvel quando comparado com outras solues no mercado, existir bastante documentao de como a utilizar, pelo facto de ser uma plataforma que possui uma grande comunidade online que disponibiliza exemplos de aplicaes e principalmente por existir um conjunto de bibliotecas de programao que permitem interligar os perifricos necessrios para o sistema construdo. Aps a escolha da plataforma foi necessrio escolher o modelo a utilizar. No incio optamos por utilizar o Arduino UNO visto ser aquele que possuamos, mas no decorrer do trabalho foi necessrio utilizar o Arduino Mega 2560 pelas razes que sero descritas na parte experimental.

Imagem 7 esquerda: Arduino Uno; direita: Arduino Mega 2560 [12]

Par se poder utilizar este hardware, foi necessrio instalar o programa para programao da Arduino no computador. Pode-se fazer o download deste programa no seguinte endereo (verso utilizada, Arduino 1.0.5): http://arduino.cc/en/Main/Software.

3.2

Escolha do driver / ponte H Aps a escolha da Arduino como crebro do nosso sistema, foi necessrio

proceder escolha da driver que permitisse interligar o crebro do sistema aos motores. Sendo o nosso sistema constitudo por dois motores, foi necessrio analisar os
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

dados tcnicos dos mesmos. Verificmos que os motores so do tipo Brush Commutated DC Servo Motor. Para o eixo Y temos o motor PITTMAN 8312G893-R2 de 24 VDC, com um encoder ptico de 500 CPR. No eixo X temos um motor PITTMAN 14205D646-R1 de 24 VDC, tambm com encoder ptico de 500 CPR.

Imagem 8 esquerda: motor 8312G893-R2; direita motor 14205D646-R1

Foi-nos possvel encontrar o datasheet para o motor 14205D646-R1. Para o motor 8312G893-R2 apenas conseguimos encontrar um datasheet de um motor bastante semelhante, pelo que nos baseamos no dito. Ambos os datasheets esto disponveis nos anexos. Aps anlise dos datasheets de cada motor, verificamos que as principais caractersticas a ter em conta so a tenso de funcionamento (Vin), a corrente nominal (Icontimuos), a corrente de pico (Imax). Apresentamos uma tabela com as principais caractersticas referidas anteriormente. Como o nosso objetivo o controlo de posio necessrio que o nosso hardware alm de controlar a velocidade do motor, possa inverter o sentido do mesmo de uma forma simples.

Motor PITTMAN 14205D646-R1 PITTMAN 8312G893-R2

Vin (V) 24 VDC 24 VDC

Icontinuos (A) 3,6 A 1,1 A

Imax (A) 24,6 A 5,7 A

Tabela 1 Propriedades eltricas dos motores

Para a comutao dos motores optmos por um IC (do ingls, integrated circuit) denominado de VNH5019A-E. Este componente eletrnico composto por quatro MOSFET que formam a ponte H. Tem como principais caractersticas funcionar at 24V e com uma corrente mxima de sada de 30 A. A vantagem de usarmos um IC deste tipo que contempla um conjunto de protees intrnsecas que permitem a

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

proteo do componente contra curto-circuito e sobrecargas, bem como inclui um sensor que mede a corrente que est a ser consumida.

Imagem 9 - Diagrama de Blocos VNH5019A-E[13]

Como referido acima, temos dois motores logo existe a necessidade de termos dois ICs VNH5019A-E, um para controlar cada motor. Visto isto ser um componente SMD (do ingls, surface-mount device), comprmos um placa eletrnica que j tem integrado os dois ICs pretendidos; escolhemos, por isso, a placa da POLOLU - Dual VNH5019 Motor Driver Shield. Esta placa tem outras duas grandes vantagens que so poder ser facilmente ligada como shield a uma Arduino Uno e Mega e j existir uma biblioteca para Arduino que facilita a sua utilizao chamada

DualVNH5019MotorShield.h. Pode-se fazer o download da referida biblioteca no seguinte endereo: https://github.com/pololu/Dual-VNH5019-Motor-Shield .

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

4
4.1

Parte experimental
Ligao dos encoders Para o controlo dos motores precisamos de um sinal de feedback para

conseguirmos saber qual a posio de cada motor. Cada motor tem acoplado um encoder ptico incremental. Encontrmos um datasheet para os encoders associados aos motores da marca PITTMAN, possuindo este as respectivas ligaes. Aps algumas tentativas sem sucesso em obter qualquer sinal na sada do encoder, desmontmos um dos encoders para verificar se estava danificado. Com o encoder aberto, conseguimos obter uma referncia para o encoder propriamente dito, sendo o seu modelo HEDS-9x01 da marca Avago Technologies. Com a referncia do modelo conseguimos obter mais informao sobre as ligaes eltricas, tendo comprovado que eram diferentes do datasheet da Pololu e que o cdigo de cores utilizado no fazia sentido.

Imagem 10 - Desenho tcnico do encoder ptico HEDS-9x01[14]

Imagem 11 - Encoder ptico HEDS-9x01 aps alterao dos cabos

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

10

EIXO Y EIXO X

Imagem 12 Definio dos eixos X e Y para a mquina de prototipagem rpida

Como o encoder do eixo Y estava acessvel, altermos diretamente no encoder os cabos para um cdigo de cores correto. No entanto, como o encoder do eixo X inacessvel sem desmontar partes importantes do equipamento, no foi possvel alterlo. Por este motivo, e de forma a escolher um cdigo de cores igual para os dois encoders, soldamos cabos com o esquema de cores apresentado na tabela seguinte, bem como adicionamos conetores machos para facilitar a ligao Arduino.

Nome do pino Descrio Cor Descrio

ChB Canal B

VCC 5V

ChA

NC

GND Massa

Canal A No ligado No ligado

Laranja e branco entrelaados

Laranja

Verde

No ligado

Azul

Tabela 2 Cdigo de cores dos encoders

Para efectuar-se a leitura do sinal vindo dos encoders com a mxima preciso foi necessrio utilizar pinos da Arduino que tivessem interrupes1 externas associadas, isto , sempre que ocorra uma transio ascendente ou descendente do sinal de um dos canais, a Arduino deteta essa transio e atualiza a posio. Ao utilizarmos interrupes nos dois canais, garantimos que detetamos todas as transies, enquanto que se apenas utilizssemos num canal, detectaramos apenas metade das transies, o que resultaria em metade da preciso. Se as interrupes no fossem utilizadas, estaramos dependentes do normal funcionamento do programa. Nesta situao, se ocorresse uma

Em Cincia da Computao, uma interrupo um sinal de um dispositivo que tipicamente resulta numa troca de contexto, isto , o processador para de fazer o que estava a fazer para atender o dispositivo que originou a interrupo.[15]
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

11

interrupo mas o programa da Arduino estivesse num estado que no fosse a sua leitura, esta no seria lida, resultando no final numa contagem incorreta da posio. Como a Arduino Uno apenas possui dois pinos com interrupes externas associadas, optamos por escolher outra placa Arduino, optando assim pela Arduino MEGA 2560, devido a esta possuir seis pinos com interrupo externas, permitindo de esta forma efetuar a leitura das quatro sadas de sinal dos dois encoders. Alm desta vantagem da Arduino Mega, esta placa possui mdulos adicionais para comunicao srie que podero permitir futuras expanses do sistema, bem como mais portas digitais e analgicas para ligao de sensores e atuadores adicionais. Para a leitura do sinal dos nossos encoders utilizamos os pinos 18, 19, 20 e 21 da Arduino MEGA. Alimentmos tambm os encoders a partir dos pinos de 5V e GND adicionais que existem na placa. Podemos ver as respectivas ligaes na figura e tabela seguintes.

Imagem 13 Esquema grfico de ligao dos dois encoders Arduino Mega (esquema realizado no Fritzing)

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

12

Tabela 3 Esquema de ligaes dos dois encoders Arduino Mega

Pin encoders 5V encoders eixo X e Y GND encoders eixo X e Y Canal A encoder eixo X Canal B encoder eixo X Canal A encoder eixo Y Canal B encoder eixo Y

Pin Arduino 5V GND 21 20 19 18 (Arduino)

Cor Laranja Azul Verde Laranja e branco Verde Laranja e branco

Para realizar a leitura dos sinais dos encoders crimos um pequeno programa que nos possibilita a leitura dos sinais eltricos provenientes dos encoders. Este programa foi denominado de LEITURA_2_ENCODERS.ino e encontra-se nos anexos. Para utilizao deste programa necessrio utilizar a biblioteca Encoder.h que pode ser obtida no seguinte endereo: http://www.pjrc.com/teensy/arduino_libraries/Encoder.zip. O programa criado permitiu-nos verificar que: O curso do eixo X origina aproximadamente 64 200 pulsos. Como este possui 52,5 cm de comprimento, temos que o menor valor medvel de . O curso do eixo Y origina aproximadamente 48 000 pulsos. Como este possui 26,5 cm de comprimento, temos que o menor valor medvel de .

4.2

Comando dos motores do eixo X e Y Aps colocao da leitura dos encoders a funcionar, testamos a biblioteca que a

Pololu disponibiliza para se utilizar com a driver referida. Os fios de ligao dos motores tm as cores padro: preto para a massa e vermelho para os 24 VDC. O programa de teste para comandar os dois motores chama-se

COMANDO_2_MOTORES.ino. Na utilizao deste programa h que ter em ateno que deixamos a velocidade mxima que a biblioteca define (400); no entanto, este valor demasiado elevado para comandar os motores, pelo que nos testes feitos utilizamos valores mais baixos (100 para o motor do eixo Y e 50 para o motor do eixo X). Os
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

13

nicos objetivos deste programa de comando foram testar os motores, verificar a sua funcionalidade bem como as suas velocidades.
Tabela 4 Esquema de ligaes dos dois motores driver

Pin motores V+ motor eixo Y GND motor eixo Y V+ motor eixo X GND motor eixo X

Pin driver M2A M2B M1A M1B

Cor Preto e vermelho Preto Vermelho Preto

4.3

Controlo ON/OFF do motor do eixo Y Realizados os passos anteriores, pudemos passar ao controlo dos motores. Para

efetuarmos o controlo do motor do eixo Y desenvolvemos um pequeno programa com controlo ON/OFF, que basicamente detetava a posio atual e comparava-a com a posio pretendida. Consoante esta comparao, rodava o motor para um sentido ou para o outro. Este programa, chamado CONTROLO_MOTOR_Y_SEM_PID.ino demonstra a necessidade de se utilizar um controlo PID, visto que com este tipo de controlo (PID), a velocidade do motor varia consoante a posio atual, e no assume apenas dois estados (controlo ON/OFF).

4.4

Controlo PID do motor do eixo Y Como referido anteriormente, escolhemos o tipo de controlo PID. Para o

controlo PID necessrio definir os parmetros Kp, Ki e Kd. Para definir estes parmetros existem dois mtodos possveis: O mtodo terico em que necessrio ter em conta os parmetros de construo do motor e as equaes matemticas que definem o movimento de motores, bem como toda a metodologia complexa inerente ao mtodo PID; O mtodo experimental em que se ajusta os parmetros e se observa o comportamento do sistema. Ns optamos pelo mtodo experimental visto o mtodo terico ser bastante complexo, no o dominarmos e existir alguma dificuldade em obter todos os

parmetros fsicos necessrios para realizar os clculos.

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

14

Para utilizarmos o controlo PID com a Arduino, necessrio utilizarmos a biblioteca que foi desenvolvida para este fim, chamada de PID_v1.h, e que pode ser feito o download no seguinte endereo: http://playground.arduino.cc/Code/PIDLibrary. Esta biblioteca est bem documentada e explicada no seguinte endereo: http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/. Por definio, esta biblioteca tem como sada os valores limites 0 e 255. No entanto, visto que os nossos motores tm que rodar para ambos os sentidos, tm que assumir valores tanto positivos como negativos. por isso necessrio definir em cdigo esta propriedade utilizando-se a funo SetOutputLimits(). Como no existem sensores fins de curso para os eixos X e Y que desativem os motores caso ultrapassem posies no permitidas, foram definidos valores de velocidade mxima para evitar danos no equipamento. Diferentes valores de velocidade para os dois motores foram definidas visto que os motores tm propriedades fsicas distintas. Esta biblioteca tem definido internamente um perodo de atualizao de 100 milissegundos, pelo que se se pretender atualizaes mais rpidas, ter que se alterar este valor na biblioteca diretamente. Para determinarmos os parmetros para o nosso controlo PID adaptamos o programa PID_FrontEnd_v03 que pode ser obtido no seguinte endereo:

https://code.google.com/p/arduino-pidlibrary/downloads/detail?name=PID_FrontEnd_v03.zip&can=2&q=. Este programa feito em Processing que uma linguagem de programao e um ambiente de desenvolvimento open-source. Portanto, necessrio que o computador tenha instalado este ambiente de desenvolvimento que pode ser encontrado no seguinte endereo: https://processing.org/download/?processing. Alm deste software, para se utilizar esta aplicao necessrio instalar a pasta controlP5-2.0.4 que pode ser encontrada no seguinte endereo: http://www.sojamo.de/libraries/controlP5/.

O programa PID_FrontEnd_v03 est dividido em duas partes: Uma aplicao grfica que permite alterar em tempo real os parmetros do controlo PID do nosso sistema. Esta aplicao permite introduzir diferentes parmetros PID e o estado que pretendemos alcanar;

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

15

visualizar o histrico tanto do estado do sistema, como o erro associado e a sada do sistema. Cdigo para a programao da placa Arduino, sendo esta responsvel por interpretar os dados recebidos pela aplicao grfica, ler os dados do sensor (no nosso caso um encoder), atualizar a sada associada ao atuador (no nosso caso um motor) e enviar novos dados para a aplicao grfica. Na imagem seguinte podemos ver o ambiente grfico da aplicao.

Imagem 14 - Imagem da aplicao PID_FrontEnd_v03 com explicao dos seus componentes

Esta interao em tempo real com o sistema, bem como ser possvel visualizar o histrico do mesmo, tornam este programa ideal para atingir os objetivos propostos. Como apenas possvel interligar um eixo de cada vez, foi necessrio determinar os parmetros PID isoladamente para cada motor. Esta aplicao vem pr-configurada, por isso foi necessrio alterar partes do cdigo tanto da aplicao grfica como do programa para Arduino de forma a:

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

16

A aplicao grfica apresentasse valores para os intervalos definidos para o encoder, a velocidade do motor e a frequncia de atualizao que so definidos pelas variveis InScaleMin, InScaleMax, OutScaleMin, OutScaleMax e windowSpan;

programa

em

Arduino

inclusse

biblioteca

Encoder.h,

DualVNH5019MotorShield.h, e interligasse as variveis associadas ao encoder e o motor s variveis do PID.

Utilizamos

ento

programa

para

Arduino

PID_FrontEnd_CONTOLO_BIDIRECIONAL_MOTOR.ino e para a visualizao grfica e determinao dos parmetros, o programa PID_FrontEnd_v03.pde. Para a determinao dos parmetros comeamos por alterar o ganho proporcional, tendo passado posteriormente para o ganho integral. Por motivos que no conseguimos determinar, sempre que introduzamos a componente derivativa, o sistema apresentava uma resposta irregular. Por este motivo, o nosso controlador ficou um controlador PI (proporcional e integral).

4.5

Controlo PID dos motores do eixo X e Y Depois de determinar os parmetros para ambos os motores, foi necessrio

desenvolver um programa que efetuasse o controlo dos dois motores em simultneo. O programa criado foi CONTROLO_EIXO_X_Y.ino. Neste programa para a Arduino foi necessrio incluir as bibliotecas PID_v1.h para o controlo PID, a

DualVNH5019MotorShield.h que nos permite interagir com a driver e a Encoder.h para obtermos o sinal vindo dos encoders. Neste programa definimos um set point para cada motor que corresponde s coordenada (X,Y) a atingir. Colocando o programa em funcionamento, vemos atravs da funcionalidade Serial Monitor do software da Arduino que os dois eixos atingem as coordenadas pretendidas.

4.6

Controlo PID dos motores do eixo X e Y com coordenadas variveis J aps entrega do trabalho para aprovao na unidade curricular, resolvemos

finalizar e experimentar o programa CONTROLO_EIXO_X_Y_VARIAVEL.ino que no tnhamos tido tempo para testar. Este programa recebe atravs do Serial Monitor uma string de texto no formato X1234Y1234E, a qual contm o setpoint para o eixo
Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

17

X e o setpoint para o eixo Y; o caracter E indica o fim da string. Estando o equipamento em funcionamento, a introduo de novos setpoints far alterar as posies dos eixos X e Y.

Imagem 15 Janela Serial Monitor onde possvel introduzir os novos setpoint e verificar as posies dos dois eixos

Este programa representa um modo bsico de colocar a mquina a percorrer um conjunto de coordenadas introduzidas pelo utilizador.

Imagem 16 - Esquema final do sistema de controlo implementado Os pinos da driver no esto ligados porque esta um shield

Imagem 17 - Montagem prtica do sistema implementado


Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

18

Na tabela seguinte, podemos ver as ligaes de todos os componentes. Para facilitar as referidas ligaes, todos os cabos possuem uma etiqueta para que a colocao do sistema em funcionamento seja mais rpido.
Tabela 5 Esquema de ligaes finais

Pin motores/encoders V+ motor eixo Y GND motor eixo Y V+ motor eixo X GND motor eixo X 5V encoders eixo X e Y GND encoders eixo X e Y Canal A encoder eixo X Canal B encoder eixo X Canal A encoder eixo Y Canal B encoder eixo Y

Pin Arduino e driver M2A (driver) M2B (driver) M1A (driver) M1B (driver) 5V (Arduino) GND (Arduino) 21 (Arduino) 20 (Arduino) 19 (Arduino) 18 (Arduino)

Cor Preto e vermelho Preto Vermelho Preto Laranja Azul Verde Laranja e branco Verde Laranja e branco

No pretendendo fazer publicidade s empresas onde comprmos a driver e a Arduino Mega, ficam aqui os endereos para a aquisio das mesmas: Arduino Mega: http://www.inmotion.pt/store/arduino-mega-2560-rev.-3 Driver: http://www.robot-italy.com/it/pololu-dual-vnh5019-motor-driver-shieldfor-arduino.html

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

19

Dificuldades encontradas
A primeira dificuldade encontrada foi o acesso ao laboratrio. Isto porque sendo

os dois elementos do grupo trabalhadores estudantes, apenas conseguamos chegar ao laboratrio no fim do trabalho e ficar at s 21 horas. Ser uma vantagem que um futuro grupo que continue este trabalho solicite acesso alargado ao laboratrio. Visto que as ligaes dos encoders no correspondiam ao especificado no datasheet, gastamos algum tempo a descobrir quais seriam as ligaes corretas. Antes de termos desmontado o encoder, ainda tentamos alimentar a placa original dos encoders de forma a tentarmos descobrir a sua tenso de alimentao e respectivos pinos. Nos parmetros do controlo PID tivemos alguma dificuldade em definir a componente derivativa Kd visto que sempre que esta era diferente de zero, o sistema comportava-se de forma irregular. Era necessrio mais tempo e mais pesquisa para conseguirmos depurar o porqu deste parmetro estar a causar este comportamento.

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

20

Melhorias a implementar
A vantagem de se utilizar uma frequncia de controlo elevada, por exemplo , que o sistema torna-se inaudvel ao ouvido humano. A

biblioteca do driver utilizada para a Arduino Uno tinha esta propriedade. No entanto, ao migrarmos para a Arduino Mega, descobrimos que o timer associado aos pinos de controlo PWM da driver no permitiam esta propriedade. Pode-se encontrar mais informao no seguinte endereo:

http://forum.arduino.cc/index.php?topic=77168.0. Para corrigir esta situao, isto , tornar o funcionamento dos motores inaudveis, seria necessrio alterar fisicamente as ligaes da driver de forma a que o timer associado ao pinos de controlo PWM permitisse gerar uma frequncia inaudvel, bem como utilizar uma biblioteca desenvolvida especificamente para a Arduino Mega. Mais informao pode ser encontrada no seguinte endereo:

http://forum.pololu.com/viewtopic.php?f=15&t=6139. Com um estudo mais aprofundado e tempo para simulaes, ser possvel determinar a causa para o parmetro Kd estar a causar um comportamento irregular ao sistema. Alm disto, ser tambm possvel determinar novos e melhores parmetros que conduzam a uma resposta mais rpida e com menos oscilao do sistema. De forma ao sistema reagir mais rapidamente variao de posio, poder-se- diminuir o perodo de atualizao da biblioteca PID para Arduino, visto que neste momento est definido para 100 milissegundos. De forma a tornar o sistema mais seguro e ser possvel fazer o zero mquina, a adio de sensores de fins de curso aos eixos X e Y seria uma mais valia.

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

21

Bibliografia
[1] http://www.redeprof.cba.ifmt.edu.br/~mario/Encoder%20%5BModo%20de%20 Compatibilidade%5D.pdf [2] http://hades.mech.northwestern.edu/index.php/Rotary_Encoder [3] http://digital.ni.com/public.nsf/allkb/C6C6632A54DBA7DD86256275005E18E 2 [4] http://en.wikipedia.org/wiki/Servomotor [5] http://www.galilmc.com/products/servo-motor.php [6] http://pt.wikipedia.org/wiki/Ponte_H [7] http://engispot.blogspot.pt/2012/05/making-h-bridge-motor-driver.html [8] http://engispot.blogspot.pt/2012/05/making-h-bridge-motor-driver.html [9] http://pt.wikipedia.org/wiki/Controlador_proporcional_integral_derivativo [10] [11] [12] [13] [14] [15] http://en.wikipedia.org/wiki/PID_controller http://en.wikipedia.org/wiki/PID_controller http://arduino.cc/en/Main/Products http://www.pololu.com/file/0J504/VNH5019A-E.pdf http://www.datasheetarchive.com/HEDS-9X01-datasheet.html http://pt.wikipedia.org/wiki/Interrup%C3%A7%C3%A3o_de_hardware

Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: jaime@dei.uminho.pt

22

Você também pode gostar