Escolar Documentos
Profissional Documentos
Cultura Documentos
INTRODUÇÃO
A potência elétrica, como tal, pode ser medida. A unidade de medida da potência elétrica é o
watts, simbolizado pela letra W.
Sendo que:
Potência Aparente
Potência Ativa
Potência ativa ou potência real, é a potência que realmente produz o trabalho na carga. Tem
como unidade de medida em Watts (W) e é representado pela letra P. Nos cálculos da mesma,
deve considerar o produto entre a corrente, tensão e o fator de potência (cos φ).
Potência Reativa
Potência reativa, é a porção da potência aparente que é fornecida ao circuito. Tendo como
função constituir o circuito magnético nas bobinas e um campo elétrico nos capacitores. Como
os campos aumentam e diminuem acompanhando a frequência, a potência reativa varia duas
vezes por período entre a fonte de corrente e o consumidor. A mesma, aumenta a carga dos
geradores, dos condutores e dos transformadores originando perdas de potência nesses
elementos do circuito. A unidade de medida é p Volt Ampère reativo (Var), representado pela
letra Q.
Em resumo,
Fator de Potência
O fator de potência é uma relação entre potência ativa e reativa. Tendo a diferença entre o
consumo aparente e o consumo real. Ele indica uma eficiência alta e inversamente um fator de
potência baixo indica a baixa eficiência. Um baixo fator de potência indica que não está
aproveitando plenamente a energia. Para se corrigir este baixo aproveitamento, é utilizado
uma técnica conhecida como correção do fator de potência, onde é conseguida mediante a
acoplamento de banco de capacitores, com uma potência reativa contrária ao da carga,
tentando ao máximo, anular essa componente. Por exemplo, o efeito indutivo de motores
pode ser anulado com a conexão em paralelo de um capacitor junto ao equipamento.
Tendo como a principal vantagem em corrigir o fator de potência é na economia que gera na
conta de energia elétrica, além de evitar multas.
Banco de Capacitores
Como dito, anteriormente o banco de capacitores serve para corrigir o fator de potência,
tendo três tipos, sendo os bancos programáveis, os fixos e os automáticos. Cada um tem uma
determinada indicação que apenas uma empresa técnica pode informar.
Contudo, após entendermos um pouco sobre a teoria da correção de fator de potência, segue
o exemplo 19.5.
Um motor de 5 hp com um fator de potência atrasado 0,6 e cuja eficiência de 92 por cento
está conectado a uma fonte de 208 V e 60 HZ.
Conforme visto nas imagens, é demostrado como deve proceder com os cálculos para se
definir qual o valor do capacitor que deve ser acoplado ao sistema, para que se alcançar a
melhor correção do fator de potência para o sistema.
Imagem 07, onde a mesmo mostra a configuração do motor utilizado para a partida direta.
Imagem 08, motor que será utilizado na partida direta
Imagem 09,
Imagem 10,
Imagem 13,
Imagem 14,
E por fim, segue também, o código fonte de um sistema desenvolvido utilizando a linguagem C
para se calcular a correção do fator de potência, de tal forma, que não se precisa fazer os
cálculos na mão, conforme demostrado anteriormente.
Main.c;
Funcoes.c;
Struct.c
No arquivo Main.c, como pode ser visto logo abaixo, possui como include o arquivo funcoes.h
e dentro da função main, se chama outra função chamada Iniciar Programa.
#include "funcoes.h"
int main()
IniciarPrograma();
return 0;
}
A função chamada anteriormente esta declarada sua implementação da funcoes.c, onde nesta
mesma classe, possui diversas outras implementações de funções que serão utilizada pelo
sistema, conforme pode ser visto.
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <unistd.h>
#include <windows.h>
#include <conio.h>
#include "funcoes.h"
#include "struct.h"
#define PI 3.14159265
void IniciarPrograma(){
MenuPrincipal();
}
void MenuPrincipal(){
int vOpt = 0;
scanf("%d",&vOpt);
switch (vOpt){
case 1:
system("cls");
CadastrarCliente();
break;
case 2:
system("cls");
CadastrarEquipamento();
break;
case 3:
system("cls");
MostrarDados();
break;
case 4:
break;
case 0:
printf("\t\t PROGRAMA FINALIZADO\n\n");
exit(0);
break;
default:
printf("Opção Invalida!\n");
Sleep(2000);
system("cls");
MenuPrincipal();
void IniciarCalculos(){
int opt;
scanf("%d",&opt);
if (opt = 1){
CalculaModuloPotenciaAparente();
CalculaPotenciaReativa();
CalculaCapacitor();
CalculaCorrenteNaoCompensada();
CalculaCorrenteCompensada();
CalculaCorrenteNoMotor();
} else {
printf("\n\n");
IniciarCalculos();
/**Métodos de Calculos**/
float CalculaFatorPotenciaAngulo(float pFatorPotencia){
vValor = 180/PI;
vResultadoAngulo = acos(pFatorPotencia)*vValor;
SetPotenciaInicial(pPotenciaInicial * 746);
float vValor = 0;
SetPotenciaAtiva(GetPotenciaInicial() / vValor);
SetPotenciaAtiva(GetPotenciaInicial() / pPorcentagem);
} else {
exit(1);
void CalculaModuloPotenciaAparente(){
SetModuloPotenciaAparente(GetPotenciaAtiva()/GetFatorPotencia());
void CalculaPotenciaReativa(){
SetPotenciaReativa(GetModuloPotenciaAparente()*(sin(GetAnguloFatorPotencia()*PI/180)) );
void CalculaCapacitor(){
vResultado = (GetPotenciaAtiva()*(tan(GetAnguloFatorPotencia()*PI/180)-
tan(GetAnguloFatorPotenciaCorrecao()*PI/180)))/(GetFrequenciaAngular()*(pow(GetTensao(),
2)));
SetValorCapacitor(vResultado);
void CalculaCorrenteNaoCompensada(){
SetCorrenteNaoCompensada(GetModuloPotenciaAparente()/GetTensao());
void CalculaCorrenteCompensada(){
SetCorrenteCompensada(GetPotenciaAtiva()/GetTensao());
void CalculaCorrenteNoMotor(){
/**Métodos Sets**/
Tensao = pTensao;
FatorPotencia = pFatorPotencia;
PotenciaInicial = pPotenciaInicial;
PotenciaAtiva = pPotenciaAtiva;
AnguloFatorPotencia = pAnguloFatorPotencia;
FrequenciaAngular = pFrequenciaAngular;
ModuloPotenciaAparente = pModuloPotenciaAparente;
}
PotenciaReativa = pPotenciaReativa;
FatorPotenciaCorrecao = pFatorPotenciaCorrecao;
AnguloFatorPotenciaCorrecao = pAnguloFatorPotenciaCorrecao;
ValorCapacitor = pValorCapacitor;
CorrenteNaoCompensada = pCorrenteNaoCompensada;
CorrenteCompensada = pCorrenteCompensada;
CorrenteNoMotor = pCorrenteNoMotor;
/**Métodos Gets**/
float GetTensao(){
return Tensao;
float GetFatorPotencia(){
return FatorPotencia;
float GetPotenciaInicial(){
return PotenciaInicial;
float GetPotenciaAtiva(){
return PotenciaAtiva;
float GetAnguloFatorPotencia(){
return AnguloFatorPotencia;
float GetFrequenciaAngular(){
return FrequenciaAngular;
float GetModuloPotenciaAparente(){
return ModuloPotenciaAparente;
float GetPotenciaReativa(){
return PotenciaReativa;
}
float GetFatorPotenciaCorrecao(){
return FatorPotenciaCorrecao;
float GetAnguloFatorPotenciaCorrecao(){
return AnguloFatorPotenciaCorrecao;
float GetValorCapacitor(){
return ValorCapacitor;
float GetCorrenteNaoCompensada(){
return CorrenteNaoCompensada;
float GetCorrenteCompensada(){
return CorrenteCompensada;
float GetCorrenteNoMotor(){
return CorrenteNoMotor;
/*Novos Metodos*/
void MostrarDados(){
printf("1 - Cliente\n");
printf("2 - Equipamento\n");
int opt = 0;
scanf("%d",&opt);
switch (opt){
case 1:
DadosCliente();
break;
case 2:
DadosEquipamento();
break;
default:
printf("Opcao invalida!\n\n");
Sleep(2000);
system("cls");
MostrarDados();
break;
void DadosCliente(){
system("cls");
int vId = 0;
scanf("%d",&vId);
char vCodigo[2];
sprintf(vCodigo,"%d",vId);
strcat(nomeArquivo,vCodigo);
strcat(nomeArquivo,".txt");
system("cls");
LerArquivo(nomeArquivo);
Sleep(2000);
printf("\n\n\n\n");
int opt = 0;
scanf("%d",&opt);
if (opt == 0){
system("cls");
MenuPrincipal();
void DadosEquipamento(){
system("cls");
int vId = 0;
scanf("%d",&vId);
scanf("%d",&vId2);
char vCodigo[2];
char vCodigo2[2];
sprintf(vCodigo,"%d",vId);
sprintf(vCodigo2,"%d",vId2);
strcat(nomeArquivo,vCodigo);
strcat(nomeArquivo,"_Cliente_");
strcat(nomeArquivo,vCodigo2);
strcat(nomeArquivo,".txt");
system("cls");
LerArquivo(nomeArquivo);
Sleep(2000);
printf("\n\n\n\n");
int opt = 0;
scanf("%d",&opt);
if (opt == 0){
system("cls");
MenuPrincipal();
} else {
SetFatorPotencia(pFatorPotencia);
SetAnguloFatorPotencia(CalculaFatorPotenciaAngulo(pFatorPotencia));
SetTensao(pTensao);
} else {
CalculaPotenciaAtiva(pPorcentagem);
CalculaFrequenciaAngular(pFrequencia);
SetFatorPotenciaCorrecao(pFatorPotenciaCorrecao);
SetFatorPotenciaCorrecao(CalculaFatorPotenciaAngulo(pFatorPotenciaCorrecao));
É importante observar que os protótipos das funções fica no arquivo funções.h, conforme
pode ser visto.
void IniciarPrograma();
void MenuPrincipal();
void IniciarCalculos();
void CalculaModuloPotenciaAparente();
void CalculaPotenciaReativa();
void CalculaCapacitor();
void CalculaCorrenteNaoCompensada();
void CalculaCorrenteCompensada();
void CalculaCorrenteNoMotor();
float GetTensao();
float GetFatorPotencia();
float GetPotenciaInicial();
float GetPotenciaAtiva();
float GetAnguloFatorPotencia();
float GetFrequenciaAngular();
float GetModuloPotenciaAparente();
float GetPotenciaReativa();
float GetFatorPotenciaCorrecao();
float GetAnguloFatorPotenciaCorrecao();
float GetValorCapacitor();
float GetCorrenteNaoCompensada();
float GetCorrenteCompensada();
float GetCorrenteNoMotor();
void MostrarDados();
void DadosCliente();
void DadosEquipamento();
Será visto agora a implementação da struct.c.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include "struct.h"
#include "funcoes.h"
#include <windows.h>
#define TAM 20
char id[2];
char empresa[30];
char nomeArquivo[30];
};
char id_cliente[2];
char id[2];
char PotenciaAtiva[15];
char PotenciaReativa[15];
char PotenciaAparente[15];
char Capacitor[15];
char CorrenteCompensada[15];
char CorrenteNaoCompensada[15];
char CorrenteNoMotor[15];
char PotenciaMotorHP[15];
char FatorPotenciaMotor[15];
char TensaoMotor[15];
char PorcentagemAproveitamento[15];
char FrequenciaMotorHZ[15];
char FatorPotenciaCorrecaoMotor[15];
char nomeArquivo[30];
};
int QtdeCadastro = 0;
int QtdeCadastroEquipamento = 0;
void CadastrarCliente(){
printf("\t\tCADASTRO DE CLIENTE\n\n");
char empresa[30];
gets(empresa);
gets(empresa);
char id[2];
strcpy(c[QtdeCadastro].empresa,empresa);
char nomeArquivo[30] = "Cliente_";
strcat(nomeArquivo,c[QtdeCadastro].id);
strcat(nomeArquivo,".txt");
strcpy(c[QtdeCadastro].nomeArquivo,nomeArquivo);
CriarArquivoTexto_char(c[QtdeCadastro].nomeArquivo,1);
QtdeCadastro = QtdeCadastro + 1;
Sleep(2000);
system("cls");
Decisao(1);
switch (pOpt){
case 1:
system("cls");
CadastrarClienteNovamente();
break;
case 2:
system("cls");
CadastrarEquipamentoNovamente();
break;
default:
printf("Opcao invalida!\n\n");
Sleep(2000);
system("cls");
Decisao(pOpt);
void CadastrarClienteNovamente(){
int vOpt = 0;
scanf("%d",&vOpt);
switch (vOpt){
case 1:
system("cls");
CadastrarCliente();
break;
case 2:
system("cls");
CadastrarEquipamentoNovamente();
break;
default:
printf("Opcao invalida!\n\n");
Sleep(2000);
system("cls");
Decisao(1);
}
void CadastrarEquipamento(){
printf("\t\tCADASTRO DE EQUIPAMENTO\n\n");
printf("Informe o ID do Cliente:\n");
int id_cliente = 0;
scanf("%d",&id_cliente);
sprintf(e[QtdeCadastroEquipamento].id_cliente,"%d",id_cliente);
sprintf(e[QtdeCadastroEquipamento].id,"%d",QtdeCadastroEquipamento);
sprintf(e[QtdeCadastroEquipamento].PotenciaMotorHP,"%f",InformarPotenciaMotorEquipam
ento());
sprintf(e[QtdeCadastroEquipamento].FatorPotenciaMotor,"%f",InformarFatorPotenciaEquipa
mento());
sprintf(e[QtdeCadastroEquipamento].TensaoMotor,"%f",InformarTensaoEquipamento());
sprintf(e[QtdeCadastroEquipamento].PorcentagemAproveitamento,"%f",InformarPorcentage
mAproveitamentoEquipamento());
sprintf(e[QtdeCadastroEquipamento].FrequenciaMotorHZ,"%f",InformarFrequenciaHzEquipam
ento());
sprintf(e[QtdeCadastroEquipamento].FatorPotenciaCorrecaoMotor,"%f",InformarFatorPotenci
aCorrecaoEquipamento());
float aux = 0;
aux = atof(e[QtdeCadastroEquipamento].PotenciaMotorHP);
SetPotenciaMotorEquipamento(aux);
aux = 0;
aux = atof(e[QtdeCadastroEquipamento].FatorPotenciaMotor);
SetFatorPotenciaEquipamento(aux);
aux = 0;
aux = atof(e[QtdeCadastroEquipamento].TensaoMotor);
SetTensaoEquipamento(aux);
aux = 0;
aux = atof(e[QtdeCadastroEquipamento].PorcentagemAproveitamento);
SetPorcentagemEquipamento(aux);
aux = 0;
aux = atof(e[QtdeCadastroEquipamento].FrequenciaMotorHZ);
SetFrequenciaEquipamento(aux);
aux = 0;
aux = atof(e[QtdeCadastroEquipamento].FatorPotenciaCorrecaoMotor);
SetFatorPotenciaCorrecaoEquipamento(aux);
IniciarCalculos();
sprintf(e[QtdeCadastroEquipamento].PotenciaAtiva,"%f",GetPotenciaAtiva());
sprintf(e[QtdeCadastroEquipamento].PotenciaReativa,"%f",GetPotenciaReativa());
sprintf(e[QtdeCadastroEquipamento].PotenciaAparente,"%f",GetModuloPotenciaAparente());
sprintf(e[QtdeCadastroEquipamento].Capacitor,"%f",GetValorCapacitor());
sprintf(e[QtdeCadastroEquipamento].CorrenteCompensada,"%f",GetCorrenteCompensada());
sprintf(e[QtdeCadastroEquipamento].CorrenteNaoCompensada,"%f",GetCorrenteNaoCompen
sada());
sprintf(e[QtdeCadastroEquipamento].CorrenteNoMotor,"%f",GetCorrenteNoMotor());
char nomeArquivo[30] = "Equipamento_";
strcat(nomeArquivo,e[QtdeCadastroEquipamento].id);
strcat(nomeArquivo,"_Cliente_");
strcat(nomeArquivo,e[QtdeCadastroEquipamento].id_cliente);
strcat(nomeArquivo,".txt");
strcpy(e[QtdeCadastroEquipamento].nomeArquivo,nomeArquivo);
CriarArquivoTexto_char(e[QtdeCadastroEquipamento].nomeArquivo,2);
QtdeCadastroEquipamento = QtdeCadastroEquipamento + 1;
Sleep(2000);
system("cls");
Decisao(2);
void CadastrarEquipamentoNovamente(){
int vOpt = 0;
scanf("%d",&vOpt);
switch (vOpt){
case 1:
system("cls");
CadastrarEquipamento();
break;
case 2:
system("cls");
MenuPrincipal();
break;
default:
printf("Opcao invalida!\n\n");
Sleep(2000);
system("cls");
Decisao(1);
float InformarPotenciaMotorEquipamento(){
float vPotenciaMotor = 0;
scanf("%f",&vPotenciaMotor);
return vPotenciaMotor;
float InformarFatorPotenciaEquipamento(){
float vFatorPotencia = 0;
scanf("%f",&vFatorPotencia);
} else {
return vFatorPotencia;
float InformarTensaoEquipamento(){
float vTensao = 0;
scanf("%f",&vTensao);
return vTensao;
} else {
InformarTensaoEquipamento();
float InformarPorcentagemAproveitamentoEquipamento(){
float vPorcentagem = 0;
scanf("%f",&vPorcentagem);
return vPorcentagem;
float InformarFrequenciaHzEquipamento(){
float vFrequencia = 0;
scanf("%f",&vFrequencia);
return vFrequencia;
float InformarFatorPotenciaCorrecaoEquipamento(){
float vFatorPotenciaCorrecao = 0;
scanf("%f",&vFatorPotenciaCorrecao);
InformarFatorPotenciaCorrecaoEquipamento();
} else {
return vFatorPotenciaCorrecao;
FILE *arquivo;
if (arquivo == NULL) {
return 1;
switch (pTipo){
case 1:
fprintf(arquivo,"ID: %s\n",c[QtdeCadastro].id);
fprintf(arquivo,"Empresa: %s\n\n",c[QtdeCadastro].empresa);
fprintf(arquivo,"Arquivo: %s",c[QtdeCadastro].nomeArquivo);
break;
case 2:
fprintf(arquivo,"DADOS DO CADASTRO DE EQUIPAMENTO\n\n","");
fprintf(arquivo,"Potencia Aparente:
%s\n",e[QtdeCadastroEquipamento].PotenciaAparente);
fprintf(arquivo,"Capacitor: %s\n",e[QtdeCadastroEquipamento].Capacitor);
fprintf(arquivo,"Corrente Compensada:
%s\n",e[QtdeCadastroEquipamento].CorrenteCompensada);
fprintf(arquivo,"Corrente no Motor:
%s\n\n",e[QtdeCadastroEquipamento].CorrenteNoMotor);
fprintf(arquivo,"Arquivo: %s",e[QtdeCadastroEquipamento].nomeArquivo);
break;
default:
printf("Opcao Invalida!\n");
}
fclose (arquivo);
FILE *arquivo;
if (arquivo == NULL) {
return 1;
char teste[100];
while (!feof(arquivo)) {
printf("%s",fgets(teste,100,arquivo));
fclose (arquivo);
E os protótipos das implementações feita na classe anterior, fica no arquivo struct.h, conforme
será visto.
void CadastrarCliente();
void CadastrarClienteNovamente();
void CadastrarEquipamento();
float InformarPotenciaMotorEquipamento();
float InformarFatorPotenciaEquipamento();
float InformarTensaoEquipamento();
float InformarPorcentagemAproveitamentoEquipamento();
float InformarFrequenciaHzEquipamento();
float InformarFatorPotenciaCorrecaoEquipamento();
Em resumo, da ideia inicial para o desenvolvimento deste sistema, é que deve conter um
cadastro prévio do cliente e do equipamento, onde estes dados colhidos serão salvos em
arquivo texto, onde cada cliente terá o seu próprio arquivo. E quando for preciso, seria feita a
leitura do mesmo, e mostrado na tela para o cliente visualizar os resultados. Contudo, veremos
algumas imagens da execução do sistema.
Imagem 17
Imagem 18
Imagem 19
Imagem 20
Imagem 21
Imagem 22
Imagem 23
Imagem 24