Professional Documents
Culture Documents
CURITIBA
2015
ADELSON MARTINS CRUZ
DIEGO BERWANGER
CURITIBA
2015
TERMO DE APROVAO
Este trabalho de concluso de curso foi apresentado no dia 02 de maro de 2015, como
requisito parcial para obteno do ttulo de Tecnlogo em Mecatrnica Industrial, outorgado
pela Universidade Tecnolgica Federal do Paran. Os alunos foram arguidos pela Banca
Examinadora composta pelos professores abaixo assinados. Aps deliberao, a Banca
Examinadora considerou o trabalho aprovado.
______________________________
Prof. Dr. Milton Luiz Polli
Coordenador de Curso
Departamento Acadmico de Mecnica
______________________________
Prof. Esp. Srgio Moribe
Responsvel pela Atividade de Trabalho de Concluso de Curso
Departamento Acadmico de Eletrnica
BANCA EXAMINADORA
_____________________________ __________________________
Prof. Mrcio Augusto Lombardi Prof. Maro Roger Gurios
UTFPR UTFPR
___________________________
Prof. Ubiradir Mendes Pinto
UTFPR
___________________________
Prof. Gilmar Lunardon
Orientador - UTFPR
Examining the current global context of industries and factories, we can realize that
the continuous production process seeks to generate, in the shortest time, the
greatest amount of possible product, that is, a continuous and constant production
process, widely used in various types of industries, such as petro-chemicals, steel
and pulp and paper. This continuous flow of production requires a substantial
investment in machinery that must not, under any circumstances, interrupt the
production process. Thus, the high availability of such equipment - much of which
use electric motors - becomes a strategic role for business, representing a huge
competitive advantage. And, one way to allow electric motors to remain available as
long as possible for production is through the identification of anomalies both
available and installed equipment in the production - in order to prevent its failure and
thus generate a reduction in quantities and times of the production line stops. Thus,
this work seeks to develop an automated system for evaluating electromechanical
conditions of three-phase induction motors and generate a diagnosis of the condition
of the equipment. Therefore, the automated evaluation system of electric motors
must have the ability to perform a sequence of pre-established tests and at the end
of the analysis, send a printed report consisting the diagnosis on equipment condition
evaluation. Therefore, it was developed an embedded system which consisted in the
use of microcontrollers, sensors and transducers, and the development of an
interface between the user and the system manner an LCD screen and a touch
screen. Regarding the application of the rated torque for analysis of consumed
motors current, it was developed a mechanically actuated device driven by the
rotational equipment shaft, exerting a load on the pressure sensor (load cell)
mounted at a predetermined distance center of rotation.
Keywords: Rated Torque. Induction Motor. Insulation Resistance, Test Electric Motor.
LISTA DE ILUSTRAES
1 INTRODUO
1.1 TEMA
1.3 PROBLEMA
1.4 OBJETIVOS
1.5 JUSTIFICATIVA
2 FUNDAMENTAO TERICA
interior do motor. Outra inferncia que pode ser feita que a resistncia medida
corresponde ao valor medido para dois enrolamentos, assim necessita-se dividir o
valor por dois. Na presena de seis condutores na caixa de ligao, o valor da
resistncia medido o prprio valor do enrolamento.
(1)
(2)
ENTRE 0 1 PERIGOSO
ENTRE 2 3 CONFIVEL
ENTRE 3 4 BOM
3 DESENVOLVIMENTO
3.3 SENSORES
20% e 90%. A temperatura possui uma preciso de dois graus e a umidade possui
uma preciso na faixa de cinco por cento. O sensor foi escolhido devido a
caracterstica de possuir os sensores de temperatura e umidade em um nico
invlucro, possibilitando a reduo de custos adicionais.
A Figura 11 apresenta o sensor de temperatura utilizado.
3.4 CONTROLADORES
Foi adotada uma tela de cristal lquido (LCD) de duas linhas e dezesseis
caracteres, com luz de fundo. Essa tela exibe em tempo real o torque e a velocidade
em rotaes por minuto do motor, confome pode ser observado na Figura 19.
4 ESTRUTURA MECNICA
INCLUSO DE BIBLIOTECAS
Define todas as bibliotecas utilizadas no programa.
Dados Tcnicos:
Fabricante: Weg
Modelo: 71
Srie: 057659
Potncia: 0,25 Cv
Tenso: 220/380 V
Corrente: 0,843 A
Rotao: 1710 Rpm
Rendimento: 85 %
Temperatura Ambiente: 27 C
Umidade Relativa Inicial: 84 %
Teste de Continuidade:
Resistncia entre fase R-S: 24,8
Resistncia entre fase S-T: 26,3
Resistncia entre fase R-T: 26,5
Em 30 segundos: 850 M
Em 1 minuto: 1200 M
Em 10 minutos: 1300 M
Resultado Final:
7 CONSIDERAES FINAIS
Atingiu-se o objetivo principal do trabalho proposto, uma vez que foi desenvolvido
um sistema automatizado capaz de avaliar de forma confivel, as caractersticas
fsicas e eletromecnicas necessrias para o funcionamento de um motor de
induo trifsico de baixa potncia.
Este sistema foi capaz de exibir em tempo real o torque, a rotao, a corrente
consumida, a temperatura e a umidade do motor por meio de duas telas, alm de
gerar com sucesso um relatrio impresso contando o diagnstico do motor aps o
trmino do processo de avaliao do mesmo.
Dessa forma, o dispositivo se comportou conforme esperado durante a maioria
dos testes. Houve dificuldade durante a programao da tela sensvel ao toque, uma
vez que esta no estava contemplada na proposta inicial do projeto e demandou
uma alta carga horria para sua satisfatria implementao.
Uma sugesto para trabalhos futuros seria o desenvolvimento de um dispositivo
redimensionado para atender outras faixas de potncias (mdias e altas potncias)
alm de outras formas construtivas, como servo-motores e motores de corrente
contnua.
42
REFERNCIAS
}
//escreve no display [Insira a resistencia (L1)] ou [(L2)] ou [(L3)] dependendo do valor
do enrolamento, que pode ser, enrolamento=1 ou enrolamento=2 ou enrolamento=3.
void drawEnterDataRes(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
if(enrolamento==1){
myGLCD.print("Insira a resistencia ", 10, 10);
myGLCD.print("entre fase R-S:", 10, 25);
}
if(enrolamento==2){
myGLCD.print("Insira a resistencia ", 10, 10);
myGLCD.print("entre fase S-T:", 10, 25);
}
if(enrolamento==3){
myGLCD.print("Insira a resistencia ", 10, 10);
myGLCD.print("entre fase R-T:", 10, 25);
}
myGLCD.setBackColor(255, 255,255 );
48
void drawSerie(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a serie do", 10, 10);
myGLCD.print("motor ", 10, 30);
void drawTensao(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a tensao do", 10, 10);
myGLCD.print("motor ", 10, 30);
void drawCorrente(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a corrente do", 10, 10);
myGLCD.print("motor ", 10, 30);
void drawRotacao(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a rotacao do", 10, 10);
myGLCD.print("motor ", 10, 30);
void drawRendimento(){
50
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira o rendimento do", 10, 10);
myGLCD.print("motor ", 10, 30);
void drawResistenciaEm30Sec(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a resistencia de", 10, 10);
myGLCD.print("isolamento em 30s", 10, 30);
void drawResistenciaEm1Min(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a resistencia de", 10, 10);
51
void drawResistenciaEm10Min(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira a resistencia de", 10, 10);
myGLCD.print("isolamento em 10 minutos", 10, 30);
void drawModelo(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 255, 255);
myGLCD.print("Insira o modelo do", 10, 10);
myGLCD.print("motor ", 10, 30);
myGLCD.setBackColor(255, 255,255 );
myGLCD.setColor(255, 255, 255);
myGLCD.fillRoundRect (40, 70, 350, 100);
drawButtons();// desenha os botoes de numeros, limpa e enter
}
//desenha a tela inicial no display
void drawStartScreen(){
myGLCD.setBackColor(0, 0, 0);
myGLCD.setColor(255, 0, 0);
myGLCD.print("Sistema Automatizado de", 10, 10);
myGLCD.print("Teste de Motor Eletrico", 10, 30);
myGLCD.setBackColor(0, 0, 255);
myGLCD.setBackColor(0, 0, 255);
for (x=0; x<5; x++) //for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255); // tres cores principais
(vermelho,verde,azul)
myGLCD.fillRoundRect (50+(x*60), 120, 100+(x*60), 150);//
myGLCD.setColor(255, 255, 255); // cor dos
numeros(vermelho,verde,azul) total da branco
myGLCD.drawRoundRect (50+(x*60), 120, 100+(x*60), 150);
myGLCD.printNumI(x+1, 67+(x*60), 127);
}
// Draw the center row of buttons
for (x=0; x<5; x++)
{
myGLCD.setColor(0, 0, 255);
myGLCD.fillRoundRect (50+(x*60), 160, 100+(x*60), 190);
myGLCD.setColor(255, 255, 255);
myGLCD.drawRoundRect (50+(x*60), 160, 100+(x*60), 190);
if (x<4)
54
{
if ((x>=50) && (x<=100)) // botao 1
{
numero=1; //numero recebe seu respectivo valor
auxiliar=(auxiliar*10)+numero; //auxiliar recebe o real valor digitado
}
// botao limpa
if ((y>=200) && (y<=240))
{
if ((x>=50) && (x<=190)){
myGLCD.clrScr();// limpa a tela
numero=11; //significa limpa
auxiliar=0;//limpa auxiliar
}
}
//botao enter
if ((y>=200) && (y<=240))
{
if ((x>=200) && (x<=340)){ // botao enter
myGLCD.clrScr();//limpa a tela
numero=10; //significa enter, fim da entrada de dados
}
}
delay(200);
}
}
}
//funao que imprime os resultados na themal
void Impressora(){
Serial.begin(9600); //9600
pinMode(7, OUTPUT); digitalWrite(7, LOW); // To also work w/IoTP printer
printer.begin();
58
printer.setSize('S');
printer.print("DADOS TECNICOS");
printer.println("");
printer.println("");
printer.println("");
//maximo de 32 caracteres em small por linha
printer.print("Modelo do motor: ");
printer.print(modelo);
printer.println(" ");
printer.print("Serie: ");
printer.print(serie);
printer.println(" ");
printer.setSize('S');
printer.print("TESTE DO MOTOR SEM CARGA");
printer.println("");
printer.println("");
printer.println("");
printer.print("Temperatura da carca");
printer.write(135);
printer.print("a: ");
printer.print(temperaturaDesligado);
printer.print(" ");
printer.write(248);
printer.print("C");
printer.println("");
printer.println("");
60
printer.println("");
printer.println("");
printer.setSize('S');
printer.print("Teste de continuidade");
printer.println("");
printer.println("");
printer.println("");
printer.println("");
printer.setSize('S');
printer.println("Teste de resistencia do ");
printer.println("isolamento.");
printer.println("");
printer.print("Temperatura da carca");
printer.write(135);
printer.print("a: ");
printer.print(temperaturaLigado);
printer.print(" ");
printer.write(248);
printer.print("C");
printer.println("");
printer.println("");
printer.print("Vibra");
printer.write(135);
printer.print("ao: ");
printer.print(vibracao);
63
printer.println(" Hz");
printer.println("");
printer.println("");
printer.println("");
printer.setSize('S');
printer.print("RESULTADO FINAL");
printer.println("");
64
printer.println("");
Ia=resistencia1Min/resistencia30Sec;
Ip=resistencia10Min/resistencia1Min;
criterio=0;
if(Ia<1.60){
65
printer.print("BOM");
critrio=1;
}
else{
if(Ia>=1.60) {
printer.print("EXCELENTE");
critrio=1;
}
else{
printer.print("FALHA DO SISTEMA");
critrio=0;
}
}
}
}
}
}
printer.println(" ");
}
else{
if(Ip<2.00){
printer.print("QUESTIONVEL");
}
else{
if(Ip<3.00){
printer.print("CONFIVEL");
critrio=critrio+1;
}
else{
if(Ip<4.00){
printer.print("BOM");
critrio=critrio+1;
}
else{
if(Ip>=4.00) {
printer.print("EXELENTE");
critrio=critrio+1;
}
else{
printer.print("FALHA DO SISTEMA");
}
}
}
}
}
}
67
printer.println(" ");
if(criterio==2){
printer.println("Classificao final: ");
printer.println("Motor Aprovado");
}
else{
printer.println("Classificao final: ");
printer.println("MOTOR REPROVADO");
}
}
void loop(){
//modelo
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawModelo();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
delay(500); // espera 1/2 segundo
nmero=12; // limpa nmero
LeitorTeclaToutch(); //le as teclas touch
}while(nmero==11);
modelo=auxiliar; // a potncia atualizada
//srie
69
//potncia
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawEnterDataPot();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("W", 325, 78);
delay(500); // espera 1/2 segundo
nmero=12; // limpa nmero
LeitorTeclaToutch(); //le as teclas touch
}while(nmero==11);
potncia=auxiliar; // a potncia atualizada
//tenso
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawTenso();
myGLCD.setBackColor (255,255,255);
70
myGLCD.setColor(255, 0, 0);
myGLCD.print("V", 325, 78);
delay(500); //espera 1/2 segundo
nmero=12; // limpa nmero
LeitorTeclaToutch(); //le as teclas touch
}while(nmero==11);
tenso=auxiliar; // a potncia atualizada
//corrente
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawCorrente();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("mA", 300, 78);
delay(500); //espera 1/2 segundo
nmero=12; // limpa nmero
LeitorTeclaToutch(); //le as teclas touch
}while(nmero==11);
corrente=auxiliar; // a potncia atualizada
//rotao
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawRotacao();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("RPM", 300, 78);
delay(500); //espera 1/2 segundo
71
//rendimento
do{ // enquanto o usurio no teclar enter
auxiliar=0;
drawRendimento();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("%", 325, 78);
delay(500); //espera 1/2 segundo
nmero=12; // limpa nmero
LeitorTeclaToutch(); //le as teclas touch
}while(nmero==11);
rendimento=auxiliar; // a potncia atualizada
//resistncia L1
do{
auxiliar=0;
enrolamento=1;
drawEnterDataRes();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
72
}while(nmero==11);
L1=auxiliar;
//resistncia L2
do{
auxiliar=0;
enrolamento=2;
drawEnterDataRes();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
}while(nmero==11);
L2=auxiliar;
//resistncia L3
do{
auxiliar=0;
enrolamento=3;
drawEnterDataRes();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
}while(nmero==11);
73
L3=auxiliar;
//resistncia Em30Sec
do{
auxiliar=0;
enrolamento=2;
drawResistnciaEm30Sec();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("M Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
}while(nmero==11);
resistncia30Sec=auxiliar;
//resistncia Em1Min
do{
auxiliar=0;
enrolamento=2;
drawResistnciaEm1Min();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("M Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
}while(nmero==11);
resistncia1Min=auxiliar
74
//resistncia Em10Min
do{
auxiliar=0;
enrolamento=2;
drawResistnciaEm10Min();
myGLCD.setBackColor (255,255,255);
myGLCD.setColor(255, 0, 0);
myGLCD.print("M Ohms", 250, 78);
delay(500);
nmero=12;
LeitorTeclaToutch();
}while(nmero==11);
resistncia10Min=auxiliar;
x=y=0; //garante que nenhuma tecla vai ser teclada
drawStartScreen(); //reinicia a tela inicial
}
myGLCD.print("Ligando o motor",60,78);
myGLCD.setBackColor(0,0,0);
myGLCD.print("Aguarde ",30,128);
myGLCD.print(" segundo(s)",180,128);
myGLCD.print("Recebendo dados",60,78);
myGLCD.print("Aguarde ",30,128);
myGLCD.print(" segundo(s)",180,128);
tempo=120;
DHT.read11(dht_dpin); //Faz leitura das informaes do sensor umidade e
temperatura
umidadeInicial=DHT.humidity;
temperaturaLigado=DHT.temperature;
repetio=tempo;
rpm=0;
torque=0;
vibrao=0;
correnteR=0;
correnteS=0;
76
correnteT=0;
do{
myGLCD.printNumI(tempo,150, 128);
if(tempo<100){
myGLCD.print(" ",180,128);
}
if(tempo<10){
myGLCD.print(" ",165,128);
}
tempo=tempo--;
int cont=0;
contMiliSecStart=millis();
do{
if((digitalRead(11))==1){
cont=cont++;
while(digitalRead(11)==1){
//faz nada
}
}
}while(500>(millis()-contMiliSecStart));
contMiliSecEnd=(millis()-contMiliSecStart);
rpm=rpm+(120*cont);
torque=torque+(((analogRead(A5)) - 196) / 44.5); //Calcula Torque
// vibrao=vibrao+ analogRead(A6) //Calcula Vibrao
correnteR=(emon1.calcIrms(1480)+correnteR);
correnteS=(emon2.calcIrms(1480)+correnteS);
correnteT=(emon3.calcIrms(1480)+correnteT);
delay((1000-(millis()-contMiliSecStart)));
}while(tempo>0);
myGLCD.clrScr();
drawStartScreen();
x=y=0;
}
}
}
}