Ir ao conteúdo
  • Cadastre-se

Calculo de vazão com sensor de fluxo


ALEGON
Ir à solução Resolvido por MOR_AL,

Posts recomendados

Estou desenvolvendo um software para calcular a vazão de um determinado sensor de fluxo de liquido, cuja especificação está em anexo. Sei que dependendo da quantidade de pulsos gerados posso determinar a quantidade de liquido (10.200 pulsos por gaão), o problema é que quando multo a pressão a regra de 3 não bate. Na especificação do manual fala que "O sinal de saída é um sinal de onda quadrada, cuja frequência varia linearmente com a vazão." Como não entendo de eletrônica não sei o que isso quer dizer 

 

P/N         Thread         Flow Range       Pulses/GAL.      Frequency (Hz)
226000   3/8 NPT        0.2-2 GPM        10200                            34-343

 

Alguém pode me ajudar ?
 

Instructions_227372.pdf

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
15 minutos atrás, ALEGON disse:

quando multo a pressão a regra de 3 não bate

Comprovaste na prática ou está no datasheet que não baixei? Qual o nome do sensor?

 

15 minutos atrás, ALEGON disse:

O sinal de saída é um sinal de onda quadrada, cuja frequência varia linearmente com a vazão." Como não entendo de eletrônica não sei o que isso quer dizer

São pulsos 0 e 1 (0V e 5V) que podem ser lidos por um contador qualquer do seu sistema (arduino e cia). Um mínimo de eletrônica hás de ser capaz de entender. p.ex. pra fazer a conexão do sensor com seu sistema. . Mostre algo que programou e que teve sucesso. E não pule a etapa do pisca led.

Link para o comentário
Compartilhar em outros sites

pela especificação ele só vai fugir da especificação se o fluxo for menor que 0,2gpm ou maior que 2gpm, se sua aplicação precisa exceder estes limites você precisará de outro sensor...

demais isntruções sobre o sistema siga as orianteações citadas na publicação da @.if

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, .if disse:

Comprovaste na prática ou está no datasheet que não baixei? Qual o nome do sensor?

 

São pulsos 0 e 1 (0V e 5V) que podem ser lidos por um contador qualquer do seu sistema (arduino e cia). Um mínimo de eletrônica hás de ser capaz de entender. p.ex. pra fazer a conexão do sensor com seu sistema. . Mostre algo que programou e que teve sucesso. E não pule a etapa do pisca led.

Eu comprovei na prática. O programa funciona bem e mede o fluxo corretamente em uma determinada pressão. O problema é quando altero a pressão não funciona mais. O sensor é o Sensor Gems FT-300. 

Segue abaixo o programa em Python que como eu disse funciona bem com determinada pressão. Quando altero a pressão preciso alterar a variável FATOR_CALIBRACAO mas gostaria de descobrir se consigo fazer isso automático.

 


import requests
import RPi.GPIO as GPIO
import time

def countPulse(channel):
    ####  Soma de pulso
    global TotPulsoPorSegundo
    global TotalGeralPulso
    global tempo_mesmo_ml 
    TotPulsoPorSegundo = TotPulsoPorSegundo + 1
    TotalGeralPulso = TotalGeralPulso + 1
    tempo_mesmo_ml = time.time() + 3

    
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)

global TotPulsoPorSegundo
global TotalGeralPulso
global tempo_mesmo_ml 

TotalGeralPulso = 0
FIM = False
  
TotPulsoPorSegundo = 0
tot_ml = 0
ml_antes = 0
tempo_mesmo_ml = 0

pino_sensor_fluxo = 12

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(pino_sensor_fluxo, GPIO.IN, pull_up_down = GPIO.PUD_UP)          

try:
    GPIO.add_event_detect(pino_sensor_fluxo, GPIO.FALLING, callback=countPulse)
except Exception:
    print ("")

tempo_novo = (time.time() + 1) * 1000 # soma 1 segundo no tempo atual
                       
while (FIM ==0):

    if ((time.time() * 1000) - tempo_novo) > 1000:
        ### passado 1 segundo ou mais
        FATOR_CALIBRACAO = 5.60
                 
        Agora = time.time() * 1000
        fluxo = ((1000.0 / (Agora - tempo_novo)) * TotPulsoPorSegundo) / FATOR_CALIBRACAO
                 
        tot_ml = tot_ml + fluxo
        
        tempo_novo = (time.time() + 1) * 1000 # soma 1 segundo
        TotPulsoPorSegundo = 0

    if tot_ml == ml_antes and tot_ml >= 10:
        if time.time() >= tempo_mesmo_ml:
            ### Fechada a torneira
            FIM = 1
       
    ml_antes = tot_ml
    

print ("Total Geral de pulsos = " + str(TotalGeralPulso))
print ("Total ML = " + str(int(tot_ml)))

Link para o comentário
Compartilhar em outros sites

A Medida de 10.200 pulsos por galão é quanta água passa. Se aumentar o fluxo de líquido, aumentará o número de pulsos no mesmo tempo.

Me parece erro de lógica no seu software e não no sensor.

Para dominar o sensor de fluxo aqui, via IDE do arduino usei este exemplo - https://bc-robotics.com/tutorials/using-a-flow-sensor-with-arduino/
Perceba que é usado a função de não interromper nele, pois os giros são muitos rápidos.

caso se sinta a vontade, poste a parte do seu software que calcula a vazão, se alguém entender o erro, lhe explicará.
 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Não achei rapidão o datasheet do seu sensor mas achei este...

https://www.instrumart.com/assets/Gems-FT210-datasheet.pdf

Parece que há de fato há alguma relação entre pressão e vazão. Pra contornar/linearizar isso, você deve ter acesso ao valor da pressão e aplicar na fórmula. Pra criá-la, continue pesquisando ou baseie-se em testes práticos ou no gráfico pressure drop typical. Hás de por os neurônios a trabalhar.

Alternativamente publique o circuito. Pode ser que haja alguma cagadinha básica como p.ex. capacitor de filtro absorvendo o sinal.

15 horas atrás, ALEGON disse:

Como não entendo de eletrônica

 

15 horas atrás, .if disse:

Um mínimo de eletrônica hás de ser capaz de entender.

 

 

Link para o comentário
Compartilhar em outros sites

51 minutos atrás, .if disse:

Parece que há de fato há alguma relação entre pressão e vazão.

Isso é física pura. A pressão só existe se algo está fazendo força antes (no caso a rede de água) e a saída está restrita.
Se a saída for toda liberada não existe pressão

 

14 horas atrás, ALEGON disse:

O programa funciona bem e mede o fluxo corretamente em uma determinada pressão. O problema é quando altero a pressão não funciona mais.


Isso seria com mais pressão? O não funcionar mais seria o que?
Não conheço python, mas me passou pela cabeça estouro de variável, coloca uns se número chegar a X (limite de inteiro ou long em python) acuse erro de variável
(byte 255, inteiro é 2 mil e algo e longint é bem maior)
Analisei o código e pelo que entendi não tem erro lógico que geraria o erro por cálculo errado.

Pode ser que o controlador não de conta de processar também, se tiver algum mais parrudo para teste, tente experimentar.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Eu (eu) teorizo que se totalmente aberta a saída haverá determinada vazão. Se você estrangular a saída e quiser manter a vazão, hás de querer aumentar a pressão ou esta aumenta naturalmente. Neste caso, pode ser que a turbinha sinta vontade girar mais lento.

Bem.. sei lá.. foi só um . de vista meio embaçado da física da coisa.

 

Me fez lembrar... certa feita linearizei um sinal de termopar com uma fórmula criada empiricamente. Algo como

temperatura=(temperatura*(1+temperatura/100)); //não era essa!! foi só exemplo

ou seja, quanto maior a temperatura, maior a correção. Termopar começa com menos de 40uV/ºC indo até a mais de 60uV/ºC

No fim das contas usei uma "tabela corretiva" como parâmetro. Ficou + ágil e + eficiente. O amigo @MOR me ajudou e algo me diz que ele nem se lembra mas tb bem...🙂

Link para o comentário
Compartilhar em outros sites

Pela minha rápida análise dos print do software a pressão é irrelevante pro caso.
Pela análise só do texto vejo 3 possíveis causas em pressões mais altas
a)estouro de variável
b)controlador não acompanha os pulsos enviados
c)controlador de fluxo com alguma segurança que não gira a partir de tal velocidade.

Se o erro for em pressão baixa só pode ser alguma característica técnica do controlador de fluxo

Uma dúvida @ALEGON, você tem algum controle visual de quanto óleo está passando ou no depósito? Se não tiver consegue implementar algo tipo pesar o reservatório de óleo para saber quanto óleo está sendo consumido e ver se a informação que você recebe bate com a real?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Boa intuição e sim podes ter razão. Como sempre eu (só eu) que gosto de abranger a problemática às coisas palpáveis do mundo físico. Por isso que frequentemente peço desenhos, fotos, vídeos e afins. Além do +, isso agrega valor a base de conhecimento do forum. 1.mpeg>1k.jpg>1M.txt 😁. Mas claro, respeito a limitação de cada 1.

Pra somar+ e comentar sobre b) e c) só mesmo com desenhos e d.s. do treco.

 

1 hora atrás, Thiago Miotto disse:

implementar algo tipo

... cronometrar em quanto tempo enche p.ex. 1L 😁

Link para o comentário
Compartilhar em outros sites

Capture esses pulsos através de interrupções, pois o processamento fica bem melhor. Nas rotinas de interrupção, variáveis podem armazenar as contagens e os tempos, assim servindo para cálculos posteriormente.

 

 

 

Se puder escrever essas rotinas em Assembly, isso diminui as preocupações associadas a intervalos de tempo de execução spacer.png.

 

 

 

Espero ter ajudado spacer.png.

Link para o comentário
Compartilhar em outros sites

em uma pesquisa rapida (e imprecisa) vi que o arduino não consegue ler mais que algumas centenas de pulsos por segundo então onde você tiver uma saída de 1 gal/s (3,78L/s, que é +/- o que uma torneira de 3/4" conseguiria atender) você já excede mais de 10mil pulsos por segundo (10kHz), talvez a limitação do seus sistema seja justamente o arduino.

 

uma solução seria você usar um contador digital para diminuir a frequência dos pulsos (claro que adaptando o seu programa para isto) que entram no arduino, experimente fazer um teste com um flip-flop para ver se não consegue medições com pelo menos o dobro da vazão

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
19 minutos atrás, Eder Neumann disse:

o arduino não consegue ler mais que algumas centenas de pulsos por segundo

Penso que o amigo se equivoca. O hw do arduino - de fato do mc dele -  é como um contador simples e sim permite frequencia maior. P.ex. o arduino com atmega328...

l15-timerscountersinatmega328-p-3-638.jp

 

Link para o comentário
Compartilhar em outros sites

Pessoal resolvi o problema fazendo vários testes, jogando no excel notei que se TotPulsoPorSegundo cair um determinado percentual eu teria que corrigir o FATOR_CALIBRAGEM. Quando cai ou aumenta pouco esse TotPulsoPorSegundo o valor é insignificante e não preciso alterar. Montei então uma tabela e coloquei algumas condições, exemplo :

 

Se TotPulsoPorSegundo <= 60 então

 FATOR_CALIBRACAO = 5.40

 

Se TotPulsoPorSegundo <= 50 então

 FATOR_CALIBRACAO = 4.10

 

Se TotPulsoPorSegundo <= 40 então

 FATOR_CALIBRACAO = 3.80

 

Se TotPulsoPorSegundo <= 30 então

 FATOR_CALIBRACAO = 6

 

Melhorou bastante a precisão, vou fazer mais alguns testes, acho que agora vai ficar bom, obrigado pelas ajudas.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

27 minutos atrás, Eder Neumann disse:

colocaria no osciloscópio para dar uma olhada também...

Poizé... mas antes...

 

7 horas atrás, .if disse:

Alternativamente publique o circuito. Pode ser

 

2 horas atrás, .if disse:

frequentemente peço desenhos, fotos, vídeos e afins.

 

a gente tenta mas ... isso já tá ficando xato .

 

 

 

18 minutos atrás, ALEGON disse:

Se TotPulsoPorSegundo <= 50 então

 FATOR_CALIBRACAO = 4.10

"Sua" técnica é boa e de fato ela já me pertenceu. Mas perceba que haverá um salto do valor na transição entre 50...49 e d+. Isso tende a não ser totalmente bom caso p.ex. queira plotar um gráfico. Se isso não te incomodar, seja feliz.

No meu caso "suavizei" com a técnica que supramencionei e 'otras cositas más'.

Sucessos

  • Haha 1
Link para o comentário
Compartilhar em outros sites

Façamos uma reflexão sobre as medições que devem ser realizadas. Como calcular a frequência variável f = f(t) em função do tempo, para depois associar linearmente à vazão? Seja por Regra de Três ou por outro método?

 

 

 

GgdVekG.gif

 

 

 

Pela definição de frequência, tendo vários pontos tabelados de tempo t e de ângulo ϕ = ϕ(t) torna-se possível calcular a frequência f(t) no instante t. Esse processo matemático chama-se diferenciação numérica e contempla todo um estudo de erros, tolerâncias etc GbhmuXl.gif.

 

 

 

Por exemplo, no instante t = 300 ms após o início do programa, ϕ(t) = 2π rad. Porém, logo em t = 400 ms observa-se que ϕ(t) = 4π rad. Isso indica que a frequência mudou, pois os ciclos da onda quadrada terminaram em 2π com intervalos de tempo diferentes F5Rua4D.gif.

 

 

 

Espero ter ajudado GbhmuXl.gif.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

58 minutos atrás, ALEGON disse:

Pessoal resolvi o problema fazendo vários testes, jogando no excel notei que se TotPulsoPorSegundo cair um determinado percentual eu teria que corrigir o FATOR_CALIBRAGEM. Quando cai ou aumenta pouco esse TotPulsoPorSegundo o valor é insignificante e não preciso alterar. Montei então uma tabela e coloquei algumas condições, exemplo :

 

Se TotPulsoPorSegundo <= 60 então

 FATOR_CALIBRACAO = 5.40

 

Se TotPulsoPorSegundo <= 50 então

 FATOR_CALIBRACAO = 4.10

 

Se TotPulsoPorSegundo <= 40 então

 FATOR_CALIBRACAO = 3.80

 

Se TotPulsoPorSegundo <= 30 então

 FATOR_CALIBRACAO = 6

 

Melhorou bastante a precisão, vou fazer mais alguns testes, acho que agora vai ficar bom, obrigado pelas ajudas.

 

Pode até ter melhorado, mas sua sequência de instruções não está logicamente  correta.

Tem que começar com 

Se TotPulsoPorSegundo <= 30 então

 FATOR_CALIBRACAO = 6  ... e terminar com...

Se TotPulsoPorSegundo <= 60 então

 FATOR_CALIBRACAO = 5.40

 

A sua primeira instrução já abrange todas as seguintes. Então SEMPRE será verdadeiro e o tal fator valerá sempre 5.4

MOR_AL

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 8 meses depois...

@rjjj até hoje estou na luta para conseguir medir a vazão correta. Pelo que pesquisei você tem razão mas não entendi muito sobre o que você falou porque não entendo de eletrônica. Pelo visto acho que eu teria que calcular os pulsos por segundo e a intensidade do pulso correto ?  Vou anexar aqui os manuais do equipamento, peço que de uma olhada , se fizer algum sentido pra você pode favor me de uma luz.

No manual fala que tenho 2724 pulsos por litro, portanto no meu algoritmo agora eu multiplico os pulsos por 0.3670 para calcular a qtd. de ML. Isso funciona em determinada situação, porém quando altero a pressão ou a vazão essa calibragem é alterada. Segue um exemplo de uma parte do software que fiz em Python, funcionando em um Raspberry PI

 

import RPi.GPIO as GPIO
import time
import sys
import _thread
import http.client
import socket
import sys


def countPulse(channel):
    global TotalPulse
    TotalPulse = TotalPulse + 1
 
CalibrationFactor = 0.3670

while True:
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)
  
    global TotalPulse
   
    TotalPulse = 0
    FinishedCounting = 0
   
    pinSensor = 12

   
    GPIO.setmode(GPIO.BOARD)
    GPIO.setwarnings(False)
    GPIO.setup(pinSensor, GPIO.IN, pull_up_down = GPIO.PUD_UP)          

    try:
        GPIO.add_event_detect(pinSensor, GPIO.FALLING, callback=countPulse)
    except Exception:
        print ("")


    totML = 0
    
    while (FinishedCounting ==0):
        
        flow = TotalPulse * CalibrationFactor
        totML = totML + flow
        print ("Pulse = " + str(TotalPulse) +  " ML =" + str(totML))

        if totML == 200:
            FinishedCounting = 1
             

 

ft-330-flow-rate-and-frequency-output-226000.pdf Instructions_227372.pdf

Link para o comentário
Compartilhar em outros sites

4 horas atrás, ALEGON disse:

Isso funciona em determinada situação, porém quando altero a pressão ou a vazão essa calibragem é alterada

naturalmente em se tratando de fluidos...

 

das opções disponíveis você tem 2:

incluir medição de pressão e alterar o código para se adaptar a pressão no momento, ou

limitar a pressão de operação para nunca exceder o valor ideal para medição através de uma válvula de alívio.

 

Link para o comentário
Compartilhar em outros sites

56 minutos atrás, Eder Neumann disse:

naturalmente em se tratando de fluidos...

 

das opções disponíveis você tem 2:

incluir medição de pressão e alterar o código para se adaptar a pressão no momento, ou

limitar a pressão de operação para nunca exceder o valor ideal para medição através de uma válvula de alívio.

 

como eu poderia medir a preção ?

Link para o comentário
Compartilhar em outros sites

Eu procurei por sensores que vão te dar o resultado de forma eletrônica, para você pegar a leitura deles e colocar no software.

Mas foi uma busca rápida, nunca usei nenhum deles. Talvez você deve procurar no datasheet se eles suportam óleo e pressões que seu sistema tenha.
Caso você não saiba a pressão do seu sistema, pode por um manômetro analógico p/ verificar https://produto.mercadolivre.com.br/MLB-1689202965-manmetro-de-presso-dn53mm-25-bar-e-400-psi-14-caixa-abs-_JM

Link para o comentário
Compartilhar em outros sites

Em 02/08/2021 às 13:58, ALEGON disse:

como eu poderia medir a preção ?

com um transmissor de pressão analógico. este sinal seria utilizado para alterar a variavel de calculo onde a pressão altera o comportamento do sensor de fluxo.

 

qual é a pressão, vazão e tipo de liquido do processo que você esta trabalhando?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!