Você está na página 1de 59

UNIVERSIDADE ESTADUAL DE CAMPINAS

FACULDADE DE ENGENHARIA MECNICA


ENGENHARIA DE CONTROLE E AUTOMAO
Projeto, Montagem e Caracterizao de
Motor Linear de Im Permanente
ES952 Trabalho de Graduao II
Fevereiro de 2009
Orientador: Prof. Dr. Luiz Otvio Saraiva Ferreira DMC/FEM/UNICAMP
Aluno: Hugo Sakai Idagawa RA: 024034
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Agradecimentos:
Agradeo ao meu orientador, Prof. Dr. Luiz Otvio Saraiva Ferreira, que me guiou
ao longo do desenvolvimento deste trabalho.
Ao Prof. Dr. Pablo Siqueira Meirelles pela sua co-orientao neste trabalho.
Ao Geraldo Paladini Salustiano pela construo do prottipo do motor linear.
Ao Marclio Messias da Silveira pela ajuda durante a confeco da eletrnica do
motor.
Aos meus colegas do Laboratrio do Departamento de Mecnica Computacional
(FEM UNICAMP) pelos diversos momentos de descontrao.
i
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
RESUMO:
Em diversas aplicaes de engenharia necessrio o uso de movimento linear,
assim o uso de um motor linear nesses casos oferece a perspectiva de simplificao do
projeto em relao aos sistemas acionados com motores rotativos, devido inexistncia
de um sistema de converso do movimento rotativo em linear (engrenagens, correias,
etc).
Nesse contexto foi realizado esse trabalho que teve como objetivo o projeto e a
caracterizao de um motor linear, baseado no modelo desenvolvido pela Philips. Esse
tipo de motor possui um projeto de montagem bastante simples e adequado para
aplicaes que no excedam os 500mm.
Palavras-chave: motor linear, movimento linear, motor Philips
ii
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Sumrio
Lista de Figuras................................................................................................................v
Lista de Tabelas..............................................................................................................vi
1. Introduo....................................................................................................................1
2. Apresentao do motor................................................................................................5
2.1. Desempenho e limitaes....................................................................................5
2.2. Modelo eletromagntico.......................................................................................5
2.2.1. Campo magntico efetivo.............................................................................7
2.2.2. Campo nos ncleos de ferro........................................................................8
2.3. Modelo mecnico..................................................................................................9
3. Projeto do motor........................................................................................................10
3.1. Dimensionamento do enrolamento:....................................................................11
3.2. Clculo do campo efetivo BE:.............................................................................12
3.3. Clculo da corrente mxima Imx:.....................................................................13
3.4. Clculo da fora de trao do motor:..................................................................13
4. Bancada de Testes....................................................................................................15
4.1. Controle e Comando...........................................................................................15
4.2. Acionamento.......................................................................................................15
4.3. Aquisio............................................................................................................15
5. Mtodos Experimentais.............................................................................................17
5.1. Caracterizao eltrica.......................................................................................17
5.2. Caracterizao eletromagntica.........................................................................17
5.3. Caracterizao mecnica...................................................................................18
6. Resultados.................................................................................................................19
6.1. Propriedades eltricas........................................................................................19
6.2. Propriedades eletromagnticas..........................................................................20
6.3. Propriedades mecnicas....................................................................................21
6.4. Modelos finais.....................................................................................................23
iii
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
7. Aplicao...................................................................................................................24
8. Concluses................................................................................................................25
9. Referncias Bibliogrficas.........................................................................................26
10.Apndices.................................................................................................................27
11.Anexo........................................................................................................................52
iv
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Lista de Figuras
Figura 1: Ilustrao do processo "imaginrio" de obteno de um motor linear..............1
Figura 2: Classificao dos motores lineares segundo a sua fonte de excitao............2
Figura 3: Classificao dos motores lineares segundo a sua geometria.........................3
Figura 4: Diagrama esquemtico do motor linear da Philips............................................4
Figura 5: Circuito eltrico equivalente do motor...............................................................5
Figura 6: Representao dos campo magnticos do motor. Fonte [6]............................6
Figura 7: Visualizao dos campos considerados no modelo do motor. Fonte [6]..........8
Figura 8: Diagrama de foras agindo sobre o motor........................................................9
Figura 9: Estrutura do motor linear................................................................................10
Figura 10: Disposio do enrolamento..........................................................................11
Figura 11: Prottipo do motor linear...............................................................................14
Figura 12: Motor linear com sua instrumentao: (1) Encoder, (2) Ponte H, (3) PIC....16
Figura 13: Medidas experimentais para determinar Ra e reta de ajuste.......................19
Figura 14: Curvas de decaimento da tenso sobre Rs, para determinao de La........20
Figura 15: Visualizao das linhas de campo para diferentes posies do cursor........20
Figura 16: Curva do motor deslocando-se a uma velocidade constante de 348 mm/s..21
Figura 17: Dados experimentais para a determinao da massa do cursor..................22
Figura 18: Resposta em malha fechada do sistema, sem controlador (esquerda) e com
controlador, Kp=6 (direita).............................................................................................24
v
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Lista de Tabelas
Tabela 1: Dimenses do motor linear............................................................................11
Tabela 2: Enrolamento e caractersticas dos fios..........................................................12
Tabela 3: Propriedades dos ms..................................................................................12
Tabela 4: Corrente mxima (Imx) para cada enrolamento...........................................13
Tabela 5: Fora de trao resultante.............................................................................14
vi
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 1
Introduo
Em diversas aplicaes de engenharia necessrio utilizar-se de diferentes tipos
de acionamentos (hidrulicos, pneumticos e eltricos) para produzir movimento o qual
ser empregado para realizar diferentes tarefas, como o posicionamento de peas e o
transporte/deslocamento de cargas. Dentro desse grupo de acionamentos esto os
acionamentos eltricos, onde se encontram as mquinas eltricas que so dispositivos
capazes de converter energia eltrica em energia mecnica (motores) ou vice-versa
(geradores). Assim como os diferentes tipos de acionamento, os motores tambm podem
ser classificados em dois grupos com base no tipo de movimento que produzem: os
motores rotativos e os motores lineares, que so o foco de estudo desse trabalho.
Os motores lineares pertencem ao grupo de mquinas eltricas que convertem
diretamente a energia eltrica em energia mecnica sob a forma de movimento de
translao. Assim, diferentemente dos motores rotativos, os motores lineares so capazes
de produzir um movimento linear, sem a necessidade de acoplamentos mecnicos como
correias ou conjuntos de engrenagens, o que resulta em maior preciso, maior acelerao
e maior repetibilidade no posicionamento de sua parte mvel. Alm disso, ao reduzir o
nmero de partes mveis no sistema, menos peas sofrero desgaste e,
conseqentemente, menos tempo de manuteno ser necessrio.
Apesar de serem menos comuns que os motores rotativos, os motores lineares
esto sendo utilizados para vrias aplicaes como na propulso de trens Maglev [1],
posicionamento de peas em linhas de fabricao e em mquinas CNC.
Um motor linear pode ser visto com um motor rotativo tradicional que teve o seu
estator cortado radialmente e depois desenrolado (Figura 1). A parte mvel
normalmente conhecida como cursor (forcer) ou secundrio (no caso de motores
lineares de induo) e a parte fixa chamada de pista ou primrio (tambm para o caso
de motores lineares de induo).
1
Figura 1: Ilustrao do processo "imaginrio" de obteno de um motor linear
S N S N
S N
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
O funcionamento desses motores semelhante ao dos motores rotativos, no qual
uma fora eletromagntica decorrente da interao entre a corrente no enrolamento do
motor e um campo magntico produz o deslocamento do cursor. Dessa forma, a fora e a
velocidade de deslocamento que o motor produz podem ser consideradas como fatores
de desempenho para esse tipo de motor.
Atualmente existem motores lineares com diferentes estruturas e tecnologias de
construo [2, 3, 4], cada uma visando atender requisitos de desempenho diferentes.
Apesar dessa grande variedade, possvel classificar os motores lineares segundo duas
caractersticas: a sua fonte de excitao e a sua geometria [5].
Segundo sua fonte de excitao, os motores lineares podem ser divididos em trs
grandes grupo: motores lineares de induo (ou assncronos), motores lineares sncronos
e motores lineares DC, sendo que esses ltimos ainda podem ser subdivididos em
motores DC com escova, sem escova e de passo (Figura 2).
Os motores lineares de induo funcionam pelo mesmo princpio da gaiola de
esquilo dos motores rotativos de induo: um campo magntico produzido pelo primrio
do motor ir induzir correntes no seu secundrio. A interao desse campo com as
correntes provocar o aparecimento de uma fora no sentido de propagao do campo
magntico, que impulsionar o motor para frente. Esse tipo de motor apresenta alta
velocidade de deslocamento e fora de trao praticamente constante ao longo de todo o
seu curso, porm no ideal onde o posicionamento seja um requisito essencial do
projeto. Para os outros dois motores, a excitao ocorre por uma fonte independente
como ms permanentes ou bobinas. A diferena entre um motor sncrono e um DC a
forma de onda de sua fonte de alimentao: o primeiro apresenta uma forma de senoidal
(fonte AC), enquanto o segundo uma forma de onda quadrada (fonte DC).
Dentre os motores DC, os motores com escova possuem bom desempenho em
termos de fora e velocidade, alm de no necessitarem de dispositivos externos para
serem operados, devido utilizao de escovas para realizar a comutao de seus
2
Figura 2: Classificao dos motores lineares segundo a sua fonte de excitao
Motor Linear
Induo
DC
Sncrono
Com escova Sem escova Passo
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
enrolamentos. A grande desvantagem desse motor o seu custo de construo e
manuteno, pois os enrolamentos devem percorrer todo o curso do motor e suas
escovas sofrem desgaste durante a operao. J os motores sem escova apresentam as
mesmas caractersticas de desempenho que os motores lineares com escova, porm
utilizam-se de uma eletrnica externa para realizar a comutao dos enrolamentos, o que
aumenta a confiabilidade do sistema. O ltimo tipo de motor linear DC o motor linear DC
de passo, o qual ideal para aplicaes onde uma alta resoluo no deslocamento seja
necessria e onde deseja-se tambm o controle de posicionamento em malha aberta;
porm esse tipo de motor possui uma limitao em sua velocidade e fora de trao,
sendo indicado para deslocar pequenas cargas.
Segundo a sua geometria, os motores lineares podem ser divididos em: planos
(flat), de canal em U e tubulares. Alm disso, os motores planos e os de canal em U
ainda podem ser divididos de acordo com a construo de seus cursores em: slotless
ironless (ou aircore), slotless iron e slotted iron [5] (Figura 3).
Cada uma das configuraes acima foi desenvolvida com o objetivo de prover
diferentes condies de desempenho (velocidade, acelerao, fora, suavidade no
movimento, preciso no posicionamento, etc), tornando-se necessrio, assim, fazer um
estudo mais aprofundado para se realizar a escolha do motor adequado para cada tipo de
aplicao.
Um outro tipo de motor linear desenvolvido nos laboratrios da Philips foi proposto
por L. Honds e K.H. Meyer [6], em 1982, cuja configurao est esquematizada pela
Figura 4. A grande vantagem desse motor a sua construo extremamente simples: sua
pista de deslocamento formada por trs ncleos de ferro, o qual somente o ncleo
central possui um enrolamento, e o seu cursor constitudo por dois ms permanentes
cada um localizado entre dois ncleos de ferro. Neste motor o ncleo de ferro central
possui duas vezes a largura dos ncleos externos, garantindo assim, que a densidade de
fluxo magntico seja igual nos trs ncleos.
3
Figura 3: Classificao dos motores lineares segundo a sua geometria
Motor Linear
Tubular
Plano
Canal em U
Slotless ironless Slotless iron Slotted iron
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Com base no trabalho desenvolvido por L. Honds e K.H. Meyer, ser construdo
um prottipo desse motor, o qual passar por uma srie de testes com o objetivo de
caracteriz-lo e validar, assim, o seu modelo matemtico.
4
Figura 4: Diagrama esquemtico do motor linear da Philips
A
A A
B
C
A ncleos de ferro
B ms permanentes
C enrolamento de cobre
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 2
Apresentao do motor
Neste captulo sero discutidas as principais caractersticas do motor, suas
limitaes e os fatores que podem influenciar no seu desempenho. Alm disso, sero
apresentados os modelos eletromagntico e mecnico, que sero utilizados no
dimensionamento e caracterizao do prottipo do motor.
2.1. Desempenho e limitaes
O projeto desse motor visa garantir uma fora de trao constante ao longo de todo
o seu curso e um deslocamento do cursor bastante suave. Em razo do enrolamento
estar presente no ncleo central, no h necessidade de se fornecer corrente s partes
mveis, o que simplifica ainda mais a sua fabricao. Embora esse motor no tenha um
limite terico para o seu curso mximo, na prtica ele no adequado para aplicaes
cujo curso total exceda 500 mm, pois as suas dimenses e peso tornam a sua fabricao
economicamente invivel.
2.2. Modelo eletromagntico
Da mesma forma que nos motores rotativos, pode-se simplificar o modelo eltrico
do motor como sendo um circuito formado por uma resistncia (Ra), uma indutncia (La) e
uma fora contra-eletromotriz (Fcem) em srie (Figura 5).
O comportamento do circuito acima pode ser descrito pela Equao 1 abaixo, a
qual relaciona a tenso de entrada com os parmetros Ra, La e Fcem. Da mesma forma que
nos motores rotativos, espera-se que a fora contra-eletromotriz do motor linear seja uma
funo das velocidade de deslocamento do seu cursor.
5
Figura 5: Circuito eltrico equivalente do motor
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
V t =R
a
i t L
a
di t
dt
F
cem
(1)
O circuito eltrico apresentado anteriormente importante pois a partir dele pode-
se calcular a corrente que circula pelo motor e a sua constante de tempo eltrica. Esses
dois parmetros so teis no dimensionamento da eletrnica que ser utilizada para
acionar o motor.
Alm do circuito eltrico equivalente do motor, necessrio conhecer o seu modelo
eletromagntico, pois atravs dele que ser possvel calcular a fora produzida pelo
motor em funo da corrente que circula por seu enrolamento e da interao dos campos
dos ms permanentes. Essa relao obtida aplicando-se o princpio da Fora de
Lorentz (Equao 2) na regio do campo magntico efetivo (BE) do motor (Figura 6).
dF=I dl B (2)
Ao aplicar a Equao 2, algumas simplificaes no modelo foram consideradas,
como a no influncia do campo disperso (BGE) e do campo de retorno (BG) sobre a fora
resultante. Aps essas simplificaes, a equao final para o clculo da fora ser dado
pela Equao 3 a seguir:
6
Figura 6: Representao dos campo magnticos do motor. Fonte [6]
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
F=
l
m
l
wIB
E
b (3)
onde: l
m
= comprimento dos ms [m]
l = metade do comprimento total do motor [m]
w = nmero de espiras no enrolamento
I = corrente no enrolamento [A]
B
E
= campo magntico efetivo [T]
b = altura dos ncleos de ferro [m]
A partir da Equao 3, observa-se que a fora resultante pode ser facilmente obtida
a partir dos parmetros construtivos do prprio motor. Um ltimo parmetro necessrio
para o clculo da fora sobre os ms o do campo magntico efetivo (BE), o qual deve
ser assumido constante por todo o curso do motor para que a fora de trao tambm
seja constante durante deslocamento de seu cursor.
2.2.1. Campo magntico efetivo
De forma semelhante ao clculo da fora resultante do motor, algumas
simplificaes foram levadas em considerao, pois considerou-se apenas a influncia
dos campos uniformes gerados pelos ims permanentes e entre os ncleos de ferro para
o clculo do campo magntico efetivo BE. Sob essas condies, o campo BE ser dado
pela Equao 4 abaixo:
B
E
=
B
r

E

M
1
(4)
onde: B
r
= campo remanente do m [T]

G
= permeabilidade do fluxo de retorno [Wb/A]

E
= permeabilidade do espaamento entre os ms e o ncleo central [Wb/A]

M
= permeabilidade do fluxo dentro dos ms [Wb/A]
O valor das permeabilidades magnticas
G
,
E
e
M
so obtidas a partir das
equaes abaixo:

G
=

r
2l b

(5) ;
E
=

r
l
m
b

E
(6) ;

M
=
B
r
l
m
b
H
c
..
d
m
(7)
onde:
0
= permeabilidade do vcuo (4.10
-7
H/m)

r
= permeabilidade relativa do meio
= distncia entre ferros [m]

E
= distncia entre os ms e o ncleo central [m]
7
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
B
r
= campo remanente do m [T]
l = metade do comprimento total do motor [m]
l
m
= comprimento dos ms [m]
b = altura das barras de ferro [m]
H
C
*
= campo coercitivo aparente [kA/m]
d
m
= espesura dos ms [m]
2.2.2. Campo nos ncleos de ferro
Apesar do campo magntico existente nos ncleos de ferro no influenciar
diretamente na fora que o motor ir proporcionar, o seu conhecimento importante para
se calcular a corrente mxima (Imx) nos enrolamentos que ir fazer com que os ncleos
atinjam a saturao magntica. A partir desse ponto, um aumento da corrente no motor
no ser acompanhado por um igual aumento no campo magntico efetivo e,
conseqentemente, no resultar em um aumento da fora do motor.
O campo induzido total nos ncleos de ferro (BT) igual soma da induo devida
aos ms (Bc) com a induo devida ao enrolamento (BI) e pode ser obtido aplicando-se a
Equao 8 abaixo:
8
Figura 7: Visualizao dos campos considerados no modelo do motor. Fonte [6]
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
B
T
=B
C
B
I
=
l
m
a
B
E

w I l
0
4a
(8)
onde: l
m
= comprimento dos ms [m]
B
E
= induo magntica efetiva [T]
a = largura dos ncleos de ferro [m]
w = nmero de espiras no enrolamento
I = corrente no enrolamento [A]
l = metade do comprimento total do motor [m]

0
= permeabilidade do vcuo (4.10
-7
H/m)
= distncia entre os ncleos de ferro [m]
2.3. Modelo mecnico
Mecanicamente, o motor foi modelado como uma massa (cursor) submetida a uma
fora de trao F e a uma fora de atrito, a qual foi considerada proporcional velocidade
de movimentao do cursor (atrito viscoso). Sob essas condies, o movimento do cursor
se resume ao movimento de um sistema massa-amortecedor (Figura 8) e pode ser
representado pela Equao 9.
F
motor
=m
d
2
x
dt
2
B
dx
dt
(9)
9
Figura 8: Diagrama de foras agindo sobre o motor
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 3
Projeto do motor
As principais caractersticas que influem no dimensionamento do motor estudado
so: a fora que atua nos ms permanentes, o campo efetivo do motor e o campo nos
ncleos de ferro. A Figura 9 esquematiza as principais variveis utilizadas no processo de
dimensionamento do motor.
Para um prottipo inicial do motor, partiu-se de ncleos de ferro com 100 mm (2l)
de comprimento e utilizou-se ms de Neodmio de grau 28 (NdFeB 28). Na Tabela 1
encontram-se todas as dimenses do motor que sero utilizadas na especificao do seu
enrolamento e no clculo de sua fora de trao.
10
Figura 9: Estrutura do motor linear
2l
l
m
a
2a
a
B
E
B
E

E
d
m
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Tabela 1: Dimenses do motor linear
Grandeza Valor
Largura dos ncleos laterais (a) 25 mm
Comprimento total dos ncleos (2l) 100 mm
Altura dos ms e dos ncleos (b) 25 mm
Espao entre ncleos () 14 mm
Comprimento dos ms (l
m
) 25 mm
Espessura dos ms (d
m
) 8 mm
Distncia entre os ms e o ncleo central (
E
) 3 mm
Espessura do enrolamento (d
w
) 6 mm
3.1. Dimensionamento do enrolamento:
Para se dimensionar o enrolamento do motor, deve-se especificar o nmero de
espiras e o tipo de fio de cobre utilizado. Para isso, considerou-se que os fios de cobre
estaro distribudos conforme a Figura 10 e, em seguida, calculou-se a rea ocupada por
uma pequena regio do enrolamento:
Clculo da rea LH:
L=2d
'
H=h2
d
'
2
=d
'
1sen60
o

A=LH=2d
' 2
1sen60
o

Atravs da Figura 10, observa-se que dentro da regio LH passam 4 fios de cobre
(3 inteiros mais 2 metades), assim, possvel estimar o nmero de voltas do enrolamento
11
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
conhecendo-se a rea disponvel e o dimetro do fio de cobre.
No caso do motor projetado, a rea disponvel para o enrolamento de 600 mm
2
(2l *d
w
) e, para o dimetro do fio, utilizou-se a especificao AWG. A Tabela 2 apresenta o
nmero de voltas do enrolamento para diferentes fios, juntamento com as caractersticas
dos mesmos.
Tabela 2: Enrolamento e caractersticas dos fios
AWG Dimetro interno (mm) Dimetro externo (mm)
Corrente mx.
(A)
N de voltas
(w)
18 1,024 1,075 2,5 555
17 1,150 1,207 3,2 440
16 1,290 1,395 3,7 350
15 1,450 1,509 4,8 280
14 1,628 1,692 6,0 225
13 1,829 1,886 7,5 180
12 2,052 2,111 9,5 145
Antes de se fazer a escolha do tipo de fio, necessrio conhecer a fora resultante
que cada enrolamento ir produzir e a corrente I
mx
que ir produzir a saturao dos
ncleos de ferro.
3.2. Clculo do campo efetivo B
E
:
Para o clculo do campo efetivo, utilizou-se a Equao 4 e as propriedades dos
ms de Neodmio apresentadas na Tabela 3.
Tabela 3: Propriedades dos ms
Grandeza Valor
Campo remanente (B
r
) 1,08 T
Campo coercitivo aparente (H
C
*
) 804 kA/m
Resultados dos clculos:

