
Passo 1 de 8
Identifique a entrada e os limites da leitura
Reconheça A0, a referência DEFAULT e as condições elétricas que tornam a leitura segura.
Trilha de aprendizado · Nível 11 · Tutorial 3
Ao concluir, o aluno será capaz de adquirir uma tensão de um divisor resistivo em seu Uno R3, apresentar a leitura pela UART e verificar os efeitos da referência e da impedância da fonte.
Identifique a entrada e os limites da leitura
Reconheça A0, a referência DEFAULT e as condições elétricas que tornam a leitura segura. 2 min
Monte o divisor conectado a A0
Monte com segurança um divisor de baixa impedância entre 5 V e GND e conecte seu nó central à entrada A0. 3 min
Leia o código bruto no monitor serial
2 min
Converta o código em tensão estimada
Converta a leitura bruta do ADC em uma estimativa de tensão com a escala e os tipos numéricos corretos. 2 min
Confira a referência e compare as tensões
Compare a estimativa do ADC com uma medição local ou com dados ilustrativos e ajuste a referência usada no cálculo sem alterar a configuração DEFAULT. 3 min
Entenda o efeito da impedância da fonte
Entenda como o multiplexador e o capacitor interno tornam a impedância da fonte relevante para a leitura analógica. 3 min
Compare leituras após a troca de canal
3 min
Valide a leitura de ponta a ponta
Conclua uma leitura documentada, ligando montagem, código, referência, cálculo e interpretação prudente. 2 min

Passo 1 de 8
Reconheça A0, a referência DEFAULT e as condições elétricas que tornam a leitura segura.
Nesta prática, a entrada analógica será a A0 do Arduino Uno R3. Ela integra o conjunto A0 a A5, na fileira de conectores analógicos da placa.
O Uno R3 usa o ATmega328P. Quando um programa chama analogRead(A0), solicita uma conversão e recebe um código inteiro de 0 a 1023. São 10 bits, ou seja, 1024 níveis possíveis.
Por enquanto, identifique A0 como o ponto onde chegará o sinal do divisor resistivo montado no próximo passo.
Localize na sua placa A0, GND e AREF antes de montar qualquer circuito.

Use A0 para o sinal, GND como referência comum e mantenha AREF sem conexão nesta prática.
A referência selecionada será a padrão do Arduino: DEFAULT. No Uno, ela está associada à alimentação analógica AVcc, normalmente próxima da alimentação de 5 V da placa.
“Próxima de 5 V” não significa necessariamente 5,000 V. A alimentação fornecida pelo USB e as quedas nos caminhos da placa podem fazer o valor real diferir do nominal. Neste momento, trate 5 V como uma referência nominal; mais adiante, você comparará o cálculo com uma medição.
Com DEFAULT, o código indica a posição do sinal entre GND e a referência associada à alimentação analógica real da placa.

O limite superior da conversão acompanha AVcc; não é um valor ideal fixo de 5 V.
Atenção
A saturação do resultado não protege o pino. Um código próximo de 0 ou 1023 apenas indica que a tensão chegou a um extremo da faixa de conversão. Isso não torna segura uma tensão negativa ou uma tensão acima da alimentação real da placa.
Atenção
Antes de ligar o USB, confira as condições desta prática:
Faça toda alteração de jumpers ou resistores com o USB desconectado. O divisor será montado no próximo passo.
Dica
A relação correta é simples: A0 recebe uma tensão definida em relação ao GND do Uno e dentro dos trilhos reais de alimentação da própria placa. Nesta atividade inicial, não será usada fonte externa.
Qual conexão está compatível com esta prática usando DEFAULT?

Passo 2 de 8
Monte com segurança um divisor de baixa impedância entre 5 V e GND e conecte seu nó central à entrada A0.
Você vai montar uma fonte de teste definida para A0: um divisor com dois resistores de 4,7 kΩ. Alimentado pelo próprio Uno via USB, ele produzirá no nó central uma tensão próxima da metade da alimentação.
Separe: Uno R3, cabo USB de dados, computador com IDE Arduino, protoboard, jumpers e dois resistores de 4,7 kΩ. Um multímetro é opcional para a comparação posterior.
Faça a montagem e qualquer alteração de fios somente com o USB desconectado.

O Uno será alimentado somente pelo cabo USB; o multímetro é opcional.
Monte o divisor na protoboard, ainda sem conectar o USB:
Os resistores têm o mesmo valor. Portanto, o nó deve ficar próximo da metade da tensão entre 5 V e GND.

O ponto comum aos dois resistores é o nó de leitura ligado a A0.
Dica
Com resistores de 4,7 kΩ, a resistência de Thévenin vista por A0 é aproximadamente 2,35 kΩ: 4,7 kΩ em paralelo com 4,7 kΩ. Esta é a condição inicial de baixa impedância da prática.
Não conecte nada ao pino AREF. Deixe os pinos digitais 0 e 1 livres, pois são usados pela comunicação serial via USB.
Atenção
Não use fonte externa nesta prática nem aplique tensão externa a A0. O sinal do divisor deve permanecer entre GND e a alimentação real da placa. Desconecte o USB antes de reposicionar resistores ou jumpers.
Antes da primeira energização, organize as ações abaixo na sequência segura. Considere que o Uno começa desconectado do USB.
Coloque as etapas na ordem correta.
Se você tiver dois resistores de 470 kΩ, guarde-os para uma comparação posterior. Eles podem formar outro divisor com a mesma razão nominal, mas não devem ser usados agora. Sem esses componentes, você ainda poderá analisar dados ilustrativos nas próximas etapas.
Na condição atual, espere:
A seguir, você usará essa montagem para ler o código bruto no Monitor Serial.
Em qual ponto do divisor deve ser ligado o pino A0?

Passo 3 de 8
O divisor de 4,7 kΩ + 4,7 kΩ montado no passo anterior aplica a A0 uma tensão próxima da metade da alimentação. Agora o objetivo é observar apenas o código bruto retornado pelo ADC.
No Uno R3, analogRead(A0) inicia uma conversão e devolve um int de 0 a 1023. Vamos manter a referência padrão com analogReference(DEFAULT) e enviar esse número pela UART.
A0 deve permanecer como entrada: não habilite pull-up e não o configure como saída. O código abaixo declara isso explicitamente com INPUT.

O ADC transforma a tensão presente em A0 em um código; a UART apenas apresenta esse código no computador.
Crie um sketch novo, substitua seu conteúdo pelo programa completo e grave-o no Uno. Depois abra o Monitor Serial da IDE e selecione 115200 bit/s. A taxa do monitor deve coincidir com a de Serial.begin.
delay(500) existe somente para deixar os registros legíveis em uma tensão contínua. Ele não define uma estratégia de aquisição de sinais que variam no tempo.
Sketch completo para ler A0 e imprimir o código bruto.
void setup() {
pinMode(A0, INPUT);
analogReference(DEFAULT);
Serial.begin(115200);
}
void loop() {
int codigo = analogRead(A0);
Serial.print("Codigo ADC: ");
Serial.println(codigo);
delay(500);
}Codigo ADC: 510 Codigo ADC: 511 Codigo ADC: 510 Codigo ADC: 512
Os números variam conforme a alimentação, as tolerâncias dos resistores, ruído e a montagem. Para dois resistores iguais, valores próximos de 512 são esperados, mas não há um valor único obrigatório.
Complete as duas partes que fazem a aquisição em A0 e exibem o código no Monitor Serial.
void loop() {
int codigo = ;
Serial.print("Codigo ADC: ");
Serial.(codigo);
delay(500);
}Com o divisor de dois resistores de 4,7 kΩ corretamente ligado entre 5 V e GND, qual conjunto é mais coerente no Monitor Serial?

Passo 4 de 8
Converta a leitura bruta do ADC em uma estimativa de tensão com a escala e os tipos numéricos corretos.
O analogRead(A0) entrega um código de 0 a 1023. Para convertê-lo em uma estimativa de tensão no Uno R3, use a convenção:
V_estimado = código × V_ref / 1024
Com a referência padrão (DEFAULT), comece usando V_ref = 5.0 V como hipótese de cálculo. Isso não mede a alimentação real da placa e não altera a referência física usada pelo ADC.

Há 1024 níveis possíveis: de 0 a 1023. Por isso o divisor da estimativa é 1024, não 1023.
Dica
O maior código é 1023, mas ele não obriga a interpretação de que a entrada vale exatamente V_ref. A fórmula usa 1024 porque esse é o número de níveis de quantização. As casas decimais que aparecerão no monitor serial são apenas uma forma de exibir o cálculo; não representam garantia de exatidão.
Amplie o programa anterior. A expressão abaixo preserva a parte fracionária porque 1024.0 força o cálculo em ponto flutuante. Se fosse usado 5 / 1024 com ambos os valores inteiros, o resultado seria truncado para zero antes da multiplicação.
Substitua o programa anterior por este código e envie-o ao Uno. Abra o Monitor Serial em 115200 bit/s.
const float V_REF = 5.0;
void setup() {
analogReference(DEFAULT);
Serial.begin(115200);
}
void loop() {
int codigo = analogRead(A0);
float tensaoEstimada = codigo * (V_REF / 1024.0);
Serial.print("Codigo: ");
Serial.print(codigo);
Serial.print(" | Tensao estimada: ");
Serial.print(tensaoEstimada, 3);
Serial.println(" V");
delay(500);
}Codigo: 511 | Tensao estimada: 2.495 V Codigo: 512 | Tensao estimada: 2.500 V Codigo: 511 | Tensao estimada: 2.495 V
Os números variam com a alimentação, os resistores, ruído e a montagem. Em um divisor aproximadamente pela metade da alimentação, o código tende a ficar próximo de 512 e a estimativa próxima de 2,50 V quando V_REF é 5,0 V.
Complete a expressão que calcula a tensão estimada. Mantenha a conversão em ponto flutuante.
const float V_REF = 5.0;
int codigo = analogRead(A0);
float tensaoEstimada = codigo * ( / );
Serial.print("Codigo: ");
Serial.print(codigo);
Serial.print(" | Tensao estimada: ");
Serial.print(tensaoEstimada, 3);
Serial.println(" V");Neste momento, V_REF = 5.0 é somente a referência assumida para transformar o código em volts. Ela não muda analogReference(DEFAULT), não mede AVcc e não calibra o ADC.
No próximo passo, você comparará a estimativa com uma medição e verá como uma referência de cálculo mais próxima da alimentação real pode afetar o resultado.
Resumo

Passo 5 de 8
Compare a estimativa do ADC com uma medição local ou com dados ilustrativos e ajuste a referência usada no cálculo sem alterar a configuração DEFAULT.
Com o Uno alimentado pelo USB e o divisor ainda ligado, meça em tensão contínua:
Deixe AREF sem conexão externa. As pontas do multímetro apenas observam o circuito; não mova jumpers nem altere resistores com o USB conectado.
A tensão no pino 5 V não é uma medição direta perfeita da referência interna do ADC: podem existir diferenças nos caminhos da placa e limites de exatidão do instrumento. Ainda assim, ela costuma ser uma aproximação mais útil do que assumir automaticamente 5,000 V.

Meça diferenças de potencial entre 5 V–GND e entre A0–GND.
Dica
Se você não tiver multímetro, avance usando os dados ilustrativos da próxima tela. Eles permitem praticar a comparação, mas não representam uma medida da sua montagem.
Considere estes dados ilustrativos de um divisor com dois resistores nominais de 4,7 kΩ. O código vem do ADC; as duas estimativas usam o mesmo código, mas referências de cálculo diferentes.
Exemplo de comparação entre o valor calculado e uma leitura de multímetro.
| Código | Ref. assumida | 5 V medido | Estimativa com 5,0 V | Estimativa com 4,86 V | Nó medido |
|---|---|---|---|---|---|
| 511 | 5,00 V | 4,86 V | 2,495 V | 2,425 V | 2,42 V |
Dica
O divisor e a referência DEFAULT usam a mesma alimentação. Portanto, se essa alimentação variar, a tensão do nó também varia em proporção semelhante. O código pode continuar próximo da metade da faixa, mesmo que o nó não meça exatamente 2,500 V.
Pequenas diferenças ou oscilações podem envolver tolerância dos resistores, quantização, ruído, referência e limitações do multímetro. As casas exibidas no cálculo não garantem essa exatidão.
No programa do passo anterior, a única mudança de escala é substituir const float V_REF = 5.0; por uma constante com a tensão medida em 5 V. A chamada analogReference(DEFAULT) continua igual.
O sketch completo abaixo usa os dados ilustrativos: 4.86 V no pino 5 V e código 511. Na sua montagem, substitua 4.86 pela sua medição. Essa mudança recalcula volts após a conversão; não muda fisicamente a referência do ADC nem o código bruto adquirido.
No código C/C++, literais decimais usam ponto: escreva 4.86, não 4,86. A vírgula é usual em textos em pt-BR, mas não representa um decimal válido nesse contexto de código.
Sketch completo e executável. Troque somente 4.86 pela tensão que você mediu entre 5 V e GND.
const float V_REF = 4.86;
void setup() {
analogReference(DEFAULT);
Serial.begin(115200);
}
void loop() {
int codigo = analogRead(A0);
float tensaoEstimada = codigo * (V_REF / 1024.0);
Serial.print("Codigo: ");
Serial.print(codigo);
Serial.print(" | Tensao estimada: ");
Serial.print(tensaoEstimada, 3);
Serial.println(" V");
delay(500);
}Codigo: 511 | Tensao estimada: 2.425 V Codigo: 511 | Tensao estimada: 2.425 V
A saída abaixo corresponde ao caso ilustrativo com código 511 e V_REF igual a 4,86 V. Na sua placa, o código e a tensão podem variar conforme a alimentação, os resistores e a medição.
Complete os valores do exemplo ilustrativo: referência de cálculo de 4,86 V e ADC mantido na referência padrão. Atenção: em um literal numérico de C/C++, use 4.86, com ponto.
const float V_REF = ;
void setup() {
analogReference();
}Registre uma comparação. Se fez a prática, use seus próprios valores; se não, use a linha ilustrativa apresentada. Indique claramente a origem dos dados e explique por que o código não precisa mudar quando você troca 5,0 V pela tensão medida no pino 5 V.
Escreva pelo menos 100 caracteres (0/100).
Atenção
Uma leitura justificável declara a referência adotada e a origem dela. Não trate uma diferença pequena como prova isolada de defeito, nem use um único passo de quantização como limite universal de erro.

Passo 6 de 8
Entenda como o multiplexador e o capacitor interno tornam a impedância da fonte relevante para a leitura analógica.
O Uno R3 tem várias entradas analógicas, mas elas compartilham um único ADC. Antes de converter, um multiplexador conecta apenas o canal selecionado — por exemplo, A0 ou A1 — ao caminho interno de aquisição.
Portanto, A0 e A1 não são adquiridos simultaneamente. Ao mudar de canal, o ADC passa a observar uma nova fonte de sinal.

O multiplexador escolhe um canal por vez; o capacitor interno e o ADC são compartilhados.
Durante um intervalo finito, a fonte ligada ao canal selecionado precisa carregar ou descarregar o capacitor interno de amostragem até uma tensão próxima da tensão do sinal.
Se a resistência equivalente da fonte for baixa, esse ajuste tende a ser rápido. Se for alta, a carga do capacitor pode ser lenta em comparação com o tempo disponível. Nesse caso, a tensão anterior presente no capacitor pode influenciar a conversão do novo canal.
Isso não significa que toda troca de canal produzirá erro visível: o efeito depende das tensões envolvidas, da impedância da fonte e das condições de aquisição.

No mesmo tempo de aquisição, uma fonte de maior resistência limita a aproximação do capacitor à nova tensão.
Dica
A recomendação usual para o ADC do ATmega328P é uma impedância de fonte da ordem de 10 kΩ ou menor, nas condições usuais de operação. O valor relevante é a resistência equivalente que a entrada enxerga — frequentemente a resistência de Thévenin do circuito — e não o valor de um resistor isolado.
Dois divisores com resistores iguais têm a mesma razão de divisão: o nó ideal fica perto de metade da alimentação. Porém, eles não oferecem a mesma impedância à entrada A0.
Comparação de dois divisores alimentados pelo mesmo 5 V do Uno, com resistor superior e inferior de mesmo valor.
| Resistores do divisor | Tensão ideal no nó | Resistência de Thévenin | Implicação para o ADC |
|---|---|---|---|
| 4,7 kΩ e 4,7 kΩ | ≈ metade de 5 V | ≈ 2,35 kΩ | Baixa impedância; boa condição inicial |
| 470 kΩ e 470 kΩ | ≈ metade de 5 V | ≈ 235 kΩ | Impedância muito maior; aquisição pode ser afetada |
Exemplo
A razão do divisor define a tensão ideal. Já a resistência de Thévenin ajuda a determinar quão rapidamente o capacitor interno consegue se acomodar a essa tensão. Assim, dois circuitos com a mesma tensão ideal podem apresentar comportamentos de aquisição diferentes.
Relacione cada elemento ao seu papel na possível influência entre canais.
Associe os termos às descrições corretas.
Toque em um item e depois no par correspondente.

Passo 7 de 8
Antes de alterar a montagem, desconecte o USB. Mantenha o divisor em A0 e conecte A1 diretamente ao GND. Depois reconecte o USB.
A1 fornece um canal próximo de 0 V imediatamente antes das leituras de A0. Assim, será possível comparar a primeira leitura de A0 após a troca de canal com a leitura seguinte. Deixe A0 e A1 como entradas: não use pinMode() nem pull-up nesses pinos.
Para a condição inicial, preserve os dois resistores de 4,7 kΩ do divisor. Se você tiver dois resistores de 470 kΩ, poderá substituí-los depois, sempre com o USB desconectado.

Faça conexões ou trocas de resistores somente com o USB desconectado. AREF continua sem conexão.
Dica
Durante o ensaio com resistores de 470 kΩ, retire as pontas do multímetro do nó A0. A resistência de entrada do instrumento também pode carregar o divisor e mudar a condição que você quer observar.
Grave este programa e abra o Monitor Serial em 115200 bit/s. Ele seleciona A1, lê A1 uma vez, faz duas leituras seguidas de A0 e só então transmite os três valores. Não há mensagens entre a0Primeira e a0Segunda.
void setup() {
Serial.begin(115200);
analogReference(DEFAULT);
}
void loop() {
int a1 = analogRead(A1);
int a0Primeira = analogRead(A0);
int a0Segunda = analogRead(A0);
Serial.print("A1: ");
Serial.print(a1);
Serial.print(" | A0 primeira: ");
Serial.print(a0Primeira);
Serial.print(" | A0 segunda: ");
Serial.println(a0Segunda);
delay(500);
}A1: 0 | A0 primeira: 510 | A0 segunda: 511 A1: 1 | A0 primeira: 511 | A0 segunda: 511 A1: 0 | A0 primeira: 510 | A0 segunda: 510
Os números variam conforme a alimentação, os resistores e a montagem. Com o divisor de 4,7 kΩ, as duas leituras de A0 costumam ficar próximas uma da outra e do meio da faixa.
O programa não prova, por si só, um efeito em qualquer montagem. Ele cria uma comparação controlada: após a conversão de A1 perto de 0 V, observe se a primeira conversão de A0 difere da segunda.
Com a fonte de baixa impedância formada pelos resistores de 4,7 kΩ, uma diferença pequena — ou nenhuma diferença perceptível — é um resultado possível.
Complete a linha que deve fazer a segunda conversão consecutiva de A0. Ela precisa ocorrer antes de qualquer Serial.print().
Preencha a chamada de função da segunda leitura.
int a1 = analogRead(A1);
int a0Primeira = analogRead(A0);
int a0Segunda = ;
Serial.print(a0Primeira);
Serial.println(a0Segunda);Estes são dados ilustrativos, não uma previsão obrigatória da sua placa. Ambos os divisores têm razão próxima de 1/2, mas apresentam resistências equivalentes muito diferentes para a entrada do ADC.
Comparação depois de ler A1 ligado ao GND.
| Divisor | R de Thévenin | A0 primeira | A0 segunda |
|---|---|---|---|
| 4,7 kΩ e 4,7 kΩ | 2,35 kΩ | 511 | 511 |
| 470 kΩ e 470 kΩ | 235 kΩ | 438 | 503 |
Atenção
Descartar a primeira leitura depois de trocar de canal pode ajudar quando o capacitor interno ainda guarda influência do canal anterior. Porém, isso não é uma regra universal nem garante estabilização para qualquer fonte. Reduzir a impedância equivalente da fonte é uma medida mais robusta.
A referência permanece DEFAULT neste ensaio. Mudanças de referência também podem exigir atenção às primeiras conversões, mas não serão testadas aqui.
Com base na sua montagem ou na tabela ilustrativa, explique em uma ou duas frases: por que a segunda leitura de A0 pode ficar mais próxima do valor esperado do divisor do que a primeira? Inclua o papel da impedância da fonte.
Escreva pelo menos 80 caracteres (0/80).

Passo 8 de 8
Conclua uma leitura documentada, ligando montagem, código, referência, cálculo e interpretação prudente.
Você chegou à validação final: use o divisor de 4,7 kΩ + 4,7 kΩ ligado entre 5 V e GND, com o nó em A0, e o programa que imprime o código e a tensão estimada. Não introduza uma nova configuração do ADC nesta etapa.
Uma leitura é justificável quando você consegue relacionar a ligação física, o código recebido e a escala usada no cálculo. O objetivo não é obter um número “perfeito”, e sim registrar um resultado coerente e suas condições.

A validação conecta uma condição física conhecida ao código, ao cálculo e a uma comparação.
No programa, a divisão precisa ser em ponto flutuante. Complete o denominador da expressão que transforma o código de 10 bits em tensão estimada.
Preencha a constante que preserva o cálculo em ponto flutuante.
const float vRefCalculo = 5.0;
int codigo = analogRead(A0);
float tensaoEstimada = codigo * (vRefCalculo / );Faça um registro curto da sua validação. Se tiver um multímetro, meça em tensão contínua entre 5 V e GND e entre A0 e GND. Use a leitura em 5 V como aproximação prática da referência para refazer a conta, se desejar; isso não altera analogReference(DEFAULT) nem o código já adquirido.
Sem multímetro, analise este conjunto ilustrativo: código 510, referência de cálculo 5,00 V, tensão estimada 2,49 V e tensão no nó informada como 2,50 V. Esses são dados de exemplo, não uma leitura da sua placa.
Monte seu registro em uma frase ou lista: informe se os valores são observados na sua montagem ou dados ilustrativos, o código bruto, a referência usada e sua origem, a tensão estimada, o valor de comparação e uma interpretação breve da diferença.
Inclua também uma condição de aquisição relevante, como “divisor de baixa impedância” ou “após troca de canal, a primeira leitura pode não estar estabilizada”.
Escreva pelo menos 100 caracteres (0/100).
Resumo
Parabéns! Você concluiu: Leitura de tensão com o ADC do Arduino Uno
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks