Você está na página 1de 15

Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Fechar Pub

f
j > Projetos > Voltímetro, amperímetro e ohmímetro c/ Arduino

Voltímetro, amperímetro e
ohmímetro c/ Arduino
Medir a tensão e a corrente são processos essenciais para se extrair informações de
sensores. Medir tensão pode ser trivial, mas medir a corrente e a resistência não é tão
óbvio assim. Portanto, neste post, vamos aprender uma forma de ler valores de
tensão, corrente e resistência utilizando o Arduino.

Voltímetro CC
Medir a tensão (corrente contínua), conforme disse no início do post, é bem tranquilo.
Tanto é que já vimos em vários posts do site. Entretanto, vou dar uma rápida explicada
no assunto.

Informações importantes
Referencial
Para medir a tensão em algum ponto do circuito basta ligá-lo a algum pino analógico.
Mas aqui cabem algumas ressalvas: a tensão é sempre medida entre dois pontos e,

1 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

quando ligamos no pino A0 por exemplo, estamos ligando apenas um ponto. Neste
caso, estamos medindo a tensão em relação ao nosso terra (GND), que já está ligado
dentro do microcontrolador.

Então, caso o circuito que estamos querendo medir não tenha nenhuma ligação com o
Arduino, não será possível fazer a leitura da tensão. Suponha que o circuito externo
seja um LED ligado a uma bateria e o Arduino esteja sendo alimentado pela USB do
computador. Para medir alguma tensão deste circuito externo, o GND do Arduino,
deve estar ligado ao negativo da bateria.

Conversão
Em relação à conversão analógica-digital do Arduino, é importante saber que ele mede
de 0 a 5v, e que o conversor é de 10bits. Isso quer dizer que os valores medidos serão
representados entre 0 e 1023 (valor máximo com 10 bits) incluindo os dois limites. Ou
seja, 0 representará 0 volts e 1023 representará 5 volts.

Portanto, para encontrar o valor lido em volts, podemos aplicar uma simples regra de
3:

1023        –       5 volts

Valor lido   –  V (tensao)

Logo:

Usar outros valores de tensão


Abaixo de 5v (e acima de 0)
É possível ler valores fora da faixa de 0 a 5v, mas, dependendo do caso, será
necessário utilizar um circuito para adequar esta tensão para o Arduino. O próprio
microcontrolador do Arduino UNO, permite trocar a tensão de referência, para que
seja possível alcançar uma precisão melhor, medindo, por exemplo, tensões de 0 a
3.3v.

O procedimento para medir a tensão é o mesmo, o que muda é a regra de 3 mostrada


anteriormente. E o comando para alterar a tensão de referência é:

analogReference(modo)

Dentre os modos possíveis para o Arduino UNO, de acordo com o site do Arduino,

2 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

estão:

• DEFAULT: a tensão padrão de alimentação da placa (5v no caso do UNO).

• INTERNAL: uma referência interna igual a 1.1 volts.

• EXTERNAL: a referência se torna a tensão (0 a 5V apenas) aplicada ao pino AREF


(próximo ao pino digital 13).

Acima de 5v
Para medir tensões acima de 5v, basta criar um divisor de tensão para que a tensão
em cima do Arduino seja reduzida. A imagem abaixo mostra um exemplo de divisor de
tensão.

O valor dos resistores do divisor de tensão vão depender do valor máximo de leitura.
Por exemplo, se o valor máximo for 10 volts, então um divisor de 2/1 será adequado.
Não mostrarei em detalhes esta parte, pois, com o post sobre divisor de tensão, você
deverá ser capaz de entender o necessário.

Circuito de exemplo
Para mostrar a parte da programação, considere o circuito e o esquemático abaixo:

3 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

O circuito consiste apenas em um LED alimentado com 5v em série com um resistor


de 220Ω. E entre os dois existe um �o que vai para o pino analógico A0. Nosso objetivo
será medir a tensão neste ponto (entre este ponto e o GND, conforme dito no início do
post). Esta tensão é justamente a tensão em cima do resistor.

Programação
A programação é bem simples, pois basta utilizar o comando de leitura analógica do
Arduino, que já abordei em outro post. Leia os comentários para entender o código
por completo.

1 void setup() {
2   // O comando abaixo é desnecessário caso o modo seja o DEFAULT
3   analogReference(DEFAULT);
4
5   // Cria a comunicação serial para exibir os valores no monitor serial
6   Serial.begin(9600);
7 }
8
9 void loop() {
10   // Mede o valor de 0 a 1023 e converte para tensão
11   �oat tensao = analogRead(A0);
12   tensao = tensao*5/1023;
13
14   // Exibe o valor lido
15   Serial.println(tensao);
16
17 // Cria um pequeno atraso entre cada medição
18   delay(1000);
19 }

Resultados

4 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Quando rodei o programa, o valor lido �cou oscilando entre 2,58 e 2,62. Como o valor
lido é a queda de tensão em cima do resistor, basta considerar que a tensão em cima
do LED é 5 menos esse valor. Considerando o valor médio como 2,6:

5-2,60 = 2,4

2,4 é justamente a queda de tensão máxima do LED vermelho. Sendo assim, o


resultado foi próximo da realidade.

Pronto, com a lógica mostrada neste tópico já podemos criar um voltímetro com
algumas limitações.

Ohmímetro
Lógica de funcionamento
Medir a resistência pode ser útil em situações onde as faixas de cores de um resistor
são confusas ou então quando você quer saber a resistência de um outro componente
(potenciômetro por exemplo). Em outro post, já cheguei medir a resistência de um
LDR com o Arduino.

Para este caso, nos também mediremos a tensão, mas em um esquema um pouco
diferente. Com a ajuda de um divisor de tensão com uma das resistências conhecidas,
é possível saber qual o valor da outra resistência a partir da tensão de saída. Para
exempli�car como, considere um divisor de tensão típico como o da imagem abaixo:

5 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

A tensão de saída do divisor é dada por:

Portanto, se sabemos quais são os valores de Vin, R2 e Vout, podemos determinar R1.
Manipulando a equação, chegamos ao seguinte resultado:

Agora podemos passar para um circuito de exemplo:

Circuito de exemplo
Para achar o valor da resistência desejada, vamos considerar Vin como 5v, já que
iremos alimentar o circuito utilizando o Arduino. O valor de R2 pode ser qualquer um,
portanto usarei um resistor de 220Ω. O circuito resultante está representado abaixo:

Dessa forma, a fórmula que terei que usar para encontrar V1 será:

Lembrando que Vlido é a tensão, então é necessário converter o valor lido do Arduino
para tensão, conforme visto no tópico do voltímetro.

Programação
Basta ler os comentários para entender o código, pois ele é bem simples.

1 void setup() {
2   // Cria a comunicação serial para exibir os valores no monitor serial
3   Serial.begin(9600);

6 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

4 }
5
6 void loop() {
7   // Mede o valor de 0 a 1023 e converte para tensão
8   //           o (�oat) faz um coerção, pois o comando analogRead retorna um numero inteiro e a
9   �oat tensao = (�oat)analogRead(A0)*5/1023;
10
11   // Converte a tensao para resistencia
12   �oat R1 = (220*5 - tensao*220)/tensao;
13
14   // Exibe o valor de R1
15   Serial.println(R1);
16
17   // Cria um pequeno atraso entre cada medição
18   delay(1000);
19 }

Resultados
Medindo R1 com um testador que tenho, o valor real do resistor é de 819,7Ω.
Entretanto, ao rodar o programa, o valor indicado foi um pouco diferente deste.
Obtive valores entre 846,64 e 862,02. Ou seja, dependendo da aplicação, este método
não é muito adequado.

É possível melhorar um pouco a precisão dos resultados considerando o valor real de


R2. Que, de acordo com meu testador, é de 214,4Ω. Fazendo esta mudança, obtive
resultados em torno de 835,03Ω, que foi melhor do que antes.

Pronto, com a lógica mostrada neste tópico já podemos criar um ohmímetro com
algumas limitações.

Amperímetro
Lógica de funcionamento
Existem alguns tipos de sensores que transformam uma grandeza física em corrente
elétrica de 4 a 20mA normalmente. Portanto, pode ser bem útil medir valores de
corrente (além de outros casos).

Assim como no caso do Ohmímetro, precisaremos utilizar um pequeno truque para

7 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

medir a corrente de um circuito. No caso do amperímetro, a lógica será utilizar, em


série com o circuito desejado, um resistor de baixíssima resistência. Dessa forma,
podemos medir a queda de tensão em cima dele e descobrir a corrente aplicando a
Lei de Ohm:

Como a tensão é medida em relação ao GND, esse resistor precisa �car no �m do


circuito, para que a tensão medida seja justamente a queda de tensão em cima dele.

Além disso, ele precisa ter uma baixa resistência para que ele não faça in�uência
alguma no circuito o qual ele está sendo ligado. Pois, com um valor relativamente
grande de resistência, ele pode impedir signi�cativamente o �uxo de corrente do
circuito.

Dependendo da aplicação, este pequeno valor pode atrapalhar o circuito, então pode
não ser recomendável utilizar este método para medir corrente.

Usando um resistor de baixa resistência


Comercialmente é possível achar resistores com valores bem baixos (1Ω), mas, como
eu não tenho um à disposição, utilizarei um método alternativo. O método alternativo
consiste em utilizar um �o como resistência, pois todo elemento condutor tem uma
resistência, mesmo que bem pequena.

Entretanto, esse método precisa de um ohmímetro para saber qual é a resistência do


�o. O �o que decidi usar foi um jumpers que vem em kit de Arduino. Usei meu
testador para encontrar o �o com menor resistência, que foi um com 0,65Ω.

Desse modo, a corrente do circuito será:

Circuito de exemplo
Para exempli�car, vamos considerar o mesmo circuito do voltímetro, com o acréscimo
do �o de 0,65Ω:

8 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Para evitar imprecisão, usei o �o de 0,65Ω para ligar o resistor de 220Ω direto para o
GND. Fiz isso para evitar usar outro �o, e assim evitar acréscimo de resistência. Então,
no circuito acima, considere o �o de 0,65Ω como sendo toda a ligação da parte de
baixo (R1 até GND).

Programação
Considerando um caso máximo, em que a corrente é de 1A, a tensão máxima no �o
será abaixo de 1v (V=1*0,65 = 0,65v). Portanto, posso alterar a tensão de referência do
conversor analógico-digital para 1.1v, utilizando o comando mostrado no tópico do
voltímetro (analogReference).

Com isso, a conversão do valor lido para tensão �ca:

E basta usar a tensão acima para achar o valor da corrente. A programação é bem
tranquila, só com a leitura dos comentários já é possível entender como escrevi a
lógica abordada acima.

1 void setup() {
2   // Cria a comunicação serial para exibir os valores no monitor serial
3   Serial.begin(9600);
4
5   // Altera a tensão de referência para 1.1v
6   analogReference(INTERNAL);
7 }
8
9 void loop() {
10   // Mede o valor de 0 a 1023 e converte para tensão
11   // o (�oat) faz um coerção, pois o comando analogRead retorna um numero inteiro e a tensã
12   �oat tensao = (�oat)analogRead(A0)*1.1/1023;
13
14   // Encontra a corrente a partir da tensao
15   �oat I = tensao/0.65;

9 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

16
17   // Exibe o valor da corrente em mA, por isso multiplico por 1000
Resultados
Medindo a corrente do circuito com um multímetro, o valor obtido foi de 10,7mA. E,
medindo pelo programa (ao mesmo tempo que o multímetro), o resultado foi de
aproximadamente 8,2mA. Ou seja, é um valor próximo, mas totalmente inadequado
para medir sensores que indicam as grandezas em faixas de 4 a 20mA. Pois, nestes
casos é necessário ter uma precisão maior para obter os dados dos sensores
corretamente.

Medindo a corrente do circuito do ohmímetro (um resistor de 820 e outro de 220) deu
um valor de 4,96mA que está com uma pequena diferença do valor calculado (4,8mA).
Portanto, os resultados são até bem impressionantes.

É possível melhorar a precisão dos resultados utilizando a referência de tensão no


pino AREF. Dessa forma, alimentando esse pino com uma tensão bem pequena (0.3v
por exemplo) com a ajuda de um divisor de tensão. Além disso, utilizar uma resistência
menor ainda no lugar do �o (0,65Ω) ajuda.

Pronto, com a lógica mostrada neste tópico já podemos criar um amperímetro com
algumas limitações.

Com estes três instrumentos, podemos transformar o Arduino em um multímetro


utilizando cada medição em uma entrada analógica do Arduino.

a outubro 10, 2018 - 12:00 b Fábio Guimarães


c Projetos

Comentários do post
Faça um comentário:

O seu endereço de e-mail não será publicado. Campos obrigatórios são


marcados com *

10 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

COMENTÁRIO *

NOME *

E-MAIL *

Publicar comentário

Renan Gutierrez
27 de fevereiro de 2019 às 13:26

MUITO BOM! SHOW

Responder

Fábio
27 de fevereiro de 2019 às 16:16

Muito obrigado, Renan!

Responder

11 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Mario
26 de outubro de 2019 às 10:31

Bom dia Fábio!


Cara, gostei demais da forma como explicou o
Arduino. No circuito do Ohmimetro, �quei pensando
em uma forma de melhorar. Posso propor uma
solução? Se ao invés de você colocar no programa
que o valor de entrada é 5, se �zesse uma leitura da
porta de saída do Arduino, assim alguns milivolts de
diferença entre o real e o teórico, alcançaria o valor
mais próximo do resistir.
Vou seguir essa página…serião, curti demais !!
Abraço!

Responder

Fábio
26 de outubro de 2019 às 13:24

Boa tarde, Mario!


Muito obrigado pelo seu retorno positivo, �co
bastante contente de saber que você curtiu o post! E
toda sugestão é bem vinda.
Bem, se eu entendi corretamente a sua proposta, a
ideia seria ligar o 5V da alimentação diretamente em
uma entrada analógica para medir o valor real da
tensão. Caso a ideia seja esta mesmo, o valor
medido nesta porta analógica será sempre 1023
(5.0V). Isto porque, o mesmo 5V utilizado na
alimentação, é utilizado como referência para medir
as tensões. Portanto, não há muito o que fazer a
não ser medir a tensão da alimentação com um
multímetro (ex: 5.023V) e colocar este valor no
código ao invés do valor teórico (5.0V).
Abraço!

Responder

12 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

JOSE LUIZ BRITTO DOS SANTOS


27 de fevereiro de 2021 às 11:26

Recurso: pode usar o método do voltímetro para


ler tensões acima de 5 volts. Um divisor de tensão
em que pode ler direto a tensão com valor do AN.
Ex: um divisor de tensão que para 10.23V leia do
AN 1023. Assim para 5.0V ler do AN 500.
Fábio, seu site é muito bom. Fica viciado. Fala
direto, com lógica e linguagem clara.
Obrigado!

Responder

Fábio Guimarães
27 de fevereiro de 2021 às 13:50

Ótima sugestão, Jose Luiz. Acredito que alguns


voltímetros pro�ssionais fazem algo nesse
sentido também.
Fico extremamente feliz e grato em ler seu
comentário. Ler isso me motiva a continuar
produzindo conteúdo pro site/canal. Muito
obrigado pelo comentário!

Responder

Marinho
16 de janeiro de 2021 às 16:25

Se eu quiser ver as leituras de tesão na tela do pc em


forma gra�ca, é possivel?

Responder

13 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Fábio Guimarães
16 de janeiro de 2021 às 16:38

É sim, e a forma mais fácil de fazer isto é utilizando o


“Plotter serial” do Arduino em “Ferramentas” ->
“Plotter Serial”.

Responder

Jonathan Leite
6 de maio de 2021 às 15:17

Excelente poster!!!
Não é possível apresentar uma tensão negativa,
certo?

Responder

Fábio Guimarães
Pesquisar …
12 de maio de 2021 às 13:12

Olá, Jonathan. Obrigado! Infelizmente, da forma


como o circuito foi feito, não é possível, pois o
Acompanhe
Arduino lê no YouTube
apenas tensões positivas. Entretanto,
você poderia utilizar um ampli�cador operacional na
con�guração de inversor para converter a tensão
negativa em positiva e, assim, fazer a leitura com o
Arduino.

Responder

JOVAN DA SILVA SILVA


30 de julho de 2022 às 19:35
Acompanhe no Instagram
Muito bom esse artigo bem explicado parabéns por
essa iniciativa
mundo_projetado

Responder

14 of 15 04/04/2023, 10:50
Voltímetro, amperímetro e ohmímetro c/ Arduino - Mundo Projetado https://mundoprojetado.com.br/voltimetro-amperimetro-e-ohmimetro-c...

Fábio Guimarães
30 de julho de 2022 às 19:54

Olá, Jovan. Eu que agradeço pelo comentário!

Responder

Veja mais... Seguir

Acompanhe no Facebook

15 of 15 04/04/2023, 10:50

Você também pode gostar