M
=1,05. 10
7
Wb/ A ;
G
=1,68. 10
7
Wb/ A ;
E
=1,96. 10
7
Wb/ A
B
E
=0,50T
12
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
3.3. Clculo da corrente mxima I
mx
:
No clculo da corrente mxima I
mx
utilizou-se a Equao 8 e considerou-se que a
saturao magntica dos ncleos igual a 2,16 T (saturao magntica do ferro),
obtendo-se assim, a equao abaixo:
I
mx
=
3698,8
w
(10)
De acordo com a Equao 10 acima, a corrente mxima no enrolamento depende
do nmero de espiras (w). Assim, a partir da Tabela 2 possvel determinar-se a corrente
mxima para cada enrolamento possvel no motor:
Tabela 4: Corrente mxima (I
mx
) para cada enrolamento
AWG
Corrente mx. suportada
pelo fio (A)
N de
voltas (w)
I
mx
(A)
18 2,5 555 6,7
17 3,2 440 8,4
16 3,7 350 10,6
15 4,8 280 13,2
14 6,0 225 16,4
13 7,5 180 20,6
12 9,5 145 25,5
Pela Tabela 4, percebe-se que a corrente na bobina limitada pela corrente
suportada pelo prprio fio e no corrente que ir provocar a saturao magntica dos
ncleos. Dessa forma, a saturao magntica dos ncleos no representa um empecilho
ao funcionamento do motor.
3.4. Clculo da fora de trao do motor:
Conhecendo-se o nmero de voltas no enrolamento e a corrente de alimentao,
possvel calcular a fora produzida pelo motor a partir da Equao 3. A Tabela 5,
apresenta os valores da fora para os diferentes enrolamentos, utilizando-se uma
corrente de alimentao igual a 3A e 5A:
13
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Tabela 5: Fora de trao resultante
AWG Fora (N) p/ I = 3A Fora (N) p/ I = 5A
18 --- ---
17 8,25 ---
16 6,56 ---
15 5,25 ---
14 4,22 7,03
13 3,38 5,63
12 2,72 4,53
Devido fonte de alimentao ser capaz de fornecer uma corrente mxima de 6A,
optou-se por projetar o motor para funcionar com uma corrente de 3A. Assim, os
enrolamentos que iro resultar na maior fora de trao utilizam os fios AWG 17 e 16.
Finalmente, escolheu-se o fio AWG 16 para se realizar o enrolamento, pois o
mesmo capaz de suportar uma corrente mxima maior que o AWG 17, dando uma
margem de segurana maior para o projeto.
Durante a construo do motor, por razes tcnicas, o enrolamento no pode ser
feito com a mesma configurao apresentada pela Figura 10. Entre cada camada do
enrolamento, teve de ser adicionado uma fina pelcula de papel, o que reduziu o fator de
empacotamento do enrolamento. No final, o enrolamento ficou com 286 espiras,
reduzindo a fora do motor para 5,36N, para uma corrente de 3A.
14
Figura 11: Prottipo do motor linear
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 4
Bancada de Testes
Aps a construo do motor, procedeu-se a montagem de uma instrumentao
necessria para a realizao dos ensaios no motor, a qual pode ser dividida em 3 partes:
uma primeira parte responsvel pelo controle e comando do motor, uma segunda parte
responsvel pelo acionamento do motor e uma ltima parte encarregada de realizar a
aquisio de dados.
4.1. Controle e Comando
O elemento principal da instrumentao foi construdo a partir do microcontrolador
PIC 18F452, sendo responsvel pela comunicao com todos os demais instrumentos.
Ele o responsvel por requisitar a posio atual do motor para o encoder, enviar um
comando de acionamento do motor para a ponte H e, finalmente, enviar essas
informaes ao usurio.
A comunicao do PIC com o usurio feita atravs da porta serial (RS232),
podendo ser operado atravs de um programa do tipo Hyperterminal. Durante o
funcionamento do motor, por ser necessrio realizar a aquisio em tempo real, o PIC foi
programado para operar com um intervalo de amostragem de 8ms.
4.2. Acionamento
Para o acionamento do motor, optou-se por construir uma ponte H, a qual
receberia os comandos do PIC sob a forma de um sinal PWM por dois diferentes canais,
cada um permitindo que o motor se desloque para uma direo.
O sinal PWM utilizado, possui um perodo de 1ms e possui uma resoluo de
10bits.
4.3. Aquisio
Para a aquisio da posio do motor, foi construdo um encoder linear a partir de
um mouse ps/2. Embora exista a vantagem de se obter diretamente o valor da posio ao
se utilizar o mouse, existe a dificuldade de se programar o protocolo ps/2 no PIC, alm de
existir a limitao do tempo mnimo de aquisio, limitado pela velocidade desse
protocolo (8ms). A leitura do encoder foi feita a partir de uma pista impressa com
resoluo de 0,4mm.
Alm do encoder, um gaussmetro foi utilizado para a medio dos campos
15
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
magnticos do motor.
16
Figura 12: Motor linear com sua instrumentao: (1) Encoder, (2) Ponte H, (3) PIC
(1)
(2)
(3)
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 5
Mtodos Experimentais
Neste captulo sero discutidos os mtodos empregados para a determinao das
principais caractersticas eltricas, eletromagnticas e mecnicas dos motor.
5.1. Caracterizao eltrica
Utilizando-se da Equao 1, possvel determinar as constantes do modelo
eltrico do motor. Ao se manter o cursor do motor preso, a fora contra-eletromotriz se
reduzir a zero, eliminando-se assim, uma varivel da equao. Semelhantemente,
quando o motor atingir o regime permanente, sua corrente ir se estabilizar e o termo da
indutncia La tambm ir desaparecer. Dessa forma, possvel determinar Ra aplicando-
se uma tenso conhecida no motor e medindo-se a corrente que passa por seus
enrolamentos. O valor de Ra ser dado pela relao entre a tenso e a corrente medidas.
Considerando-se ainda a Equao 1 e mantendo o cursor do motor preso, o valor
da indutncia ser obtido atravs da medio da resposta transiente do circuito. Para
isso, adiciona-se uma resistncia Rs,de valor conhecido, em srie com o motor e mede-se
a queda de tenso sobre a mesma. Com esse dado em mos, pode-se determinar
graficamente a constante de tempo do motor (tempo necessrio para que a tenso caia
a 37% do seu valor inicial) e assim, calcular o valor de La atravs da Equao 11 abaixo:
=
L
a
R
a
R
s
(11)
5.2. Caracterizao eletromagntica
Para a caracterizao eletromagntica do motor, ser utilizado um gaussmetro
para medir os diferentes campos existentes no motor. Os campo magnticos de interesse
para validar o modelo eletromagntico do motor so o campo efetivo (BE) e o campo de
retorno (BG). Para esses dois campos, seus valores sero medidos com o cursor em
diferentes posies e com o motor sob diferentes tenses de alimentao.
Devido a inexistncia de uma instrumentao para medir a fora exercida pelo
motor, o campo efetivo medido diretamente pelo gaussmetro ser utilizado para estimar a
fora produzida pelo motor.
17
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
5.3. Caracterizao mecnica
Partindo-se da equao de movimento do motor (Equao 9), deve-se inicialmente
determinar o coeficiente de atrito viscoso B do sistema. Para isso, deve-se colocar o
motor em movimento de forma que a sua velocidade esteja constante. Assim, elimina-se o
termo da acelerao e pode-se determinar esse coeficiente conhecendo-se a forma que o
motor est produzindo e a sua velocidade (Equao 12).
B=
F
motor
V
(12)
Com o valor do coeficiente de atrito disponvel, pode-se determinar a massa do
motor pois a relao entre a massa e o coeficiente de atrito estabelece a taxa de
decaimento da velocidade do cursor do motor (sistema de primeira ordem). Assim, de
forma semelhante determinao da indutncia, a massa do motor obtida medindo-se
a constante de tempo mecnica do motor (obtida a partir do decaimento da velocidade)
e aplicando-se, em seguida, a Equao 13 abaixo:
=
m
B
(13)
18
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 6
Resultados
6.1. Propriedades eltricas
Seguindo-se o procedimento definido no captulo anterior, calculou-se Ra a partir de
uma seqncia de medidas para a tenso e a corrente no motor. Em seguida realizou-se
o ajuste linear dos dados, obtendo-se assim o valor de Ra a partir da inclinao da reta de
ajuste (Figura 13).
Ao realizar a regresso linear dos dados, o valor de Ra obtido foi de (1,110,04) ,
utilizando-se um intervalo de confiana igual a 95%.
Da mesma forma que na determinao da resistncia do enrolamento, trs
seqncias de medidas foram tomadas para a determinao de La. A diferena entre elas
est na tenso de alimentao a qual foi submetido o motor (Figura 14). Nestes testes, a
resistncia em srie (RS) utilizada possua um valor de 27,82 .
19
Figura 13: Medidas experimentais para determinar R
a
e reta de ajuste.
1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5
0
1
2
3
4
5
6
Tenso (V) x Corrente (A)
Experimental
Regressao linear
Corrente (A)
T
e
n
s

o

(
V
)
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
A partir dos dados experimentais obtidos e utilizando-se a Equao 11, o valor da
indutncia do motor obtido foi de (0,2620,090) H.
Durante a medio da fora contra-eletromotriz, percebeu-se que ela no possui a
mesma relao que nos motores rotativos, pois ela apresentava sempre o mesmo valor
de 1,0V independentemente da tenso de alimentao e da velocidade de deslocamento
do motor.
6.2. Propriedades eletromagnticas
Utilizando-se o software de elementos finitos FEMM possvel realizar uma
avaliao qualitativa das linhas de campo magntico, atravs da observao da
densidade de linhas de campo para diferentes posies do cursor do motor (Figura 15).
20
Figura 14: Curvas de decaimento da tenso sobre R
s
, para determinao de L
a.
0.070 0.090 0.110 0.130 0.150
0.00
0.50
1.00
1.50
2.00
2.50
Taxa de decai mento da Tenso
Tempo ( s)
T
e
n
s

o
(
V
)
0.070 0.090 0.110 0.130
0.00
1.00
2.00
3.00
4.00
Taxa de decaimento
Tempo (s)
T
e
n
s

o
(V
)
0.1000.1200.1400.1600.1800.200
0.00
1.00
2.00
3.00
4.00
5.00
Taxa de decaimento
Tempo (s)
T
e
n
s

o
(
V
)
Figura 15: Visualizao das linhas de campo para diferentes posies do cursor
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Pela Figura 15 nota-se que existe uma concentrao muito maior de linhas de
campo na regio dos ms do que no resto dos ncleos, o que valida a hiptese de que o
campo de retorno (BG) tem pouca influncia sobre a fora resultante. Outra observao
relevante a de que existe a mesma densidade de linhas de campo na regio do campo
efetivo para diferentes posies do m, o que justifica a afirmao de que a fora de
trao do motor praticamente constante ao longo de todo o seu curso.
Experimentalmente, isso tambm foi comprovado ao ser realizado uma srie de
medies nessas regies do campo. Para o caso do campo efetivo BE, obteve-se o valor
de 0,40 T para qualquer posio do cursor, e para o campo de retorno BG, obteve-se o
valor de 0,020 T, o que representa apenas 5% do valor do campo efetivo. J o valor do
campo efetivo corresponde a 80% do valor terico calculado (0,50 T).
6.3. Propriedades mecnicas
Inicialmente foi determinado o valor do coeficiente de atrito viscoso do motor. Para
isso o motor foi alimentado de forma que o seu cursor apresentasse um deslocamento em
velocidade constante (Figura 16). Essas condies foram obtidas alimentando-se o motor
com uma tenso de 2,1 V, o que produziu uma fora de 2,54 N. Em seguida, aplicou-se a
Equao 12 utilizando os valores de fora e velocidade conhecidos, o que resultou em um
valor de (7,30,4) Ns/m.
Para o clculo da massa do cursor, o procedimento descrito no captulo 5 no foi
possvel de ser adotado em razo de o cursor parar de se deslocar muito rapidamente e,
como a taxa de amostragem do encoder baixa, no houve pontos suficientes para
21
Figura 16: Curva do motor deslocando-se a uma velocidade constante de 348 mm/s
0.000 0.020 0.040 0.060 0.080 0.100 0.120 0.140 0.160
-10
0
10
20
30
40
50
60
Posio (mm) x Tempo (s)
Experimental
Curva de ajuste
Tempo (s)
P
o
s
i

o

(
m
m
)
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
determinar a constante de tempo mecnica do sistema.
Dessa forma, o problema foi resolvido supondo que a fora de atrito sobre o cursor
era constante e igual obtida anteriormente (2,54N). Isso pode ser considerado pois,
devido ao curso limitado do motor, no h tempo suficiente para que ele acelere e atinja
velocidades altas para provocar uma diferena significativa da fora de atrito.
Sob essa condio, o modelo do motor fica simplificado a apenas uma massa
submetida a uma fora de trao. O valor da massa definido pela relao entre essa
fora resultante e a sua acelerao.
Para a determinao da massa do cursor, realizou-se uma srie de aquisies com
o motor submetido a diferentes tenses (Figura 17). Em seguida, os dados foram
ajustados por uma curva do tipo ax
2
, a partir da qual poderia ser obtido o valor da
acelerao, bastando simplesmente realizar a derivada segunda dessa curva.
A partir dos dados experimentais, foi possvel obter o valor de (0,3280,075) Kg
para a massa do cursor, a qual era estimada em cerca de 0,300 Kg.
22
Figura 17: Dados experimentais para a determinao da massa do cursor
0.000 0.020 0.040 0.060 0.080 0.100 0.120
-10
0
10
20
30
40
50 Posio (mm) x Tempo (s)
Tempo (s)
P
o
s
i

o

(
m
m
)
0.000 0.020 0.040 0.060 0.080 0.100
-10
0
10
20
30
40
50 Posi o (mm) x Tempo (s)
Tempo (s)
P
o
s
i

o

(
m
m
)
0.000 0.010 0.020 0.030 0.040 0.050 0.060 0.070 0.080 0.090
-10
0
10
20
30
40
50 Posio (mm) x Tempo (s)
Tempo (s)
P
o
s
i

o

