Escolar Documentos
Profissional Documentos
Cultura Documentos
Campina Grande - PB
Novembro de 2023
Aléssio Trajano Sousa Soares Santos
Campina Grande - PB
Novembro de 2023
Agradecimentos
Lista de Ilustrações . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Lista de Abreviaturas e Siglas . . . . . . . . . . . . . . . . . . . . . . 7
Lista de tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . 13
2.1 Conversores CC-CC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Chave eletrônica (MOSFET) . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Modulação por Largura de Pulso - PWM . . . . . . . . . . . . . . . . 17
2.4 Microcontrolador PIC16F877A . . . . . . . . . . . . . . . . . . . . . . 18
2.5 Gate Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 PROGRAMAÇÃO DO MICROCONTROLADOR . . . . . . . . . . . 24
4.1 Bits de Configuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Rotinas do Código . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Geração do Sinal PWM . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.1 Cálculo de PR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.2 Resolução do Sinal PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.3 Cálculo do Conjunto de Registradores (CCPR1L:CCP1CON<5:4>) . . . . . 27
4.3.4 Atribuição dos Valores aos Registradores via Programação . . . . . . . . . 28
4.3.5 Configurando T2CON . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 INTERFACE HOMEM-MÁQUINA . . . . . . . . . . . . . . . . . . . 32
5.1 Placa da IHM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Placa do Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3 Alimentação Elétrica das Placas e do Conversor . . . . . . . . . . . . 37
7 TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . . . . . 58
8 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
APÊNDICES 61
1 INTRODUÇÃO
1.1 Objetivos
O objetivo geral consiste em desenvolver um circuito de comando para um con-
versor buck, visando proporcionar aos estudantes de laboratório um aprendizado prático
sobre princípios de Eletrônica de Potência, controle de tensão e corrente elétrica, além
de promover uma compreensão sobre o funcionamento e aplicações dos conversores de
energia. Os objetivos específicos são:
• projetar e implementar um circuito de comando com microcontrolador em uma
placa de circuito impresso para acionamento de um conversor buck de um módulo didático
do Laboratório de Eletrônica de Potência da UFCG, permitindo o ajuste da frequência e
do ciclo de trabalho do sinal PWM;
• projetar e implementar uma interface que permita aos alunos uma compreensão
dos princípios de funcionamento de um circuito de comando para os conversores CC-CC ;
• Desenvolver uma interface para que o aluno possa configurar o sinal PWM de
saída conforme suas preferências, de modo a permitir que os alunos apliquem os conceitos
teóricos aprendidos em sala de aula na prática, possibilitando a análise das tensões e
correntes elétricas do conversor;
13
2 FUNDAMENTAÇÃO TEÓRICA
−𝑉𝑖𝑛 + 𝑉𝑙 + 𝑉𝑜 = 0
𝑉𝑙 = 𝑉𝑖𝑛 − 𝑉𝑜 . (2.1)
A tensão elétrica no indutor é positiva porque 𝑉𝑜 < 𝑉𝑖𝑛 . Agora, ao analisar o circuito
da figura 3 com a chave S aberta, o diodo entrará rapidamente em condução (idealmente
com uma tensão elétrica nula entre os seus terminais de ânodo e cátodo) devido à im-
possibilidade de variação abrupta na corrente no indutor. Assim, o diodo é polarizado
diretamente.
𝑉𝑙 = −𝑉𝑜 . (2.2)
Capítulo 2. FUNDAMENTAÇÃO TEÓRICA 15
De posse das equações (2.1) e (2.2) foi elaborado a forma de onda ideal da tensão elétrica
no indutor (figura 4). Considerando que, em regime permanente, a tensão média sobre ele
é 0V, além do fato de que o valor médio de qualquer gráfico é obtido dividindo a sua área
pelo período, tem-se o seguinte:
𝑇off = 𝑇𝑠 − 𝑇on
Então,
𝑉in × 𝑇on
𝑉𝑜 = . (2.3)
𝑇𝑠
Onde, a relação 𝑇𝑇𝑜𝑛𝑠 é conhecida como razão cíclica ou ciclo de trabalho (𝐷),
podendo variar de 0 a 1. Portanto, a relação entre a tensão elétrica de entrada e saída do
conversor é dada pela equação (2.4).
𝑉𝑜 = 𝑉𝑖𝑛 × 𝐷. (2.4)
(𝑉in − 𝑉𝑜 ) × 𝐷
𝐶= . (2.5)
8 × 𝐿 × Δ𝑉𝑐 × 𝑓 2
Capítulo 2. FUNDAMENTAÇÃO TEÓRICA 16
e
(𝑉in − 𝑉𝑜 ) × 𝐷
𝐿= . (2.6)
𝑓 × Δ𝐼𝐿
Onde Δ𝐼𝐿 e Δ𝑉𝑐 são o diferencial das amplitudes das oscilações de corrente e
tensão elétrica, no indutor e capacitor, em relação aos seus valores mínimos e máximos,
respectivamente. O termo 𝑓 é a frequência de comutação da chave 𝑆.
Sob o ponto de vista de funcionamento, verifica-se que o conversor buck pode
operar em três modos diferentes: o modo de condução contínua, onde a corrente elétrica no
indutor nunca atinge o nível de 0A; o modo de condução descontínua, no qual a corrente
elétrica atinge 0A e permanece neste valor durante um período de funcionamento do
conversor; e, terceiro, o modo de condução crítica, no qual a corrente elétrica no indutor
fica no limiar entre a condução contínua e a descontínua.
Figura 6 – PWM
A partir de um sinal seguindo este princípio aplicado nos terminais de porta e fonte
do MOSFET da família MOS, torna-se possível controlar a abertura e o fechamento dessas
chaves semicondutoras. Uma abordagem bastante comum e mais simples para gerar o sinal
PWM é por meio de microcontroladores, que, com programação, conseguem implementar
esse sinal. O sinal PWM pode ser obtido em uma de suas portas de saída com nível alto
de 3,3 e/ou 5V.
Figura 8 – PIC16F877A
)︂−1
𝐹osc
(︂
𝐶𝑚 = = 1𝜇𝑠.
4
Ou seja, o microcontrolador executa as instruções a cada 1𝜇𝑠. O período de osci-
lação do microcontrolador (𝑇osc ) é calculado da seguinte forma,
1
𝑇osc = = 250ns.
4 × 106
O Timer 2 é um temporizador de 8 bits, o que significa que ele pode contar de 0
a 255 e também pode ser utilizado como base de tempo para o sinal PWM. Para definir
o pré-escalonador, que é basicamente um divisor de frequência, é suficiente configurar os
bits 1 a 0 do registrador T2CON, que são os T2CKPS1:T2CKPS0. Isso permite obter um
pré-escalonador de 1:1, 1:4 ou 1:16. Neste caso, foi escolhido o valor de 1:4, configurando
o bit T2CKPS1 para 0 e o bit T2CKPS0 para 1. Para o pós-escalonador, é necessário
configurar os bits TOUTPS3:TOUTPS0. O estouro do Timer 2 pode ser obtido pela
equação (2.7).
PWM Duty Cycle = (𝐶𝐶𝑃 𝑅1𝐿 : 𝐶𝐶𝑃 1𝐶𝑂𝑁 < 5 : 4 >) × 𝑇osc × (pré-escalonador).
(2.9)
Onde, o conjunto de registradores (CCPR1L:CCP1CON<5:4>) controlam a razão
cíclica. Por fim, a variável PWM Duty Cycle é calculado multiplicando-se o valor do ciclo
de trabalho desejado pelo período da frequência do sinal PWM desejado. Em outras
palavras,
PWM Duty Cycle = 𝐷 × PWM Period. (2.10)
Dessa forma, é possível definir o valor do conjunto de registradores para cada valor
da razão cíclica correspondente. Assim, como o Timer 2, o Timer 0 também é de 8 bits,
e o estouro pode ser calculado usando a equação (2.11).
uma corrente máxima de saída de 2,5A e pode operar em frequências de até 250kHz.
Além disso, tem tempos de subida e descida de 25ns. É, altamente eficaz em conversores
CC-CC, assegurando o acionamento e o bloqueio eficiente do MOSFET.
Este componente, disponível em um encapsulamento DIP 8, tem o pino 2 (Ânodo)
como entrada do sinal do microcontrolador, referenciado ao pino 3 (Cátodo). Os pinos
8 (Vcc) e 5 (VEE) fornecem energia elétrica ao dispositivo, com um valor máximo reco-
mendado de 20V pelo fabricante. O pino Vo é a saída do pulso de comando amplificado,
conectado ao pino da porta da chave. O HCPL-3180 possui um LED interno que é ativado
pelo sinal de entrada quando há fluxo de corrente elétrica. Isso excita o estágio de saída,
gerando o pulso de comando com valor igual ao da alimentação elétrica do componente.
É importante observar que a fonte de alimentação precisa ser isolada do conversor, pois
o pino VEE está interligado ao pino da fonte do MOSFET.
Figura 9 – HCPL-3180
(34 − 17) × 0, 5
𝐶= = 8, 9𝜇𝐹.
8×7× 10−3 × 0, 01 × 17 × (10 × 103 )2
O valor de capacitância comercial mais próximo é de 10𝜇𝐹 e este foi escolhido com
Capítulo 3. MÓDULO DE POTÊNCIA DO CONVERSOR BUCK 23
uma tensão elétrica suportada de 100V. A figura 11 ilustra o capacitor soldado na placa
do conversor (destacado em vermelho).
(34 − 17) × 0, 5
Δ𝐼𝐿 = = 121, 43 mA.
(10 × 103 ) × (7 × 10−3 )
24
4 PROGRAMAÇÃO DO MICROCONTRO-
LADOR
• Brown-out Reset - este bit faz com que o microcontrolador reinicie após uma
baixa tensão de alimentação, em torno de 4V, quando essa tensão permanece por
um tempo superior a 100𝜇𝑠. Foi desabilitado para este projeto.
4 × 106
𝑃 𝑅2 = − 1.
𝑓 ×4×4
Para cada frequência desejada no projeto, foram calculados os valores de PR2 e os resul-
tados são listados na tabela 1.
Contagem
Tempo em nível alto = × Período
Valor máximo de contagem
Onde:
• tempo em nível alto - é o tempo durante o qual o sinal PWM está em nível alto;
• valor máximo de contagem - é o valor máximo possível de contagem (1023 para uma
resolução de 10 bits e por exemplo, 255 para uma resolução de 8 bits);
Por exemplo, para uma contagem de 512, uma resolução de 10 bits e uma frequência de
1 kHz, pode-se calcular o tempo associado à contagem usando a fórmula de correlação:
1
Contagem = 512, Valor máximo contagem = 1023, Período = = 0, 001 s
Frequência
512
Tempo = × 0, 001 s = 0, 0005 s = 500 𝜇s
1023
Então, para um valor de contagem de 512, resolução de 10 bits e uma frequência
de, por exemplo, 1 kHz, o tempo durante o qual o sinal PWM estará em nível alto (5V,
gerado pelo PIC) será 500 𝜇s, ou seja, uma razão cíclica de 0,5, pois 500 𝜇s corresponde a
50% do período (1ms, para essa frequência) do sinal PWM.
Para o conversor proposto, essa resolução de 10 bits foi escolhida para se ter um
melhor controle sobre a tensão elétrica de saída. Para uma frequência de 10kHz, por
exemplo, essa resolução permite gerar um pulso de 1 𝜇s.
Obtendo-se,
Capítulo 4. PROGRAMAÇÃO DO MICROCONTROLADOR 28
0, 0005
(CCP1RL : CCP1CON < 5 : 4 >) = = 500.
250 × 10−9 × 4
Portanto, seguindo esses passos, obtém-se os valores de (CCP1RL : CCP1CON <
5 : 4 >) para cada frequência desejada para o projeto. Esses resultados estão listados na
tabela 2.
switch(opcaof) {
case 1: % carrega o valor de PR2 para escolha da frequência
PR2 = 249; % PWM_Duty = 50% de valor inicial
reg = 500; % PWM de 1,5,10,15 e 20kHz
break;
case 5:
PR2 = 49;
reg = 100;
break;
case 10:
PR2 = 24;
reg = 50;
break;
case 15:
Capítulo 4. PROGRAMAÇÃO DO MICROCONTROLADOR 29
PR2 = 15;
reg = 32;
break;
case 20:
PR2 = 11;
reg = 24;
break;
}
PWM_Duty × reg
registrador = . (4.1)
50
Capítulo 4. PROGRAMAÇÃO DO MICROCONTROLADOR 30
Essa relação simplifica a atribuição, pois não é mais necessário utilizar as equações
(2.9) e (2.10) para recalcular o valor do conjunto de registradores para uma razão cíclica
diferente de 50%.
É importante ressaltar que os valores de PR2 e (CCPR1L:CCP1CON<5:4>) para
as frequências de 15 e 20kHz resultaram em valores decimais, sendo necessário ajustá-los
de maneira a obter frequências próximas do teórico. Esse procedimento se mostra neces-
sário e foi realizado com o objetivo de também garantir que o valor do ciclo de trabalho
não ultrapassasse o período do sinal PWM, conforme indicado na nota do datasheet do
microcontrolador: "Se o valor do ciclo de trabalho do sinal PWM for maior que o período
do sinal PWM, o pino CCP1 não será limpo."A figura 13 ilustra essa afirmação, pois é
possível observar que o ciclo de trabalho (Duty Cycle) nunca ultrapassa o valor do período
do sinal.
Por outro lado, a resolução máxima do sinal PWM, dado em bits, para uma de-
terminada frequência é calculada pela equação (4.2).
log(𝐹osc /𝐹PWM )
Resolução = . (4.2)
log 2
Então, para 20kHz tem-se no máximo 7 bits e para 15kHz tem-se 8 bits, de maneira que
para essas duas frequências a resolução fica um pouco prejudicada em relação as outras
frequências, de 1 a 10kHz.
5 INTERFACE HOMEM-MÁQUINA
• Pinos PWM Out e Ref - nesses pinos, a ponta de prova do osciloscópio deve ser
conectada para medir o sinal PWM;
Observa-se nas figuras 35, 36, 37, 38 e 39 sinal PWM medido no osciloscópio
Capítulo 6. ANÁLISE DOS RESULTADOS 44
Com a resolução de 10 bits, obtém-se pulsos com alta precisão, como exemplificado
por uma razão cíclica de 1% (1 𝜇s) a 10 kHz, conforme observado na figura 40.
2
𝑉0 = 𝑉𝑖 × √︁
1+ 1+ 4𝑘
𝐷2
.
onde 𝑘 = 2𝐿
𝑅×𝑇𝑠
.
Ao analisar as figuras 53 a 57, observa-se que, em condições de carga, a fonte
não mais tem a tensão de 34V devido à saturação do transformador de alimentação da
entrada.
Capítulo 6. ANÁLISE DOS RESULTADOS 53
A operação entre 5 e 20kHz permite relação entre tensão de entrada e saída próximo
de 0,5, como pode ser visto nas figuras 54 a 57. A diferença fica basicamente na condição
de queda de tensão nas chaves semicondutoras, MOSFET e diodo, quando em estado de
condução. Conforme explanado, em carga, ocorre uma queda de tensão no valor da tensão
de entrada em relação ao medido na figura 52. No entanto, ao calcular a razão cíclica com
os valores medidos, por exemplo, a 10 kHz, da figura 55, utilizando a equação (2.4) tem-se,
16, 07
𝐷= = 0, 49.
32, 85
Assim, o resultado está bem próximo do valor teórico, que seria 50%. Continuando
as medições, obtém-se,
Por fim, utilizando uma ponta de prova para medir corrente, verificou-se a forma
de onda da corrente no indutor a 1 kHz. Para esta frequência é possível se proceder com a
análise do funcionamento do conversor, o modo de condução crítica (figura 58) e o modo
de condução descontínua (figura 59). Além disso, a corrente também foi medida para a
frequência de 10 kHz para observar o modo de condução contínua (Figura 60).
7 TRABALHOS FUTUROS
• ajuste no código para gerar uma PWM com razão cíclica de 40% a 75% para con-
trolar um conversor boost. Essa limitação do ciclo de trabalho ocorre porque, se
for um valor superior aos mencionados, será necessário um transformador com alta
capacidade de corrente, uma vez que a corrente de entrada do conversor será elevada;
8 CONCLUSÃO
Referências
O circuito do conversor buck da figura 61 deve ser montado no módulo (figura 62),
utilizando os cabos e estabelecendo as conexões dos componentes por meio dos bornes de
ligação.
Uma vez que o conversor estiver montado, os seguintes passos devem ser realizados
para colocar o módulo em funcionamento e medir as grandezas conforme especificado na
tabela 3.
• após a seleção, o usuário deve segurar o botão "Enter"até que o LED vermelho
pisque, em seguida, deve soltar o botão "Enter";
• com o osciloscópio deve-se medir o sinal da PWM por meio dos pinos da IHM, que
são PWM Out e Ref;
void interrupt(){
if(TMR0IF_bit){
TMR0IF_bit = 0x00;
TMR0 = 0x00;
control++;
if(control==5){
control= 0x00;
led2 = ~ led2;
}
if(flagbutt.B0) cont++;
for(i=0;i<5;i++){
led = ~ led ;
delay_ms(50);
}
led=0x00;
flagbutt.B1 = 0x00;
if(flagf.B1 && opcaof==1){
opcaof+=4;
}
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 66
else{
if(flagf.B1) opcaof+=5;
if(opcaof>20) opcaof=20;
opcaof-=4;
}
else{
if(PWM_Duty<99){
PWM_Duty++;
}
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 67
if(PWM_Duty>0){
PWM_Duty--;
}
}
}
void main() {
CCPR1L=0x00;
CCP1Y_bit = 0;
CCP1X_bit= 0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Chr(1,7,’L’);
Lcd_Chr_Cp (’E’);
Lcd_Chr_Cp (’P’);
delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Chr_Cp(’ ’);
Lcd_Chr(1,1,’C’);
Lcd_Chr_Cp(’o’);
Lcd_Chr_Cp(’n’);
Lcd_Chr_Cp(’v’);
Lcd_Chr_Cp(’e’);
Lcd_Chr_Cp(’r’);
Lcd_Chr_Cp(’s’);
Lcd_Chr_Cp(’o’);
Lcd_Chr_Cp(’r’);
Lcd_Chr_Cp(’ ’);
Lcd_Chr_Cp(’C’);
Lcd_Chr_Cp(’C’);
Lcd_Chr_Cp(’-’);
Lcd_Chr_Cp(’C’);
Lcd_Chr_Cp(’C’);
Lcd_Chr_Cp(’ ’);
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 69
Lcd_Chr(2,3,’P’);
Lcd_Chr_Cp(’r’);
Lcd_Chr_Cp(’e’);
Lcd_Chr_Cp(’s’);
Lcd_Chr_Cp(’s’);
Lcd_Chr_Cp(’ ’);
Lcd_Chr_Cp(’E’);
Lcd_Chr_Cp(’n’);
Lcd_Chr_Cp(’t’);
Lcd_Chr_Cp(’e’);
Lcd_Chr_Cp(’r’);
while(1){
leiturabutt();
}
}
void leiturabutt(){
if(!ENTER){
flagbutt.B0 = 0x01;
flagLCD.B1 = 0x01;
}
if(ENTER && flagbutt.B0){
cont = 0x00;
flagbutt.B0 = 0x00;
if(!flagbutt.B5){
freq();
}
else {
dutyc();
}
}
}
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 70
void freq(){
flagbutt.B4 = 0x00;
for(i=0;i<5;i++){
if(cont==16){
led = ~ led ;
delay_ms(50);
}
led=0x00;
flagf.B1=0x01;
while(!flagbutt.B5){
IntToStr(opcaof,frq);
Lcd_Out(1,8,frq);
switch(opcaof){
case 1 :
PR2 = 249;
reg = 500;
break;
case 5 :
PR2 = 49;
reg = 100;
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 71
break;
case 10 :
PR2 = 24;
reg = 50;
break;
case 15 :
PR2 = 15;
reg = 32;
break;
case 20 :
PR2 = 11;
reg = 24;
break;
if(!ENTER){
flagbutt.B6 =0x01;
break;
}
}
}
void dutyc(){
flagbutt.B4 = 0x01;
flagf.B1=0x00;
flagLCD.B2=0x01;
limpLCD();
Lcd_Out(1,1,"D(%):");
Lcd_Out(2,1,"Enter: Voltar");
APÊNDICE B. Código em linguagem C desenvolvido para gerar o sinal PWM 72
flagbutt.B1 = 0x00;
flagbutt.B2 = 0x00;
while(flagbutt.B5){
PWM_on();
IntToStr(PWM_Duty,dut);
Lcd_Out(1,6,dut);
if(!ENTER) {
flagbutt=0x00;
opcaof=0x01;
break;
}
if(!butt1) flagbutt2.B1=0x01;
if(!butt2) flagbutt2.B2=0x01;
if(cont2==0){
if(PWM_Duty<99) PWM_Duty++;
}
if(butt2 && flagbutt2.B2){
cont2=0x00; // evitar deboucing
flagbutt2.B2=0x00;
if(cont2==0){
if(PWM_Duty>0) PWM_Duty--;
}
}
}
void limpLCD(){ // Limpeza do LCD
if(flagLCD.B2 || flagLCD.B1){
Lcd_Cmd(_LCD_CLEAR);
flagLCD.B2 = 0x00;
flagLCD.B1 = 0x00;
}
}
void PWM_off(){
CCP1M3_bit = 0x00;
CCP1M2_bit = 0x00;
}
void PWM_on(){
CCP1M3_bit = 0x01;
CCP1M2_bit = 0x01;
}