Escolar Documentos
Profissional Documentos
Cultura Documentos
ESCOLA DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
Niterói, RJ
2014
CRISTIANO DE MORAIS MOTA
Orientador:
Prof. José Andrés Santisteban Larrea, D. Sc.
Niterói, RJ
2014
!" # $ % &' (
)* +
, - . / 0 1 2 3 .
24 5 6 6 &' (
7 #" 48 4 9 - :
4 & *
8 4 ; ,
11 <& (<
CRISTIANO DE MORAIS MOTA
BANCA EXAMINADORA
Niterói, RJ
2014
i
DEDICATÓRIA
AGRADECIMENTOS
Agradeço, primeiramente, a Deus por tudo que fez em minha vida e por estar ao
meu lado em todos os momentos da minha vida.
A minha família, que me deu suporte e por acreditar em mim, sempre dando apoio
nos momentos mais difíceis.
Aos professores que me ajudaram e transmitiram todo o conhecimento necessário, e
auxiliaram para o meu desenvolvimento profissional e pessoal, em especial, o
professor José Santisteban, que foi meu orientador neste projeto.
Aos meus amigos companheiros de curso, pelas alegrias, pelas tristezas, pelos
estudos, pelos congressos, pois o curso não teria sido o mesmo.
Ao Daniel Ferrer e Marcelo Ribeiro pela ajuda em vários pontos do desenvolvimento
desse projeto.
iii
EPÍGRAFE
RESUMO
ABSTRACT
LISTA DE ILUSTRAÇÔES
SUMÁRIO
DEDICATÓRIA ......................................................................................................... i
AGRADECIMENTOS ............................................................................................... ii
RESUMO................................................................................................................. iv
ABSTRACT .............................................................................................................. v
1. INTRODUÇÃO ..................................................................................................... 1
7.2. Conclusões...................................................................................................... 56
APÊNDICE A ............................................................................................................ 61
APÊNDICE B ............................................................................................................ 68
Esquemático ............................................................................................................ 68
1. INTRODUÇÃO
1.2. Motivação
1.3. Objetivo
2.1. Introdução
Já para o motor sem escovas cc, a força eletromotriz induzida tem a forma
de onda praticamente quadrada, como ilustrada na figura 2-3. Na realidade, trata-se
de um motor CA, acionado por um inversor de tensão (CC-CA), e um controlador
eletrônico, para realizar a comutação das chaves semicondutoras.
A comutação deve acontecer em sincronismo com a posição do rotor e, por
isso, é necessário um sensor de posição. Esta comutação é denominada de
comutação eletrônica, ou sincronização auto-controlada (8). Existem outros métodos
de controle da comutação do inversor, mas não são abordados neste trabalho.
7
VS
Neste tipo de estratégia, cada chave conduz por 120° elétricos e, para cada
60° elétricos, somente duas chaves do inversor estarão conduzindo. Contudo, as
chaves da mesma fase não podem conduzir ao mesmo tempo, evitando um curto-
circuito (3). Na figura 2-5 mostra-se o padrão de disparos, agindo entre o gate e o
dreno de cada uma das seis chaves do inversor mostrado na figura 2-4 (g1, g2, g3,
g4, g5, g6) e, também, as tensões fase-neutro de uma carga trifásica conectada em
estrela (Van, Vbn, Vcn).
9
Neste caso, cada chave conduzirá por 180° elétricos e, para cada 60°
elétricos, três chaves sempre se encontram no estado de condução. Para ambos os
métodos, em geral é necessário criar um tempo morto entre o disparos das chaves
da mesma fase, para não criar um curto-circuito (3). Na figura 2-6 mostram-se os
sinais associados a esta estratégia e as tensões de linha na carga (V ab, Vbc, Vca).
Neste projeto, foi adotada a estratégia de condução por 180°.
eind eind
eind
De acordo com (8) e (9), pela lei de Kirchhoff, a tensão nos terminais das
fases va, vb, vc seguem a equação:
éva ù é Rs 0 0 ù éia ù é Laa Lab Lac ù éia ù éea ù
êv ú = ê 0 Rs ú ê ú d ê
0 ú êib ú + ê Lca Lbb Lbc úú êêib úú + êê eb úú
ê bú ê dt
êë vc úû êë 0 0 Rs úû êë ic úû êë Lca Lcb Lcc úû êë ic úû êë ec úû
(2.1).
Considerando as seguintes simplificações:
Laa = Lbb = Lcc = L
Lab = Lba = Lac = Lca = Lbc = Lcb = M
ia + ib + ic = 0
tem-se:
11
L = indutância própria;
Laa
= indutância própria na fase a;
Lab , Lba = indutância mútua entre as fases ab;
Lac , Lca
= Indutância mútua entre as fases ac;
Lbb = indutância própria na fase b;
2( L - M )
t=
2R
( L - M ) = t R. .
( L - M ) = 30m H .
3.1. Introdução
maior número de portas digitais. Outros modelos muito utilizados, como o UNO, não
apresentam a quantidade suficiente de portas e de recursos necessários para o
desenvolvimento do projeto. Sendo assim, foi descartada a utilização de outros
modelos. Na figura 3-2, se mostra uma fotografia do Arduino Mega2560.
Esta pode ser feita com tensões de 6 a 20V. Caso a alimentação seja
menor, as saídas do Arduino de 3,3 e 5 Volts são prejudicadas, fornecendo um valor
mais baixo. Para o caso de se ter uma alimentação acima de 12 Volts, a tensão
poderá gerar um sobreaquecimento no regulador de tensão.
17
Barramento de Dados
Resistor
de
“pull-up”
4.1. Introdução
2k p ( z - 1) + k I Ts ( z + 1)
Gc ( Z ) =
2( z - 1)
(2k p + k I Ts ) z + (k I Ts - 2k p )
Gc ( Z ) =
2( z - 1)
é ( k T - 2k p ) ù
(2k p + kI Ts ) ê z + I s ú
êë (2k p + k I T s ) úû
Gc ( z ) = (4.3)
2( z - 1)
Dividindo o denominador e numerador por z, chega-se à seguinte função de
transferência.
29
(2k p + k I Ts )[1 +
( k T - 2k ) z
I s p -1
]
u( z)
=
( 2k + k T )
p I s
(4.4)
e( z ) 2(1 - z -1 )
Definindo
kI TS - 2k p
a= , (4.5)
2k p + k I TS
e
b = 2k p + kI TS , (4.6)
obtém-se a expressão
u ( z ) b [1 + a z -1 ]
= (4.7)
e( z ) 2(1 - z -1 )
Logo,
u( z ) = u( z) z -1 + {b [e( z) + a e( z) z -1 ]} / 2
Inicio
Definição do tempo
de Amostragem (Ts)
NÃO
Vref>0
SIM
Sub-rotina de
Comparação dos Interrupção
dados de posição Calculo de velocidade
Calculo de Corrente
Chaveamento
NÃO
Wref=0?
SIM
FIM
5.1. Introdução
Arduino
Ímã Sensor
Sensor de Posição
Imã
Figura 5-4 Diagrama interno do sensor de corrente por efeito Hall SC-50(19).
Este tipo de sensor é utilizado para gerar um sinal que acompanhe a rotação
do motor. Depois foi convertida a uma tensão proporcional através do circuito
LM2907.
O sensor funciona da seguinte maneira: quando há presença de luz o seu
fototransistor funciona como uma chave fechada. E, quando não há luz incidente,
esse fototransistor funciona como uma chave aberta. Na figura 5-6, mostram-se os
36
Sensor Óptico
6.1. Introdução
Para realizar os testes, determinou-se uma velocidade tal que esta pudesse
ser aumentada gradativamente, para verificar a resposta do sistema na presença de
uma carga no eixo do motor, e, com o auxilio do osciloscópio, foram obtidos os
gráficos de saída dos sensores, das chaves e do Arduino. Esta seção trata dos
seguintes resultados obtidos através das saídas dos sensores:
· Gráfico de posição do rotor;
42
· Gráfico de Velocidade;
· Gráfico da Amplitude da Corrente;
· Tensão das fases;
· Resposta à mudança da velocidade de referência.
0V
Escala 1V/Div
Figura 6-1 Tensão de saída do sensor em malha aberta, para o caso 1.
aproximadamente, 800 RPM. Neste caso, também pode se observar que a trajetória
de posição não é linear, mas apresenta menos oscilações.
0V
Escala 1V/Div
Figura 6-2 Tensão de saída do sensor em malha aberta, para o caso 2.
0V
Escala 1V/Div
Figura 6-3 Tensão de saída do sensor em malha fechada, para o caso 3.
0V
0V
0V
Velocidade
Posição
Angular
0V
Velocidade
Posição
Angular
0V
Neste tópico, são apresentadas as tensões de saída das fases. Neste caso,
o sistema apresenta sempre o mesmo padrão de disparos das chaves do inversor,
mesmo quando o motor estiver parado. As figuras 6-9, 6-10 e 6-11 mostram as
saídas das fases a, b e c respectivamente.
0V
0V
0V
Nota se que diferente de uma carga resistiva, as tensões não chegam a 0V,
pois a resistência “ON” do MOSFET é comparável com a resistência por fase do
motor. Por outro lado a tensão máxima é da ordem de 2V devido a limitação em
corrente da fonte de tensão que alimenta o circuito de potência.
0V
0V
0V
0V
0V
0V
Velocidade
de
referência
Velocidade
de real
0V
Velocidade
de
referência
Velocidade
de real
0V
Velocidade
de
referência
Velocidade
de real
0V
0V
Velocidade
Real
0V
Escala 2V/Div
Figura 6-21 Corrente e velocidade com e sem carga.
7. CONSIDERAÇÕES FINAIS E CONCLUSÕES
7.2. Conclusões
1
FITZGERALD, A. E.; KINGSLEY, C., JR.; UMANS, S. D.. Máquinas Elétricas: Com
Introdução à Eletrônica de potência, 6. ed. São Paulo: McGraw-Hill do Brasil, 2003.
648 p.
2
MONTEIRO, J. R. B. A.. Estratégias de Acionamento e Controle em Máquinas de
Ímã Permanente com Fluxo não Senoidal. São Paulo, 1997. 120 f. Dissertação
(Mestrado em Engenharia Elétrica) – Escola de Engenharia de São Carlos,
Universidade de São Paulo, 2006.
3
RASHID, H. M.. Eletrônica de Potência: Circuitos Dispositivos e Aplicações. 2 ed.
São Paulo: Makron Books, 1999. 828 p.
4
Arduino.cc. Arduino Disponível em: http://www.arduino.cc, Acesso em 24 de julho
de 2013.
5
HANSELMAN, D. C.. Brushless permanent-magnet motor design. New York:
Mcgraw-hill, 1994.195 p.
6
Asas Elétricas, Aeromodelos elétricos, aeromodelismo --- E-Max CF2822
Outrunner Brushless Motors [Mt-EMAX-CF2822 ] --- helimodelismo – helicópteros
elétricos – bateria Li-Po – Motores elétricos Brushless – servos – receptores –
aeromodelo controle remoto – radio controle – warbirds – jatos – aviões – speed
control, Disponível em: <http://www.asaseletricas.com.br/loja/product_info.php?
products_id=1574>, Acesso em: 07 de dezembro de 2013.
7
CARICCHI, F. AND HONORATI, O.. Low-Cost Compact Permanent Magnet
Machine for Adjustable Speed Pump Application, IEEE Trans on Ind Appl., v. 34, no
1, pp 109-116, Jan/Feb. 1998.
59
8
GIERAS, J. F.; WING, M.. Permanent Magnet Motor Technology. 1 ed. New York:
Marcel Dekker, Inc, 2002. 589 p.
9
BARATIERI, Cássio Luciano. Controle de velocidade sensorless DC submetidos a
variações periódicas de carga. Santa Maria, 2011. 151 f. Dissertação (Mestrado em
Engenharia Elétrica) – Centro de Tecnologia, Universidade de Santa Maria, Rio
Grande do Sul, 2011.
10
Asas Elétricas, emax brushless motor techbical data.pdf. Disponível em:
<http://www.asaseletricas.com.br/loja/images/EMAX%20%20brushless%20motor%2
0technical%20data.pdf>. Acesso em: 08 de agosto de 2013.
11
Arduino.cc. Arduino – Introduction <http://arduino.cc/en/Guide/Introduction>,
Acesso em 24 de julho de 2013.
12
Arduino.cc. ArduinoBoardMega2560. Disponível em: <http://arduino.cc/en/Main
/ArduinoBoardMega2560>, Acesso em: 07 julho de 2013.
13
Arduino.cc. Arduino – arduinoBoardMega, Disponível em:
<http://arduino.cc/en/Main/arduinoBoardMega>, Acesso em: 07 julho de 2013.
14
Wikipédia. Atmega AVR. Disponível em: <http://pt.wikipedia.org/wiki/Atmel_AVR>,
Acesso em: 13 de agosto de 2013.
15
Universidade de Brasília-UnB. Engenharia Mecatrônica. Tutorial –
Microcontrolador AVR – Atmega8: Instrumentação – UnBall. Engenharia
Mecatrônica. Disponível em: <http://lara.unb.br/~adolfo/CDig/Tutorial_AVR_Unball
.pdf> Acesso em: 07 jul. 2013.
16
Folha de dados Atmel 8bit MIcrocontroller with 64/128/256 kBytes
InSystemProgrammable Fash/Atmega640/V; ATmega1280/V; AtmegaA1281/V;
Atmega88PA; ATmega2560; ATmega2561/V; Manual do fabricante (doc2549)
17
STALLINGS, W.. Arquitetura e Organização de Computadores, Edição 5°. Editora
Pearson Addison Wesley. 2005. 786 p.
18
OGATA, K.. Engenharia de Controle Moderno, 3 ed. São Paulo: editora Livros
Técnicos e Científicos , 2003. 813 p.
19
BARCZAK, C. L.. Controle Digital de Sistemas Dinâmicos. São Paulo:Editora
Edgar Bluchar Ltda. 1995. 295 p.
20
Cherrycorp. (s.d). Microsoft Word – AN9 Series 020111.doc – AN9_Series.pdf.,
Disponível em: <http://www.cherrycorp.com/english/sensors/pdf/AN9_Series.pdf>,
Acesso em 8 de dezembro de 2013.
60
21
MSA Control Comercio e Serviços Ltda. Sensores de corrente Efeito Hall.
Disponível em: <http://www.msacontrol.com.br/Sensores_Hall_28-02-12.pdf>>,
Acesso em 8 de dezembro de 2013.
22
robopoly.epfl.ch. TCRT5000.pdf. Disponível em:<http://robopoly.epfl.ch/files
/content/sites/robopoly/files/web/prisme/TCRT5000.pdf>, Acesso em 8 de dezembro
de 2013.
23
IRF. IR2110(-1-2)(S)PbF-IR2113(-1-2)(S)PbF revU.p65 – ir2110. Disponível em:
<http://www.irf.com/product-info/datasheets/data/ir2110.pdf> Acesso em: 08 de
agosto de 2013.
24
IRF. IRF3205.pdf. Disponível em:<http://www.irf.com/product-info/datasheets
/data/irf3205.pdf> Acesso em: 08 de agosto de 2013.
APÊNDICE A
//bibliotecas
#include <TimerOne.h>
#include <TimerThree.h>
//--------------constantes
int comuta = 0, aux = 0, i=0;
int contador=0,contador2=0;
float temp=0, valoranterior=0;
int count=0;
int freq=400;
//--------------frequencia do timer
int periodo1 = 10; // timer1
int periodo3 = 700; //timer 3
//----------------comutação
int chave=1;
//--------------Posição
int sensorposi = 0;
int posicaoaux = 0;
float valorsensorposi = 0;
//--------------tempo morto, para que não haja curto nas chaves do mesmo ramo
int tempomorto = 20;
//--------------
void comutacao(int chave);
//--------------controle de velocidade
float rpm=0;//
62
int VARIA_TENSAO = 4;
//-------------- variaveis para controle utilizando metodo de Tustin na saída de velocidade
int u_z_1 = 0;//saidaanterior=0;// utilizada no calculo do erro
int u_z = 0;//saidaatual=0;//saida em função da saida anterior e do erro
float ki = 600;
float kp = 0.1;
int e_z_1=0;//erroanterior;
int e_z=0;//erroatual;
float Ts = 0.0005;//periodoS;//periodo de amostragem, igual a 430 microsegundos
float beta = 0, alfa=0;
int wref = 0;// valor vindo do potenciometro
int sensorfreq = 7;
//--------------Controle da Corrente
float Iref;//valor conevertido para comparar com valor lido pelo sensor
int valor_corrente = 0;//valor real da corrente
int sensorcorrente = 1;//porta analogica de entrada
//--------------------------------------------------------------------------------------
//configuração das portas , dos timer e das interrupções
//--------------------------------------------------------------------------------------
void setup()
{
DDRA |= 0b00111111; //Registro de configuração da Porta A
Timer1.initialize(periodo1); // set a timer of length 100000 microseconds (or 0.1 sec - or
10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
//função callback habilitada para overflow do timer1
Timer1.attachInterrupt(callback);
Timer3.initialize(periodo3); // initialize timer1, and set a 8 microsecond period (125kHz)
//---------constante da função de controle
beta=(2*kp + ki*Ts)/2;
alfa = (-2*kp + ki*Ts)/(2*kp+ki*Ts);}
//----------------------------------
//----------Função para o calculo do pwm a ser utilizado
//----------------------------------
void callback()
{
//---------------- Esta função pausa a interrupção
63
Timer1.detachInterrupt();
//--------------------------
//Monitoramento da posição, corrente e da velocidade de referencia e velocidade real
//---------------------------------------------------
temp = valorsensorposi;
sensorposi = analogRead(posicaoaux);//leitura do sensor
valor_corrente = analogRead(sensorcorrente);//valor da corrente real fornecida pelo
sensor ,sentido do sensor->
wref = analogRead(VARIA_TENSAO);//essa saida entra no pino 3, que vai para
interrupção externa
rpm = analogRead(sensorfreq);
valorsensorposi = sensorposi * (4.605 / 1023.0);
//-------------------------------------------------
//----------calculo de u(z)
//-------------------------------------------------
Iref = (wref - rpm)*k;// ganho da malha de controle
if(Iref>1024)Iref=1024;//pq so sensor de corrente so mede até 820
e_z= (Iref - valor_corrente);
u_z = u_z_1 + beta*(e_z + alfa * e_z_1);
if(u_z<0)u_z=0;
if(u_z>1024) u_z=1024;
e_z_1=e_z;
u_z_1=u_z;
}
//loop infinito
void loop()
{
Timer1.attachInterrupt(callback);
//--------------------------
//algoritmo para controle de velocidade
//--------------------------
if(wref>0)
{
analogWrite(4,u_z);
Timer3.pwm(3,u_z,400);
}
64
if(wref==0)
{
Timer3.pwm(3,0,200);
Timer3.disablePwm(3);
}
if(u_z==0)
{
Timer3.pwm(3,0,200);
Timer3.disablePwm(3); }
//--------------------------
// variação da tensão do sensor de posição
// --------------------------
if(valorsensorposi<0.552) comutacao(aux=1); //1
if(valorsensorposi>0.552 && valorsensorposi<=0.659) comutacao(aux=2); //2
if(valorsensorposi>0.659 && valorsensorposi<=0.756) comutacao(aux=3); //3
if(valorsensorposi>0.756 && valorsensorposi<=0.803) comutacao(aux=4); //4
if(valorsensorposi>0.803 && valorsensorposi<=0.9) comutacao(aux=5); //5
if(valorsensorposi>0.9 && valorsensorposi<=0.997) comutacao(aux=6); //6
if(valorsensorposi>0.997 && valorsensorposi<=1.094) comutacao(aux=1); //7
if(valorsensorposi>1.094 && valorsensorposi<=1.191) comutacao(aux=2); //8
if(valorsensorposi>1.191 && valorsensorposi<=1.288) comutacao(aux=3); //9
if(valorsensorposi>1.288 && valorsensorposi<=1.385) comutacao(aux=4); //10
if(valorsensorposi>1.385 && valorsensorposi<=1.482) comutacao(aux=5); //11
if(valorsensorposi>1.482 && valorsensorposi<=1.579) comutacao(aux=6); //12
if(valorsensorposi>1.579 && valorsensorposi<=1.676) comutacao(aux=1); //13
if(valorsensorposi>1.676 && valorsensorposi<=1.773) comutacao(aux=2); //14
if(valorsensorposi>1.773 && valorsensorposi<=1.87) comutacao(aux=3); //15
if(valorsensorposi>1.87 && valorsensorposi<=1.967) comutacao(aux=4); //16
if(valorsensorposi>1.967 && valorsensorposi<=2.064) comutacao(aux=5); //17
if(valorsensorposi>2.064 && valorsensorposi<=2.161) comutacao(aux=6); //18
if(valorsensorposi>2.161 && valorsensorposi<=2.258) comutacao(aux=1); //19
if(valorsensorposi>2.258 && valorsensorposi<=2.355) comutacao(aux=2); //20
if(valorsensorposi>2.355 &&valorsensorposi<=2.452) comutacao(aux=3); //21
if(valorsensorposi>2.452 &&valorsensorposi<=2.549) comutacao(aux=4); //22
if(valorsensorposi>2.549 &&valorsensorposi<=2.646) comutacao(aux=5); //23
if(valorsensorposi>2.646 &&valorsensorposi<=2.743) comutacao(aux=6); //24
65
delayMicroseconds(freq);
break;
case 3://2:
PORTA=0b00100011;
PORTA &= ~(1<<PORTA3);
PORTA &= ~(1<<PORTA0);
delayMicroseconds(tempomorto);
PORTA |= (1<<PORTA0);
delayMicroseconds(freq);
break;
case 4://3:
PORTA=0b00101010;
PORTA &= ~(1<<PORTA5);
PORTA &= ~(1<<PORTA2);
delayMicroseconds(tempomorto);
PORTA |= (1<<PORTA5);
delayMicroseconds(freq);
break;
case 5://4:
PORTA=0b00001110;
PORTA &= ~(1<<PORTA4);
PORTA &= ~(1<<PORTA1);
delayMicroseconds(tempomorto);
PORTA |= (1<<PORTA1);
delayMicroseconds(freq);
break;
case 6://5
PORTA=0b00011100;
PORTA &= ~(1<<PORTA3);
PORTA &= ~(1<<PORTA0);
delayMicroseconds(tempomorto);
PORTA |= (1<<PORTA3);
delayMicroseconds(freq);
break;
case 1://6:
PORTA &= ~(1<<PORTA2);
67
PORTA=0b00010101;
PORTA &= ~(1<<PORTA5);
delayMicroseconds(tempomorto);
PORTA |= (1<<PORTA2);
delayMicroseconds(freq);
break;
}
count=count+1;
}while(count<2);
count=1;
}
APÊNDICE B
Esquemático
05/02/2014 11:54:11 f=0.71 C:\SPB_Data\eagle\TCC\tcc.sch (Sheet: 1/1)