Lição 98-9: Medidor de Nível de Tensão LED Usando Arduino ou luz caminhante com potenciômetro
Este projeto mostra como construir um voltímetro de nível que usa cinco LEDs como um display de barra gráfica, controlado inteiramente por um Arduino e um único potenciômetro. Ao girar o botão, o Arduino lê a tensão variável em um pino analógico e acende um LED por volt, de modo que a fileira de luzes literalmente "caminha" para cima e para baixo com o botão. É uma das maneiras mais claras de entender a entrada analógica, porque você pode ver a conversão analógico-digital acontecendo em tempo real como uma barra de luz física.
O valor prático aqui vai muito além de um show de luzes. Depois de entender como mapear uma tensão medida para um conjunto de saídas, você pode reutilizar exatamente o mesmo padrão para instrumentação real. Por exemplo, você poderia construir:
- Um indicador de carga de bateria que mostra a capacidade restante de uma bateria de 12 V ou de um power bank USB como uma fileira de LEDs.
- Um medidor de nível de caixa d'água, onde um sensor de boia gera uma tensão proporcional à profundidade.
- Um display de barra de temperatura usando um sensor analógico de temperatura como o LM35.
- Um medidor de intensidade de sinal ou nível de áudio para um receptor de rádio ou amplificador.
- Uma leitura simples de sensor para qualquer transdutor analógico de 0–5 V (pressão, luz, posição).
- Uma sonda de tensão de bancada para verificar trilhas de alimentação sem a tela de um multímetro.
Como os limiares são calculados como porcentagens da tensão da placa, o mesmo código funciona em placas de 5 V como a Uno e a Mega e em placas de 3,3 V com apenas uma alteração de uma linha.
Hardware e Componentes
A lista de peças é deliberadamente mínima, e tudo é explicado na parte inicial do vídeo (no vídeo em 01:54). Você vai precisar de:
- Uma placa Arduino (Uno, Nano ou Mega).
- Cinco LEDs, idealmente de uma única cor para que a barra seja lida com clareza, embora cores mistas funcionem bem.
- Cinco resistores limitadores de corrente. O tutorial usa resistores de 1 kΩ, mas qualquer valor de aproximadamente 300 Ω a 1 kΩ funcionará; valores mais altos simplesmente deixam os LEDs mais fracos (no vídeo em 05:33).
- Um potenciômetro. Tanto o tipo de botão rotativo quanto o tipo deslizante são demonstrados (no vídeo em 02:19).
- Uma protoboard e fios jumper.
Uma observação rápida sobre o próprio LED, pois isso importa para a fiação: um LED é um diodo, então ele só conduz em um sentido. O lado plano do corpo plástico, e o terminal mais curto, é o cátodo (negativo). O terminal mais longo é o ânodo (positivo). O tutorial explica esse símbolo e a forma física em detalhes (no vídeo em 02:39).
O valor do resistor não é arbitrário. Um LED tem uma queda de aproximadamente 2 V, e os tipos pequenos de 3 mm e 5 mm consomem cerca de 10 mA. Com uma alimentação de 5 V, os 3 V restantes devem cair sobre o resistor, então a lei de Ohm dá R = 3 V / 0,01 A = 300 Ω. Esse é o valor para brilho máximo; usar 1 kΩ é uma escolha segura e um pouco mais fraca (no vídeo em 04:41).
Guia de Fiação
A seção dos LEDs na fiação é idêntica ao projeto anterior de luz caminhante: o ânodo de cada LED se conecta ao seu próprio pino digital, e cada cátodo passa por um resistor até um trilho de terra comum. No tutorial, os LEDs estão conectados aos pinos 7, 6, 5, 4 e 3 (no vídeo em 43:04).
O potenciômetro é a única peça nova. Seus dois terminais externos vão para os dois trilhos de alimentação — um terminal externo para o terra e o outro para 5 V (ou 3,3 V se você estiver medindo um sistema de 3,3 V). O terminal do meio, chamado de cursor, é a saída e deve se conectar ao pino analógico A0 (no vídeo em 43:30). O cursor é o que produz a tensão variável: ao girar o botão, o cursor desliza ao longo de uma trilha resistiva e a tensão que ele apresenta muda suavemente entre os dois trilhos.
Um detalhe importante: se você remover o potenciômetro enquanto o circuito estiver funcionando, o pino analógico fica flutuando e os LEDs piscarão aleatoriamente. Esse comportamento é demonstrado no vídeo (no vídeo em 48:52) e é um bom lembrete de que uma entrada analógica sempre precisa de uma fonte de tensão definida.
Explicação do Código
O código é curto e a maior parte dele é direta, então esta seção se concentra apenas nas partes que você vai querer alterar. Todas essas configurações ficam no topo do sketch.
Definições de pinos. Elas informam ao Arduino a quais pinos os LEDs e o potenciômetro estão conectados. Se você ligou seus LEDs de forma diferente, altere esses números para corresponder — a ordem importa, porque LED1 é o limiar mais baixo e LED5 o mais alto.
const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;Tensão da placa. Este é o valor mais importante a acertar. É a referência contra a qual todos os limiares são calculados. Defina como 5.0 para um Uno ou Mega, e como 3.3 para um Nano de 3,3 V ou placa semelhante. Se deixar errado, todos os LEDs comutarão na tensão errada (no vídeo em 44:19).
float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V
Exibição de tensão na serial. Defina como true para imprimir a tensão medida no Monitor Serial a 9600 baud, o que é extremamente útil durante a calibração. Defina como false para silenciar a saída quando tudo estiver funcionando.
boolean showVoltage = true;//true or false to read voltage in serial monitor
Como a conversão funciona. O conversor analógico-digital do Arduino retorna um número de 0 a 1023, porque é um conversor de 10 bits (210 = 1024 passos). O código escala esse número bruto para uma tensão real usando a tensão da placa como referência. Esta é a linha a lembrar caso você migre para uma placa de 12 bits, como a Due, onde você dividiria por 4095.
int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);
A lógica dos limiares. Em vez de fixar tensões no código, cada passo é expresso como uma porcentagem da tensão da placa. Em 95% ou mais, todos os cinco LEDs acendem; acima de 80%, apenas quatro; e assim por diante até 20%, onde um único LED acende. Essa abordagem percentual é o que torna o sketch portável entre placas de 5 V e 3,3 V sem reescrever as comparações.
if (voltage >= boardVoltage*0.95)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
Como o código usa else if, exatamente um ramo é executado por passagem pelo loop, então apenas a quantidade correta de LEDs fica acesa por vez. O atraso de 50 ms no final de cada loop evita que a exibição pisque.
Projeto ao Vivo e Demonstração
Com o sketch carregado, abra o Monitor Serial a 9600 baud e gire o knob lentamente. A tensão impressa e a barra de LEDs acompanham-se de perto: em cerca de 1 V um LED está aceso, em 2 V dois estão acesos, e assim por diante até cerca de 4,8 V, onde todos os cinco estão acesos (no vídeo em 47:37). As leituras ficam dentro de alguns centésimos de volt do valor esperado, o que é excelente para um conversor de 10 bits.
Se os passos parecerem ligeiramente irregulares, geralmente são os resistores e não o código. O tutorial observa que resistores de filme de carbono padrão têm tolerância de 10%, enquanto os tipos de filme metálico azul são tipicamente de 1% e proporcionam passos visivelmente mais justos e precisos (no vídeo em 48:18).
Você também pode trocar o potenciômetro rotativo por um potenciômetro deslizante e obter o mesmo comportamento com uma sensação linear, o que é uma boa opção se você planeja montar o medidor em um painel (no vídeo em 49:07).
Se você quiser mover a luz manualmente em vez de com um knob, isso é abordado na Lição 98-8: Luz Caminhante com Botão de Pressão e LEDs com Arduino. E se você simplesmente quiser que os LEDs caminhem com seu próprio temporizador, veja a Lição 98-7: Luz Caminhante Usando Arduino e 5 LEDs.
Projetos relacionados deste vídeo
- Lição 98-1: Como Ligar e Desligar um LED com Arduino
- Lição 98-2: Como Ligar e Desligar um LED Usando um Botão de Pressão com Arduino
- Lição 98-3: Como Ligar/Desligar um LED Toggle Usando um Botão de Pressão com Arduino
- Lição 98-4: Esmaecendo uma Luz LED Usando Arduino: Controle de Brilho
- Lição 98-5: Esmaecer a Luz Quando um Botão é Pressionado Usando Arduino
- Lição 98-6: Jogo de LED Gangorra com Arduino
- Lição 98-7: Luz Caminhante Usando Arduino e 5 LEDs
- Lição 98-8: Luz Caminhante com Botão de Pressão e LEDs com Arduino
- Lição 98-10: Semáforo com Arduino
Capítulos
- [00:00] Visão geral dos 10 projetos com LED
- [02:29] Noções básicas de LED, símbolos e cálculo de resistores
- [42:25] Introdução ao medidor de nível de tensão com LEDs
- [43:04] Ligação dos LEDs e do potenciômetro
- [43:54] Explicação do código da barra de tensão
- [44:19] Definição da referência de tensão da placa
- [46:00] Lógica dos limiares e passos percentuais
- [47:14] Demonstração: leitura de tensão com a barra de LEDs
- [48:18] Tolerância dos resistores e precisão
- [49:07] Uso de um potenciômetro deslizante
This code has not been parsed yet. Please return to the admin panel to parse it.
Coisas que você pode precisar
-
AmazonasSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazonas
-
Amazonas
-
Amazonas
Recursos e referências
-
DocumentaçãoDocumentação para o Kit de Aprendizado 3 em 1 IoT/Carro Inteligente/SunFounderdocs.sunfounder.com
-
Externo
-
Externo
-
Externo
Arquivos📁
Bibliotecas do Arduino (zip)
-
Código fonte do kit de aprendizado Smart Car 3 em 1 da SunFounder
3in1-kit-main-v2.zip12.80 MB
Manual do Usuário
-
Manual de montagem do SunFounder 3-em-1 Arduino Smart CarEste documento mostra a montagem passo a passo do SunFounder 3-em-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB