Ferramentas de Bancada no Tinkercad – Parte 5

Até aqui vimos diversas ferramentas de bancada no Tinkercad. Para finalizar a série veremos agora possivelmente a mais simples, a Fonte de Energia.

Conhecendo a Fonte de Energia

A fonte de energia, ou fonte de alimentação, é uma ferramenta que fornece uma tensão e corrente que podem ser ajustadas de acordo com a necessidade do projetista.

Ela serve para alimentar os circuitos e verificar seu comportamento frente a valores de tensão e corrente que podem ser definidos ou limitados.

A Figura 1 apresenta a fonte de energia do Tinkercad, onde temos o display superior apresentando 5 V, ajustado pelo potenciômetro à direita. Esta fonte permite varia a tensão fornecida entre 0 e 30 volts.

Ainda na Figura 1 observamos que a corrente pode ser ajustada entre 0 e 5 amperes. Na figura temos o valor máximo definido, porém, nenhum carga está conectada e assim temos o valor 0 A apresentado.

Figura 1. Fonte de energia.

Se colorarmos uma carga na saída da fonte podemos ver o consumo de corrente dessa carga e se a tensão é suficiente para alimentá-la.

Observe a Figura 2 onde temos como carga um resistor de 1 k Ohm. Se aplicarmos a Lei de Ohm, apresentada na Equação 1, temos que a tensão (V) é o produto da resistência (r) pela corrente (i).

V = r . i

(1)

Como temos V = 5 e i = 500mA = 0,005 A, podemos usar a equação (2)

r = V / i

(2)

E assim temos que r = 5 / 0,005 = 1000 Ohms. Observando novamente a Figura 2 vemos, pelo código de cores, que o valor do resistor é de 1000 Ohms. Exatamente como calculado.

Figura 2. Fonte de energia com carga.

Outro exemplo é apresentado na Figura 3. Nela podemos ver que a corrente consumida necessária para acender a lâmpada com 12V é de 250 mA.

Figura 3. Fonte alimentando lâmpada com 12 V.

Para conferir os exemplos acesse https://www.tinkercad.com/things/fS0n56Yf5WM e copie para sua conta.

Publicidade:

Conclusão

O Tinkercad oferece uma séria de ferramentas de bancada para auxiliar na análise e experimentação de circuitos eletrônicos sobretudo com uso de Arudino.

É possível beneficiar os estudos com o uso destas ferramentas em temas como Lei de Ohm, filtros analógicos, PWM, entre outros. Apesar disso o contato com as ferramentas em uma bancada real pode trazer benefícios devido a limitação dos modelos do Tinkercad.

Ferramentas de Bancada no Tinkercad – Parte 4

Das ferramentas de bancada no Tinercad o osciloscópio é o que possibilita visualizar o gráfico de um sinal ao longo do tempo. Ele pode ser usado para observar o comportamento do de um pino digital do Arduino ou comportamento de um pino com PWM.

Neste post vamos usar o osciloscópio do Tinkercad para observar alguns destes comportamentos. Vamos explorar o uso do osciloscópio juntamente com o gerador de funções.

Conhecendo o Osciloscópio

A Figura 1 apresenta o osciloscópio no Tinkercad. Quando selecionamos o osciloscópio podemos escolher o opção Tempo por Divisão, que remete a quanto tempo cada quadrado dos eixos coordenados representará. Ajustar este tempo permite observar sinais com frequências mais altas ou baixas dependendo do valor definido.

Figura 1. Osciloscópio no Tinkercad.

Para entender melhor as divisões por tempo do osciloscópio vamos analisar a Figura 2. Nela temos o osciloscópio exibindo um sinal proveniente do gerador de funções. É um sinal com frequência de 50 Hz, senoidal, com amplitude de 5 V pico-a-pico e 0 V de deslocamento CC.

Sabemos que o período (T) de um sinal, ou seja o tempo necessário para o sinal completar o ciclo e começar a se repetir, é definido pela equação (1).

T = 1 / f (1)

(1)

O período na Figura 2 é o início do gráfico à esquerda até o final, à direita. Se você contar verá que esse intervalo tem exatamente 10 divisões no eixo x do osciloscópio, assim como temos 10 divisões no eixo y. No caso da Figura 2 temos T = 1 / 50 = 0,02, ou seja 20 ms.

Como temos, observado a Figura 2, uma divisão no osciloscópio de 2 ms e uma frequência de 50 Hz, como mostra o gerador de funções, a onda apresentada no osciloscópio está sendo completamente mostrada.

Figura 2. Osciloscópio apresentando sinal do Gerador de Funções.S

Se modificarmos o Tempo por Divisão no osciloscópio podemos ver duas vezes a forma de onda do sinal que vem do gerador de funções. Isso pode ser visto na Figura 3.

Perceba que mesmo modificando o Tempo por Divisão nós não modificamos o período (T), ele continua o mesmo porque não modificamos a frequência. O que fizemos foi ajustar a visualização no osciloscópio e por isso vemos duas vezes os picos da onda.

Figura 3. Osciloscópio com divisão de 4 ms.

Visualizando a função analogWrite com o osciloscópio

A função analogWrite do Arduino, apesar do que sugere o nome, não representa uma saída analógica no pino especificado como parâmetro. Essa função utiliza a modulação por largura de pulso (PWM, do inglês, pulse width modulation) para controlar intensidade de LEDs, velocidade de motores etc.

A Figura 4 mostra um circuito que está utilizando a modulação por largura de pulso para controlar a intensidade de um LED criando o efeito “fede in” e “fade out”.

Na figura podemos ver no osciloscópio o sinal proveniente do pino 9 do Arduino. Acesse o link https://www.tinkercad.com/things/lYD6t4j6rEg e simule o circuito para aprender mais sobre o osciloscópio a como visualizar sinais utilizando esta ferramenta.

Figura 4. Comportamento da PWM.

No próximo post vamos finalizar nossa série sobre ferramentas de bancada com a Fonte de energia.

Publicidade:

A seguir…

No próximo post vamos falar sobre a fonte de energia no Tinkercad.

Ferramentas de Bancada no Tinkercad – Parte 3

Continuando nossa série sobre o uso de ferramentas de bancada no Tinkercad, neste post vamos falar um pouco sobre o gerador de funções.

Conhecendo o Gerador de Funções

Talvez muitos ainda não tenham tido contato com um gerador de funções. Ele serve basicamente para gerar sinais com base em alguns parâmetros.

Esses sinais podem ser utilizados para estimular circuitos a fim de investigar o comportamento deste circuito ou identificar possíveis problemas.

Em laboratórios de cursos de engenharia o gerador de funções são utilizados para estudar diversos circuitos. Um exemplo é quando estamos estudando filtros como passa alta, passa baixa ou passa faixa. Com esse dispositivo podemos estimular o filtro com um sinal de entrada e analisar se a saída foi a desejada.

Os parâmetros disponíveis no gerador de funções do Tinkercad são:

  • Forma de onda, ou função;
  • Frequência do sinal;
  • Amplitude e
  • Deslocamento CC.

O gerador de funções do Tinkercad pode ser visto na Figura 1. Além das formas de onda, representadas pelos botões quadrados com o desenho da forma, podemos ajustar a frequência no potenciômetro (A), a amplitude no potenciômetro (B) e o a componente contínua do sinal (deslocamento CC) no potenciômetro (C).

O ajuste de frequência possibilita sinais de 1 Hz até 1 MHz. A amplitude pode variar de 0 V à 10 V, pico a pico, e por fim temos o deslocamento do sinal utilizando a componente CC.

Na Figura 1 também podemos observar que a saída do gerador de funções é obtida nos plugs vemelhor (+) e preto (-) na parte inferior do gerador.

Figura 1. Gerador de Funções do Tinkercad.

Para ter uma visualização do sinal do gerador de funções vamos utilizar o osciloscópio, ferramenta de bancada que terá foco em nosso próximo post.

Publicidade:

A seguir…

No próximo post vamos falar sobre o uso do osciloscópio no Tinkercad.

Ferramentas de Bancada no Tinkercad – Parte 2

Dando continuidade a nossa série sobre o uso de ferramentas de bancada no Tinercad veremos neste post o uso do multímetro, uma ferramenta essencial para qualquer pessoa que vai entrar no mundo da eletrônica.

Conhecendo o Multímetro do Tinkercad

O multímetro é, possivelmente, o mais básico dos aparelhos de medição que um hobbista ou profissional deve ter. No multímetro do Tinkercad podemos medir resistência, tensão e corrente. Apensar das funcionalidades no Tinkercad, vimos que um multímetro real pode ter diversas outras função.

A Figura 1 apresenta o multímetro do Tinkercad com as opções possíveis de medição. Ao selecionar o multímetro uma caixa de opções aparece para que o modo de operação possa ser selecionado. Podemos ver esta caixa na Figura 1 onde temos as opções de modo. São elas:

  • Amperagem (corrente elétrica): neste modo, apresentado na Figura 1(A), é possível medir a corrente de consumo de um componente, de um circuito ou parte dele. O termo amperagem é considerado um termo leigo para se referir à corrente elétrica. Os livros de engenharia normalmente não utilizam amperagem para se referir à corrente elétrica. De fato nunca vi ser utilizado em nenhum livro. Vou utilizar o termo “corrente” ao longo deste texto.
  • Tensão: este modo, apresentado na Figura 1(B), é utilizado para aferir a diferença de potencial elétrico entre dois pontos do circuito ou simplesmente sobre um determinado componente. O termo leigo para se referir à tensão elétrica é voltagem. Vou preferir utilizar tensão neste artigo.
  • Resistência: Para medir a resistência devemos utilizar o modo de mesmo nome no multímetro, exibido na Figura 1(C). Este modo pode ser utilizado didaticamente para ensinar ou aprender sobre o comportamento da associação de resistores por exemplo.
Figura 1. Opções do multímetro do Tinkercad.

Medindo Corrente e Tensão

Para usar um multímetro, seja real ou o do Tinkercad, normalmente devemos escolher a unidade e escala de medição. No caso do Tinkercad escolhemos apenas a unidade, ou seja o que queremos medir: corrente, tensão ou resistência.

Para medir a corrente devemos colocar o multímetro em série com o circuito ou componente que queremos medir. Dessa forma a corrente flui através do multímetro e a medição é apresentada no display.

Também é preciso verificar a polaridade da conexão do multímetro em relação ao que vamos medir. Ainda na Figura 1 podemos verificar a polaridade sendo representada pelos contatos vermelho (+) e preto (-). Temos que nos certificar de conectar o vermelho à entrada da corrente a ser medida e o preto deve seguir para o terra (-) do circuito.

Já na medição da tensão devemos colocar o multímetro em paralelo com o circuito ou componente que queremos medir. A polaridade também deve ser observada. Caso essa polaridade seja invertida os multímetros digitais tendem a mostrar o valor com o sinal negativo, assim como no Tinkercad.

Vamos observar a Figura 2. Nela temos a medição da corrente que flui pelo LED. Observe que o positivo (contato vermelho) do multímetro (A) está ligado ao cátodo do LED. Como o sentido convencional da corrente é fluir do positivo para o negativo temos esse fluxo saindo do cátodo e indo para o negativo da bateria através do multímetro (A), estando ele, portanto, em série com o LED. Podemos observar a medição de 16,2 mA de corrente que o LED está utilizando da bateria. O resistor R está limitando essa corrente.

Ainda na Figura 2 temos o multímetro (B), que está medindo a tensão sobre o LED. Observe que o positivo do multímetro (B) está conectado ao ânodo do LED, ou seja, no terminal positivo, e o negativo do multímetro (B) no negativo da bateria. O multímetro (B) apresenta o valor 2,04 V necessário para acender o LED sem danificá-lo.

Figura 2. Medição da corrente e tensão de um LED.

Medindo a Resistência

A Figura 2 apresenta ainda uma chave SW que desliga a conexão do multímetro (C), responsável por medir a resistência do resistor R. Esta chave foi colocada porquê não devemos medir a resistência de um componente ligado ao circuito.

Na Figura 3 podemos observar um comportamento indesejado no caso da medição com resistor conectado ao circuito energizado. Observe que as leituras dos multímetros (A) e (B) diferem do ideal e o LED está sobrecarregado, o que pode acarretar dano ao componente. Nesta figura podemos ainda verificar uma medição de erro no multímetro (C) impossibilitando a leitura do valor do resistor.

