Olá pessoa!

Sou novo aqui e no Mundo do Arduino também. Sou Eng Mecanico recém formado pela FEI, teno uma noção básica de programação e tenho descoberto muita coisas legal (Como o lab de garagem) ultimamente.

Estou elaborando um projeto de uma envasadora ou dosadora de líquidos com um Arduino.

Ainda estou arranhando na programação e assim que tiver algo mais concreto postarei a mesma aqui. Caso alguém possa me ajuda antes, será de bom grado.

Sobre a máquina:

A máquina possui 3 produtos diferente, e sera acionada ocasionalmente, sendo assim ela não sera utilizada em uma linha de produção industrial nem nada do tipo. 

Quando o operador necessita de um produto, ele posiciona a garrafa e no bico do produto (1, 2 ou 3) e em seguida aciona o botão referente ao produto desejado (1, 2 ou 3)

Produto 1>> Deve ser dosado em 500 ml

Produto 2>> Deve ser dosado em 500 ml

Produto 3>> Deve ser dosado em 1000 ml (1 litro)

Componentes e funcionamento:

 

Para facilitar o entendimento bolei as seguintes imagens referentes ao Layout básico da máquina e aos componentes a serem utilizado.

A maquina vai operar com:

1) Eletrobomba;

    Função: Bombear o fluido.

2) Sensor de fluxo de água;

   Função: Medir a quantidade de liquido que passou para desligar a maquina quando ultrapassar a dosagem programada                       500ml ou 1000 ml

3) válvula abre e fecha.

  Função: evitar vazamento de liquido no bico devido a altura do reservatório (função da torneira na pia).

A logica de funcionamento é simples, o operador deve posicionar a garrafa no bico de produto desejado, em seguida deve pressionar e manter pressionado o botão de acionamento do produto desejado até que o ciclo se complete.

No caso para produtos 1 e 2 o ciclo deve durar até 500 ml no caso do produto 3 o ciclo dura 1000 ml.

O monitor LCD deve indicar para o operador, se o ciclo esta completo ou não. Como exemplo:

O operador manteve pressionado o botão e sem querer no meio do enchimento da garrafa ele desimpressiona o botão. O LDC deve indicar qual o volume que já foi envasado (Ex: 300 ml do total de 500ml) sendo assim, mantendo  pressionado o botão novamente a maquina deve envasar os 200 ml restantes para o ciclo.  

Exibições: 2598

Anexos

Responder esta

Respostas a este tópico

Olá Pedro,

Parabéns pela iniciativa, não hesite em postar suas duvidas se houver, o pessoal todo aqui é participativo e sempre trata de colaborar, da mesma forma como você fara alguma vez com certeza.

Boa sorte no projeto!

Abs.

Prezados,

Andei olhando na internet, parece que um cara na internet fez a função que eu preciso com o sensor de fluxo.

Eu li o código, mas estou no inicio e isso parece grego ou aramaico pra mim. hahahha

Mas pelo pouco que entendi do código parece q é o que eu preciso.

Alguem poderia dar uma olhada no código para mim?

 o link de onde achei é : http://www.seeedstudio.com/forum/viewtopic.php?f=4&t=989&p=...

o código é:

reading liquid flow rate using Seeeduino and Water Flow Sensor from Seeedstudio.com
// Code adapted by Charles Gantt from PC Fan RPM code written by Crenn @thebestcasescenario.com
// http:/themakersworkbench.com http://thebestcasescenario.com http://seeedstudio.com

volatile int NbTopsFan; //measuring the rising edges of the signal
int Calc;                               
int hallsensor = 2;    //The pin location of the sensor

void rpm ()     //This is the function that the interupt calls 

  NbTopsFan++;  //This function measures the rising and falling edge of the 

hall effect sensors signal

// The setup() method runs once, when the sketch starts
void setup() //

  pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input
  Serial.begin(9600); //This is the setup function where the serial port is 

initialised,
  attachInterrupt(0, rpm, RISING); //and the interrupt is attached

// the loop() method runs over and over again,
// as long as the Arduino has power
void loop ()    
{
  NbTopsFan = 0;   //Set NbTops to 0 ready for calculations
  sei();      //Enables interrupts
  delay (1000);   //Wait 1 second
  cli();      //Disable interrupts
  Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate 

in L/hour 
  Serial.print (Calc, DEC); //Prints the number calculated above
  Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a  new line
 

Pessoal,

Através de adaptações do código que postei anteriormente obtive:

Resultados:

1) Leitura em tempo real da vazão (A cada 1 segundo)

