Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BANCA EXAMINADORA:
Bibliografia: f. 75-76
Inclui anexos
CDU: 004.383.3:621.313.333
1
S UMÁRIO
SUMÁRIO............................................................................................................................ 1
LISTA DE FIGURAS.......................................................................................................... 3
LISTA DE ABREVIATURAS............................................................................................ 6
AGRADECIMENTOS ........................................................................................................ 8
ABSTRACT ......................................................................................................................... 9
RESUMO............................................................................................................................ 10
ANEXO A........................................................................................................................... 77
ANEXO B ........................................................................................................................... 78
ANEXO C........................................................................................................................... 83
3
L ISTA DE F IGURAS
Figura 2.1 - Orientação da fmm de Armadura e Campo ..................................................... 14
Figura 2.2 – Caminhos magnéticos na máquina de corrente contínua ................................ 16
Figura 2.3 - Disposição do vetor de fluxo de rotor.............................................................. 17
Figura 2.4 - Disposição do vetor de fluxo do rotor orientado com eixo 'd' ......................... 18
Figura 2.5 - Estrutura básica do controle vetorial indireto .................................................. 25
Figura 2.6 - Controlador vetorial indireto para orientação no fluxo de rotor...................... 26
Figura 2.7 – Controlador vetorial indireto com orientação no fluxo de estator .................. 27
Figura 2.8 – Controlador vetorial indireto com orientação no fluxo de entreferro ............ 29
Figura 2.9 – Controlador universal indireto ........................................................................ 30
Figura 2.10 – Estrutura do acionamento vetorial direto ...................................................... 32
Figura 2.11 – Controlador vetorial direto para orientação fluxo de rotor ........................... 33
Figura 2.12 – Controlador vetorial direto com circuito desacoplador................................. 34
Figura 5.1 – Variação de Velocidade de 0 a 600 rpm. Traço Superior: (a) e (b) Referência
de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina. Traço Inferior:
(a) Corrente do Estator (Ia), (b) Corrente iqs ............................................................... 61
Figura 5.2 - Variação de Velocidade de 600rpm a 0rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) e (b) Corrente iqs ...................................... 61
Figura 5.3 - Variação de Velocidade de 0 rpm a 600 rpm no Sistema Simulado. (a)
Referência de Velocidade. (b) Velocidade Real da Máquina. (c)Corrente de Estator
(ias). (d) Corrente iqs ..................................................................................................... 62
Figura 5.4 - Variação de Velocidade de 600 rpm a 0 rpm no Sistema Simulado. (a)
Referência de Velocidade. (b) Velocidade Real da Máquina. (c)Corrente de Estator
(ias). (d) Corrente iqs ..................................................................................................... 63
Figura 5.5 -Variação de Velocidade de 0 rpm a 300 rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) (b) Corrente iqs ......................................... 64
Figura 5.6 - Variação de Velocidade de 300 rpm a 0 rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) e (b) Corrente iqs ...................................... 64
Figura 5.7 – Variação de Velocidade de -600rpm a 600rpm com Referência Quadrada.
Traço Superior: Referência de Velocidade. Traço Central: Velocidade Real da
Máquina. Traço Inferior: Corrente de Estator ............................................................. 66
Figura 5.8 - Variação de Velocidade de -600rpm a 600rpm com Referência Quadrada.
Traço Superior: Referência de Velocidade. Traço Central: Velocidade Real da
Máquina. Traço Inferior: Corrente iqs .......................................................................... 66
Figura 5.9 - Variação de Velocidade de –600rpm a 600rpm no Sistema Simulado. (a)
Referência de Velocidade. (b) Velocidade Real da Máquina. (c)Corrente de Estator
(ias). (d) Corrente iqs ..................................................................................................... 67
Figura 5.10 – Variação de Velocidade de -600rpm a 600rpm com Referência Triangular.
Traço Superior: Referência de Velocidade. Traço Central: Velocidade Real da
Máquina. Traço Inferior: Corrente de Estator ............................................................. 67
Figura 5.11 - Variação de Velocidade de -600rpm a 600rpm com Referência Senoidal.
Traço Superior: Referência de Velocidade. Traço Central: Velocidade Real da
Máquina. Traço Inferior: Corrente de Estator ............................................................. 68
Figura 5.12 – Resultado Simulado de Variação de Velocidade de –600 a 600 rpm seguindo
uma referência (a) triangular e (b) senoidal ................................................................ 68
Figura 5.13 – Variação de Velocidade de –600rpm a 600rpm com Referência Quadrada e
constante de tempo (τr) 120% do valor real (156ms).................................................. 69
Figura 5.14 – Variação de Velocidade de –600rpm a 600rpm com Referência Quadrada e
constante de tempo (τr) 140% do valor real (182ms).................................................. 69
5
L ISTA DE T ABELAS
L ISTA DE A BREVIATURAS
CC Corrente Contínua
CA Corrente Alternada
Ia Corrente de Armadura
If Corrente de Campo
fmm Força Magneto Motriz
ωr Velocidade angular do rotor
ωs Velocidade angular síncrona
ωsl Velocidade angular de escorregamento
E Tensão Induzida
k Constante de Proporcionalidade
Φ Fluxo Concatenado
Te Conjugado Eletromagnético
iqs Componente da corrente de estator no eixo de quadratura
ids Componente da corrente de estator no eixo direto
is Corrente de Estator
iqr Componente da corrente de rotor no eixo de quadratura
idr Componente da corrente de rotor no eixo direto
ir Corrente de Rotor
Ψdr Componente do Fluxo de Rotor no eixo direto
Ψqr Componente do Fluxo de Rotor no eixo de quadratura
Ψr Fluxo de Rotor
Ψds Componente do Fluxo de Estator no eixo direto
Ψqs Componente do Fluxo de Estator no eixo de quadratura
Ψs Fluxo de Estator
Ψr Fluxo de Rotor
ξ ângulo de defasagem da corrente de estator e fluxo de rotor.
Lm Indutância de Magnetização do Motor
Ls Indutância própria de Estator
Lr Indutância própria de Rotor
Lls Indutância Mútua de Estator
7
A GRADECIMENTOS
A BSTRACT
R ESUMO
CAPÍTULO 1
I NTRODUÇÃO
CAPÍTULO 2
2.1.1 A M Á Q U I N A CC
Ia
. .
++ . Campo
+ . ( If )
+
+ . Conjugado
.
+ . If
+ .
+ + . ω
fmm de Armadura
( Ia )
Ia
E = k ⋅ Φ ⋅ωr (2.1)
Te = k ⋅ Φ ⋅ I a (2.2)
onde:
ωr :velocidade do rotor em rad/s
k : constante de proporcionalidade que depende da construção da máquina
Φ : Fluxo produzido pela corrente de campo concatenado com o dos
enrolamentos da armadura.
Assim pode-se resumir nos itens abaixo as condições necessárias para que o
controle de conjugado apresente resposta rápida, que são:
armadura. A rapidez ocorre devido à indutância dos enrolamentos de armadura ser bem
menor que a indutância dos enrolamentos de campo, devido a aspectos construtivos da
máquina CC, como pode ser visto na Figura 2.2. O caminho magnético do fluxo produzido
pela fmm de armadura tem um entreferro maior que o entreferro associado ao caminho
magnético do fluxo de campo. Conseqüentemente a indutância associada aos enrolamentos
de armadura é menor.
r
ℑ
ω
•
r S • N
B
•
• •
q
iqs
is
ξ ψr
idr
ids ψqr
iqr ψdr
ir eixo síncrono
d
eixo estacionário
Te = −
3 P Lm
2 2 Lr
(
Ψdr i qs − Ψqr i ds ) (2.3)
onde:
Ψdr : Componente do Fluxo de Rotor no eixo direto
Ψqr : Componente do Fluxo de Rotor no eixo de quadratura
idr : Componente do eixo direto da corrente de Rotor
iqr : Componente do eixo de quadratura da corrente de Rotor
Lm : Indutância de magnetização de entreferro
Lr : Indutância própria de rotor
P : Número de pólos do motor
18
q
is
iqs ψr = ψdr
ψqr = 0
ξ
ψr d
ids eixo síncrono
ir
eixo estacionário
Figura 2.4 - Disposição do vetor de fluxo do rotor orientado com eixo 'd'
Te = −
3P
22
( )
Ψdr iqs = K ⋅ ids ⋅ iqs (2.4)
dψ ds
v ds = Rs i ds + − ω sψ qs
dt
(2.5)
dψ qs
v qs = Rs i qs + + ω sψ ds
dt
dψ dr
v dr = Rr i dr + − ω slψ qr
dt
(2.6)
dψ qr
v qr = Rr i qr + + ω slψ dr
dt
Te = −
3P
22
(
ψ dr iqr − ψ qr idr ) (2.11)
2 dω r 2
Te = J ⋅ + B ⋅ ω r + TL (2.12)
P dt P
1
τ ω sl
d ψ qr ψ L 1 0 iqs
ψ +
r
qr − m =0 (2.12)
dt dr − ω 1 ψ dr τ r 0 1 ids
sl τ r
Lr
onde τ r = é a constante de tempo do rotor.
Rr
21
1 d
ω sl
d ψ qs τ r ψ L 1 + σ τ r dt σ τ r ω sl i
+ qs − s
qs
= 0 (2.13)
dt ψ ds − ω 1 ψ ds τ r d i ds
− σ τ r ω sl 1 + σ τ r
sl τ r dt
Lr Ls − L2m
onde σ = é o fator de dispersão.
Lr L s
1 d
ω sl
d qg τ r
ψ ψ qg Lm 1 + τ rl dt τ rl ω sl i
qs
+ − =0 (2.14)
dt ψ dg − ω 1 ψ dg τ r d
− τ rl ω sl 1 + τ rl ids
sl τ r dt
Llr
onde τ rl = .
Rr
22
1 d
ω sl
d ψ qa τ r ψ aL 1 + σ aτ r dt σ aτ r ω sl i
+ qa − m
qs
= 0 (2.15)
dt ψ da − ω 1 ψ da τ r d
− σ aτ r ω sl 1 + σ aτ r ids
sl τ r dt
aLr − Lm
onde σ a = é o fator de dispersão arbitrário.
aLr
Para obter os modelos para cada um dos fluxos deve-se utilizar o valor
adequado da constante ‘a’ conforme mostra a. Tabela 1.
Lm
a= ψ r' Fluxo de rotor
Lr
a =1 ψm Fluxo de entreferro
Ls
a= ψs Fluxo de estator
Lm
23
dψ dr 1 L
+ ψ dr − m i ds = 0
dt τr τr
(2.16)
L
ω slψ dr − m i qs = 0
τr
Ls di
ω slψ ds − i qs + στ r qs + στ r ω sl i ds = 0
τr dt
(2.17)
dψ ds 1 L di
+ ψ ds − s − τ r ω sl i qs + i ds + στ r ds = 0
dt τr τr dt
dψ dg 1 L di
+ ψ dg − m − τ rl ω sl iqs + ids + τ rl ds = 0
dt τr τr dt
(2.18)
L diqs
ω slψ dg − m iqs + τ rl + τ rl ω sl ids = 0
τr dt
24
iqs 1 iqs
ω sl τ r = ∴ ω sl = (2.19)
ids τ r ids
O método indireto utiliza-se do fato desta relação ser uma condição necessária
e suficiente para produzir a orientação do campo, ou seja, se a relação de escorregamento é
satisfeita, ids está alinhada com o fluxo de rotor [7]. Por isso sua grande dependência de
uma boa determinação dos parâmetros da máquina, já que τr depende diretamente da
resistência e da indutância de rotor, e tem sido objeto de vários estudos, para sua correta
determinação e/ou estimação, antes e durante a operação do sistema.
25
+
-
+
dq/abc -
+
-
+ +
* ψ r*
ids = (2.20)
Lm
*
Lm iqs
ω sl* = (2.21)
τ r ψ r*
26
* 2 2 Lr Te*
iqs = (2.22)
3 P Lm ψ r*
ψ s* *
+ ω sl στ r i qs
* Ls
i ds = (2.23)
d
1 + στ r
dt
d *
1 + στ r i qs
dt
ω sl* = (2.24)
τr *
ψ s − τ r σi ds
Ls
2 2 Te*
iqs* = (2.25)
3 P ψ s*
A partir das equações (2.23) a (2.25) dadas acima, pode-se obter o diagrama
de blocos para orientação no fluxo de estator, como apresentado na Figura 2.7.
ψ m*
+ ω slτ rl iqs*
L
ids* = m (2.26)
d
1 + τ rl
dt
d*
1 + τ rl iqs
dt
ω sl* = (2.27)
τr
ψ m − τ rl ⋅ ids*
Lm
2 2 Te*
iqs* = (2.28)
3 P ψ s*
A partir das equações (2.26) a (2.28) mostradas acima, pode-se obter uma
representação em diagrama de blocos para o controle vetorial indireto com orientação no
fluxo de entreferro, como mostrado na Figura 2.8.
29
2.3.4 C O N T R O L A D O R U N I V E R S A L I N D I R E T O
aLm d*
1 + σ aτ r iqs
τ dt
ω sl* = r * (2.29)
ψ a − aLmσ a ⋅ ids*
2 2 Te*
iqs* = (2.31)
3 P ψ a*
+
-
+
dq/abc -
+
-
*
ids (
= G ( s ) ψ s* −ψ s + idq ) (2.32)
2
αLs iqs*
idq = (2.33)
(ψ s − αLs ids* )
Llr 2
Lm iqs*
Lr
idq = (2.34)
L
ψ m − lr Lm ids*
Lr
2.4.4 C O N T R O L A D O R U N I V E R S A L D I R E T O
2
aLmσ a iqs*
idq = (2.35)
(ψ a − aLmσ a ids* )
2.5 C ONCLUSÃO
CAPÍTULO 3
Uma analogia ao motor de indução pode ser feita, para uma melhor
compreensão da resposta do motor de indução, com um par de bobinas acopladas [2], ou
seja, um transformador com igual número de espiras no primário e no secundário, com o
secundário curto circuitado. Esta analogia é possível pois o motor de indução utiliza-se do
mesmo princípio de um transformador, a indução magnética, a grande diferença é que no
transformador o secundário é fixo e no motor de indução ele esta livre para girar,
produzindo um conjugado. Curto circuita-se o secundário do transformador para uma
melhor comparação, visto que no motor de indução as barras do rotor estão curto
circuitadas.
di1 di
v1 = R1i1 + L1 +M 2 (3.1)
dt dt
di 2 di
v 2 = 0 = R 2 i 2 + L2 +M 1 (3.2)
dt dt
ψ 1 = L1i1 + Mi 2 (3.3)
ψ 2 = L2 i 2 + Mi1 (3.4)
M s
I 2 ( s) = − I 1 (s) (3.5)
L2 s +1 τ 2
M −t / τ 2
i 2 (t ) = − Ie (3.6)
L2
[
ψ 2 (t ) = MI 1 − e −t / τ 2 ] (3.7)
r
Lm i s 2 2
q
r
r Lr i r 2
L i
δ m s1
1 r
ξ2 Lr i r 1
ξ1
r
ids ψr d
Figura 3.3 – Triângulo do Fluxo concatenado de rotor para duas condições de carga
C ONJUGADO
ω sl 2 = kω sl 1 (3.9)
I s2 1 + (kω sl 1τ r ) 2
= (3.10)
I s1 1 + (ω sl 1τ r ) 2
2 2
I s = ids + iqs (3.12)
1 iqs
ω sl = (3.13)
τ r ids
iqs
ξ = arc tan (3.14)
ids
V ETORIAL A LTERNATIVO
Is
EPROM *
ωs fclockUp/ Down ias
V/ f 12-bit 8-bit D/ A
Counte
ξ
bit15
+
16-bit Buffer 12-bit
EPROM *
ibs
2
+ 8-bit D/ A
2048
3
EPROM *
ics
1
+ 8-bit D/ A
2048
3
1 Is 2 2
I s1
0.5 R2 ∗ I s 2
R2 1
memory data
R1 R1 ∗ I s1
0
time
-0.5
-1
0 256 512 768 1024 1280 1536 1792 2048
address
1 2
∆A
(a) (b)
3.5 C ONCLUSÃO
CAPÍTULO 4
Inicializa as constantes
e variáveis de entrada
Inicializa as subrotinas
de programa
SIM
Lê velocidade (ωr) e
correntes (Ia, Ib, Ic) Aquisição de Dados
Calcula valor de Is
{ i ds2 + iqs2 }
Calcula valor de ωs
{ωsl +ωr }
Calcula valor de θ
{ ∫ ωs }
Geração do Sinal de Referência
Calcula as senóides de de Corrente
referência (Ia*, Ib*, Ic*)
-20 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11 2-12 2-13 2-14 2-15
Figura 4.2 - Representação para números em formato 1.15
48
1
ids = 2,7 2 × 0,75 × = 0,2863 pu
10
h
ids = 0,2863 pu × 215
→ 24A5h
2
ids = 0,2863 pu ∴ ids = 0,0819 pu
2 h
ids = 0,0819 × 215
→ 0A7Dh
−1
E para ids tem-se:
1
ids = 0,2863 pu ∴ = 3,4928 pu
ids
−1
Pode-se observar que o valor de ids é maior que 1, logo a representação em
formato 1.15 não é suficiente para representar números deste tamanho, assim outro formato
é necessário para esta variável. Utiliza-se o formato 4.12 que pode representar valores de
–7 a 7 – 2–12, assim tem-se:
50
1 h
= 3,4928 × 212
→ 37E2h
ids
2
Utiliza-se assim duas constantes para os valores de ids e 1/ids.
MIT
1
τr = (4.1)
2π ⋅ f sl
51
1
× 2π = 48,307 rad/s
τr
Em pu tem-se:
48,307
τ r−1 = 0,75 × = 0,0961 pu
377
Lê valor de iqs
2
Lê valor de ids
2 2
Calcula iqs e soma ids
Transforma valor em
formato 1.15
Guarda valor na
variável raiz
Lê valor de iqs
−1
Lê valor de ids
−1
Calcula iqs ⋅ ids
Calcula valor de ξ
Guarda valor na
i
{ arctg qs } variável razao
ids
Transforma valor em
formato 16.16
Calcula arcotangente
Guarda valor na
variável Tan_1
Lê valor de razao
−1
Lê valor de τ r
Calcula valor de ωsl
1 iqs
{ } −1
τ r ids Calcula razao ⋅τ r
Guarda valor na
variável ωsl
Lê valor de ωsl
Lê valor de ωr
Calcula valor de ωs
{ωsl +ωr } Calcula ωsl +ωr
Guarda valor na
variável ωs
ω s + ω sant
θ atual = θ ant + ⋅ Tamost (4.2)
2
Lê valor de theta
Lê valor de Tan_1
Guarda valor na
variável VrefA
Calcula as senóides
Calcula erro (I* - I)
de saída (Ia, Ib, Ic)
Calcula PI
Guarda valor na
variável ixm
Para a modulação dos sinais foi utilizada a técnica de Modulação por Largura
de Pulsos (PWM - Pulse Width Modulation), é utilizada uma freqüência de chaveamento
de 10 kHz, freqüência esta definida por software no arquivo ‘main.h’, arquivo este que
guarda algumas configurações básicas do processador. A técnica de modulação utilizada
foi a modulação senoidal.
Esta parte do algoritmo não necessita de nenhuma implementação especial,
visto que a unidade de PWM é independente e uma vez configurada corretamente é
necessário somente uma instrução durante a interrupção PWMSYNC para atualizar os
registradores de saída.
Assim o bloco “Atualiza saídas PWM” é simplesmente uma instrução com os
novos valores dos registradores da unidade de PWM.
AH ia
AL
DSP BH Conversor
Conversor ib
ADMC401 PWM MIT
BL PWM
CH
ic
CL
Tacômetro
ωr ia ib ic
ωr
23,6µs
Como pode-se observar no traço inferior da Figura 4.11, o tempo em que este
está alto representa o tempo de processamento do sistema. O traço superior mostra o pulso
de PWMSYNC que ocorre a cada 50µs e controla o início de operação de todas as funções
necessárias. Esse tempo de 50µs é o tempo de amostragem adotado. Um tempo de
amostragem de 25µs foi testado, porém o sistema não executava a função de parada do
sistema via computador. O tempo bastante curto de processamento se deve principalmente
ao processamento paralelo do sistema, visto que quando se inicia a interrupção, o
processador continua suas operações, e ao mesmo tempo faz-se a conversão nos
conversores Analógico/Digital, envia dados aos conversores Digital/Analógico, e monitora
as saídas PWM.
59
4.10 C ONCLUSÃO
CAPÍTULO 5
Observa-se ainda, nas Figura 5.1 (a) e (b) que a resposta à solicitação de
variação de velocidade é imediata, o que é esperado de um sistema de controle vetorial.
Referência de Referência de
Velocidade 600rpm Velocidade
Velocidade Velocidade
Real Real
Corrente na
Corrente iqs 13,2A/div
Máquina
3,3A/div
(a) (b)
Figura 5.1 – Variação de Velocidade de 0 a 600 rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a) Corrente do Estator (Ia), (b) Corrente iqs
Referência de Referência de
600rpm Velocidade Velocidade
Velocidade Velocidade
Real Real
Corrente na
Corrente iqs 13,2A/div
Máquina
3,3A/div
(a) (b)
Figura 5.2 - Variação de Velocidade de 600rpm a 0rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) e (b) Corrente iqs
A Figura 5.2 apresenta os resultados para uma variação de 600 rpm a 0 rpm.
Em (a) é apresentada a corrente da máquina, que após a parada do motor deveria se manter
contínua, visto que o motor não possui carga, mas o resultado apresenta uma freqüência
62
baixa como citado anteriormente. Em (b) é apresentada a corrente iqs, mostrando que ela
satura e se mantém em seu valor máximo até bem próximo da velocidade zero.
Observa-se do sinal de velocidade real, que a redução de velocidade ocorre de
forma retilínea, como esperado de um processo com conjugado constante, e que a etapa
final da desaceleração não apresenta qualquer oscilação, indicando que o sistema de
controle atende às exigências de resposta rápida e sem oscilações.
O conjugado de aceleração está em torno de 3,5 Nm, sendo o conjugado
nominal da máquina de 11,5 Nm. Optou-se por um valor reduzido de conjugado para
compensar a falta de inércia adicional no motor, já que os ensaios são em uma máquina de
3cv operando a vazio. Assim, para obter-se uma resposta de aceleração linear e sem
oscilações, como se espera de um sistema de controle vetorial, um ajuste dos controladores
de velocidade e de corrente foi feito. Para alguns valores de Kp e Ki nos controladores
obtém-se valores de conjugado de aceleração bem maiores, mas o sistema torna-se instável
a velocidades baixas e ocorre um sobre-sinal quando utilizado na inversão do sentido de
rotação.
(a)
(b)
(c)
(d)
Figura 5.3 - Variação de Velocidade de 0 rpm a 600 rpm no Sistema Simulado. (a)
Referência de Velocidade. (b) Velocidade Real da Máquina.
(c)Corrente de Estator (ias). (d) Corrente iqs
63
(a)
(b)
(c)
(d)
Figura 5.4 - Variação de Velocidade de 600 rpm a 0 rpm no Sistema Simulado. (a)
Referência de Velocidade. (b) Velocidade Real da Máquina.
(c)Corrente de Estator (ias). (d) Corrente iqs
Na Figura 5.3 e Figura 5.4 são apresentados resultados de simulação para uma
variação de velocidade de 0 rpm a 600 rpm e de 600 rpm a 0 rpm respectivamente. Em (a)
aparece a velocidade de referência, em (b) a velocidade real do motor, em (c) a corrente de
estator e em (d) a corrente iqs. Observa-se na corrente de estator que a mesma mantém-se
contínua no período de velocidade zero, que é o resultado esperado. Observa-se ainda na
corrente iqs, que ela se mantém no valor zero em todo o período de velocidade constante. A
corrente iqs satura no momento de variação de velocidade e volta ao valor zero quando
atinge a velocidade de regime.
64
Referência de Referência de
Velocidade 300rpm Velocidade
Velocidade Velocidade
Real Real
(a) (b)
Figura 5.5 -Variação de Velocidade de 0 rpm a 300 rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) (b) Corrente iqs
Referência de
300rpm Referência de
Velocidade
Velocidade
Velocidade Velocidade
Real Real
3,3A/div
(a) (b)
Figura 5.6 - Variação de Velocidade de 300 rpm a 0 rpm. Traço Superior: (a) e (b)
Referência de Velocidade. Traço Central: (a) e (b) Velocidade Real da Máquina.
Traço Inferior: (a)Corrente de Estator (Ia) e (b) Corrente iqs
controle vetorial. Verifica-se ainda que não há oscilações há etapa final de variação de
velocidade.
Os valores de iqs mostrados foram obtidos da saída analógica do DSP, a qual
possui um offset de 2,5 V, pois ela varia de 0 a 5 V. Assim, quando iqs é nulo sua saída no
osciloscópio é de 2,5 V. Para a velocidade zero o valor de iqs se mantém em zero, como
esperado, já com o aumento da velocidade um valor de iqs aparece nos resultados isto se
deve em parte a uma compensação do atrito da máquina. Por outro lado, o valor observado
está acima do esperado, o que pode indicar ajuste inadequado em algum dos parâmetros do
sistema de controle.
Observa-se nos resultados acima alguns ruídos principalmente no sinal de
velocidade do motor. Estes ruídos se devem a uma interferência produzida pelo
chaveamento do conversor. Estes foram bastante amenizados após a inserção de
capacitores de desacoplamento nas fontes, utilização de cabos blindados nos sinais de
corrente e velocidade e distanciamento do motor do sistema de controle e medição.
1200rpm
3,3A/div
1200rpm
13,2A/div
(a)
(b)
(c)
(d)
3,3A/div
A Figura 5.10 apresenta uma variação de velocidade de –600 rpm a 600 rpm.
Seguindo a referência da onda triangular, observa-se que a velocidade real acompanha
fielmente o sinal de referência. A Figura 5.11 mostra a mesma variação de velocidade
68
agora seguindo uma onda senoidal como referência. A velocidade real acompanha o sinal
de referência.
3,3A/div
(a) (b)
Figura 5.12 – Resultado Simulado de Variação de Velocidade de –600 a 600 rpm
seguindo uma referência (a) triangular e (b) senoidal
69
3,3A/div
3,3A/div
3,3A/div
3,3A/div
de tempo acima do valor nominal (130 ms) observa-se que a resposta apresenta um
aumento da curvatura no sinal de velocidade.
(C ONTROLE E SCALAR )
3,3A/div
3,3A/div
5.5 C ONCLUSÃO
CAPÍTULO 6
C ONCLUSÃO G ERAL
R EFERÊNCIAS B IBLIOGRÁFICAS :
11. J.W.L. Nerys and A.S. Steindorff, “Dynamic Performance of Induction Motors
driven by Alternative Method of Vector Control”, 6th Brazilian Power Electronics
Conference, Florianópolis, SC – Brazil, November 2001, Vol. 2, pp. 816-820.
16. ADSP-2100 Family User’s Manual, Analog Devices, Third Edition, September
1995.
17. ADSP-2100 - Assembler Tools & Simulator Manual, Analog Devices, Second
Edition, November 1994.
18. Motor Control Embedded DSP Solutions – Application Notes ADMC401, Analog
Devices, 2000.
A NEXO A
A.2. Dados obtidos dos ensaios a Ensaio a Vazio e com Rotor Bloqueado
A NEXO B
Cópia do Artigo apresentado ao 6º COBEP – Congresso Brasileiro de Eletrônica de
Potência
79
80
81
82
83
A NEXO C
Código Fonte em Assembler do Programa Implementado (Arquivo Main.dsp)
.MODULE/RAM/SEG=USER_PM1/ABS=0x60 Main_Test;
{*********************************************************************
* *
* Aplicação: Sistema de Controle Vetorial Alternativo *
* *
* Arquivo: main.dsp *
* *
* Descrição: Sistema de Controle Vetorial Alternativo Digitalizado *
* *
* *
* *
* Author : Asley Stecca Steindorff *
* Version : 1.0 *
* Date : Fevereiro 2003 *
* Modification History: Versão Final *
* *
* Grupo PEQ *
* Universidade Federal de Goiás *
*********************************************************************}
{*********************************************************************
* Include General System Parameters and Libraries *
*********************************************************************}
#include <main.h>;
#include <pwm401.h>;
#include <dac401.h>;
#include <adc401.h>;
#include <trigono.h>;
#include <mathfun.h>;
#include <pi.h>;
#include <ir_reset.h>;
#include <lowpass.h>;
{******************** ***********************************************}
{ Routines Defined in Trigonometrics functions }
{********************************************************************}
{********************************************************************}
{ Constants Defined }
{********************************************************************}
.CONST wr = 0x3000;
{*********************************************************************}
{ Local Variables }
{*********************************************************************}
.VAR/DM/RAM/SEG=USER_DM1 ws;
.INIT ws : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 ws_ant;
.INIT ws_ant : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 wrm;
.INIT wrm : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 iqs;
.INIT iqs : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 wsl;
.INIT wsl : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 wrr;
.INIT wrr : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 razao;
.INIT razao : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 Theta;
.INIT Theta : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 raiz;
.INIT raiz : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 Tan_1;
.INIT Tan_1 : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 iam;
.INIT iam: 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 ibm;
.INIT ibm: 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 icm;
.INIT icm: 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 AD_IN;
.INIT AD_IN : 0x2000;
.VAR/DM/RAM/SEG=USER_DM1 erro;
.INIT erro : 0x0000;
.VAR/DM/RAM/SEG=USER_DM1 VrefA;
.VAR/DM/RAM/SEG=USER_DM1 VrefB;
.VAR/DM/RAM/SEG=USER_DM1 VrefC;
.INIT VrefA : 0x0000;
.INIT VrefB : 0x0000;
.INIT VrefC : 0x0000;
#define PI_SF160 0
85
.VAR/RAM/PM/CIRC/SEG=USER_PM1 PI_Coef160[3];
.INIT PI_Coef160: 0xcdea00, 0x7fff00, 0x2c8500;
.VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_Delay160[2];
.INIT PI_Delay160: 0x0000, 0x0000;
#define PI_SF161 0
.VAR/RAM/PM/CIRC/SEG=USER_PM1 PI_Coef161[3];
.INIT PI_Coef161: 0xa86c00, 0x7fff00, 0x1af200;
.VAR/RAM/DM/CIRC/SEG=USER_DM1 PI_Delay161[2];
.INIT PI_Delay161: 0x0000, 0x0000;
#define PI_SF162 0
.VAR/RAM/PM/CIRC/SEG=USER_PM2 PI_Coef162[3];
.INIT PI_Coef162: 0xa86c00, 0x7fff00, 0x1af200;
.VAR/RAM/DM/CIRC/SEG=USER_DM2 PI_Delay162[2];
.INIT PI_Delay162: 0x0000, 0x0000;
#define PI_SF16 0
.VAR/RAM/PM/CIRC/SEG=USER_PM2 PI_Coef16[3];
.INIT PI_Coef16: 0xa86c00, 0x7fff00, 0x1af200;
.VAR/RAM/DM/CIRC/SEG=USER_DM2 PI_Delay16[2];
.INIT PI_Delay16: 0x0000, 0x0000;
.VAR/RAM/PM/CIRC/SEG=USER_PM1 Filter_1st_Coef[1*3];
.INIT Filter_1st_Coef: 0x01fa00, 0x01fa00, 0x7c0a00;
.VAR/RAM/DM/CIRC/SEG=USER_DM1 Filter_1st_Delay[1*2];
.INIT Filter_1st_Delay: 0x0000, 0x0000;
{***********************************************************************}
{ Start of program code }
{***********************************************************************}
Startup:
IR_reset_PIO3;
PWM_Init(PWMSYNC_ISR, PWMTRIP_ISR);
set_Bit_DM(MODECTRL,6);
IFC = 0x80;
ay0 = 0x200;
ar = IMASK;
ar = ar or ay0;
IMASK = ar;
ADC_Init;
DAC_Init;
86
INIT_PI16(PI_Delay160, 0x0000);
INIT_PI16(PI_Delay161, 0x0000);
INIT_PI16(PI_Delay162, 0x0000);
INIT_PI16(PI_Delay16, 0x0000);
MainLoop:
nop;
jump MainLoop;
rts;
{*********************************************************************}
{ PWM Interrupt Service Routine }
{*********************************************************************}
PWMSYNC_ISR:
AR = 0xfff;
DM(PIODIR) = AR;
AR = 0x001;
DM(PIODATA) = AR;
Set_DAG_registers_for_trigonometric;
Set_DAG_registers_for_math_function;
DAC_Pause;
ADC_Read(ADC0,Offset_0to3);
dm(iam) = ar;
ADC_Read(ADC1,Offset_0to3);
dm(ibm) = ar;
ADC_Read(ADC2,Offset_0to3);
dm(icm) = ar;
ADC_Read(ADC4,Offset_4to7);
dm(wrr) = ar;
ADC_Read(ADC5,Offset_4to7);
ay0 = 0x0a40;
ar = ar - ay0;
dm(wrm) = ar;
{**********************************************************************}
{ PI para iqs }
{**********************************************************************}
ax0 = dm(wrr);
ay0 = dm(wrm);
ena AR_SAT;
ar = ax0 - ay0;
dis AR_SAT;
my0 = 0xffff;
mr = ar * my0 (SU);
if MV SAT mr;
ar = mr1;
mr = ar * my0 (SU);
if MV SAT mr;
87
ar = mr1;
mr = ar * my0 (SU);
if MV SAT mr;
ar = mr1;
mr = ar * my0 (SU);
if MV SAT mr;
ar = mr1;
mr = ar * my0 (SU);
if MV SAT mr;
ar = mr1;
dm(erro) = ar;
Pi16(PI_Delay160, PI_Coef160, PI_SF160);
dm(iqs) = sr1;
{***********************************************************************}
{ Cálculo da Raiz Quadrada }
{***********************************************************************}
mr = 0;
mx0 = dm(iqs);
mr1 = ids_2;
mr = mr + mx0 * mx0 (SS);
sr = lshift mr1 by 1 (lo);
Square_Root(sr1,sr0);
sr = lshift sr1 by 7 (hi);
DM(raiz)=sr1;
{***********************************************************************}
{ Cálculo do Arco Tangente }
{***********************************************************************}
mr = 0;
mx0 = dm(iqs);
my0 = inv_id;
mr = mx0 * my0 (ss);
dm(razao) = mr1;
ay0 = 0x8000;
af = mr1 and ay0;
ar = abs mr1;
sr = lshift ar by 4 (lo);
ar = sr1 or af;
sr1 = ar;
Atan(sr1,sr0);
DM(Tan_1) = AR;
{***********************************************************************}
{ Cálculo do escorregamento }
{***********************************************************************}
mr = 0;
mx1 = dm(razao);
my1 = T_tau;
mr = mx1 * my1 (ss);
dm(wsl) = mr1;
{**********************************************************************}
{ Cálculo da velocidade síncrona }
{**********************************************************************}
88
ax0 = dm(ws);
dm(ws_ant) = ax0;
ay1 = dm(wrm);
ax1 = dm(wsl);
ena AR_SAT;
ar = ax1 + ay1;
dis AR_SAT;
dm(ws) = ar;
{**********************************************************************}
{ Cálculo do ângulo Theta }
{**********************************************************************}
mr = 0;
ay0 = dm(ws_ant);
ar = ar + ay0;
my1 = 0x4000;
mr = ar * my1 (ss);
mx0 = mr1;
my0 = tsp;
mr = 0;
mr = mx0 * my0 (ss);
ay1 = dm(theta);
ax1 = mr1;
ar = ax1 + ay1;
dm(theta) = ar;
ar = dm(iqs);
my1 = 0x6666;
mr = ar * my1 (ss);
dm(iqs) = mr1;
{**********************************************************************}
{ Cálculo das senóides }
{**********************************************************************}
mr = 0;
ax0 = dm(Theta);
ay0 = dm(Tan_1);
ar = ax0 + ay0;
sin(ar);
my0 = dm(raiz);
mr = ar * my0 (ss);
dm(VrefA) = mr1;
ax0 = dm(Theta);
ay0 = dm(Tan_1);
ar = ax0 + ay0;
ay1 = TwoPioverThree;
ar = ar - ay1;
sin(ar);
mr = ar * my0 (SS);
dm(VrefB) = mr1;
ax0 = dm(Theta);
ay0 = dm(Tan_1);
ar = ax0 + ay0;
ay1 = TwoPioverThree;
ar = ar + ay1;
89
sin(ar);
mr = ar * my0 (SS);
dm(VrefC) = mr1;
{**********************************************************************}
{ PI para ia }
{**********************************************************************}
ax0 = dm(VrefA);
ay0 = dm(iam);
ena AR_SAT;
ar = ax0 - ay0;
dis AR_SAT;
Pi16(PI_Delay161, PI_Coef161, PI_SF161);
dm(iam) = sr1;
{*********************************************************************}
{ PI para ib }
{*********************************************************************}
ax0 = dm(VrefB);
ay0 = dm(ibm);
ena AR_SAT;
ar = ax0 - ay0;
dis AR_SAT;
Pi16(PI_Delay162, PI_Coef162, PI_SF162);
dm(ibm) = sr1;
{**********************************************************************}
{ PI para ic }
{**********************************************************************}
ax0 = dm(VrefC);
ay0 = dm(icm);
ena AR_SAT;
ar = ax0 - ay0;
dis AR_SAT;
Pi16(PI_Delay16, PI_Coef16, PI_SF16);
dm(icm) = sr1;
{**********************************************************************}
{ Atualiza saídas PWM }
{**********************************************************************}
DAC_Resume;
ax0 = DM(iam);
ax1 = DM(ibm);
ay0 = DM(icm);
PWM_update_demanded_Voltage(ax0,ax1,ay0);
DAC_Update;
AR = 0x00;
DM(PIODATA) = AR;
rti;
{***********************************************************************}
{ PWM Trip Interrupt Service Routine }
{***********************************************************************}
PWMTRIP_ISR:
Test_Bit_DM(SYSSTAT,0);
If_Set_Jump(RESTART_PWM);
CNTR = H#3FF ;
DO Wait0 UNTIL CE;
Wait0: NOP;
Test_Bit_DM(SYSSTAT,0);
If_Set_Jump(RESTART_PWM);
DIS SEC_REG;
rti;
{***********************************************************************}
{ After a shutdown - restart the PWM. }
{***********************************************************************}
RESTART_PWM:
cntr = H#3FF ;
do Wait20 until ce;
Wait20: NOP;
IFC = 0X80;
PWM_Init(PWMSYNC_ISR, PWMTRIP_ISR);
rti;
.ENDMOD;