Controle de Fluxo de Água com Arduino – Parte 3

Neste terceiro post da série sobre o desenvolvimento do Controle de Fluxo de Água com Arduino vamos abordar a parte eletrônica do projeto definindo quais recursos utilizaremos incluindo o Arduino escolhido para a tarefa. Vamos lá?

Recapitulando as principais funcionalidades desta solução:

  • Controlar o fluxo da água (abrir/fechar passagem);
  • Definir o quanto de água vai passar enquanto estiver aberto;
  • Apresentar no display o volume de água escolhido;
  • Sinalizar quando toda a água passou.

Primeiro Esboço do Circuito

O primeiro esboço apresentado trouxe uma visão macro da solução. A partir dele, apresentado na Figura 1, sabemos que precisaremos de alguns recursos:

  • (A) Fonte de Alimentação;
  • (B.1) Arduino;
  • (B.2) Encoder Rotatório;
  • (B.3) Display de 7 Segmentos com 4 dígitos;
  • (B.4) Buzzer;
  • (B.5) LED indicativo de alimentação.
  • (C) Uma placa que leva e traz os sinais de controle da solenoide e contador de fluxo e também a alimentação.
Figura 1 – Rascunho do Projeto PurificControl.

Para acomodar todos os módulos e componentes vamos elaborar uma PCB (Printed Circuit Board, ou Placa de Circuito Impresso em tradução livre). A esta placa vamos disponibilizar conectores dupont fêmea para acomodar o arduino, o display e o encoder. Os outros componentes serão soldados diretamente à placa.

Escolha do modelo do Arduino

O projeto poderia ser desenvolvido com qualquer modelo de microcontrolador como PIC, ARM, 8051 ou o próprio AVR do Arduino. A escolha da plataforma Arduino se deu pela sua simplicidade e facilidade de criar protótipos e pela disponibilidade no mercado para encontrar as placas e bibliotecas relacionadas com ela.

O além das funcionalidades já apresentadas nos posts anteriores seria preciso escolher um Arduino que fosse suficiente acoplamento dos módulos e outros componentes , fosse pequeno para evitar minimar ao máximo o espaço físico ocupado e fácil de reprogramar quando preciso. Como resultado, decidi utilizar o Arduino Nano por cumprir todos os requisitos. Na Figura 2 temos uma foto do Arduino Nano com os pinos já soldados. Muitas vezes quando compramos este modelos eles não vem com os estes pinos soldados.

Arduino Nano
Figura 2 – Arduino Nano.

As funcionalidades e disponibilidade deste modelo são similares por utilizar o mesmo microcontrolador, o ATMEGA328.

Display de 7 Segmentos com 4 Dígitos

A principal funcionalidade definida para este projeto é a possibilidade do usuário definir o quanto de água ele gostaria liberar do purificador. Para isso foi preciso escolher qual interface utilizaríamos para apresentar o valor selecionado por ele.

Entre as possibilidades tínhamos: Display LCD 16×2

  1. Display LCD 16×2: uma opção interessante por suportar caracteres alfanuméricos.
  2. Display LCD com matriz de pontos: possibilitaria criar o próprio layout com mais detalhes se preciso.
  3. Display de 7 Segmentos: um display de 7 segmentos composto com 4 dígitos possibilita mostrar o número de 0 à 9999.

A terceira opção, Display de 7 Segmentos com 4 dígitos, foi escolhida por que é a opção suficiente para o propósito: apresentar ao usuário o quanto de água se quer. Outros pontos também contribuíram com a escolha:

  1. Existe um módulo já com estes displays baseado no circuito integrado TM1637 que facilita todo o controle dos displays.
  2. Para este módulo há uma (ou mais) bibliotecas para facilitar ainda mais seu uso.
  3. O tamanho do dígito é bem maior do que os caracteres do Display LCD 16×2, por exemplo.

A Figura 3 mostra este módulo, e nela podemos ver que ele utiliza apenas 4 pinos sendo 2 de comunicação e 2 de alimentação. Isso possibilita uma economia de pinos digitais se comparado com a ligação direta de um display com os 7 pinos diretamente.

Figura 3 – Módulo com 4 displays de 7 segmentos e controlador TM1637.

Encoder Rotatório (Rotary Encoder)

Para que o usuário entrasse com o valor que deseja que o purificador liberasse era preciso uma interface fácil de manipular. Inicialmente foi pensado em um teclado matricial mas a ideia foi deixada de lado pelo espaço físico que ocuparia. Outra possibilidade seria o uso do celular com bluetooth ou mesmo WiFi, porém serial necessário estar sempre com o celular em mãos para utilizar o purificador.

