primeiro colocado
primeiro colocado
primeiro colocado
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL<br />
ESCOLA DE ENGENHARIA<br />
DEPARTAMENTO DE ENGENHARIA MECÂNICA<br />
ENERGIA E FENÔMENOS DE TRANSPORTE<br />
CONSTRUÇÃO E OPERAÇÃO DE UM MEDIDOR DE VAZÃO VOLUMÉTRICA<br />
TIPO VENTURI<br />
por<br />
Daniel Savionek<br />
Francisco Kaderli<br />
Tiago Rathke<br />
Trabalho Final da Disciplina de Medições Térmicas<br />
Professor Paulo Smith Schneider<br />
Porto Alegre, julho de 2010.
RESUMO<br />
No presente trabalho é desenvolvido um sistema de medição de vazão que atenda às<br />
características específicas de medição em uma faixa de 2 a 10 l/min, com baixa incerteza e<br />
com baixa perda de carga. O medidor projetado e construído neste trabalho é o tubo Venturi<br />
clássico, com a base de cálculos e desenvolvimento derivados da equação de Bernoulli. Para<br />
leitura da vazão, obtida pela diferença entre as pressões em diferentes regiões do tubo<br />
Venturi, utilizou-se manômetros inclinados, os quais conferem uma melhor resolução ao<br />
equipamento. O medidor Venturi foi calibrado por intermédio de medições experimentais em<br />
uma bancada hidráulica, a partir das quais se determinou uma curva de ajuste para o<br />
coeficiente de descarga. Além disso, foi desenvolvido uma rotina computacional para efetuar<br />
o cálculo da vazão, a partir das leituras de altura de coluna d’água nos manômetros. Os<br />
resultados de vazão medidos, após calibração do experimento, são comparados com os<br />
valores reais de referência medidos pelo rotâmetro empregado na calibração, verificando-se<br />
baixos erros de medição, com um valor máximo em torno de 5%.<br />
PALAVRAS-CHAVES: Bernoulli, Venturi, Medidor de vazão<br />
ii
ABSTRACT<br />
The present work develops a system of flow measurement. The system meets the<br />
specific features of flow measurement within range of 2 to 10 l/min, with low measurement<br />
uncertainty and low pressure drop. The meter designed and built in this work is the classic<br />
Venturi tube, with the basis of calculations and development derived from the Bernoulli<br />
equation. To read the flow, which is obtained by the difference between pressures in different<br />
regions of the Venturi tube, inclined pressure gauges was used, which give better resolution to<br />
the equipment. The Venturi meter was calibrated through experimental measurements in a<br />
hydraulic bench, which it was determined a curve of adjustment to the discharge coefficient.<br />
Furthermore, computer software was developed, to perform the calculation of flow rate,<br />
according to the readings from the height of the water column in the manometer. The results<br />
of flow measured after calibration of the experiment are compared with the actual values<br />
measured by reference flow meter used in the calibration, verifying low measurement error,<br />
with a maximum of 5 %.<br />
KEYWORDS: Bernoulli, Venturi, Flow meter<br />
iii
SUMÁRIO<br />
RESUMO.................................................................................................................................... ii<br />
ABSTRACT .............................................................................................................................. iii<br />
SUMÁRIO ................................................................................................................................. iv<br />
LISTA DE FIGURAS ................................................................................................................ v<br />
LISTA DE TABELAS............................................................................................................... vi<br />
LISTA DE SÍMBOLOS ...........................................................................................................vii<br />
1. INTRODUÇÃO ..................................................................................................................... 1<br />
2. REVISÃO BIBLIOGRÁFICA .............................................................................................. 1<br />
2.1. VAZÃO VOLUMÉTRICA ............................................................................................ 1<br />
2.2. PRESSÃO ......................................................................................................................2<br />
2.2.1. Medição de pressão em escoamentos ......................................................................2<br />
2.2.1.1. Pressão estática ou termodinâmica ...................................................................2<br />
2.2.1.2. Pressão total ou de estagnação .........................................................................2<br />
2.2.1.3. Pressão dinâmica ou cinética ............................................................................3<br />
2.2.2.Instrumento para medição de pressão ......................................................................3<br />
2.2.2.1. Manômetro de tubo inclinado ...........................................................................3<br />
3. FUNDAMENTAÇÃO ........................................................................................................... 3<br />
4. PROJETO E CONSTRUÇÃO ............................................................................................... 5<br />
4.1. PROJETO CONCEITUAL ............................................................................................. 5<br />
4.2. DETALHAMENTO DO PROJETO ..............................................................................6<br />
4.3 FABRICAÇÃO ...............................................................................................................7<br />
5. CALIBRAÇÃO EXPERIMENTAL ...................................................................................... 9<br />
6. CALCULADORA DE VAZÃO ......................................................................................... 10<br />
7. RESULTADOS E ANÁLISES ........................................................................................... 11<br />
8. CONCLUSÕES ................................................................................................................... 11<br />
REFERÊNCIAS ....................................................................................................................... 12<br />
APÊNDICES ............................................................................................................................ 13<br />
iv
LISTA DE FIGURAS<br />
Figura 1 – Escoamento em um bocal genérico (Fonte: FOX e MCDONALD, 1995 apud<br />
SCHNEIDER, 2007). ................................................................................................................. 4<br />
Figura 2 – Perda de carga em medidores por obstrução (Fonte: FOX e MCDONALD, 1995<br />
apud SCHNEIDER, 2007). ......................................................................................................... 5<br />
Figura 3 – Vista dimétrica do tubo Venturi. ............................................................................... 6<br />
Figura 4 – Corte lateral do tubo Venturi, detalhe para dimensões e diâmetros utilizados. ........ 6<br />
Figura 5 – Detalhe construtivo do tubo Venturi. ........................................................................ 7<br />
Figura 6 – Visão geral do medidor tubo Venturi. ....................................................................... 8<br />
Figura 7 – Detalhe da inclinação dos manômetros para uma melhor resolução do<br />
equipamento................................................................................................................................ 8<br />
Figura 8 – Curva de ajuste para o coeficiente de descarga C d. ................................................... 9<br />
Figura 9 – Software desenvolvido para o cálculo da vazão do protótipo. ................................ 10<br />
v
LISTA DE TABELAS<br />
Tabela 1 – Medições experimentais para obtenção do coeficiente de descarga C d . ................... 9<br />
Tabela 2 – Resultados das medições com Venturi calibrado. .................................................. 11<br />
vi
LISTA DE SÍMBOLOS<br />
Massa específica [kg/m³]<br />
g Aceleração da gravidade [m/s ²]<br />
Razão entre diâmetros [adimensional]<br />
E Fator de velocidade de aproximação [adimensional]<br />
C d Coeficiente de descarga [adimensional]<br />
Q Vazão volumétrica [l/min]<br />
Q R Vazão volumétrica real de referência [l/min]<br />
Q teórica Vazão volumétrica teórica [l/min]<br />
V Velocidade do fluido [m/s]<br />
h Altura de coluna de água [m]<br />
p Pressão [Pa]<br />
h 1 Altura de coluna d’água inclinada à montante do medidor [m]<br />
h 2 Altura de coluna d’água inclinada à jusante do medidor [m]<br />
h Diferença de altura de coluna de água inclinada [m]<br />
h vertical Diferença de altura de coluna de água na vertical [m]<br />
Dt Diâmetro da obstrução [m]<br />
Diâmetro da canalização [m]<br />
D 1<br />
vii
1<br />
1. INTRODUÇÃO<br />
A necessidade de se medir vazão surgiu há muitos séculos quando, depois de canalizar a<br />
água para o consumo doméstico, a administração pública descobriu uma fonte de arrecadação<br />
e estabeleceu taxas para o consumo do líquido.<br />
No século XX, a necessidade de se medir a vazão de fluidos em geral tornou-se de<br />
fundamental importância, em decorrência do crescimento da aplicação dos processos<br />
contínuos na indústria.<br />
A medição de vazão por medidores de obstrução, apesar de ser muito antiga, ainda é<br />
amplamente utilizada. Entre esses medidores por obstrução, encontramos o tubo Venturi.<br />
O tubo Venturi é um excelente medidor de vazão de obstrução que tem como principal<br />
característica a baixa perda de carga imposta ao sistema.<br />
O presente trabalho tem como objetivo geral a construção de um medidor de vazão<br />
volumétrica para líquidos. Mais particularmente, um medidor capaz de operar na faixa de<br />
vazão de 2 a 10 litros por minuto. O protótipo construído é um medidor de vazão por<br />
obstrução do tipo Venturi.<br />
Além disso, o trabalho apresenta os seguintes objetivos específicos:<br />
Imposição da menor perda de carga possível<br />
Determinação das incertezas de medição associadas ao instrumento<br />
2. REVISÃO BIBLIOGRÁFICA<br />
2.1. VAZÃO VOLUMÉTRICA<br />
Segundo FOX et al, (2006), um fluido com velocidade v , em m/s, escoando em um tubo<br />
de área transversal A , em , tem a sua vazão volumétrica Q, em , definida como:<br />
Q = vA (1)<br />
Essa equação pode ser melhor definida levando em conta alguns parâmetros, como a<br />
conservação de massa em volume de controle (V.C.) pré definido. A massa que entra nesse<br />
V.C. deve ser igual à massa que sai dele, o que nos leva a equação da continuidade:<br />
A primeira parcela da soma é a taxa de variação de massa dentro do V.C. e a segunda<br />
parcela representa a taxa líquida de fluxo de massa através da superfície de controle e sua<br />
soma resulta em zero justamente pela pré-definição de constância de massa.<br />
Em casos especiais, a Equação (2) pode ser simplificada no caso de um escoamento<br />
incompressível onde ( ) permanece constante. O <strong>primeiro</strong> termo pode ser reduzido à<br />
zero, já que a integral de dV sobre todo o volume de controle é simplesmente o volume total<br />
do V.C. e dividindo os dois termos por ( ), temos, para um V.C. constante, a<br />
simplificação da Equação (2) em:<br />
Assim, essa integral para uma seção de superfície de controle é chamada de vazão em<br />
volume Q ( ). Para um escoamento incompressível, essa vazão que entra em um V.C.<br />
(2)<br />
(3)
2<br />
deve ser igual à vazão que sai do mesmo. Sendo a área transversal A (<br />
de controle, a Equação (3) fica:<br />
) do tubo a superfície<br />
(4)<br />
sendo a equação (4) a definição de vazão volumétrica.<br />
2.2. PRESSÃO<br />
A pressão P , em Pa, para um fluido em repouso, é definida como sendo a força F , em<br />
N, exercida pelo mesmo perpendicularmente a uma área unitária A , em , (SCHNEIDER,<br />
2007), expressa como:<br />
Sendo a pressão uma propriedade local do fluido, em uma situação estática, ela tem uma<br />
grande dependência da posição e não depende da direção (SCHNEIDER, 2007). Segundo<br />
White (2002) a pressão em um fluido estático uniforme varia apenas com a distância vertical,<br />
não importando a forma do recipiente. O mesmo autor refere que a pressão é igual em todos<br />
os pontos em um plano horizontal no fluido, variando apenas com a profundidade do mesmo.<br />
2.2.1. Medição de Pressão em Escoamentos<br />
Em um fluido escoando dentro de um tubo, com certa velocidade, existem três pressões<br />
atuantes sobre ele que são: a pressão de estagnação ou total, a pressão dinâmica ou cinética e<br />
a pressão estática ou termodinâmica.<br />
2.2.1.1. Pressão estática ou termodinâmica<br />
A pressão estática é aquela que atua nas paredes do tubo e pode ser obtida através de um<br />
instrumento de medição conectado a um pequeno orifício feito na parede de interface do<br />
escoamento. Esse furo deve ser feito com muito cuidado, a fim de se evitar rebarbas ou<br />
qualquer irregularidade que possa perturbar a medição<br />
A medição da pressão termodinâmica é de extrema importância para se obter a<br />
velocidade e direção de um escoamento, além de identificar o estado termodinâmico do fluido<br />
(SCHNEIDER, 2007).<br />
2.2.1.2. Pressão total ou de estagnação<br />
A pressão de estagnação é medida quando o fluido desacelera até a velocidade zero por<br />
meio de um processo sem atrito (FOX et al, 2006). Assim, em um escoamento<br />
incompressível, com diferenças de elevação desprezadas e sabendo que a velocidade de<br />
estagnação é zero, temos a equação de Bernoulli reduzida a:<br />
(5)<br />
(6)<br />
onde (Pa) é a pressão de estagnação e P (Pa) a pressão estática. O termo é a pressão<br />
dinâmica e v (m/s) a velocidade local do escoamento.
3<br />
2.2.1.3. Pressão dinâmica ou cinética<br />
A diferença entre a pressão de estagnação<br />
pressão dinâmica, equacionada por:<br />
(Pa) e a pressão estática P (Pa) resulta na<br />
(7)<br />
por:<br />
Desta relação podemos encontrar a expressão da velocidade local do escoamento, dada<br />
(8)<br />
2.2.2. Instrumento para Medição de Pressão<br />
2.2.2.1. Manômetro de Tubo Inclinado<br />
Um manômetro de tubo inclinado é um instrumento que serve para medir diferenciais<br />
de pressão com maior precisão, já que tem a vantagem de operar com escalas de maior<br />
graduação que os manômetros verticais, para a mesma variação de pressão (SCHNEIDER,<br />
2007).<br />
Três parâmetros definem a sensibilidade do manômetro de tubo inclinado: a densidade do<br />
fluido manométrico, a inclinação do tubo e a relação de diâmetros. Esses parâmetros devem<br />
ser os menores possíveis a fim de se obter uma boa sensibilidade. O líquido manométrico<br />
deve possuir a menor densidade relativa possível, ser atóxico, não inflamável, possuir<br />
pequenas perdas por evaporação e ter uma coloração para melhorar sua visibilidade. A razão<br />
de diâmetros deve ser a menor possível para que a maior parte da variação no nível do líquido<br />
ocorra no tubo de medição (FOX et al, 2006).<br />
3. FUNDAMENTAÇÃO<br />
A seguir é apresentado o equacionamento empregado para a determinação da vazão<br />
volumétrica em medidores de vazão por obstrução para escoamentos incompressíveis.<br />
O equacionamento visa estabelecer uma relação da vazão com a diferença de pressão<br />
medida a montante e a jusante da obstrução. As expressões da vazão teórica são obtidas a<br />
partir das equações da continuidade e de Bernoulli, considerando-se um fluido ideal, em<br />
escoamento adiabático e sem atrito.<br />
A equação de Bernoulli, aplicada a um fluido escoando ao longo de uma linha de<br />
corrente, é dada por:<br />
onde p é a pressão, é a massa específica do fluido, V é a velocidade do escoamento, g é a<br />
aceleração da gravidade e z é a cota de altura do escoamento.<br />
No caso dos medidores de vazão por obstrução, a equação de Bernoulli deve ser<br />
aplicada em dois pontos de observação 1 e 2, antes e depois da obstrução respectivamente,<br />
como pode ser visualizado na figura abaixo.<br />
(9)
4<br />
Figura 1 – Escoamento em um bocal genérico (Fonte: FOX e MCDONALD, 1995).<br />
Tomando-se então as seções de observação 1 e 2 ao longo da linha de corrente, e<br />
assumindo que a massa específica é constante (escoamento incompressível), que o<br />
escoamento é permanente, sem atrito, sem diferença de cota z e com velocidade uniforme ao<br />
longo das seções 1 e 2, obtém-se:<br />
Também respeitando condições acima expostas, a equação da continuidade é dada por:<br />
(10)<br />
onde A 1 e A 2 representam, respectivamente, a área da canalização em 1 e a área da veia<br />
contraída em 2, conforme pode ser visualizado na Figura 1.<br />
Combinando-se as equações (10) e (11), obtém-se uma expressão para a velocidade na<br />
descarga da obstrução V 2 e consequentemente para a vazão Q, em função da diferença de<br />
pressão:<br />
(11)<br />
(12)<br />
A determinação do diâmetro D 2 é difícil de ser executada. Dessa forma, no seu lugar<br />
emprega-se o diâmetro da obstrução Dt, conforme a Figura 1, incorporado por intermédio da<br />
razão entre diâmetros β:<br />
(13)<br />
que, por sua vez, é incorporado pelo fator de velocidade de aproximação E, tal que:<br />
Dessa forma, a equação (12) para a vazão pode ser reescrita como:<br />
(14)
5<br />
(15)<br />
A equação acima é uma expressão de vazão teórica, não considerando as perdas devido<br />
ao atrito de escoamento. Para corrigir este problema, introduz-se o coeficiente adimensional<br />
de descarga C d , tal que:<br />
(16)<br />
Esta é a equação final para cálculo de vazão através de medidor por obstrução, em função<br />
da diferença de pressão ∆p (p 1 – p 2 ) medidas a montante e a jusante da obstrução.<br />
O coeficiente de descarga Cd pode ser obtido em tabelas em função do número de<br />
Raynolds e do diâmetro interno dos tubos, ou através de calibração experimental.<br />
A diferença de pressão ∆p é obtida através de tomadas de pressão estática medidas a<br />
montante e a jusante da obstrução, segundo a equação:<br />
∆p = g∆h vertical (17)<br />
onde ∆h vertical representa a diferença de altura vertical entre o tubo a montante e o tubo a<br />
jusante da obstrução.<br />
4. PROJETO E CONSTRUÇÃO<br />
4.1. PROJETO CONCEITUAL<br />
No projeto conceitual foram avaliados diversos tipos de medidores de vazão, tais como<br />
a placa de orifício, bocais, Venturi, anemômetro de fio quente, ultrassom, tipo turbina, dentre<br />
outros. Porém, tendo em vista os objetivos propostos para este trabalho, principalmente em<br />
relação à imposição de uma baixa perda de carga no medidor, optou-se pelo projeto do tubo<br />
Venturi. A baixa perda de carga imposta por este tipo de medidor pode ser visualizada na<br />
figura abaixo, em comparação com a placa de orifício e o bocal.<br />
Figura 2 - Perda de carga em medidores por obstrução (Fonte: FOX e MCDONALD, 1995).
6<br />
Como se pode visualizar na figura acima, enquanto os medidores de placa de orifício e<br />
bocal possuem uma perda de carga elevada, geralmente com valores acima de 50%, o tubo<br />
Venturi apresenta valores consideravelmente menores, com perdas de carga inferiores a 30%,<br />
justificando a sua escolha como o medidor de vazão a ser projetado.<br />
Além disso, outro parâmetro que influencia na perda de carga, é a razão entre os<br />
diâmetros da obstrução e da canalização (β), como também pode ser visualizado no gráfico<br />
acima. Assim, adota-se como premissa de projeto, um valor de β acima de 0,5.<br />
4.2. DETALHAMENTO DO PROJETO<br />
Definido o tipo de medidor de vazão, parte-se para seu desenvolvimento. Com o auxílio<br />
de um software de CAD (Solidworks), o tubo Venturi foi desenhado respeitando as dimensões<br />
do sistema onde ele será acoplado, e levando em consideração seus parâmetros de projeto. Na<br />
figura abaixo pode-se visualizar o projeto do tubo Venturi em vista dimétrica.<br />
Figura 3 - Vista dimétrica do tubo Venturi.<br />
Como citado no item 4.1, a razão entre os diâmetros da obstrução e da canalização (β) é<br />
de suma importância na influência da perda de carga do medidor. Sabendo que o diâmetro da<br />
canalização D 1 vale 21,4 mm, projetou-se o diâmetro da obstrução D t de 12,5mm, que<br />
corresponde a um valor de β igual a 0,584, calculado de acordo com a equação (5). Este valor<br />
de β está de acordo com o requisito definido no projeto conceitual. Pode-se visualizar na<br />
figura 4, todas as dimensões do Venturi projetado.<br />
Figura 4 - Corte lateral do tubo Venturi, detalhe para dimensões e diâmetros utilizados.
7<br />
A partir do valor de β, obtém-se um valor de fator de velocidade de aproximação E, de<br />
1,063, de acordo com equação (14). Ainda, através do diâmetro da obstrução, calcula-se a<br />
área da obstrução A t , chegando num valor de 1,227E-04 m².<br />
Podemos visualizar no corte lateral da figura 4, as tomadas de alta pressão e de baixa<br />
pressão, respectivamente. Além disso, nas extremidades do Venturi foram projetados rebaixos<br />
para um acoplamento adequado na conexão tubo-medidor. As angulações do cone<br />
convergente de 21º (à montante), e divergente de 15º (à jusante) foram adotados de acordo<br />
com especificações de um tubo Venturi Clássico (DELMEÉ, 2003). Os desenhos de projeto<br />
do tubo Venturi encontram-se nos A e B.<br />
4.3. FABRICAÇÃO<br />
O tubo Venturi foi fabricado a partir de uma barra de aço SAE 1045 através do processo<br />
de usinagem com tolerâncias de ±0,1mm. As paredes internas do medidor, após serem<br />
usinadas, foram polidas, para gerar uma superfície interna com baixa rugosidade,<br />
consequentemente, contribuindo para uma baixa perda de carga. A figura a seguir apresenta o<br />
tubo Venturi construído em detalhe.<br />
Figura 5 - Detalhe Construtivo do tubo Venturi.<br />
Nas saídas de tomadas de pressão foram soldados canos metálicos para permitir o<br />
acoplamento das mangueiras conectadas ao manômetro. As mangueiras foram conectadas<br />
com abraçadeiras nos canos metálicos para evitar vazamentos.<br />
Em cada extremidade do Venturi foram colados canos de PVC de ¾” com comprimento<br />
de 22 cm, conferindo à montante, e à jusante, um comprimento mínimo de dez diâmetros<br />
cada. No cano a montante foi acoplado uma luva para permitir o acoplamento à bancada de<br />
teste. No cano a jusante foi acoplado uma curva de 90°. Os detalhes citados podem ser<br />
visualizados na figura a seguir.<br />
Para a uma leitura mais precisa das pressões, para cada seção transversal foi utilizado<br />
duas tomadas de pressão e a leitura indicada pelo manômetro é a media destas leituras. Esta<br />
leitura media das pressões é possível através da utilização de anéis piezométricos (DELMEÉ,<br />
2003) . A figura a seguir apresenta uma visão geral do medidor tubo Venturi.
8<br />
Figura 6 - Visão geral do medidor tubo Venturi.<br />
Os 2 manômetros foram construídos com mangueiras transparentes de plástico, fixadas<br />
uma ao lado da outra. Elas foram fixadas num ângulo de 45° em relação ao eixo vertical em<br />
uma base de madeira, com o intuito de ampliar a resolução do medidor. Foram colocadas<br />
escalas de medição atrás das mangueiras, para possibilitar a medição da diferença de altura de<br />
coluna de água. A possibilidade mínima de leitura é de 1 em 1 mm na posição inclinada.<br />
Assim, pela equação a seguir podemos chegar a uma leitura de variação mínima na posição<br />
vertical de 0,707 mm.<br />
Δh vertical = (h 1 -h 2 )sen(45º) (18)<br />
Na figura a seguir, pode-se visualizar a inclinação dos manômetros em 45º adotadas no<br />
medidor.<br />
Figura 7 - Detalhe da inclinação dos manômetros para uma melhor resolução do equipamento.
9<br />
5. CALIBRAÇÃO EXPERIMENTAL<br />
O procedimento de calibração experimental consiste na determinação do coeficiente de<br />
descarga C d do Venturi, por intermédio de medições de vazão realizadas na bancada<br />
hidráulica disponibilizada pelo Laboratório de Ensaios Térmicos e Aerodinâmicos (LETA). A<br />
bancada é composta por uma bomba hidráulica, uma válvula de controle de vazão, um<br />
rotâmetro e uma tomada hidráulica com rosca macho de ¾″ de tubo PVC, a partir da qual o<br />
Venturi é conectado. Após passar pelo medidor Venturi, o escoamento é liberado para o<br />
ambiente. Antes de iniciar o procedimento de medição é necessário certificar-se que não<br />
existem bolhas de ar nos tubos de tomada de pressão.<br />
Para determinação do coeficiente de descarga Cd foram realizadas várias medições,<br />
impondo vazões conhecidas, ajustadas pela leitura no rotâmetro. Essas vazões são definidas<br />
como as vazões reais Q R . A partir da leitura das alturas h 1 e h 2 , calcula-se o ∆h e o ∆h vertical .<br />
Então, com auxílio das equações (15) e (17), para a massa específica da água de 997 kg/m 3 ,<br />
aceleração gravitacional g de 9,81 m/s 2 , e fator de velocidade de aproximação E e área da<br />
obstrução A t , como definidos na seção 4 do trabalho, calcula-se os valores de vazão teóricas<br />
Q teórica . Assim, o coeficiente de descarga C d pode ser obtido por:<br />
A tabela a seguir apresenta os coeficientes de descarga C d obtidos na calibração<br />
experimental para valores de vazão real Q R contidos na faixa de 2 a 10 l/min.<br />
Tabela 1 – Medições experimentais para obtenção do coeficiente de descarga C d .<br />
(19)<br />
A partir dos dados acima, plota-se um gráfico de dispersão dos coeficientes de descarga<br />
C d versus a variação de altura na vertical ∆h vertical , como se pode visualizar na figura abaixo.<br />
Figura 8 – Curva de ajuste para o coeficiente de descarga C d .
10<br />
No gráfico acima, os pontos em azul representam os valores do coeficiente de descarga<br />
C d obtidos experimentalmente em função do ∆h vertical . A partir desses pontos insere-se uma<br />
curva de ajuste para o coeficiente de descarga C d , representada por um polinômio de 4ª<br />
ordem, como indicado pela linha vermelha do gráfico acima. A curva adotada possui um<br />
coeficiente de correção R² de 0,956, representando uma boa qualidade de ajuste. Assim,<br />
obtém-se a seguinte equação do coeficiente de descarga C d em função da variação do ∆h vertical :<br />
C d = -74282∆h vertical 4 + 16703∆h vertical 3 - 1333∆h vertical 2 + 45,01∆h vertical + 0,406 (20)<br />
Esta equação então é empregada para determinação do coeficiente de descarga C d usado<br />
na equação (16) para o cálculo da vazão medida pelo Venturi construído.<br />
6. CALCULADORA DE VAZÃO<br />
Juntamente com o protótipo, foi desenvolvido em paralelo, um software para o auxílio do<br />
calculo da vazão, levando em consideração todas as variáveis mencionadas neste trabalho, e<br />
de acordo com o equacionamento apresentado na seção 3. Este software, denominado “Vazão<br />
Express” foi desenvolvido na linguagem de programação JAVA. O código fonte do software<br />
pode ser visualizado no Apêndice C. A figura abaixo, demonstra o layout do software, no qual<br />
possui comandos simples, e de fácil compreensão.<br />
Figura 9 - Software desenvolvido para o cálculo da vazão do protótipo.<br />
Para utilização do software, basta visualizar e inserir as respectivas alturas lidas nos<br />
manômetros inclinados (h 1 e h 2 em mm), e pressionar o botão “Calcular”. As saídas do<br />
programa serão:<br />
- A variação da altura manométrica já decomposta na direção vertical, Δh vertical , em m;<br />
- A variação de pressão ΔP, em N/m²;<br />
- A vazão calculada Q, em m³/s;<br />
- A vazão calculada Q, em l/min;
11<br />
Tendo todos os valores em mãos, caso haja a necessidade de verificar o erro de medição<br />
do protótipo, o software possibilita o seu cálculo. Para isso, basta preencher o campo, com a<br />
vazão real do escoamento.<br />
7. RESULTADOS E ANÁLISES<br />
Os valores de vazão obtidos nas medições com o Venturi, empregando a curva de ajuste<br />
definida na calibração, encontram-se listados na tabela abaixo.<br />
Tabela 2 – Resultados das medições com Venturi calibrado.<br />
Na tabela acima, pode-se visualizar o erro associado a cada medição, comparando-se o<br />
valor medido pelo Venturi com a vazão real de referência ajustada no rotâmetro. Nota-se que<br />
para as vazões mais próximas de 2 l/min os erros de medição são maiores, com um erro<br />
máximo de 5,57%.<br />
8. CONCLUSÕES<br />
O projeto, construção e calibração do medidor de vazão tipo Venturi foram realizados<br />
com sucesso, atendendo os requisitos de medição de vazão em uma faixa de 2 a 10 l/min.<br />
Além disso, todo projeto foi desenvolvido visando uma baixa imposição de perda de carga no<br />
sistema.<br />
A curva adotada na calibração apresentou boa qualidade de ajuste, fazendo com que os<br />
resultados de medição de vazão obtidos pelo Venturi ficassem muito próximos dos valores<br />
medidos pelo rotâmetro (valores de referência).<br />
Segundo outro aspecto, o desenvolvimento do software de cálculo de vazão (Vazão<br />
Express), contribuiu para a otimização das medições, tornando a tarefa rápida e intuitiva.<br />
Por fim, conclui-se que é possível construir um medidor de vazão eficiente, empregandose<br />
técnicas de fabricação e montagem relativamente simples, juntamente com a utilização de<br />
materiais de fácil aquisição no mercado.
12<br />
REFERÊNCIAS<br />
DELMÉE, G. J. Manual de Medição de Vazão. Editora Edgard Blücher Ltda, 3ª edição, São<br />
Paulo, 2003.<br />
FOX, R. W.; MCDONALD, A. T.; PRITCHARD, P. J. Introdução à Mecânica dos Fluidos.<br />
Editora LTC, 6ª edição, Rio Janeiro, 2006.<br />
SCHNEIDER, P. S. Medição de Velocidade e Vazão de Fluidos. Departamento de Engenharia<br />
Mecânica, Universidade Federal do Rio Grande do Sul, Porto Alegre, 2007.<br />
SCHNEIDER, P. S. Medição de Pressão. Departamento de Engenharia Mecânica, Universidade<br />
Federal do Rio Grande do Sul, Porto Alegre, 2007.
13<br />
APÊNDICES<br />
APÊNDICE A – Vista dimétrica do tubo Venturi
APÊNDICE B – Corte lateral do tubo Venturi, detalhe para dimensões e diâmetros utilizados.<br />
14
15<br />
APÊNDICE C – Código fonte do software “Vazão Express”.<br />
/*<br />
* To change this template, choose Tools | Templates<br />
* and open the template in the editor.<br />
*/<br />
/*<br />
* CalculoVazao.java<br />
*<br />
* Created on 03/07/2010, 18:21:50<br />
*/<br />
/**<br />
*<br />
* @author Francisco<br />
*/<br />
public class CalculoVazao extends javax.swing.JFrame {<br />
/** Creates new form CalculoVazao */<br />
public CalculoVazao() {<br />
initComponents();<br />
}<br />
/** This method is called from within the constructor to<br />
* initialize the form.<br />
* WARNING: Do NOT modify this code. The content of this method is<br />
* always regenerated by the Form Editor.<br />
*/<br />
@SuppressWarnings("unchecked")<br />
// //GEN-BEGIN:initComponents<br />
private void initComponents() {<br />
jPanel1 = new javax.swing.JPanel();<br />
jLabel1 = new javax.swing.JLabel();<br />
jLabel3 = new javax.swing.JLabel();<br />
jButton1 = new javax.swing.JButton();<br />
jTextFieldH1 = new javax.swing.JTextField();<br />
jTextFieldH2 = new javax.swing.JTextField();<br />
jLabel10 = new javax.swing.JLabel();<br />
jLabel9 = new javax.swing.JLabel();<br />
jButtonLimpar = new javax.swing.JButton();<br />
jLabel2 = new javax.swing.JLabel();<br />
jLabel4 = new javax.swing.JLabel();<br />
jLabel5 = new javax.swing.JLabel();<br />
jLabel6 = new javax.swing.JLabel();<br />
jLabel7 = new javax.swing.JLabel();<br />
jTextFieldDeltaH = new javax.swing.JTextField();<br />
jTextFieldCd = new javax.swing.JTextField();<br />
jTextFieldDeltaP = new javax.swing.JTextField();<br />
jTextFieldQm3s = new javax.swing.JTextField();<br />
jTextFieldQlmin = new javax.swing.JTextField();<br />
jPanelErro = new javax.swing.JPanel();<br />
jLabelClique = new javax.swing.JLabel();<br />
jPanel2 = new javax.swing.JPanel();<br />
jLabelQreal = new javax.swing.JLabel();<br />
jTextFieldQreal = new javax.swing.JTextField();<br />
jPanel3 = new javax.swing.JPanel();<br />
jButtonCalcularErro = new javax.swing.JButton();<br />
jLabelErro = new javax.swing.JLabel();<br />
jTextFieldErro = new javax.swing.JTextField();<br />
jLabel8 = new javax.swing.JLabel();<br />
jLabel11 = new javax.swing.JLabel();<br />
jLabel12 = new javax.swing.JLabel();<br />
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);<br />
setTitle("Vazão Express");<br />
jLabel1.setText("Valor h1:");<br />
jLabel3.setText("Valor h2:");<br />
jButton1.setText("Calcular");<br />
jButton1.addActionListener(new java.awt.event.ActionListener() {<br />
public void actionPerformed(java.awt.event.ActionEvent evt) {
16<br />
});<br />
}<br />
jButton1ActionPerformed(evt);<br />
jLabel10.setText("mm");<br />
jLabel9.setText("mm");<br />
jButtonLimpar.setText("Limpar");<br />
jButtonLimpar.addActionListener(new java.awt.event.ActionListener() {<br />
public void actionPerformed(java.awt.event.ActionEvent evt) {<br />
jButtonLimparActionPerformed(evt);<br />
}<br />
});<br />
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);<br />
jPanel1.setLayout(jPanel1Layout);<br />
jPanel1Layout.setHorizontalGroup(<br />
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addGap(20, 20, 20)<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addComponent(jLabel3)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jTextFieldH2, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
41, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addComponent(jLabel1)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jTextFieldH1)))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addComponent(jLabel10)<br />
.addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, 359,<br />
Short.MAX_VALUE)))<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addGap(46, 46, 46)<br />
.addComponent(jButton1)<br />
.addGap(85, 85, 85)<br />
.addComponent(jButtonLimpar)))<br />
.addContainerGap())<br />
);<br />
jPanel1Layout.setVerticalGroup(<br />
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel1Layout.createSequentialGroup()<br />
.addGap(16, 16, 16)<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel1)<br />
.addComponent(jTextFieldH1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabel9))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel3)<br />
.addComponent(jTextFieldH2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabel10))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9,<br />
Short.MAX_VALUE)<br />
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jButton1)<br />
.addComponent(jButtonLimpar))<br />
.addContainerGap())<br />
);<br />
jLabel2.setText("Δh vertical:");
17<br />
jLabel4.setText("Coeficiente de descarga adotado (Cd):");<br />
jLabel5.setText("ΔP:");<br />
jLabel6.setText("Q[m³/s]:");<br />
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 14));<br />
jLabel7.setText("Q[l/min]:");<br />
jTextFieldDeltaP.addActionListener(new java.awt.event.ActionListener() {<br />
public void actionPerformed(java.awt.event.ActionEvent evt) {<br />
jTextFieldDeltaPActionPerformed(evt);<br />
}<br />
});<br />
jTextFieldQlmin.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N<br />
jLabelClique.setText("Caso necessite verificar o erro, digite o valor da vazão real:");<br />
jLabelQreal.setText("Vazão real [l/min]:");<br />
jButtonCalcularErro.setText("Calcular");<br />
jButtonCalcularErro.addActionListener(new java.awt.event.ActionListener() {<br />
public void actionPerformed(java.awt.event.ActionEvent evt) {<br />
jButtonCalcularErroActionPerformed(evt);<br />
}<br />
});<br />
jLabelErro.setText("Erro:");<br />
jLabel8.setText("%");<br />
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);<br />
jPanel3.setLayout(jPanel3Layout);<br />
jPanel3Layout.setHorizontalGroup(<br />
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel3Layout.createSequentialGroup()<br />
.addContainerGap()<br />
.addComponent(jButtonCalcularErro)<br />
.addGap(18, 18, 18)<br />
.addComponent(jLabelErro)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jTextFieldErro, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jLabel8)<br />
.addContainerGap(27, Short.MAX_VALUE))<br />
);<br />
jPanel3Layout.setVerticalGroup(<br />
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel3Layout.createSequentialGroup()<br />
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jButtonCalcularErro)<br />
.addComponent(jLabelErro)<br />
.addComponent(jTextFieldErro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabel8))<br />
.addContainerGap(19, Short.MAX_VALUE))<br />
);<br />
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);<br />
jPanel2.setLayout(jPanel2Layout);<br />
jPanel2Layout.setHorizontalGroup(<br />
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel2Layout.createSequentialGroup()<br />
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel2Layout.createSequentialGroup()<br />
.addGap(71, 71, 71)<br />
.addComponent(jLabelQreal)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addComponent(jTextFieldQreal, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
24, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(jPanel2Layout.createSequentialGroup()
18<br />
.addGap(33, 33, 33)<br />
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)))<br />
.addContainerGap(76, Short.MAX_VALUE))<br />
);<br />
jPanel2Layout.setVerticalGroup(<br />
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanel2Layout.createSequentialGroup()<br />
.addContainerGap()<br />
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabelQreal)<br />
.addComponent(jTextFieldQreal, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18,<br />
Short.MAX_VALUE)<br />
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addContainerGap())<br />
);<br />
javax.swing.GroupLayout jPanelErroLayout = new javax.swing.GroupLayout(jPanelErro);<br />
jPanelErro.setLayout(jPanelErroLayout);<br />
jPanelErroLayout.setHorizontalGroup(<br />
jPanelErroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanelErroLayout.createSequentialGroup()<br />
.addContainerGap()<br />
.addGroup(jPanelErroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabelClique, javax.swing.GroupLayout.DEFAULT_SIZE, 325,<br />
Short.MAX_VALUE))<br />
.addContainerGap())<br />
);<br />
jPanelErroLayout.setVerticalGroup(<br />
jPanelErroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(jPanelErroLayout.createSequentialGroup()<br />
.addGap(33, 33, 33)<br />
.addComponent(jLabelClique)<br />
.addGap(18, 18, 18)<br />
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))<br />
);<br />
jLabel11.setText("m");<br />
jLabel12.setText("N/m²");<br />
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());<br />
getContentPane().setLayout(layout);<br />
layout.setHorizontalGroup(<br />
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(layout.createSequentialGroup()<br />
.addGap(18, 18, 18)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jLabel2)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jTextFieldDeltaH, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
62, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 31,<br />
javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jLabel4)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addComponent(jTextFieldCd, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
46, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(layout.createSequentialGroup()<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jLabel7)
19<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jTextFieldQlmin, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
50, Short.MAX_VALUE))<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jLabel6)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addComponent(jTextFieldQm3s, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
66, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jLabel5)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addComponent(jTextFieldDeltaP, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
59, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addGap(7, 7, 7)<br />
.addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
25, Short.MAX_VALUE)))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addComponent(jPanelErro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
Short.MAX_VALUE)))<br />
.addContainerGap())<br />
.addGroup(layout.createSequentialGroup()<br />
.addContainerGap()<br />
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
Short.MAX_VALUE))<br />
);<br />
layout.setVerticalGroup(<br />
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(layout.createSequentialGroup()<br />
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jTextFieldDeltaH, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabel11))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel4)<br />
.addComponent(jTextFieldCd, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)<br />
.addGroup(layout.createSequentialGroup()<br />
.addGap(20, 20, 20)<br />
.addComponent(jPanelErro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,<br />
javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addGroup(layout.createSequentialGroup()<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)<br />
.addComponent(jLabel5)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jTextFieldDeltaP, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)<br />
.addComponent(jLabel12)))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel6)<br />
.addComponent(jTextFieldQm3s, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))<br />
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)<br />
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)<br />
.addComponent(jLabel7)
20<br />
.addComponent(jTextFieldQlmin, javax.swing.GroupLayout.PREFERRED_SIZE,<br />
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))<br />
.addContainerGap(63, Short.MAX_VALUE))<br />
);<br />
pack();<br />
}// //GEN-END:initComponents<br />
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-<br />
FIRST:event_jButton1ActionPerformed<br />
double h1, h2, deltaH, cD, deltaP, qm3s, qlmin;<br />
h1 = Float.parseFloat(jTextFieldH1.getText());<br />
h2 = Float.parseFloat(jTextFieldH2.getText());<br />
deltaH = ((h1-h2)*0.7071)*0.001;<br />
deltaP = 997*9.81*deltaH;<br />
cD = -74282*Math.pow(deltaH, 4)+16703*Math.pow(deltaH, 3)-1333*Math.pow(deltaH,<br />
2)+45.01*deltaH+0,406;<br />
qm3s = cD*1.063834947*0.000122718*Math.pow((2*deltaP)/997, 0.5);<br />
qlmin = qm3s*60000;<br />
jTextFieldDeltaH.setText(String.valueOf(trunc(deltaH,5)));<br />
jTextFieldDeltaP.setText(String.valueOf(trunc(deltaP,2)));<br />
jTextFieldCd.setText(String.valueOf(trunc(cD,3)));<br />
jTextFieldQm3s.setText(String.valueOf(trunc(qm3s,8)));<br />
jTextFieldQlmin.setText(String.valueOf(trunc(qlmin,2)));<br />
}//GEN-LAST:event_jButton1ActionPerformed<br />
private void jTextFieldDeltaPActionPerformed(java.awt.event.ActionEvent evt) {//GEN-<br />
FIRST:event_jTextFieldDeltaPActionPerformed<br />
// TODO add your handling code here:<br />
}//GEN-LAST:event_jTextFieldDeltaPActionPerformed<br />
private void jButtonLimparActionPerformed(java.awt.event.ActionEvent evt) {//GEN-<br />
FIRST:event_jButtonLimparActionPerformed<br />
jTextFieldDeltaH.setText(null);<br />
jTextFieldDeltaP.setText(null);<br />
jTextFieldCd.setText(null);<br />
jTextFieldQm3s.setText(null);<br />
jTextFieldQlmin.setText(null);<br />
jTextFieldH1.setText(null);<br />
jTextFieldH2.setText(null);<br />
jTextFieldQreal.setText(null);<br />
jTextFieldErro.setText(null);<br />
}//GEN-LAST:event_jButtonLimparActionPerformed<br />
private void jButtonCalcularErroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-<br />
FIRST:event_jButtonCalcularErroActionPerformed<br />
float qReal, qlmin, erro;<br />
qReal = Float.parseFloat(jTextFieldQreal.getText());<br />
qlmin = Float.parseFloat(jTextFieldQlmin.getText());<br />
erro = ((qlmin*100)/qReal)-100;<br />
jTextFieldErro.setText(String.valueOf(trunc(erro,2)));<br />
}//GEN-LAST:event_jButtonCalcularErroActionPerformed<br />
/* retorna o valor truncado no numero de decimais especificadas */<br />
public static double trunc(double value, int decimais) {<br />
double p = Math.pow(10, decimais);<br />
return Math.floor(value * p) / p;<br />
}<br />
/**<br />
* @param args the command line arguments<br />
*/<br />
public static void main(String args[]) {<br />
java.awt.EventQueue.invokeLater(new Runnable() {<br />
public void run() {<br />
try {<br />
Thread.sleep(5000);<br />
} catch (InterruptedException e) {<br />
}<br />
new CalculoVazao().setVisible(true);<br />
}
21<br />
}<br />
});<br />
// Variables declaration - do not modify//GEN-BEGIN:variables<br />
private javax.swing.JButton jButton1;<br />
private javax.swing.JButton jButtonCalcularErro;<br />
private javax.swing.JButton jButtonLimpar;<br />
private javax.swing.JLabel jLabel1;<br />
private javax.swing.JLabel jLabel10;<br />
private javax.swing.JLabel jLabel11;<br />
private javax.swing.JLabel jLabel12;<br />
private javax.swing.JLabel jLabel2;<br />
private javax.swing.JLabel jLabel3;<br />
private javax.swing.JLabel jLabel4;<br />
private javax.swing.JLabel jLabel5;<br />
private javax.swing.JLabel jLabel6;<br />
private javax.swing.JLabel jLabel7;<br />
private javax.swing.JLabel jLabel8;<br />
private javax.swing.JLabel jLabel9;<br />
private javax.swing.JLabel jLabelClique;<br />
private javax.swing.JLabel jLabelErro;<br />
private javax.swing.JLabel jLabelQreal;<br />
private javax.swing.JPanel jPanel1;<br />
private javax.swing.JPanel jPanel2;<br />
private javax.swing.JPanel jPanel3;<br />
private javax.swing.JPanel jPanelErro;<br />
private javax.swing.JTextField jTextFieldCd;<br />
private javax.swing.JTextField jTextFieldDeltaH;<br />
private javax.swing.JTextField jTextFieldDeltaP;<br />
private javax.swing.JTextField jTextFieldErro;<br />
private javax.swing.JTextField jTextFieldH1;<br />
private javax.swing.JTextField jTextFieldH2;<br />
private javax.swing.JTextField jTextFieldQlmin;<br />
private javax.swing.JTextField jTextFieldQm3s;<br />
private javax.swing.JTextField jTextFieldQreal;<br />
// End of variables declaration//GEN-END:variables<br />
}