CONTROLO DE SERVOMOTORES PARA MÁQUINA DE PROTOTIPAGEM RÁPIDA

download CONTROLO DE SERVOMOTORES PARA MÁQUINA DE PROTOTIPAGEM RÁPIDA

of 24

description

O presente trabalho tem como principal objetivo implementar um sistema que permita o controlo dos eixos X e Y da máquina de prototipagem rápida AIDA Z CORPORATION Z402. Para tal, fazer-se-á uso da cadeia cinemática já implementada na referida máquina, bem como dos seus motores e encoders. O controlo propriamente dito será implementado em Arduino, que é uma plataforma de prototipagem eletrónica de hardware livre. Nesta revisão, é possível enviar o tinteiro para uma posição específica.

Transcript of CONTROLO DE SERVOMOTORES PARA MÁQUINA DE PROTOTIPAGEM RÁPIDA

  • Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: [email protected]

    i

    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: [email protected]

    ii

    ndice

    1 Resumo ..................................................................................................................... 1

    2 Conceitos tericos .................................................................................................... 2

    2.1 Encoder incremental .......................................................................................... 2

    2.2 Servomotor ......................................................................................................... 3

    2.3 Ponte H .............................................................................................................. 4

    2.4 Controlo PID ...................................................................................................... 5

    3 Componentes escolhidos .......................................................................................... 7

    3.1 Escolha do hardware para processamento de dados.......................................... 7

    3.2 Escolha do driver / ponte H ............................................................................... 7

    4 Parte experimental .................................................................................................. 10

    4.1 Ligao dos encoders ....................................................................................... 10

    4.2 Comando dos motores do eixo X e Y .............................................................. 13

    4.3 Controlo ON/OFF do motor do eixo Y ............................................................ 14

    4.4 Controlo PID do motor do eixo Y ................................................................... 14

    4.5 Controlo PID dos motores do eixo X e Y ........................................................ 17

    4.6 Controlo PID dos motores do eixo X e Y com coordenadas variveis ............ 17

    5 Dificuldades encontradas ........................................................................................ 20

    6 Melhorias a implementar ........................................................................................ 21

    7 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: [email protected]

    1

    1 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: [email protected]

    2

    2 Conceitos tericos

    2.1 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: [email protected]

    3

    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: [email protected]

    4

    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: [email protected]

    5

    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: [email protected]

    6

    velocidade antecipativa pela ao derivativa. Os termos proporcional, integral e

    derivativo so somados para calcular a sada do controlador PID. Definindo como

    a sada do controlador, a forma final do algoritmo PID consiste.[9]

    Onde:

    : Ganho proporcional, parmetro a definir;

    : Ganho integral, parmetros a definir;

    : Ganho derivativo, parmetro a definir,

    : Erro estado pretendido estado atual;

    : Tempo atual;

    : Varivel de integrao; assume valores deste , at ao tempo atual.[10]

    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: [email protected]

    7

    3 Componentes escolhidos

    3.1 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: [email protected]

    8

    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 Vin (V) Icontinuos (A) Imax (A)

    PITTMAN 14205D646-R1 24 VDC 3,6 A 24,6 A

    PITTMAN 8312G893-R2 24 VDC 1,1 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: [email protected]

    9

    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: [email protected]

    10

    4 Parte experimental

    4.1 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: [email protected]

    11

    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 alter-

    lo. 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 ChB VCC ChA NC GND

    Descrio Canal B 5V Canal A No ligado Massa

    Cor

    No ligado

    Descrio 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

    1 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]

    EIXO X

    EIXO Y

  • Universidade do Minho Departamento de Eletrnica Industrial Campus de Azurm 4800-058 Guimares Tel.: +351 253 604 701 - Fax: +351 253 510 189 - email: [email protected]

    12

    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: [email protected]

    13

    Tabela 3 Esquema de ligaes dos dois encoders Arduino Mega

    Pin encoders Pin Arduino Cor

    5V encoders eixo X e Y 5V Laranja

    GND encoders eixo X e Y GND Azul

    Canal A encoder eixo X 21 Verde

    Canal B encoder eixo X 20 Laranja e branco

    Canal A encoder eixo Y 19 Verde

    Canal B encoder eixo Y 18 (Arduino) 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: [email protected]

    14

    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 Pin driver Cor

    V+ motor eixo Y M2A Preto e vermelho

    GND motor eixo Y M2B Preto

    V+ motor eixo X M1A Vermelho

    GND motor eixo X M1B 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: [email protected]

    15

    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-pid-

    library/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: [email protected]

    16

    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: [email protected]

    17

    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;

    O programa em Arduino inclusse a biblioteca Encoder.h,

    DualVNH5019MotorShield.h, e interligasse as variveis associadas ao

    encoder e o motor s variveis do PID.

    Utilizamos ento o programa para a 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: [email protected]

    18

    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: [email protected]

    19

    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 Pin Arduino e driver Cor

    V+ motor eixo Y M2A (driver) Preto e vermelho

    GND motor eixo Y M2B (driver) Preto

    V+ motor eixo X M1A (driver) Vermelho

    GND motor eixo X M1B (driver) Preto

    5V encoders eixo X e Y 5V (Arduino) Laranja

    GND encoders eixo X e Y GND (Arduino) Azul

    Canal A encoder eixo X 21 (Arduino) Verde

    Canal B encoder eixo X 20 (Arduino) Laranja e branco

    Canal A encoder eixo Y 19 (Arduino) Verde

    Canal B encoder eixo Y 18 (Arduino) 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-shield-

    for-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: [email protected]

    20

    5 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: [email protected]

    21

    6 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: [email protected]

    22

    7 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] http://en.wikipedia.org/wiki/PID_controller

    [11] http://en.wikipedia.org/wiki/PID_controller

    [12] http://arduino.cc/en/Main/Products

    [13] http://www.pololu.com/file/0J504/VNH5019A-E.pdf

    [14] http://www.datasheetarchive.com/HEDS-9X01-datasheet.html

    [15] http://pt.wikipedia.org/wiki/Interrup%C3%A7%C3%A3o_de_hardware