Tutorial: Como fazer um ohmímetro com Arduino

sexta-feira, 5 de dezembro de 2014



Oi pessoal, tudo bem?

Então, nesse post montaremos um ohmímetro com o Arduino.


Em termos práticos, um ohmímetro é um instrumento capaz de medir o valor da resistência de um resistor. (para saber mais sobre resistores clique aqui).

Então vamos lá:

Embasamento Teórico


Para um ohmímetro básico utilizaremos uma associação em série (também chamado de divisor de tensão) de resistores, como pode ser visto no esquema do circuito a seguir:


Onde I é a corrente no circuito, Vx a tensão a ser medida pelo Arduino, +5V a tensão constante fornecida pelo Arduino, X o valor da resistência a ser encontrada e R uma resistência conhecida previamente (resistência de referência).

Aplicando a lei de Kirchoff ao resistor R, temos:



Aplicando a Lei de Ohm no resistor desconhecido X, temos:



Substituindo (1) em (2), temos:


Loo, basta termos R e V, e medirmos Vx com o Arduino, para que encontremos o valor do resistor.

No nosso caso, temos que V = 5 Volts.

Material Necessário


Vamos à liste de materiais necessários:
  • Resistores diversos (sendo que 1 deles será o resistor de referência):

  • Arduino MEGA R3:



  • Jumpers Macho/Macho:

  • Protoboard:


Metodologia


  • Monte o seguinte circuito em sua protoboard:


    • Escolha um resistor com valor conhecido para ser o seu resistor R de referência.
    • Coloque o resistor a ser calculada a resistência na posição do resistor X da figura.
    • Implemente o seguinte código no IDE e carregue-o no seu Arduino:





    /* Programa Ohmimetro Basico com Arduino
    Blog Mecatronizando Ideias
    Qualquer copia do codigo deve ser feita com devida atribuicao de autoria do mesmo
    05/12/2014*/

    char pino_leitura = 0; // Pino para a leitura dos valores da tensão Vx \\ Pode ser suprimida essa linha sem problemas
    int leitura = 0; // Variavel para armazenar o valor lido pela entrada analógica (valor entre 0 e 1023)
    float Vx = 0.0; // Variavel para calcular o valor lido pela entrada analóica em volts (entre 0 e 5 volts)
    float R = 0.0; // Variavel para receber o valor do resistor de referencia a ser dado pelo usuario via serial monitor
    float resultado = 0.0; // Variavel para calcular o valor do resistor utilizando a formula (3) do embasamento teorico

    void setup(){
    Serial.begin(9600); // Configuraçao do serial monitor
    pinMode(pino_leitura, INPUT); // Configuraçao do pino de leitura como entrada de dados \\ também pode ser suprimida essa linha
    }

    void loop(){
    leitura = analogRead(pino_leitura); // Variavel leitura recebe o valor lido pela porta serial A0
    Vx = (5.0*leitura)/1023.0; /* Os valores mapeados pela entrada analogica estabelecem a seguinte relacao (regra de tres simples):
    5 Volts ---------- valor = 1023
    Vx (Volts) ---------- valor = leitura (valor lido pela porta A0)*/
    if(Serial.available()>0){ // Se existir dados na porta serial a serem transmitidos, então executa o if

    R = float(Serial.parseInt()); // R recebe o próximo valor inteiro a ser enviado pela serial


    resultado = ((5*R)/Vx) - R; // Calculo do resultado utilizando a formula (3)

    Serial.print("O valor da Resistencia Eletrica e:"); // Imprime no serial monitor a frase entre aspas
    Serial.println(resultado); // Imprime no serial monitor o resultado calculado
    Serial.flush();
    }

    }

    • Execute o programa e abra o serial monitor. Ao abri-lo, você deverá digitar o valor de R para que seja calculado o valor do resistor X. Ou seja, no início o serial monitor estará em branco, sem nada, Ao digitar o valor de R, você receberá o valor do resistor desconhecido.

    Resultados

    Primeiramente devemos escolher o nosso resistor de referência. No meu caso, utilizei um de 10000 Ohms:

    Após isso, devemos colocar o resistor desconhecido na posição do resistor X anterior e executar o programa no Arduino. Tendo executado o programa, vamos abrir o serial monitor. Inicialmente ele estará assim:

    Agora colocaremos o valor do resistor de referencia no campo adequado (no meu caso será 10000 ohms). Lembre-se de colocar o valor completo e somente valores inteiros.

    Após você digitar enter ou clicar em ENVIAR, retornará o resultado (o valor do resistor desconhecido).

    1º Teste

    No nosso primeiro teste utilizarei um resistor com o mesmo valor do resistor de referência. Ou seja:

    Como resultado, obtive:



    2º Teste

    Agora vamos utilizar o seguinte resistor como o resistor X:

    Como resultado, obtive:


    3º Teste

    Desta vez utilizaremos o seguinte resistor:

    Como resultado, obtive:


    4º Teste

    Por fim, utilizaremos o seguinte resistor:

    Como resultado, obtive:



    Considerações Finais

    Com esses resultados pudemos constatar que, quando se tem um resistor conhecido e outros resistores com valores desconhecidos, esse método [básico] se mostra bem eficaz.

    Vale ressaltar que os erros em relação ao valor obtido pelo código de cores, principalmente para valores de resistência mais baixos, se devem à tolerância dos resistores (incluindo a tolerância do resistor de referência, é claro).

    Para se ter resultados mais precisos pode-se colocar um resistor de precisão (com tolerâncias menores) como sendo o resistor de referência. 

    Além disso, pode-se utilizar um circuito de corrente constante (em outras palavras, uma "fonte de corrente"). Sabendo a corrente fornecida e medindo a diferença de potencial no resistor desconhecido podemos ter o valor da resistência em questão.



    Basicamente é isso, espero que tenham gostado e que tenha sido útil para cada um de vocês. Qualquer dúvida comente que eu respondo, se possível.

    Até a próxima  o/

    9 comentários:

    1. Hola, muy buena tu explicación.
      te consulto como debería hacer para medir resistencias de 0.15, 0.22. 0.33
      Saludos

      ResponderExcluir
    2. Gostei muito de seu trabalho, parabéns, vou testar.
      Pode me dizer se funciona no Arduino UNO?
      E o monitor serial, como aciono? não entendi. meu e-mail é eng.edsonferraz@gmail.com

      ResponderExcluir
      Respostas
      1. Bom dia, eu acredito que funcione no arduino UNO sim! E para ativar o monitor serial você pode utilizar o comando Ctrl + Shift + M ou abrir a aba " Ferramentas" no canto superior direito, o monitor serial é o quarto item na versão atual do software.

        Abraço!

        Excluir
    3. Vou deixar um link, por favor tenha paciência para ver, pois tá uma bagunça e não sei que parte está. Vou te mandar um e-mail pra gente manter contato. Tenho uns projetos. Consegui fazer um ohmímetro com boa precisão de 0 a 6k na Uno. Ainda preciso aprimorar, quem sabe a gente não faz pra esse Arduino Day 2018? Participo de alguns grupos.
      https://youtu.be/6DhdF3dZqnI

      Se inscrevam lá, assim que ser vou regravar tudo.

      Pode responder por aqui que estou acompanhando está conversa.

      renatomportugal@gmail.com

      ResponderExcluir
    4. Ola. Eu vou monitorar um tanque de combustivel.
      O valor dele vazio é 129 a 131 OMS, e cheio de 9 a 11.
      Ja vou pegar os fios de sinal e deixar staticos.
      Como eu poderia iniciar o programa?
      Não iria inserir um valor pois não sei a posição do sensor.

      pode me ajudar?

      ResponderExcluir
    5. Vamos falar em algoritmo primeiro. Comece a desenhar o diagrama de blocos. Veja sobre a matéria "Controle de Processos"... Primeiro deve fazer algumas perguntas... 1. Qual a primeira coisa que tem que fazer? (Ler o sensor antes de ligar a bomba? Fazer algum tipo de teste?). Então comece com os if's.... if (nivel > 130){ LIGA_BOMBA}...

      Comece pelo ALGORITMO. Nunca pelo programa.
      Vai nos informando...

      ResponderExcluir
    6. Muito bom. Tenho uma dúvida, qual a explicação de ter feito a regra de 3 com o sinal Vx?
      Obrigado

      ResponderExcluir
    7. my videos on YouTube
      What is YouTube? youtube. youtube. youtube to mp3 converter mac youtube. youtube. YouTube. youtube. youtube. youtube. youtube. youtube. youtube. youtube. youtube. youtube. youtube. youtube.youtube.youtube.youtube. youtube.youtube.youtube.youtube.youtube.

      ResponderExcluir