(
m
m
)
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
6.4. Modelos finais
Com todas as constantes do motor determinadas, possvel escrever as diferentes
equaes que modelam o seu comportamento:
Modelo eltrico:
V =1,1i 0,262
di
dt
(14)
Modelo mecnico: F=1,43i =0,328
d
2
x
dt
2
7,3
dx
dt
(15)
As duas equaes acima ainda podem ser acopladas de forma a obter a relao
entre a posio do cursor e a tenso de entrada. Para isso, basta aplicar a Transformada
de Laplace na Equaes 14 e 15 e as igualar de forma a eliminar a varivel de corrente i.
Aps essa operao, a equao resultante, sob forma de uma funo de transferncia
representada pela Equao 16 abaixo:
P s=
x
V
=
1,43
0,328 s
2
7,3s0,262s1,1
(16)
A funo de transferncia acima importante pois permite que todo o sistema seja
simulado levando-se em conta as suas caractersticas eletromagnticas e mecnicas,
permitindo que a posio seja determinada com base no real sinal de controle do motor (a
tenso entre seus terminais).
23
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 7
Aplicao
A partir da Equao 16 possvel implementar um controle de posio em malha
fechada para o motor linear. Por se tratar de um sistema super-amortecido, ele estvel
em malha fechada e no precisa de um controlador para seguir o sinal de referncia,
conforme pode ser observado pela Figura 18.
Assim, apenas um controlador proporcional (Kp) suficiente para melhorar os
requisitos de desempenho do sistema controlado, como a reduo do tempo de
estabilizao e a ausncia de overshoot.
24
Figura 18: Resposta em malha fechada do sistema, sem controlador (esquerda) e com
controlador, Kp=6 (direita)
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Captulo 8
Concluses
Neste trabalho, foi projetado um motor linear, baseado no modelo desenvolvido
pela Philips, e sua instrumentao. Em seguida, procedeu-se a sua caracterizao, que
consistiu em ensaios e medies de seus campos magnticos, suas caractersticas
eltricas, sua massa e seu coeficiente de atrito. Ao final dos testes, foi possvel obter um
modelo que poderia ser utilizado para uma aplicao de controle de posio do motor.
Apesar de a instrumentao utilizada ter sido suficiente para demonstrar o
funcionamento do motor e a realizao de alguns testes de caracterizao, ela mostrou-
se bastante limitada para a determinao da constante mecnica do motor. Assim, seria
interessante realizar uma outra srie de testes com o motor utilizando-se uma
instrumentao mais adequada.
Os resultados dos testes foram satisfatrios de forma que foi possvel comprovar a
suposio de que a fora de trao do motor constante por todo o deslocamento do
cursor e a de que o campo de retorno tem pouca influncia no clculo dessa fora.
25
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Referncias Bibliogrficas
1 R.J. Kaye and E. Masada, Comparison of Linear Synchronousand Induction
Motors, Colorado MagLev Project 2004.
2 H2W Technologies Inc., Linear Motors Basics, 2006.
3 R.A.D. Oliveira, Desenho e Construo de um Motor Linear de Induo de Baixa
Velocidade, Universidade Nova de Lisboa, 2000.
4 B.C. Murphy, Design and Construction of a Precision Tubular Linear Motor and
Controller, Texas A&M University, 2003.
5 S. Chevailler, Comparative Study and Selection Criteria of Linear Motors, cole
Polytechnique Fdrale de Lausanne, 2006.
6 L. Honds and K.H. Meyer, A Linear DC Motor with Permanent Magnets, Philips
tech. Rev., 40, 329-337, 1982, No. 11/12, pp. 329-337.
26
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Apndices
Desenhos de fabricao do motor linear:
27
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
28
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
29
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
30
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
31
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
32
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
33
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Listagem do cdigo fonte do microcontrolador PIC:
#include <p18cxxx.h>
#include <timers.h>
#include <usart.h>
#include <stdlib.h>
#include <stdio.h>
#include <pwm.h>
#include <math.h>
#include <delays.h>
#pragma config WDT = OFF
#pragma config OSC = XT // mudar para HS se cristal 20MHz e XT para cristal de 4MHz
// Definio das portas utilizadas pelo ps/2
#define CLK_PS2 PORTDbits.RD0
#define DATA_PS2 PORTDbits.RD1
// Definio dos estados do processo principal
#define MENU_INICIAL 0
#define ESPERA_COMANDO 1
#define OPCAO1 2
#define OPCAO2 3
#define OPCAO3 4
#define OPCAO4 5
#define OPCAO5 6
#define OPCAO6 7
#define TESTANDO 100
#define ENTRADA_DADOS1 200
#define ENTRADA_DADOS2 201
#define ENTRADA_DADOS3 202
#define ENTRADA_DADOS4 203
// Definico dos estados para a mquina de entrada de dados
#define Mw 0
#define Mwn 1
#define Mwnn 2
#define Mwnnn 3
// Definio dos tipos de menu
#define MENU0 0
#define MENU1 1
#define MENU2 2
#define MENU3 3
#define MENU4 4
#define MENU5 5
34
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
#define MENU6 6
#define MENU7 7
#define MENU8 8
#define MENU9 9
// Definio da resoluo do encoder (em pulsos/mm)
#define RESOLUCAO 1.5 // Resoluo para fita de 0,40mm
unsigned int PWM_Duty_cycle, // Duty cicle do PWM (apenas 10bits so usados)
n; // Valor de aquisio atual
char Comando, // Comando recebido pela serial
valor[4]; // Comando recebido pela entrada de dados
unsigned char STT_Comando, // Estado do processo principal
STT_Dados, // Estado para a entrada de dados
Periodo_PWM, // Varivel para o perodo do PWM
SENTIDO, // Sentido de movimentao do motor
ENCODER, // Qual encoder foi escolhido (X ou Y)
DADO, // Posio dentro da matriz de dados
TRACKING, // Modo que indica se o motor move-se sozinho
TEST_ENCODER, // Indica se o encoder est ou no sendo testado
CONTROLE;
float Posicao, // Posio atual do motor
Velocidade, // Velocidade atual do motor
Posicao_desejada, // Posio para a qual o motor deve se mover
kp, // ganho do controlador
Erro_atual, // Erro atual na posio do motor
Erro_anterior, // Erro anterior na posio do motor
Erro_acumulador; // Integral do erro
#pragma udata bank1=0x100
int Dados_posicao[128]; // Matriz das posies - parte1
#pragma udata bank2=0x200
int Dados_posicao2[128]; // Matriz das posioes parte2
// Prottipos das funes usadas na rotina de interrupo.
void high_isr(void);
void low_isr (void);
void Init_ps2 (void);
void Escreve_ps2 (char data);
char Recebe_ps2 (void);
// Funes das mquinas de estado
void MaqComando (void);
void EntradaDados (void);
35
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
// Funes utilizadas pelas mquinas de estado
void DisplayMenuInicial (char menu);
void MotorMalhaAberta (void);
void MoverMotor (void);
void EnviarDados (void);
void Transmite (char DADO_TX);
char Recebe (void);
// Definio dos vetores de interrupo
#pragma code high_vector=0x08
void interrupt_high(void)
{
_asm GOTO high_isr _endasm
}
#pragma code low_vector=0x18
void interrupt_low(void)
{
_asm GOTO low_isr _endasm
}
#pragma code /* retorno seo de cdigo */
/*************************************************************************************
INCIO DA FUNO PRINCIPAL
*************************************************************************************/
void main( void)
{
PORTA = 0x00; TRISA = 0xDB;
PORTB = 0x00; TRISB = 0x0C;
PORTC = 0x00; TRISC = 0xB9;
PORTD = 0x00; TRISD = 0x03; // RD0 e RD1 so usados pelo ps/2
// RD0 = clk
// RD1 = data
PORTE = 0x00; TRISE = 0x00;
/* Inicializao da porta serial com velocidade de 19200 */
OpenUSART(USART_TX_INT_OFF&
USART_RX_INT_OFF&
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,
12 ); // para 9600 usar 25 com cristal de 4MHz
36
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
/*-------------- INICIALIZAO DOS PROCESSOS ------------------------------*/
STT_Comando = MENU_INICIAL;
STT_Dados = Mw;
SENTIDO = 0;
ENCODER = 0;
Periodo_PWM = 249; // Perodo de 250 Hz para cristal de 4 Mhz
PWM_Duty_cycle = 500; // Duty cycle de 2ms
DADO = 0;
TRACKING = 0;
TEST_ENCODER = 0;
n = 0;
Posicao = 0.0;
Erro_atual = 0.0;
Erro_anterior = 0.0;
Erro_acumulador = 0.0;
CONTROLE = 0;
/* Gerenciamento das interrupes */
RCONbits.IPEN = 1; // Habilita a checagem por prioridade de interrupo
INTCONbits.GIEH = 1; // Habilitao das interrupes de alta prioridade
INTCONbits.GIEL = 1; // Habilitao das interrupes de baixa prioridade
INTCON2bits.TMR0IP = 1; // Coloca a interrupo do TIMER0 em alta prioridade
IPR1bits.TMR1IP = 0; // Coloca a interrupo do TIMER1 em baixa prioridade
IPR2bits.TMR3IP = 1; // Coloca a interrupo do TIMER3 em alta prioridade
/* Configurao dos TIMERS */
OpenTimer1( TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_8 &
T1_OSC1EN_OFF);
WriteTimer1(65536-1000);
Delay100TCYx(10);
Init_ps2();
kp=5.0;
/*---------------------- Lao Principal infinito ------------------------------------*/
while (1)
{ }
}
/*************************************************************************************
FIM DA FUNO PRINCIPAL
*************************************************************************************/
//*****************************************************************************
/* ROTINA DE SERVIO DA INTERRUPCO DO TIMER0.
//******************************************************************************
37
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
// Funes das interrupes
#pragma interrupt high_isr
void high_isr (void)
{
// interrupo de alta prioridade
unsigned char status;
signed char mx;
signed char my;
float buffer;
char ack;
if (INTCONbits.TMR0IF) // Se o TIMER0 gerou um pedido de interrupo
{
WriteTimer0(65536-62); // delay de 0.008s (+atrasos);
INTCONbits.TMR0IF = 0;
Escreve_ps2(0xEB); // Pede dados para o encoder
ack = Recebe_ps2(); // ignora ack
status = Recebe_ps2(); // byte de status
mx = Recebe_ps2(); // leitura x
my = Recebe_ps2(); // leitura y
// Coloca em buffer qts mm o motor moveu-se desde a ltima leitura do encoder
//buffer = (ENCODER) ? (float)mx : (float)my;
buffer = (float) my;
buffer = buffer*RESOLUCAO;
// Atualiza a posio e erro
Posicao = Posicao + buffer;
//Erro_anterior = Erro_atual;
//Erro_atual = Posicao_desejada - Posicao;
if (n < 128)
Dados_posicao[DADO] = ((int) (Posicao * 100.0));
else
Dados_posicao2[DADO] = ((int) (Posicao * 100.0));
n++;
DADO++;
/* if (CONTROLE)
{
temp = kp*Erro_atual;
if (temp > 0)
{
SetDCPWM2((int)temp);
SetDCPWM1(0);
38
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
}
else
{
SetDCPWM1((int)temp);
SetDCPWM2(0);
}
}
*/
if (Posicao > 50.0)
{
// ClosePWM2();
// ClosePWM1();
// CloseTimer2();
PORTCbits.RC1 = 0;
PORTCbits.RC2 = 0;
if (!my)
{
CloseTimer0(); // Desabilita o timer0
OpenTimer1( TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT
& T1_PS_1_8 & T1_OSC1EN_OFF);
WriteTimer1(65536-25000);
}
}
}
}
#pragma interruptlow low_isr
void low_isr (void)
{
// interrupo de baixa prioridade
float buffer;
char status;
char mx;
char my;
char ack;
if (PIR1bits.TMR1IF) //gerou interrupo do TIMER1
{
WriteTimer1(65536-1000);
PIR1bits.TMR1IF = 0;
if (TEST_ENCODER == 0)
{
teste++;
if (teste > 49) // verificar se o LED pisca a cada 1s
39
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
{
PORTBbits.RB1 = !PORTBbits.RB1;
teste=0;
}
MaqComando();
EntradaDados();
}
else
{
Escreve_ps2(0xEB); // Pede dados para o encoder
ack = Recebe_ps2(); // ignora ack
status = Recebe_ps2(); // byte de status
mx = Recebe_ps2(); // leitura x
my = Recebe_ps2(); // leitura y
buffer = (float)my;
if (buffer)
{
buffer = (buffer*RESOLUCAO);
Posicao= Posicao + buffer;
buffer = buffer *100.0;
fprintf(_H_USART, "buffer: %d Pos: %d", (int)buffer,(int)
(Posicao*100.0));
Transmite (0x0D); Transmite (0x0A);
}
}
}
}
//*******************************************
// Funo para inicializar a comunicao PS/2
//*******************************************
void Init_ps2 (void)
{
TRISD = 0x00;
CLK_PS2 = 1;
DATA_PS2 = 1;
Escreve_ps2(0xFF); // Envia comando de reset
Recebe_ps2(); // Byte1 de ack - ignorado
Recebe_ps2(); // Byte2 de ack - ignorado
Recebe_ps2(); // Byte3 de ack - ignorado
Escreve_ps2(0xE8);
Recebe_ps2();
40
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Escreve_ps2(0x00);
Recebe_ps2();
Escreve_ps2(0xF0); // Envia comando de operao remota
Recebe_ps2(); // Byte1 de ack - ignorado
Delay100TCYx(1); // Delay de 100us
}
//*************************************
// Funo para enviar dados para o PS/2
//*************************************
void Escreve_ps2 (char data)
{
char i;
char paridade = 1;
DATA_PS2 = 1;
CLK_PS2 = 1;
TRISD = 0x03;
Delay100TCYx(3); // Delay de 300us
TRISD = 0x02;
CLK_PS2 = 0;
Delay100TCYx(3); // Delay de 300us
TRISD = 0x00;
DATA_PS2 = 0;
Delay10TCYx(1); // Delay de 10us
/* bit de start enviado */
TRISD = 0x01; // Coloca o clock como entrada e data como sada
/* espera o PS/2 gerar o clock */
while (CLK_PS2)
;
for (i=0; i < 8; i++)
{
if (data & 0x01)
DATA_PS2 = 1;
else
DATA_PS2 = 0;
while (CLK_PS2 == 0)
;
while (CLK_PS2)
41
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
;
paridade = paridade ^ (data & 0x01);
data = data >> 1;
}
/* paridade */
if (paridade)
DATA_PS2 = 1;
else
DATA_PS2 = 0;
while (CLK_PS2 == 0)
;
while (CLK_PS2)
;

/* bit de parada */
DATA_PS2 = 1;
// Delay100TCYx(5); // Delay de 50us
TRISD = 0x03;
while (DATA_PS2)
;
while (CLK_PS2)
;

while ((CLK_PS2 == 0) || (DATA_PS2 == 0))
;

// Termina a transmisso
TRISD = 0x02;
CLK_PS2 = 0;
}
//**********************************
// Funo para receber dados do PS/2
//**********************************
char Recebe_ps2 (void)
{
char data = 0x00;
char bit1 = 0x01;
char i;
TRISD = 0x03;
Delay10TCYx(5); // Delay de 50us

while (CLK_PS2)
42
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
;
Delay1TCY(); // Delay de 1us
Delay1TCY(); // Delay de 1us
Delay1TCY(); // Delay de 1us
Delay1TCY(); // Delay de 1us
Delay1TCY(); // Delay de 1us
// Delay total de 5us
while (CLK_PS2 == 0) // bit de start
;

for (i=0; i < 8; i++) // leitura dos 8bits de dados
{
while (CLK_PS2)
;
if (DATA_PS2)
data = (data | bit1);
while (CLK_PS2 == 0)
;
bit1 = bit1 << 1;
}
while (CLK_PS2) // ignora bit de paridade
;
while (CLK_PS2 == 0)
;

while (CLK_PS2) // ignora bit de stop
;
while (CLK_PS2 == 0)
;
TRISD = 0x02; // termina a transmisso
CLK_PS2 = 0;
return data;
}
//*******************************************
// Funo que transmite caractere pela serial
//*******************************************
void Transmite (char DADO_TX)
{
while (BusyUSART()) {};
putcUSART( DADO_TX );
}
43
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
//****************************************
// Funo que recebe caractere pela serial
//****************************************
char Recebe (void)
{
if ( DataRdyUSART() )
return ReadUSART(); // L caractere na porta serial
else
return 0x00;
}
//************************************************************
// Funo que aciona o motor em malha aberta e faz a aquisicao
//************************************************************
void MotorMalhaAberta (void)
{
CloseTimer1(); // Desabilita o timer do menu
Init_ps2(); // Inicializa o protocolo de comunicao PS/2
// Inicializa os contadores
DADO = 0;
n = 0;
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Posicao (*100.0mm):");
Transmite (0x0D); Transmite (0x0A);
Delay100TCYx(10); //delay para impedir o atraso com o resto dos timers
// Inicializao do TIMER0, responsvel pela leitura do encoder
OpenTimer0( TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_128 );
WriteTimer0( 65536-62 );
if (SENTIDO == 0)
{
PORTCbits.RC1 = 1;
PORTCbits.RC2 = 0;
}
else if (SENTIDO == 1)
{
PORTCbits.RC1 = 0;
PORTCbits.RC2 = 1;
}
}
44
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
//***************************************************
// Funo que movimenta o motor para posio desejada
//***************************************************
void MoverMotor (void)
{
CloseTimer1(); // Desabilita o timer do menu
Init_ps2(); // Inicializa o protocolo de comunicao PS/2
// Inicializa os controles
DADO = 0;
n = 0;
CONTROLE = 1;
// Inicializao do TIMER0, responsvel pela leitura do encoder
OpenTimer0( TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_128 );
WriteTimer0( 65536-780 );
OpenTimer2( TIMER_INT_OFF & T2_PS_1_16 );
OpenPWM2(78);
OpenPWM1(78);
SetDCPWM1(0);
SetDCPWM2(0);
/* if (SENTIDO == 0)
{
OpenPWM2(155); // PWM com perodo de 2,5ms
ClosePWM1();
}
else if (SENTIDO == 1)
{
OpenPWM1(155); // PWM com perodo de 2,5ms
ClosePWM2();
}
*/
}
//***************************************
// Funo que envia os dados da aquisio
//***************************************
void EnviarDados (void)
{
int i = 0;
CloseTimer1(); // Desabilita o timer do menu
DADO = 0;
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Posio(*100mm): Velocidade:(*100mm/s)");
45
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Transmite (0x0D); Transmite (0x0A);
for (i=0; i<= n; i++)
{
if (i == 128) DADO = 0;
if (i > 127) // Acabou o banco de memria 1
fprintf(_H_USART, "%-d", Dados_posicao2[DADO]);
else
fprintf(_H_USART, "%-d", Dados_posicao[DADO]);
Transmite (0x0D); Transmite (0x0A);
DADO++;
}
DADO = 0;
n = 0;
// Reinicializa o TIMER1
OpenTimer1( TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_8 &
T1_OSC1EN_OFF);
WriteTimer1(50000);
}
//*************************************
// Funo para exibio do menu inicial
//*************************************
void DisplayMenuInicial (char menu)
{
if (menu == MENU0) // Menu Inicial
{
putrsUSART ("\n\nMenu:");
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("1) Configurar PWM");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("2) Acionar Motor - malha aberta");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("3) Desligar Motor");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("4) Configurar Encoder");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("5) Selecionar posio de parada (mm * 10)");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("6) Ler dados da aquisio");
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Opo: ");
}
else if (menu == MENU1) // Configurar PWM
{
46
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Configurar PWM:");
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("1) Mover para esquerda");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("2) Mover para direita");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Opo: ");
}
else if (menu == MENU2) // Configurar Encoder
{
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Configurar Encoder:");
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("1) Encoder X");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("2) Encoder Y");
Transmite (0x0D); Transmite (0x0A);
putrsUSART ("3) Testar Encoder");
Transmite (0x0D); Transmite (0x0A); Transmite (0x0D); Transmite (0x0A);
putrsUSART ("Opo: ");
}
}
//*******************************************************************************************
// M Q U I N A S D E E S T A D O S
//*******************************************************************************************
// Mquina de estado para exibio do menu inicial e opes de comando
void MaqComando (void)
{
if (STT_Comando < 200)
Comando = Recebe();
switch (STT_Comando) {
case (MENU_INICIAL):
DisplayMenuInicial(MENU0);
STT_Comando++;
break;
case (ESPERA_COMANDO):
if (Comando == '1')
{
DisplayMenuInicial(MENU1);
STT_Comando++;
}
else if (Comando == '2')
{
47
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
STT_Comando = OPCAO2;
}
else if (Comando == '3')
{
STT_Comando = OPCAO3;
}
else if (Comando == '4')
{
DisplayMenuInicial(MENU2);
STT_Comando = OPCAO4;
}
else if (Comando == '5')
{
Transmite (0x0D); Transmite (0x0A);
STT_Comando = ENTRADA_DADOS4; // Posio de parada
}
else if (Comando == '6')
{
EnviarDados();
STT_Comando = MENU_INICIAL;
}
break;
case (OPCAO1): // Configurao do PWM
if (Comando == '1')
{
SENTIDO = 0;
STT_Comando = MENU_INICIAL;
}
else if (Comando == '2')
{
SENTIDO = 1;
STT_Comando = MENU_INICIAL;
}
break;
case (OPCAO2): // Acionar motor
STT_Comando = MENU_INICIAL;
MotorMalhaAberta();
break;
case (OPCAO3): // Desligar motor
ClosePWM2();
ClosePWM1();
STT_Comando = MENU_INICIAL;
break;
case (OPCAO4): // Configurao Encoder
if (Comando == '1')
48
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
{
ENCODER = 0;
STT_Comando = MENU_INICIAL;
}
else if (Comando == '2')
{
ENCODER = 1;
STT_Comando = MENU_INICIAL;
}
else if (Comando == '3')
{
Init_ps2();
Transmite (0x0D); Transmite (0x0A);
TEST_ENCODER = 1;
STT_Comando = TESTANDO;
}
break;
}
}
// Mquina de estado para entrada de dados
void EntradaDados(void)
{
Comando = Recebe();
if (STT_Comando > 199) {
if (STT_Comando == ENTRADA_DADOS1) // Perdo do PWM (3 dgitos)
{
switch (STT_Dados) {
case (Mw):
if (Comando == 0) break;
valor[1] = Comando;
STT_Dados = Mwn;
break;
case (Mwn):
if (Comando == 0) break;
valor[2] = Comando;
STT_Dados = Mwnn;
break;
case (Mwnn):
if (Comando == 0) break;
valor[0] = '0';
valor[3] = Comando;
Periodo_PWM = atob(valor);
STT_Dados = Mw;
STT_Comando = MENU_INICIAL;
49
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
break;
} // fim do switch
} // fim do if
if (STT_Comando == ENTRADA_DADOS2) // Duty cycle do PWM (4 dgitos)
{
switch (STT_Dados) {
case (Mw):
if (Comando == 0) break;
valor[0] = Comando;
STT_Dados = Mwn;
break;
case (Mwn):
if (Comando == 0) break;
valor[1] = Comando;
STT_Dados = Mwnn;
break;
case (Mwnn):
if (Comando == 0) break;
valor[2] = Comando;
STT_Dados = Mwnnn;
break;
case (Mwnnn):
if (Comando == 0) break;
valor[3] = Comando;
PWM_Duty_cycle = atoi(valor);
STT_Dados = Mw;
STT_Comando = MENU_INICIAL;
break;
} // fim do switch
} // fim do if
if (STT_Comando == ENTRADA_DADOS3) // Tempo do PWM (4 dgitos)
{
switch (STT_Dados) {
case (Mw):
if (Comando == 0) break;
valor[0] = Comando;
STT_Dados = Mwn;
break;
case (Mwn):
if (Comando == 0) break;
valor[1] = Comando;
STT_Dados = Mwnn;
break;
50
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
case (Mwnn):
if (Comando == 0) break;
valor[2] = Comando;
STT_Dados = Mwnnn;
break;
case (Mwnnn):
if (Comando == 0) break;
valor[3] = Comando;
TEMPO_PWM = atoi(valor);
STT_Dados = Mw;
STT_Comando = MENU_INICIAL;
break;
} // fim switch
} // fim do if
if (STT_Comando == ENTRADA_DADOS4) // Posio de parada (3 dgitos)
{
switch (STT_Dados) {
case (Mw):
if (Comando == 0) break;
valor[1] = Comando;
STT_Dados = Mwn;
break;
case (Mwn):
if (Comando == 0) break;
valor[2] = Comando;
STT_Dados = Mwnn;
break;
case (Mwnn):
if (Comando == 0) break;
valor[0] = '0';
valor[3] = Comando;
//Posicao_desejada = ((float)(atoi(valor))/10.0);
Posicao_desejada = 40.0;
STT_Dados = Mw;
Transmite (0x0D); Transmite (0x0A);
STT_Comando = MENU_INICIAL;
MoverMotor();
break;
} // fim do switch
} // fim do if
} // fim do if geral
}
51
UNIVERSIDADE ESTADUAL DE CAMPINAS
FACULDADE DE ENGENHARIA MECNICA
ENGENHARIA DE CONTROLE E AUTOMAO
Anexo
Circuito da ponte-H utilizada no acionamento do motor.
Fonte: http://robota.das.ufsc.br/mediawiki/index.php/H-bridge-5a.
52

Você também pode gostar