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 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.

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:

3 thoughts on “Controle de Fluxo de Água com Arduino – Parte 3

Deixe uma resposta

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.