Figura 3. Erro ao medir o resistor ligado ao circuito.

Para medir corretamente o resistor devemos usar o multímetro na posição de resistência e conectar as pontas de prova em paralelo com o componente. Não há necessidade de observar polaridade quando medimos resistências, por isso nas imagens optei por usar fios da mesma cor, verde.

Na Figura 4 podemos observar essa ligação onde também temos a chave SW em outra posição, agora desligando o resistor do restante do circuito e possibilitando a correta medição da resistência R. O valor lido pelo multímetro (C) é 150 Ohms, o que condiz perfeitamente com o valor do componente sendo possível também de ser identificado pelo código de cores.

Como o LED não está conectado ao circuito devido ao uso da chave SW em modo aberto, não há fluxo de corrente e assim não é possível medir nem a tensão nem a corrente do LED.

Figura 4. Medição do resistor.

Experimente

A Figura 5 mostra uma versão dos circuitos apresentados anteriormente com uma única chave SW, capaz de alternar o que se quer medir: o valor do resistor ou a tensão e corrente. Basta mudar a posição da chave.

Na posição 1-2 teremos o fluxo de corrente através do LED e portanto serão apresentados os valores da tensão e corrente sobre este LED.

Já na posição 2-3 não há fluxo de corrente através do LED e assim será possível realizar a medição da resistência.

Figura 5. Circuito experimental finalizado.

Acesse o projeto no Tinkercad e experimente você mesmo as opções de uso do multímetro. O link para o exemplo deste post é o https://www.tinkercad.com/things/jikjT0kYtXq. Você pode copiar e realizar suas próprias verificações.

O multímetro no Tinkercad é uma ótima ferramenta para estudar a base da eletrônica, como operações envolvendo a Lei de Ohm, associação de resistores, alimentação etc.

Publicidade:

A seguir…

No próximo post vamos falar sobre o uso do gerador de funções no Tinkercad.

Ferramentas de Bancada no Tinkercad – Parte 1

Quando estamos realizando algum experimento em nossa bancada de eletrônica, ou na mesa da cozinha 😆, muitas vezes precisamos conhecer certos aspectos no funcionamento do circuito. Alguns desse aspectos são conhecidos quando nos fazemos algumas perguntas como “existe um curto em alguma parte do circuito?” , “será que está com mal contato?” ou ainda “está chegando alimentação?”.

Nesta série de posts vamos falar sobre as ferramentas de bancada no Tinkercad e aprender como utilizá-las.

Por mais simples que sejam estas perguntas, a importância das suas respostas é muito grande. A ocorrência de cada delas pode ocasionar em falhas que podem causar desde o mal funcionamento do seu projeto ou até mesmo danificar os componentes que você está usando.

Neste artigo vou mostrar algumas das ferramentas disponíveis no Tinkercad. São ferramentas que podemos ter na nossa bancada apesar de algumas delas terem o valor um tanto salgado para quem não trabalha profissionalmente com projetos de circuitos eletrônicos.

Apresentação das Ferramentas

Na Figura 1 temos a representação de algumas ferramentas de bancada que estão disponíveis no Tinkercad. Na Figura 1(A) temos o multímetro, na Figura 1(B) temos o Gerador de Funções, na Figura 1(C) temos o Osciloscópio e na Figura 1(D) temos a Fonte de energia.

Figura 1. Ferramentas de bancada no Tinkercad.

Cada uma destas ferramentas podem nos apresentar informações importantes para a criação dos nossos circuitos. Claro que no Tinkercad essas representações são ilustrativas e a aparência real de cada uma dessas ferramentas é bem diferente das mostradas no simulador, mas as funções delas no Tinkercad são similares.

Multímetro

A imagem de um multímetro real pode ser vista na Figura 2. No multímetro do Tinkercad é possível usar as funcionalidades de medir tensão, corrente e resistência. Já no aparelho real, como o da Figura 2, podemos ainda testar transistores, escolher entre tensão e/ou corrente contínua ou alternada, medir temperatura, frequência e outras funções que variam a cada modelo.

Figura 2. Multímetro digital

Gerador de Funções