2) Somar o valor lido anteriormente e indicar quantos ml ou litros ja passaram pelo sensor.

Exemplo:

1 segundo > leitura 0,03 ml> soma 1 s=0,03 ml 

segundo > leitura 0,05 ml> soma 2 s=0,03  ml+ 0,05 ml =0,08 ml

Aprimoramentos necessários:

1) Aprimorar o código, sei que tem coisa ai no meio q não precisa ter pq não altera no resultado final.

2) Necessito criar um comando que quando a vazão total for igual  a 500ml (Proturo 1 e 2) ou 1000 ml (prod 3) a bomba pare de funcionar.

Código:

float vazao; //Variável para armazenar o valor em L/min
float media=0; //Variável para tirar a média a cada 1 minuto
int contaPulso; //Variável para a quantidade de pulsos
int i=0; //Variável para contagem
float litros=0;
void setup()
  Serial.begin(9600); //Inicia a serial com um baud rate de 9600
  
  pinMode(2, INPUT_PULLUP);
  attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) para trabalhar como interrupção
  Serial.println("\n\nInicio\n\n"); //Imprime Inicio na serial
void loop ()
{
  contaPulso = 0;   //Zera a variável para contar os giros por segundos
  sei();      //Habilita interrupção
  delay (1000); //Aguarda 1 segundo
  cli();      //Desabilita interrupção
  
  vazao = contaPulso / 5.5 / 60; //Converte para L/seg
  media=media+vazao; //Soma a vazão para o calculo da media
  litros= litros+vazao;
  i++;
  
  Serial.print(vazao); //Imprime na serial o valor da vazão
  Serial.print(" L/seg - "); //Imprime L/min
  Serial.print(i); //Imprime a contagem i (segundos)
  Serial.println("s"); //Imprime s indicando que está em segundos
  Serial.print(litros);
  Serial.print("L   ");
  if(i==60)
  {
    media = media/60; //Tira a media dividindo por 60
    Serial.print("\nMedia por minuto = "); //Imprime a frase Media por minuto =
    Serial.print(media); //Imprime o valor da media
    Serial.println(" L/min - "); //Imprime L/min
    media = 0; //Zera a variável media para uma nova contagem
    i=0; //Zera a variável i para uma nova contagem
    Serial.println("\n\nInicio\n\n"); //Imprime Inicio indicando que a contagem iniciou
  }
  
}
  
void incpulso ()
  contaPulso++; //Incrementa a variável de contagem dos pulsos

Oi PDG, boa noite

 

vou aqui descrever o que entendi do seu projeto:

 

Você tem:

3 bombas que injetam um produto em três mangueiras diferentes;

3  sensores de fluxo que mede a quantidade de produto que passaram por eles;

3 válvulas que liberam a passagem dos produtos;

3 botões que enquanto pressionados, injetam produto em um vasilhame.

 

1o. Botão  libera 500ml de produto;

2o. Botão  libera 500ml de produto;

3o. Botão  libera 1000ml de produto;

 

Um display LCD mostra quanto do produto foi injetado.

Ao apertar um botão, o produto é injetado pelo funcionamento da bomba e

da abertura da válvula.

O LCD mostrará a quantidade de produto que passou pelo sensor de fluxo.

Ao obter a leitura, pelo sensor de fluxo, igual ao valor do botão pressionado,

o produto deve parar de ser injetado.

O produto é injetado, mediante à contínua pressão do botão.

Ao liberar o botão o produto para de ser injetado, e continua a ser injetado só após

pressionar novamente o botão, até completar a quantidade estabelecida.

 

Agora vem minhas dúvidas:

Qual o tipo de sensor de fluxo você pretende utilizar?

Este tipo de informação ajuda na elaboração do código.

Existe a possibilidade do operador operar mais de um produto ao mesmo tempo?

 Caso esta resposta seja afirmativa, com você quer que o LCD mostre a evolução de cada carga.

 

Após terminar uma carga, como ele faz para zerar a contagem para iniciar nova carga?

 

Construí um fluxograma básico, mostrando a sequencia dos acontecimentos.

Nele eu não coloquei as funções de display e nem a rotina de reset dos valores após a carga completa

de um produto, por não saber qual sistemática você pretende utilizar.

Rui

Rui,

O entendimento sobre o funcionamento da máquina esta correto!

Respondendo a suas perguntas:

Qual o tipo de sensor de fluxo você pretende utilizar?

Pretendo utilizar o sensor descrito na imagem que poste;

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-sen...

http://www.seeedstudio.com/wiki/G3/4_Water_Flow_sensor

Existe a possibilidade do operador operar mais de um produto ao mesmo tempo?

Não, o operador deve operar apenas um produto ao mesmo tempo. Com uma mão ele segura o vasilhame, com a outra ele matem precionado o botão de acionamento até q o ciclo (500ml ou 1000ml) se complete.

Após terminar uma carga, como ele faz para zerar a contagem para iniciar nova carga?

Não tinha pensando nisso. Pode ser automaticamente? Aparecendo um mensagem do tipo "Fim do ciclo / Pronto apra outro cilco!"

O fluxograma me parece OK!

Eu fiz uns teste com a ajuda de um amigo.

Inclusive usei o código que postei acima.

Ja já vou postar os resultados aqui.

Grato.

Sr. PDG,

segue abaixo o code para o programa do dosador.

Devido à optar pelo não uso de interrupt, usei uma rotina muito enxuta na contagem dos pulsos do sensor de fluxo,

e por causa disto o valor envasado só aparece na tela do LCD em duas situações.

Ou qdo você solta o botão de carga ou qudo termina de encher o recepiente.

QQ dúvida estou por aqui.

Rui

Anexos

Bom dia Rui,

Antes havia postado em um tópico errado.

Acho que sou suspeito para fazer um elogio a você, tanto pela amizade como pela admiração que tenho por você, pessoal e profissionalmente, mas não posso deixar de comentar a respeito do código que você criou e postou aqui para o PDG como solução.

Sem entrar no mérito do programa em si, quero parabenizar você pela forma em que esta identado, e comentado, isso é o modelo de como um bom programador deve fazer seus programas, comentados desde a descrição, e explicado em cada linha, isso permite cumprir a regra de que no futuro, ou quando seja, tanto o programador, como qualquer pessoa que ira lidar com o programa, com uma breve leitura do mesmo não precisara muito esforço para entender o mesmo.

Parabéns Rui!

Grande abraço!

CK

Ck,

muito obrigado pelo elogio e pode ter certeza que a admiração é reciproca.

Qto ao código, é um esforço faze-lo assim,

mas um esforço que compensa pelo entendimento de todos que o leem

e para  futuras correções do mesmo.

Rui

Sr. RV.

Primeiramente tenho que te agradecer muito.

Fiz pequenas alterações, porem a base é totalmente sua. 

Sem a base feita por vc certamente não teria terminado esse projeto tão cedo.

A unica coisa errada no seu programa era que você tinah esquecido de desligar a bomba quando desse a quantidade desejada.

Amanha vou montar um protótipo com as peças de verdade.

Enviarei as foto assim que possível.

Muito obrigado. 

Anexos

Parabéns Professor Rui !

Eu já fiquei admirado com a sua inteligência e rapidez de raciocínio quando eu o conheci a mais de 30 anos atrás ! Fico feliz que tenha encontrado um lugar para queimar os seus neurônios em excesso. 

Grande abraço do amigo

Gustavo 

Boa tarde, desculpe por reviver esse post mas sou novo aqui no fórum e como meu assunto é parecido, não achei necessário abrir um novo.

Estou com um projeto em mente com algo bem parecido porém um pouco diferente... meu conhecimento em todo em programação e arquitetura de software e muito pouco em eletrônica e automação, por isso estou tendo bastante dificuldades rs

Meu projeto é bem simples: uma envasadora para produtos viscosos (ou não) como shampoo, condicionador e afins. Minha ideia inicial é um visor em que o operador define o volume a ser envasador (150ml, 500ml e 5000ml), posiciona a embalagem no bico injetor e pisa em um pedal (ou aperta um botão). Gostaria que fosse injeto somente o volume configurado após fosse necessário um outro comando para um novo abastecimento.

Eu tenho um Romeo AiO que vou utilizar para testes, tenho ideia de que vou precisar dos mesmos componentes descritos nesse post mas não sei quais modelos comprar... poderiam me ajudar? 

O que é  Romeo AiO ?

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço