Escolar Documentos
Profissional Documentos
Cultura Documentos
CENTRO TECNOLÓGICO
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
PROJETO DE GRADUAÇÃO
VITÓRIA – ES
AGOSTO/2007
EDUARDO LEANDRO DEL-PUPPO
VITÓRIA – ES
AGOSTO/2007
EDUARDO LEANDRO DEL-PUPPO
COMISSÃO EXAMINADORA:
___________________________________
Prof. Dr. Gilberto Costa Drumond Souza
Orientador
___________________________________
Prof. Dr. Paulo Faria Santos Amaral
Co-orientador
___________________________________
Prof. Dr. José Luiz de Freitas Vieira
Examinador
___________________________________
Eng. Alex Teixeira Prado
Examinador
V = tensão de armadura, V
Ra = resitência do enrolamento de armadura, Ω
VS = tensão de alimentação
I = corrente na carga
TCH = período de chaveamento
CH = chave
t1 = dT = t on = intervalo de tempo com CH fechada
d = razão cíclica
GLOSSÁRIO
1. INTRODUÇÃO...........................................................................................11
2. O MOTOR CC ............................................................................................12
2.1. Equações de velocidade e torque .........................................................12
2.2. Métodos de Controle de Velocidade....................................................13
3. CONTROLE POR TENSÃO DE ARMADURA – “CHOPPERS” ..........14
3.1. Chopper Abaixador (Buck) com carga RLE - Princípio de Operação ..14
3.1.1. Normalização: ..................................................................................17
3.2. Chopper elevador (Boost) – Princípio de Operação .............................18
3.3. Chopper abaixador/elevador – Operação em dois quadrantes ..............20
4. O ACIONAMENTO PROPOSTO .............................................................25
4.1. O circuito simplificado ........................................................................25
4.1.1. Drive de tensão:................................................................................27
4.1.2. Filtros passa-baixa (FPB):.................................................................27
4.1.3. Amplificador: ...................................................................................27
4.1.4. Somador: ..........................................................................................27
4.1.5. “Gate-drive” IR2104:........................................................................27
4.2. O sistema de controle ..........................................................................28
4.3. Operação do conversor........................................................................29
4.3.1 Acelerando – Operação “Buck”............................................................29
4.3.2 Velocidade de cruzeiro - “Cruise control” ............................................29
4.3.3 Desacelerando – Operação “Boost” (frenagem)....................................29
5. O “SOFTWARE” DE CONTROLE ..........................................................31
6. O PROTÓTIPO ..........................................................................................34
6.1. Formas de onda ...................................................................................35
6.1.1 Modo “Buck” com carga RL ................................................................35
6.1.2 Modo “Buck” com motor operando a vazio..........................................37
6.1.3 Modo “Boost” (frenagem) ....................................................................39
7. CONCLUSÃO.............................................................................................40
ANEXO A...............................................................................................................41
ANEXO B ...............................................................................................................53
ANEXO C...............................................................................................................54
REFERÊNCIAS BIBLIOGRÁFICAS..................................................................56
1. INTRODUÇÃO
Ra La
Ia If
V E Vf
V Ra
ωm = − Te (2.8)
K K2
De acordo com (2.8) pode-se observar que a característica Velocidade x Torque
do motor CC com excitação separada é uma linha reta, como mostrado na fig. 2.2. Na
equação (2.6), pode-se observar que o torque varia linearmente com a corrente,
portanto a característica Velocidade x Corrente é equivalente à característica
Velocidade x Torque. Pode-se então ter ampla variação de torque numa pequena faixa
de velocidade.
Wmx Te
Motor CC de excitação
Velocidade, p.u.
1 separada
0.5
0 0.5 1
Torque, p.u.
1 t1 t1
VO =
T ∫v O
O dt =
T
VS = kVS (3.1)
I1 I2
+
L L
VS D R
R
+ +
E - E
-
-
Modo 1 Modo 2
(b) Circuitos equivalentes
Figura 3-1 – (a) Chopper abaixador com carga RLE. (b) Circuitos equivalentes.
VO
VS T
t1 t2
0 t
kT T
IS = I1
I máx
I mín
0 t
kT T
I2
I máx
I mín
0 t
kT T
I
I máx
I mínI O
0 t
Figura 3-2 –Formas de onda para condução contínua de corrente.
3.1.1. Normalização:
Onde:
Vo E V
=k ; = a ; S = I N ; I N corrente média de normalização (3.8)
VS VS R
Daí:
Io
=k −a (3.9)
IN
Po/Vs.In
1,0
a
(1-a)
k
a 1,0
IS L a I D D1 Io
+
ICH
+
VS CH C1 Va Carga
_
-
b
Figura 3-4 – Chopper elevador – circuito equivalente.
19
IS
T
I2
IS
I1
t1 t2
0 t
kT T
I CH
T
I2
I1
t1 t2
0 t
kT T
ID
T
I2
I1
t1 t2
0 t
kT T
VCH
T
Vo
VS
t1 t2
0 t
kT T
Figura 3-5 – Formas de onda.
+
-
Vc1
T T T T
t2
t1 t3
0 t
kT T
Vc2
0 t
kT T
Ia
0 t
kT
Vo
VS VS
E E
t
Condução dos diodos
CH1 D2 CH1 D2 D2 D1 e das chaves
Figura 3-7 – Chopper classe C – formas de onda e condução das chaves e diodos
Com relação ao chopper classe C, para este modo de controle PWM, pode-se
destacar quatro pontos:
( I a ⋅ Ra ) + E
k= (3.23)
VS
24
E
a vazio acontece quando k = .
VS
O máximo ripple de corrente pode ser dado pela equação 3.5, e não depende
da velocidade do motor. Uma mudança na velocidade para um dado valor de k,
somente muda o valor da corrente e não muda o ripple.
Supondo que o conversor esteja operando a vazio, então Ia médio será zero e
sua forma de onda será simétrica ao eixo do tempo. Um decréscimo na velocidade
causará um acréscimo na corrente e a forma de onda de Ia se deslocará para cima.
Quando Ia for maior que o máximo ripple, Ia será sempre positiva e somente D2 ou
CH1 estarão conduzindo. Embora CH2 esteja recendo sinal de controle em nível alto,
CH2 não conduzirá devido à polarização reversa aplicada pelo diodo D2 em condução.
Desde que o ripple seja até 5% da corrente nominal, CH2 e D1 terão que conduzir
somente quando o motor estiver operando em carga baixa.
Similarmente, um incremento na velocidade poderá produzir uma corrente Ia
negativa e a forma de onda da corrente se deslocará para baixo. Enquanto a corrente
for negativa, esta estará fluindo por CH2 e D1, e então, CH1 e D2 não tem nenhuma
chance de conduzir (após o intervalo de tempo t3 – fig.3.7).
A discussão precedente mostra que durante a ação motora direta a corrente flui
por CH1 ou por D2, e durante a frenagem regenerativa a corrente flui por CH2 ou D1.
25
4. O ACIONAMENTO PROPOSTO
R8
CH1 D1
R6 C2
Vs + C1
+
-
M Vo
CH3 D3 CH2 D2 +
CC
-
-
- +
FPB3
FPB2
PWM1
+5V 21 13 0-5V FPB1
5 4 AMPLIFICADOR
Referência de 0-5V
velocidade R7 PIC16F876
POT1 FPB4 3 0-5V
2 SOMADOR
20 8,19 9 10
+5V CLK
4.1.3. Amplificador:
É usado para amplificar o sinal de corrente (na forma de tensão) para um
patamar compatível com o microcontrolador, já que o sinal lido nos terminais do
resistor R5 varia de zero a aproximadamente 130mV e amplificado este varia de -2,5 a
+2,5V.
4.1.4. Somador:
Utilizado para somar cerca de 2,5V ao sinal de corrente, já que este pode ter
valores negativos, e o microcontrolador não recebe sinais negativos. O sinal de
corrente que pode variar -2,5 a +2,5V, passa a variar de 0 a 5V, que agora é
compatível com o microcontrolador e passa a ser tratado em software, em que 2,5V
significa que a corrente é igual a zero.
“MOSFET” CH2 a partir do PWM1 e de uma entrada “shutdown” que estará sempre
em nível alto. Isso se deve ao fato que o segundo PWM é simplesmente o
complementar do primeiro com um tempo morto introduzido entre a descida de um e a
subida do outro. O tempo morto é introduzido pelo “gate drive” IR2104 e tem um
valor fixo típico de 520ns.
mf Ke
Ec
*m + e m
I*a Imáx
I*a + eIa + V*
a
Vmáx
Va m
Kp+Ki/s Kp Kc MOTOR
- 1 - 2
Imin Vmin
mf I af Ia
H1(s)
H 2(s)
porém essa situação é fisicamente distinta daquela descrita anteriormente. Neste caso
não é a referência que é trazida para um patamar inferior à velocidade do motor, mas
sim a velocidade do motor que aumenta, aumentando a força contra-eletromotriz e
invertendo o fluxo de potência.
31
5. O “SOFTWARE” DE CONTROLE
(15) Atualização das variáveis para ser feita a média na execução seguinte, e
atualização do erro de velocidade para cálculo da parte integral do controlador PI na
próxima execução.
RESET
In icialização
" B ack g ro u n d
L oop"
T in t
V *a k = K p 2 .e I a + E a (9 )
k k
L er en trad as an aló g icas
(1 ) I a , V m , *m , VS
V *a k > V a m áx S V *a k = Va m áx
C álcu lo d a m éd ia
(2 )
I a k , V m k , *m k , VS k N
(1 0 )
S
V *a k < Va m ín V *a k = Va m ín
(3 ) E a k = V m k -R a . I a k
N
= Eak d = Va . 1 (1 1 )
(4 ) mk V
k
t o n= d .f C H (1 2 )
(5 ) e mk = *k
m - mk
A tu aliza (1 3 )
PW M
8
S N (1 4 )
I*a k > I a m áx I*a k = I a m áx
N S d eslig a
(7 ) VS k < V S m ín fren ag em
S N
I*a k < I a m ín I*a k = I a m ín
A tu a liza
N v ariáv eis (1 5 )
(8 ) e I a = I*a - I a
k k k
6. O PROTÓTIPO
Figura 6-3 - Operação em modo “buck” – ciclo de trabalho em 50% (carga RL)
37
Figura 6-5 - Operação em modo “buck” – ciclo de trabalho em 50% (carga motor)
Figura 6-6 - Operação em modo “buck” – ciclo de trabalho em 100% (carga motor)
39
7. CONCLUSÃO
ANEXO A
#ifndef _ADRESSES__PIC__H__
#define _ADRESSES__PIC__H__
// Timer2
#locate TMR2=0x11
#locate T2CON=0x12
#locate PR2=0x92
// CCP1
#locate CCPR1L=0x15
#locate CCPR1H=0x16
#locate CCP1CON=0x17
// ADC
#locate ADRESH=0x1E
#locate ADCON0=0x1F
#locate ADRESL=0x9E
#locate ADCON1=0x9F
#locate TXREG=0x19
#define Wait_Conversion() while(ADCON0 & 4)
#define Start_Conversion() ADCON0 |= 4
#define POSITIVO 0
42
#define NEGATIVO 1
#define Ra 50
#define Kix 80
#define Kp1 130
#define Kp2 255
void Zera_Tudo()
{
Vm_now = 0;
omega_mx_now = 0;
Ia_now = 0;
Vs_now = 0;
Vm_ant = 0;
omega_mx_ant = 0;
Ia_ant = 0;
Vs_ant = 0;
Vm_med = 0;
omega_mx_med = 0;
Ia_med = 0;
Vs_med = 0;
omega_m = 0;
acao_proporcional = 0;
Ra_x_Ia_8 = 0 ;
Ra_x_Ia = 0 ;
Ia_16 = 0 ;
Ea_16 = 0 ;
43
omega_m_16 = 0 ;
erro_Ia_16 = 0 ;
Va_ref_16 = 0 ;
ton_16 = 0 ;
erro_omega_16 = 0 ;
acao_integral_16 = 0 ;
erro_omega_ant_16 = 0 ;
acao_proporcional_16 = 0 ;
acao_integral_aux = 0;
acao_integral_ant = 0;
Va_ref_aux = 0;
acao_integral = 0;
sinal_erro_omega = POSITIVO;
sinal_acao_integral_ant = POSITIVO;
sinal_acao_integral = POSITIVO;
sinal_Ia_ref = POSITIVO;
sinal_Ia = POSITIVO;
sinal_erro_Ia = POSITIVO;
void primeira_leitura()
{
SET_ADC_CHANNEL(0); delay_us(10);
Start_Conversion(); Wait_Conversion();
Ia_ant = ADRESH >> 1;
SET_ADC_CHANNEL(1); delay_us(10);
Start_Conversion(); Wait_Conversion();
Vm_ant = ADRESH >> 1;
SET_ADC_CHANNEL(2); delay_us(10);
Start_Conversion(); Wait_Conversion();
Vs_ant = ADRESH >> 1;
SET_ADC_CHANNEL(3); delay_us(10);
Start_Conversion(); Wait_Conversion();
omega_mx_ant = ADRESH >> 1;
}
#endif //_ADRESSES__PIC__H__
#include <16F876A.h>
#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, BRGH1OK) //Jumpers:
8to11, 7to12
#include "adress_v1+.h"
int8 ciclos=0;
main()
{
setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM. The cycle time
will be
// (1/clock)*4*TMR2*(PR2+1).In this program
// clock=20MHz and PR2=63(below) 63=003Fh. For the
// possible selections the cycle time is:
// (1/20000000)*4*1*256=51,2us or 19,531kHz
// (1/20000000)*4*4*127=us or 9,692kHz ************
setup_timer_2(T2_DIV_BY_4, RESOLUTION, 1);
setup_ADC_ports (RA0_RA1_RA3_ANALOG); // RA2 tambem
setup_ADC (ADC_CLOCK_INTERNAL);
set_tris_b(0);
output_high(pin_b0); // inciar com frenagem desligada
Zera_Tudo();
primeira_leitura();
set_pwm1_duty(0);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(1)
{
}
}
#INT_TIMER1 //timer de interrupção em 1ms
void timer1_isr()
{
set_timer1(64910); // Nint = 5.000.000 / (1/Tint) / 8
// ciclos_T1 = 65535 - Nint
// set_timer1(ciclos_T1)
// Cálculo da média
Ia_med = Ia_ant + Ia_now;
Vm_med = Vm_ant + Vm_now;
Vs_med = Vs_ant + Vs_now;
omega_mx_med = omega_mx_ant + omega_mx_now;
// ACERTO DA CORRENTE
if (Ia_med >= 130)
{
Ia = Ia_med - 130;
sinal_Ia = POSITIVO;
}
else
{
Ia = 130 - Ia_med;
sinal_Ia = NEGATIVO;
}
if (sinal_Ia == POSITIVO)
{
if (Vm_med >= Ra_x_Ia_8)
{
Ea = Vm_med - Ra_x_Ia_8;
}
46
else
{
Ea=5;
}
}
else
{
Ea=255;
}
//proporcional
erro_omega_16 = (int16) erro_omega;
acao_proporcional_16 = erro_omega_16 * Kp1;
acao_proporcional_16 = acao_proporcional_16 >> 8 ;
acao_proporcional = (int8) acao_proporcional_16;
{
acao_integral = 65535;
}
}
{
if (acao_integral_16 <= acao_integral_ant)
{
acao_integral = acao_integral_ant - acao_integral_16;
sinal_acao_integral = POSITIVO;
}
else
{
acao_integral = acao_integral_16 - acao_integral_ant;
sinal_acao_integral = NEGATIVO;
}
}
if ((sinal_erro_omega == NEGATIVO) && (sinal_acao_integral_ant ==
NEGATIVO))
{
acao_integral = acao_integral_ant + acao_integral_16;
sinal_acao_integral = NEGATIVO;
//Teste de overflow positivo
if ((acao_integral < acao_integral_ant) || (acao_integral <
acao_integral_16))
{
acao_integral = 65535;
48
}
}
sinal_acao_integral_ant = sinal_acao_integral;
acao_integral_ant = acao_integral;
{
if (acao_integral_8 >= acao_proporcional)
{
Ia_ref = acao_integral_8 - acao_proporcional;
sinal_Ia_ref = POSITIVO;
}
else
{
Ia_ref = acao_proporcional - acao_integral_8;
sinal_Ia_ref = NEGATIVO;
}
}
{
if (acao_integral_8 <= acao_proporcional)
{
Ia_ref = acao_proporcional - acao_integral_8;
sinal_Ia_ref = POSITIVO;
}
else
{
Ia_ref = acao_integral_8 - acao_proporcional;
sinal_Ia_ref = NEGATIVO;
}
}
//PI
erro_omega_16 = (int16) erro_omega;
acao_integral_16 = erro_omega_16 * Kix;
acao_integral_16 = acao_integral_16 >> 8 ;
acao_integral = (int8)acao_integral_16;
Ia_ref = Ia_acumulado;
Ia_ref = Ia_ref_aux;
else
{
erro_Ia = Ia - Ia_ref;
sinal_erro_Ia = NEGATIVO;
}
}
if (sinal_erro_Ia == NEGATIVO)
{
if (Ea >= Va_ref_aux)
{
Va_ref = Ea - Va_ref_aux;
}
else
{
Va_ref = 0;
}
}
// LIMITADOR DA TENSÃO DE REFERÊNCIA DA ARMADURA
if (Va_ref > VA_MAX) Va_ref = VA_MAX;
if (Va_ref < VA_MIN) Va_ref = VA_MIN;
// ATUALIZA PWM
ton = Va_ref >> 1; //Alternativa mais rápida
if (ton > 127) ton=127;
set_pwm1_duty(ton);
// FRENAGEM
if (Vs_med > VS_MAX) output_low(pin_b0);
if (Vs_med < VS_MIN) output_high(pin_b0);
// ATUALIZA VALORES ANTERIORES
Ia_ant = Ia_med >> 1;
Vm_ant = Vm_med >> 1;
Vs_ant = Vs_med >> 1;
omega_mx_ant = omega_mx_med >> 1;
output_low(pin_b7); // para ver a janela de tempo
}
53
ANEXO B
Esquemático feito no software Eagle 4.11 para roteamento das trilhas e
confecção da placa de circuito impresso (somente para a placa de controle).
54
ANEXO C
REFERÊNCIAS BIBLIOGRÁFICAS