O gerador de funções é um dispositivo capaz de gerar vários tipos de sinais em formas de onda diferentes e frequências diferentes. Um gerador de funções real, como apresentado na Figura 3, pode variar principalmente em sua capacidade de gerar frequências cada vez mais altas podendo chegar a centenas de MHz. No gerador de funções do Tinkercad podemos gerar sinais em ondas quadrada, senoidal e triangular e variar a amplitude, deslocamento CC e frequência. No equipamento real são encontradas outras funcionalidades como a geração de ruído branco, soma de sinais, além de ter vários canais de saída.

Figura 3. Gerador de funções.

Osciloscópio

O osciloscópio é aparelho que permite visualizar sinais, analógicos ou digitais, que são geralmente apresentados em uma tela contida no dispositivo. Apesar desta ser a principal função outras possibilidade é possível utilizar outras funções como a visualização das frequências contidas em um sinal com a funcionalidade da Transforma Rápida de Fourier (FFT, sigla do inglês Fast Fourier Transformation), execução de operações sobre o sinal, visualização da amplitude e frequência entre outas. Um osciloscópio real pode ser visto na Figura 4. No osciloscópio do Tinkercad temos apenas a funcionalidade de medição de frequência por unidade de tempo, que tem grande serventia para observação de possíveis fenômenos em nossos circuitos.

Figura 4. Osciloscópio.

Fonte de Energia

Basicamente qualquer circuito necessita de alimentação de uma fonte de energia, seja uma bateria ou uma fonte ligada à tomada da rede elétrica.

As fontes de bancada, como a apresentada na Figura 5, são ferramentas capazes de fornecer uma alimentação que geralmente pode ser variada de acordo com a necessidade. Essa variação pode ser na tensão ou corrente fornecida.

Figura 5. Fonte de energia variável, 0-30V / 10 A.

Publicidade:

A seguir…

No próximo post vamos falar sobre a forma correta de usar o multímetro no Tinkercad.

Visão Geral sobre o Sonar HC-SR04

Quando precisamos detectar obstáculos em nossos projeto temos algumas opções disponíveis. No mercado temos disponíveis sensores capazes de captar um obstáculo com tecnologias como laser, infravermelho ou ondas ultrassônicas.

Apesar dos diversos modelos é comum em projetos mais simples ou amadores nos depararmos com o sensor ultrassônico, ou sonar, HC-SR04. Este é um sensor de baixo custo muito fácil de encontrar no mercado principalmente em lojas especializadas em projetos com Arduino.

A Figura 1 apresenta o sonar HC-SR04. Podemos verificar que se trata de um módulo com 4 pinos (VCC, Trigger, Echo e GND) onde temos dois transdutores, sendo um para enviar o sinal ultrassônico e outro para captar o retorno.

Figura 1. HC-SR04
Fonte: https://pt.aliexpress.com/item/32939762416.html

Funcionamento

O sensor ultrassônico, ou simplesmente sonar, é um tipo de sensor capaz de utilizar a reflexão de ondas sonoras para mensurar a distância do objeto que refletiu a onda.

Geralmente a faixa de frequência utilizada por este tipo de sensor fica fora da faixa audível pelos seres humanos, capazes de ouvir frequências na faixa entre 20Hz e 20Khz. A Figura 2 mostra uma representação do funcionamento de um sensor ultrassônico, onde o Módulo Sonar emite uma onda que é refletida pelo objeto.

Figura 2. Representação do funcionamento de um sensor ultrassônico.

Para determinar a distância é preciso medir o tempo necessário para que a onda saia do sensor ultrassônico e retorne ao refletir em um objeto. A relação entre o tempo e a velocidade do som vai determinar a distância que o objeto está do sensor.

De acordo com o manual, disponível em (CYTRON TECHNOLOGIES, 2013), este modelo é capaz de detectar objetos entre 2 cm e 400 cm de distância com a resolução de 0,3 cm. Deve ser alimentado por uma fonte 5Vcc e sua interface de obtenção dos dados é através dos pino ECHO, que vai para nível alto quando recebe o retorno da onda.

No mercado temos outros modelos de sonar como o LV-MaxSonar®-EZ0™, no entanto, para muitos projetos o custo e as capacidades do HC-SR04 acabam determinando por sua escolha. Custando aproximadamente USD $1,00 ele se sobressai frente ao LV-MaxSonar®-EZ0™ que pode ficar em torno de USD $30,00.

Detecção de objetos

Em um projeto denominado ProtoSwarBot foram utilizandos três HC-SR04. O projeto consiste em um robô diferencial que necessitou de uma forma de detecção de obstáculos. A Figura 3 mostra a montagem do ProtoSwarBot e o detalhe dos sensores HC-SR04.

Figura 3. Foto do ProtoSwarBot destacando a disposição dos módulos HC-SR04.

Alguns experimentos com o sensor HC-SR04 foram realizados em uma sala fechada com 3 metros de largura por 6 metros de profundidade. Todos os testes foram realizados com o objeto a ser detectado em linha reta com o sonar central e o valor dado pelo sonar foi verificado utilizando uma trena.

O primeiro teste realizado foi a aferição do limite de detecção do sonar. O ProtoSwarBot foi deslocado em direção à profundidade da sala e o valor, obtido pelo sonar central de acordo com a Figura 3,  foi amostrado tendo como referência uma parede. O sonar foi capaz de fornecer a distância até 5,20 metros do limite da sala. Após esta distância os valores amostrados ficaram imprecisos, variando valores intermediários entre 4 e 6 metros. A distância inicial de medição foi de 4 cm.

O teste seguinte foi para aferir a detecção de objetos de tamanhos variados. Na mesma sala do teste anterior, foram colocados objetos a diferentes distâncias para medir a que distância mínima e máxima cada objeto seria detectado com precisão. Foram utilizados objetos com formato de cilindro e paralelepípedo. A Tabela 1 mostra as medições mínima e máxima realizadas para cada tipo de objeto. Na mesma tabela temos as dimensões do objeto de acordo com o tipo.

Tabela 1. Aferição da detecção de objetos de diferentes dimensões.

É possível verificar na Tabela 1 que foi possível detectar objetos de tamanhos e formas variadas. É também possível verificar que o tipo do objeto interferiu na detecção, onde temos o cilindro com 11 cm de diâmetro e o paralelepípedo com 11 cm largura com medições de distância diferentes. Isto ocorre devido à deflexão da onda do sonar na superfície convexa do cilindro.

Outra observação que se pode fazer observando os dados da Tabela 1 é em relação à distância mínima de detecção de um objeto. É possível verificar que o Paralelepípedo 1 tem distância mínima de detecção de 15 cm, o que significa que ele só começa a ser detectado nesta distância. Isto ocorre devido ao formato da onda emitida pelo sonar ser cônica e a altura do objeto ser apenas 1,5 cm. Nessas condições a onda não intercepta objetos próximos demais. Na Figura 4, que apresenta o funcionamento do sonar do ProtoSwarBot no simulador V-REP, é possível observar o formato cônico do sonar. A interseção, e consequentemente detecção, do cone do sonar com o objeto não ocorre na Figura 4(A), pois o paralelepípedo não está distante o suficiente do sonar. Na Figura 4(B) ocorre a interseção, pois o paralelepípedo está mais afastado do sonar.

Figura 4. Imagem do funcionamento do sonar do ProtoSwarBot no simulador V-REP.

Nos outros casos apresentados na Tabela 1 é possível verificar que se conseguiu detectar o menor cilindro, com diâmetro de 2,7 cm, à 30 cm de distância e o maior paralelepípedo a 380 cm, quase o limite do sensor. Objetos mais próximo que 4 cm não são detectados e o retorno do sonar é um valor aproximado de 4 cm. Caso o objeto esteja tão próximo que obstrua o sensor, foi observado que um valor de aproximadamente 1500 cm é retornado. Este valor pôde ser utilizado para identificar se o robô ficou preso se alguma forma e é tratado como uma situação anômala.

Referências

CYTRON TECHNOLOGIES. User’s Manual – HC-SR04 Ultrasonic Sensor. Disponível em: <https://docs.google.com/document/d/1Y-yZnNhMYy7rwhAgyL_pfa39RsB-x2qR4vP8saG73rE/edit>. Acesso em: 02/04/2020.

Controle de Fluxo de Água com Arduino – Conclusão

Neste quinto e último post da série sobre o desenvolvimento do Controle de Fluxo de Água com Arduino vamos mostrar o que foi alcançado e um pouco do código fonte desenvolvido.

Vídeo demonstrativo

Um pouco sobre o código fonte

O programa de controle foi desenvolvido na IDE do Arduino utilizando algumas bibliotecas para facilitar a vida :D.

Começando pelos includes. Foram utilizadas duas bibliotecas. A TM1637Display e a RotaryEncoder.

A primeira com o propósito de facilitar a escrita dos números nos display de 7 segmentos. A segunda biblioteca é utilizada para leitura do encoder rotatorio. Ambas foram adicionadas pelo link direto do Github que está no código fonte disponibilizado.

#include <TM1637Display.h>
#include <RotaryEncoder.h>

Eu costumo utilizar em meus projetos a ideia de maquina de estados. Para este pensei em 2 estados . O estado de espera e um estado para liberar a contagem do fluxo. Para ambos criei um #define para simplificar o uso.

#define ESPERA          0
#define LIBERA_CONTA    1

Após essas definições algumas variáveis globais foram declaradas incluindo a display, que instancia a classe TM1637Display fornecida pela biblioteca do display, e a encoder, que instancia a classe RotaryEncoder fornecida pela biblioteca do encoder rotatorio. Não entrarei em detalhes sobre as outras variáveis. Qualquer dúvida pode deixar um comentário.

Na função main foi preciso incializar os modos dos pinos e algumas configurações iniciais do display e do encoder.

void setup() {  
  Serial.begin(9600);
  
  pinMode(LED, OUTPUT);
  pinMode(BZR, OUTPUT);
  pinMode(SOLENOIDE, OUTPUT);
  pinMode(ADJ, INPUT);
  pinMode(SW, INPUT);
  
  display.setBrightness(0x0f);
  display.showNumberDec(0);

  initFlowSensor();
  
  Serial.println("INICIALIZA");
  Serial.println("ESTADO -> ESPERA"); 
}

O ideia de utilizar estados é manter o código simples e fácil de alterar ou corrigir. Consequência disto é que a função loop fica bem pequena. Ele tem apenas um switch que troca qual é o estado atual do sistema e executa uma função específica para o estado.

void loop() {
  switch (currentState) {
    case ESPERA: {
      executarEspera();
      break;
    }    
    case LIBERA_CONTA: {
      executarLiberaConta();
      break;
    }        
  }    
}

A função executarEspera é mostrada a seguir. Basicamente ela se mantém executando uma outra função, a runEncoder. No entando é nesta função que é verificado se o botão foi pressionado e caso isso ocorra o fluxo é liberado mudando a variável currentState. Um comportamento que adicionei a esta função é a liberação do fluxo enquanto o valor definido no display for zero e o botão se mantiver pressionado. Futuramente vou realizar uma refatoração deste código para que esta parte seja um novo estado e a função cumpra um único propósito.

void executarEspera() {
  adj = analogRead(ADJ);
  int pressed = digitalRead(SW);
  if (!pressed) {
      while(digitalRead(SW) == 0) {
        if (currentMls == 0) {
          freeFlow = true;
          checkFlow();
          digitalWrite (SOLENOIDE, HIGH);
          display.showNumberDec(totalMilliLitres);
        }
      }
      Serial.println("ESTADO -> LIBERA_CONTA");
      digitalWrite (SOLENOIDE, LOW);
      currentState = LIBERA_CONTA;
  }
  runEncoder();
}

A função runEncoder trata da leitura do encoder e da exibição do número no display.

void runEncoder() {
  
  static int encoderPosition = 0;  
  
  encoder.tick();  
  int newPos = encoder.getPosition();
  
  if (encoderPosition != newPos) {    
    encoderPosition = newPos;
    if (encoderPosition * -1 >= 0) {
      currentMls = -1 * encoderPosition * 10;
    } else {
      encoder.setPosition(0);
    }    
    display.showNumberDec(currentMls);
  }
}

A função executarLiberarConta executa do estado LIBERA_CONTA. É nela que, após o fluxo ser liberado, o número do display fica sendo atualizado. Caso o botão seja pressionado há um cancelamento do fluxo mesmo que não tenha finalizado para o caso de o usuário passar do ponto na escolha da quantidade.


void executarLiberaConta() {
  unsigned int delta = currentMls - totalMilliLitres;
  digitalWrite (SOLENOIDE, HIGH);
  Serial.println("LIBERA SOLENOIDE");
  while (currentMls > totalMilliLitres) {
    checkFlow();

    int parcial = currentMls - totalMilliLitres;
    if (parcial < 0) {
      parcial = 0;
    }
    display.showNumberDec(parcial);

    int pressed = digitalRead(SW);
    if (!pressed) {
        while(digitalRead(SW) == 0) {}
        currentMls = 0;
    }
  } 
  
  encoder.setPosition(0);
  currentMls = 0;
  totalMilliLitres = 0;
  display.showNumberDec(0);
  
  digitalWrite (SOLENOIDE, LOW);

  if (!freeFlow) {
    tone(BZR, 300, 500);
    delay(1000);
    tone(BZR, 300, 500);
    delay(1000);
    tone(BZR, 300, 500);
    delay(1000);
  }
  
  Serial.println("ESTADO -> ESPERA");
  freeFlow = false;
  currentState = ESPERA;
}

O código fonte completo você encontra em https://github.com/ricardoteix/purific_control.

Com este post concluo a apresentação deste projeto. Espero que você tenho gostado. Deixem suas dúvidas, dicas ou sugestões de melhoria.

Controle de Fluxo de Água com Arduino – Parte 4

Este é o quarto post da série sobre o desenvolvimento do Controle de Fluxo de Água com Arduino. Agora vamos abordar o projeto da placa de circuito impresso (PCI, ou PCB na sigla do inglês Printed Circuit Board). Esperamos como resultado ter uma placa de qualidade para o nosso projeto.

Como vimos em posts anteriores, este projeto utiliza um Arduino Nano além de outros componentes. Para comportar todos de forma definitiva foi projetada uma placa de circuito impresso. Assim teremos uma abordagem que dá um toque mais profissional ao projeto que utilizar protoboard ou mesmo utilizar uma placa padrão.

Projeto da PCB

No projeto do circuito elétrico apresentado no post anterior utilizamos um Arduino Nano e alguns componentes como resistores, capacitores e reguladores de tensão. A partir daí podemos perceber a necessidade de acomodar estes componentes. Era preciso criar uma placa que possibilitasse o encaixe do Arduino Nano e também acomodasse outros componentes. A partir do foi iniciado o projeto da PCB.

Além dos componentes de encaixe seria preciso adicionar foi preciso criar a etapa de alimentação e ajuste do sensor de fluxo. Na Figura 1 é possível observar o projeto da placa principal e na Figura 2 a placa auxiliar.

Figura 1 – PCB da placa principal.
Figura 2 – PCB da placa auxiliar.

A alimentação parte da placa principal e é levada para a auxiliar por um cabo RJ45 nos conectores RJ1 e RJ2. Neste cabo também está a alimentação, fornecida para a solenoide e para o sensor de fluxo. Também é por este cabo que o sinal do sensor de fluxo volta da placa auxiliar ao Arduino Nano.

Na placa principal temos os conectores J3 e H1 para conectar o Encoder e o Display, respectivamente. Nela também temos o R2, um trimpot para ajuste da calibração do do sensor de fluxo e o botão de reset do sistema.

Produção Profissional da PCB

O projeto foi todo desenvolvido no easyeda.com, um site que contém uma ferramenta de desenho de circuitos de várias camadas e com diversas ferramentas e bibliotecas de componentes.

Há diversos sites que você pode acessar para fazer sua placa após finalizar o projeto. Eu já fiz algumas placas na jlcpcb.com. Uma fábrica chinesa com preços muito bons, processo desburocratizado e rápido. Como resultado temos uma placa de qualidade profissional produzida em um processo industria. A única desvantagem é o tempo de chagada que fica em torno de 30 dias.

O resultado final da produção da placa pode ser visto nas Figuras 3.

Figura 3 – Placa final do projeto.

Para saber mais sobre como criar uma uma PCB fazendo uma shield para Arduino clique aqui e conheça o curso Circuito Impresso: Criando uma Shield para Arduino.

No próximo post vamos falar sobre as considerações finais sobre o projeto e possíveis melhorias.

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:

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:

Controle de Fluxo de Água com Arduino – Parte 2

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: