Neste artigo estaremos entendendo o funcionamento de uma porta analógica por completo. Além disso, você vai saber como é construído o valor lido pelos microcontroladores. Por fim, veremos toda a parte de multiplexação das portas analógicas, e você sabia que podemos expandir para até 16? Então vamos nessa!
Dando o seu contexto.
Primeiramente, você já deve ter feito o projeto com LDR ou potenciômetro. Ou até mesmo testado o seu primeiro servo motor. Em todos eles, acredito que tenha utilizado algumas das entradas analógicas (as famosas A0, A1, A2, …).
Além disso, quando estamos utilizando elas, estamos também trabalhando com alguns conceitos como:
Todos estes conceitos tem a sua importância aqui. Entretanto, como eles trabalham em conjunto para pegar o valor de tensão que está sendo enviado para a porta A0 e resultar no valor de 403 usando o analogRead()? Bom, continue a sua leitura!
Projetos usando as Portas Analógicas.
Então, continuando o nosso aprendizado de hoje, deixo abaixo alguns projetos super legais. Em todos eles, foram utilizadas as portas analógicas. Por isso, perceba a variedade de projetos e como as portas analógicas foram essenciais neles.
- Aplicando o Sensor de Luz TEMT6000.
- Projeto com Sensor de Umidade Capacitivo.
- Utilizando o Joystick.
- Aplicando o Sensor de Pulsos.
Portanto, perceba que a utilização dessas portas se faz muito necessário. Sabe o que é mais necessário ainda? Saber como ela trabalha. Então vamos nessa!
Conceito de Aproximações Sucessivas.
O conceito de aproximações sucessivas é um método matemático muito utilizado em sistemas. O seu principal objetivo é encontrar uma constante, ou um valor mais próximo do resultado de uma função. No nosso caso, o objetivo será descobrir o valor da tensão!
Entendendo o processo.
Tal método parte sempre de um valor inicial (em nosso caso, como o Arduino UNO tem uma maior tensão de 5V, então partimos da metade 2,5V). Beleza, agora o que fazer? O Arduino vai variar o valor dessa tensão interna dele. Aqui entra mais dois conceitos:
- Comparador de Tensão.
- Resolução do Arduino.
Observando a imagem acima, perceba que o Arduino identifica o que ele está recebendo graças ao seu comparador. Ou seja, vamos supor que estou regulando a tensão do circuito na porta A0 e enviando 2V para ela.
Agora, vou aplicar o comando analogRead(A0) e quero saber o valor lido. Para isso o Arduino vai passar a realizar esse processo.
Processo de Identificação do Arduino.
Começo com 2.5V e pergunto ao meu comparador: isso é maior que o valor de entrada? Sim (0) e Não (1). Agora ele faz o processo da aproximação e divide 2.5V pela metade e vai até 1.25 e faz a mesma pergunta aos comparador: isso é maior ou menor? Sim (0) e Não (1).
Ele realiza esse processo 10 vezes. Pois adivinha? O valor 10 vem da sua resolução 2^10 = 1023 lembra? Assim, como na imagem, o valor em binário é 403. Portanto a saída do analogRead(A0) = 403.
Detalhes Importantes.
Vale ressaltar alguns pontos importantes:
- Quanto maior o valor da tensão, mais tentativas o Arduino faz até chegar no valor.
- O Arduino tem apenas 1 comparador, então ele faz o calculo de uma porta por vez!
- Por fim, para fazer todo esse calculo, o Arduino demora cerca de 100 μs. Ou seja, em 1 segundo ele já fez 10 mil leituras!
Expandindo as portas do Arduino.
Para finalizar o nosso estudo de hoje, vamos conhecer o CD74HC4067. Ele é um um módulo no qual conseguimos expandir as saídas analógicas para até 16 canais!
Além disso, com relação a preocupação da tensão de operação, que discutimos em um artigo anterior, ele pode atuar tanto nas tensões de 3,3V e 5V. Portanto, você só precisa se preocupar com a tensão necessária para alimentar todos os componentes ligados nas portas!
Ficou alguma dúvida?
Então, como foi o estudo até aqui? Ficou alguma dúvida? Comenta abaixo! Caso tenha sido bem esclarecedor, então compartilhe. Conteúdo de qualidade merece ser compartilhado para o mundo. Vejo você no próximo artigo!