A solução encontrada com a característica de simplicidade e que seria suficiente para a solução foi o uso de um Encoder Rotatório. Este dispositivo, apresentado na Figura 4, onde podemos ver que o manipulador de giro e os 5 pinos, sendo 2 para detecção da direção do giro; 1 deles é um botão do tipo push button normalmente aberto ativado ao pressionar o manipulador de giro; e 2 para alimentação.

Figura 4 – Encoder Rotatório com botão.

Como podemos ver na Figura 4 o encoder é similar a um potenciômetro, porém não se trata de um resistor variável e não tem os limites de rotação podendo ser girado livremente nos dois sentidos. Com ele é possível detectar qual a direção o usuário girou e contar os passos do gito. Ao girar você consegue sentir cada passo simular ao scroll de um mouse, que também é um tipo encoder rotatório.

No nosso projeto a cada passo do giro horário aumentaria 10ml sendo o valor acumulado exibido no display no limite até 9999ml. Similarmente no giro anti-horário diminuiria o valor no limite até 0ml. Após selecionar o volume de água o botão do encoder servirá para liberar o fluxo de água.

Válvula Solenoide

Para poder responder a solicitação de liberação do fluxo de água temos que controlar a válvula solenoide. A válvula escolhida é apresentada na Figura 5, que é uma válvula normalmente fechada, ou seja, enquanto não houver corrente em seus contatos de alimentação ela permanece com o fluxo de água fechado.

Figura 5 – Válvula Solenoide 12Vcc.

Foi escolhida uma válvula de 12Vcc para utilizar a mesma alimentação do circuito como um todo e manter o mínimo de risco possível visto que inicialmente não foi planejado o acomodamento da parte hidráulica ou eletrônica em uma caixas apropriadas.

Como a válvula é 12Vcc/600mA não é possível ativá-la pelos pinos digitais do Arduino e por isso foi preciso elaborar um driver de corrente transistorizado, apresentado na Figura 6.

Figura 6 – Driver transistorizado para a válvula solenoide.

Na Figura 6(A) podemos ver o simples uso do transistor TIP31 como chave. Na Figura 6(B) vemos como os componentes ficarão interligados de acordo com seus terminais e pinagem.

Como trata-se de um transistor NPN ele mantém a junção Coletor-Emissor aberta até que a base seja polarizada positivamente. Como estamos controlando uma carga indutiva o diodo em paralelo evita que o transistor queime por geração de uma alta tensão inversa pelo indutor.

No circuito é possível ver que o pino D5 do Arduino deverá ficar conectado ao resistor de 1 kΩ que polariza a base do transistor. Com este pino indo a nível lógico alto, o transistor passa a conduzir e assim leva ao GND o pino da solenoide conectada a ele.

Atualização: 09/02/2021

Nas imagens o valor do resistor estava como sendo 10 kΩ, no entanto o projeto corrigido para 1 kΩ e esta correção não estava no post. Agradeço ao colega Marcelo Santos Silva que levantou o questionamento no grupo do Facebook.

Fonte de Alimentação

Para alimentar o circuito como um todo foi decidido utilizar uma fonte de alimentação, ao invés de optar por baterias. Esta decisão se dá pelo necessidade de manter o sistema funcionando constantemente, ou pelo máximo de tempo possível.

A fonte utilizada deverá fornecer pelo menos 12Vcc com uma corrente mínima de 2A para garantir o bom funcionamento a atender à necessidade dos componentes e módulos.

Esta fonte será conectada à placa utilizando um jack padrão DC005-T20 a qual contará com uma etapa de conversão DC-DC com reguladores de tensão para fornecer 5Vcc, para os módulos que necessitarem como o Display de 7 Segmentos e o sensor de fluxo YF-S201, e uma opção de regulação de tensão para 12Vcc o que vai garantir a tensão necessária para a solenoide.

A Figura 7 apresenta a etapa de conversão DC-DC contanto com um regulador 7805 e 7812, para 5Vcc e 12Vcc respectivamente. O jumper J2 vai permitir o uso ou não do regulador 7812 podendo desabilitar caso a fonte já seja 12Vcc.

Figura 7 – Etapa de Conversão DC-DC com reguladores de tensão.

A Visão Completa do Esquemático

A visão geral do esquemático da placa principal pode ser vista na Figura 8 e na Figura 9 temos o esquemático da placa auxiliar. Ambas serão interconectadas por um cabo com conectores RJ-45.

Figura 8 – Esquemático da placa principal.
Figura 9 – Esquemático da placa auxiliar.

O arquivo do esquemático pode ser baixado neste link.

Agora sabemos como interconectar as partes do circuito e como elas se relacionam. Vamos ver como ficará nossa PCB, então não perca o próximo post.

Inscreva-se para receber novidades!

* indica campo obrigatótio

Próximos posts desta série:

Este é o segundo post de uma série relacionados o desenvolvimento do Controle de Fluxo de Água com Arduino. Neste post vou mostrar como montei a parte hidráulica. Mãos a obra!

Instalação Padrão de um Purificador

A instalação de purificadores de forma geral é muito simples. Você precisa de um ponto de água disponível e, se seu purificador gelar a água, uma tomada. É interessante que esses prerrequisitos estejam próximo onde ficará o purificador ou você precisará fazer “adaptações”, como foi o meu caso.

Para o meu modelo de purificador Latina PN535 é necessário apenas a ligação do ponto de água utilizando o adaptador que vem junto com ele próprio para redução da bitola de entrada do purificador. Não há qualquer outro procedimento além desse, a não ser colocar a unidade que filtra.

Conexões para o Projeto

Como meu objetivo era controlar o fluxo com a contagem de volume eu necessitei modificar a instalação padrão para não precisar mexer diretamente no purificador, o que seria bem mais trabalho e realmente não sei se daria certo.

Para para alcançar o objetivo eu precisava resolver dois problemas. O primeiro que era preciso bloquear a passagem de água e só liberar de acordo com um comando do Arduino. O segundo problema é que eu precisava saber o quanto de água saiu do purificador.

Para minha felicidade há soluções simples e relativamente baratas para os dois casos. O primeiro é possível sanar utilizando uma válvula solenoide, comum em máquinas de lavar roupas. Como eu queria algo mais simples do que as utilizadas em máquinas de lavar roupas procurei uma que fosse 12Vcc de alimentação. Para o segundo problema foi possível utilizar o sensor YF-S201. Que é um sensor que possibilita medir um fluxo de líquido ou gás. Ambos estão apresentados na Figura 1. Além de serem fáceis de serem encontrados também são de baixo custo, não mais que R$ 50,00 cada um.

Figura 1 – Primeiro modelo de conexões hidráulicas.

Apesar de ter definido como os problemas seriam resolvido algo ainda não estava ideal. E se faltasse energia? Nesse caso, com a configuração definida na Figura 1, eu ficaria sem água!

Modelo Hidráulico Definitivo

Para resolver o problema da falta de água em caso de falta de energia elétrica eu resolvi criar um caminho alternativo para a água. Este caminho seria liberado manualmente em caso de falta de energia.

Para isso utilizei uma torneira de passagem que em modo de operação normal ficaria fechada constantemente e caso faltasse energia seria preciso fechar a válvula do purificador e abrir esta torneira de passagem.

Na Figura 2 é possível ver o fluxo principal da água, que chega em (A) e passa pelo sensor de fluxo (B) e é liberada ou bloqueada pela solenoide (C) de acordo com o comando do usuário e chega ao purificador pela conexão de saída (D). A torneira de passagem que gera o caminho alternativo é apresentada em (E) e, quando aberta, gera um caminho pela mangueira (F) fazendo a água chegar diretamente na saída (D) independente da solenoide.

Figura 2 – Modelo hidráulico definitivo.

Agora que solucionamos os problemas hidráulicos de controle da água vamos criar o projeto eletrônico. Como será nossa automação completa? Não perca o próximo post.

Inscreva-se para receber novidades!

* indica campo obrigatótio

Próximos posts desta série:

12 pensou em “Controle de Fluxo de Água com Arduino – Parte 3

  1. Boa tarde, esse tipo com esse tipo de válvula solenóide é possível controlar a porcentagem de abertura dela variando o nível de tensão na sua bobina?

  2. Olá seria possível saber se tem agua em uma tubulação ou ar, tipo quando estiver passando agua a eletro válvula libera, quando só tiver ar, ela bloquear.

    1. Este tipo de válvula não permite a distinção. Mas pelo que você falou se chegar ar ficará bloqueado para sempre, porque não terá como abrir para o ar passar de alguma forma.

    1. Olá, Thiago.
      É preciso modificar a lógica para mantero mínimo em 1000 e o máximo não passar de 10000.
      Faz tempo que fiz o código, mas há algumas variáveis de controle para isso como a totalMilliLitres e a currentMls. Boa parte desse controle está na função executarLiberaConta.
      De qualquer forma é preciso verificar com cuidado para garantir o funcionamento correto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.