Arduímetro – Multímetro con Arduino


Arduímetro

6. Problemas encontrados

6. Problemas encontrados

7. Mejoras frente al Multímetro tradicional

8. Posibles mejoras del proyecto

Autora: Patricia Camacho Costumero

Asignatura: Sistemas Empotrados y de Tiempo Real
Campus: Móstoles
Grupo: 10
Curso: 2018/2019


1. Objetivo del proyecto

La idea para
este proyecto es la construcción de un multímetro digital portátil mediante la
placa Arduino UNO que sea capaz de darnos medidas fiables sobre voltaje, amperaje y
resistencias, permitiéndonos así medir estas componentes en circuitos
electrónicos.

Tras la
experiencia con la asignatura Fundamentos Físicos de la Informática, donde
tenemos que usar estos multímetros, me he dado cuenta de lo práctico que
resulta un aparato así y de la falta que hacía uno nuevo que solventase los
problemas o fallos con los que me he encontrado tras su uso, así surge
Arduímetro.


2. Componentes




  • Arduino uno: 21,99€


  • Pantalla LCD 16×2: 5,60€

  • Potenciómetro: 0,41€

  • 3 pulsadores: 1,20€

  • Pila 9V: 1,10€
  • Porta pila 9V + conector Jack: 2,20€

  • Protoboard: 8,5€

  • Varias resistencias: 1,00€





  • Cables cocodrilo-macho: 6,49€




Presupuesto total: 48,49€



3. Montaje

El primer paso
para construir Arduímetro fue soldar la barra de pines a la pantalla, ya que
estos venían a parte. Para ello utilicé un soldador de estaño.





El siguiente
paso fue la conexión de la pantalla a arduino, para probar que la pantalla
funcionara utilicé un código sencillo sacado de internet. A la hora de conectar
la pantalla hay que tener en cuenta que se regula mediante un potenciómetro
para que pueda verse lo que sacamos por pantalla, si no, no se vería ningún
resultado.

A
continuación, instalé los botones que controlan qué es lo que se quiere medir.


Por último,
se conectan las resistencias que se utilizan parar realizar las diferentes
medidas a los puertos analógicos de Arduino para que éste recoja las medidas
tomadas, estas conexiones las explicaré más adelante detalladamente.



Para la
carcasa de fuera utilicé cartón duro pintado con témperas y fabriqué una caja
que pudiera abrirse para cambiar la pila. 


Para que se aprecie el resultado del montaje del circuito añado el esquema de conexiones, que queda de la siguiente manera:

3.1. Parte del voltímetro:



Para la
medición del voltaje he puesto un circuito externo a Arduino, el cuál consta de
3 resistencias de 120Kohms. Con este circuito se consigue un divisor de
tensión, al ser las 3 resistencias iguales la tensión se dividirá entre 3 y sobre
cada resistencia caerá un potencial equivalente a un tercio del voltaje de
entrada. Con esto conseguimos que se pueda medir con seguridad el voltaje, ya
que Arduino tiene limitaciones y si no podría medir sólo hasta 5V, de esta
manera se logra que pueda medir hasta 30V sin sufrir problemas.

Los cables
de salida rojo y negro se colocan en paralelo con la parte del circuito donde
quedamos medir la tensión. La parte del circuito encargada de medir los voltios
es la siguiente:


3.2. Parte del amperímetro:



Para la
medición de la corriente he tomado como referencia una resistencia de un valor
pequeño para que no afecte a la medición, de 22Ohms. La corriente que pasa por
la resistencia se calcula por ley de ohm. Esta resistencia se conecta en serie
con el circuito abierto donde queramos medir la corriente, en el esquema se
puede ver un ejemplo conectando la resistencia a un circuito sencillo formado
por una pila de 4.5V y una resistencia de 1k. 

3.2. Parte del ohmímetro:

Para la
medición de las resistencias me he servido de una resistencia conocida como referencia,
en mi caso de 10Kohms, pero se puede usar otra modificando el código. Esta
resistencia se coloca en serie con la resistencia que queremos medir, que forman
un circuito divisor de tensión. La resistencia a medir se conecta con los 5V de Arduino, estos se dividen entre las 2 resistencias de tal manera que el voltaje
que cae a través de cada componente es directamente proporcional al valor de la
resistencia.



4. Código

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

/* Variable para recoger la lectura de los puertos analogicos*/
float lectura;


/* Variables donde se guarda el estado de los botones. Pulsado = 1, sin pulsar =0 */
int estado_boton_1 = 0, estado_boton_2 = 0, estado_boton_3 = 0;

/* Variables para los 3 botones*/
int boton_1 = 6;
int boton_2 = 7;
int boton_3 = 8;

/* Variables para calculas las medidas*/
float voltaje = 0.0;
float corriente = 0.0;
float ohmios = 0.0;

/* Valor real de la resistencia de 22ohm para medir amperaje*/
float R = 19;

float mediaTotal;
int muestra;

/* Texto que se va a deslizar de derecha a izquierda por la pantalla*/
String texto = "Encendiendo arduimetro...";

#define COLUMNAS 16
#define FILAS 2
#define VELOCIDAD 150

void setup() {
  lcd.begin(COLUMNAS, FILAS);
  pinMode(boton_1, INPUT);
  pinMode(boton_2, INPUT);
  pinMode(boton_3, INPUT);

  /* Mostrar texto en movimiento */

  /* Bucle para ir recorriendo las columnas */
  for (int i = COLUMNAS - 1; i >= 0; i--)
  {
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("BIENVENIDO");
    lcd.setCursor(i, 1);

    /* Escribir el mensaje */
    lcd.print(texto);
    
    delay(VELOCIDAD);
  }

  /* Bucle para hacer desaparecer el texto por la izquierda */
  for (int i = 1; i < texto.length(); i++)
  {
    lcd.clear();
    lcd.setCursor(3, 0);
    lcd.print("BIENVENIDO");

    lcd.setCursor(0, 1);

    /* Eliminar letra a letra empezando por la izquierda */
    lcd.print(texto.substring(i));
    
    delay(VELOCIDAD);
  }

  /* Mostrar el menu principal para seleccionar una opcion*/
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Seleccione boton");
  lcd.setCursor(1, 1);
  lcd.print("1.V   2.A   3.O");
  Serial.begin(9600);
}

void loop() {
  /* Si se pulsa el boton 1, poner a 1 el estado*/
  if (digitalRead(boton_1) == HIGH)
  {
    lcd.clear();
    estado_boton_1 = 1;
    estado_boton_2 = 0;
    estado_boton_3 = 0;
  }

  /* Si se pulsa el boton 2, poner a 1 el estado*/
  else if (digitalRead(boton_2) == HIGH)
  {
    lcd.clear();
    estado_boton_1 = 0;
    estado_boton_2 = 1;
    estado_boton_3 = 0;
  }

  /* Si se pulsa el boton 3, poner a 1 el estado*/
  else if (digitalRead(boton_3 ) == HIGH)
  {
    lcd.clear();
    estado_boton_1 = 0;
    estado_boton_2 = 0;
    estado_boton_3 = 1;
  }

  /* Si se ha pulsado el boton 1 llamar a la funcion que calcula el voltaje y mostrarlo en mV y V */
  if (estado_boton_1 == 1 && estado_boton_2 == 0 && estado_boton_3 == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print("Voltaje:");
    lcd.setCursor(0, 1);
    lectura_voltios(1000, 0);
    lcd.setCursor(4, 1);
    lcd.print("mV");

    lcd.setCursor(11, 1);
    lectura_voltios(1, 2);
    lcd.setCursor(15, 1);
    lcd.print("V");
  }

  /* Si se ha pulsado el boton 2 llamar a la funcion que calcula el amperaje y mostrarlo en mA y A */
  else if (estado_boton_1 == 0 && estado_boton_2 == 1 && estado_boton_3 == 0)
  {
    lcd.setCursor(0, 0);
    lcd.print("Corriente:");
    lcd.setCursor(0, 1);
    lectura_amperios(1000, 0);
    lcd.setCursor(4, 1);
    lcd.print("mA");

    lcd.setCursor(11, 1);
    lectura_amperios(1, 2);
    lcd.setCursor(15, 1);
    lcd.print("A");
  }

  /* Si se ha pulsado el boton 3 llamar a la funcion que calcula el valor de la resistencia y mostrarlo en mV y V */
  else if (estado_boton_1 == 0 && estado_boton_2 == 0 && estado_boton_3 == 1)
  {
    lcd.setCursor(0, 0);
    lcd.print("Resistencia:");
    lcd.setCursor(0, 1);
    lectura_ohmios();
  }
}

/*Funcion para la lectura de los voltios 
  Recibe la unidad en la que se va a medir y los decimales con los que mostrar el resultado
*/
void lectura_voltios(float unidad, int decimales)
{
  lectura = analogRead(A0);

  /* Si no se esta leyendo nada */
  if (lectura == 0) {
    lcd.setCursor(0, 1);
    lcd.print("0   mV     0.00V");
  }
  else {
    voltaje = ((5 * float(lectura)) / 1024);
    lcd.print(float(voltaje) * 3 * unidad, decimales);
  }
  delay(200);
}

/* Funcion para la lectura de los amperios 
   Recibe la unidad en la que se va a medir y los decimales con los que mostrar el resultado
*/
void lectura_amperios(float unidad, int decimales)
{
  lectura = analogRead(A3);
  for (int i = 1; i <= 20; i++) {
    corriente = (float) lectura * (5 / 1023.0) / R + corriente;
  }
  corriente = (float) corriente / 20;
  lcd.print(corriente * unidad, decimales);
  delay(200);
}

/* Funcion para la lectura de los ohmios */
void lectura_ohmios()
{
  lectura = analogRead(A5);

  /* Si no se esta leyendo nada */
  if (lectura == 0) {
    lcd.print("0           Ohms ");
  }
  ohmios = float(lectura * 5 / 1024);
  muestra = float(10000 * (5 - ohmios) / ohmios);
  mediaTotal = muestra;

  /* Si la medida esta por debajo de 1000 la muestra en Ohms */
  if (mediaTotal < 1000) {
    lcd.print(mediaTotal * 1, 0);
    lcd.setCursor(12, 1);
    lcd.print("Ohms");
  }
  /* Si la medida esta por encima de 1000 la muestra en KOhms */
  else {
    lcd.print(mediaTotal * 0.001, 2);
    lcd.setCursor(11, 1);
    lcd.print("KOhms");
  }
  delay(200);
}


5. Funcionamiento



En el
siguiente vídeo se muestra el funcionamiento del Arduímetro. Como se puede ver
hay distintas pinzas para medir las distintas medidas. El cable negro señalado
como COM se corresponde con la tierra y nos va a servir para medir tanto la
intensidad como el voltaje, cada una de ellas junto a la pinza roja
correspondiente marcadas como A y V respectivamente. Para poder medir las
resistencias, sin embargo, se utilizan las pinzas azules como también viene
señalado.


Para empezar
a utilizarlo lo primeros es encenderlo con el interruptor de la izquierda,
después del mensaje de bienvenida nos aparecerá el menú principal, donde
pulsando los botones podremos elegir entre las 3 opciones: Voltios, Amperios u
Ohmios.

En el vídeo lo
primero que se ha hecho es pulsar el botón del voltaje y se puede ver la prueba
de cómo se mide el voltaje de una pila de 9V, para ello la medimos con el
Arduímetro y luego con un Multímetro y comparamos los resultados, comprobando
que son iguales (8.85V en arduímetro y 8.86V en el Multímetro).

Se ha
montado un circuito sencillo compuesto por una pila de 4.5V conectada a un led
y una resistencia de 1k en serie. Para medir la corriente que pasa por la
resistencia, se pulsa el botón del amperaje y tenemos que abrir el circuito y
conectar el Arduímetro y el Multímetro a una pata de la resistencia y al
negativo de la pila, podemos ver que el circuito queda cerrado comprobando que
se enciende el led. Al medir vemos que sale una medida de unos 2.4mV en el
arduímetro y 2.2mV en el Multímetro.

Lo siguiente
es comprobar que mida bien las resistencias, para ello he cogido 2
resistencias, una de 220Ohms y otra de 20KOhms. Se cogen las pinzas azules y
se pone cada una en una pata de la resistencia. Para la primera vemos que el
Arduímetro marca 219Ohms y el Multímetro 213Ohms, con la segunda resistencia
las medidas son 20.03KOhms y 19.2KOhms, respectivamente.

En la
siguiente tabla podemos comprobar la correlación 
entre las medidas realizadas
en el vídeo de forma más clara:

Arduímetro
Multímetro
8.85 V
8.86 V
2.4 mV
2.2 mV
219 Ohms
213 Ohms
20.03 KOhms
19.2 KOhms


6. Problemas encontrados

El primer
problema que me encontré fue con tener que soldar los pines a la pantalla, que
no venían soldados y fue una tarea algo complicada para alguien que nunca había
usado un soldador de estaño.

Otro
problema fue no darme cuenta de que tenía que regular el potenciómetro para que
se vieran los resultados por la pantalla, creía que los cables estaban mal
conectados y no era así.

El siguiente
problema con el que me topé fue con la medición de la intensidad. Compré un
chip que mide la corriente que pasa por él, el ACS712, para poder medirla, pero
tras muchas pruebas y cambios en el código los resultados no eran nada buenos,
y es que en estos circuitos con los que trabajamos y para los que tenemos que
usar Arduímetro manejan medidas del orden de unos pocos miliamperios, y con
este chip solo conseguí medidas certeras con cargas de más de 1 amperio. Por lo
tanto, no era válido para lo que yo necesitaba así que tuve que buscar otra
alternativa, aunque no fuera tan precisa.



7. Mejoras frente al Multímetro tradicional


Podemos encontrar varias ventajas por las que decantarnos por usar Arduímetro en lugar de un Multímetro normal:
  • La facilidad del uso gracias a las pinzas, que hacen que no se resbalen y que puedan estar midiendo sin necesidad de estarlo sujetando. 
  • El hecho de que se muestren las medidas en varias magnitudes al mismo tiempo.
  • Que no haya que girar una rueda ni cambiar nada para medir cualquier valor de resistencia, esto es de gran ayuda ya que la mayoría de las veces que queremos medir una resistencia desconocemos totalmente su valor. En un Multímetro normal tendríamos que colocar la rueda en el rango que creemos que se ajusta e ir probando, con Arduímetro nos ahorramos este trabajo.
  • No tener que cambiar el cable rojo de clavija, ya que esto muchas veces se olvida. Con Arduímetro disponemos de un cable para cada medida.


8. Posibles mejoras del proyecto


Arduímetro es bastante completo y realiza las mediciones que hacer cualquier Multímetro común, por lo que es difícil pensar en posibles mejoras que no se salgan de lo que he querido construir.
Como mejoras posibles futuras podemos añadir que se pueda realizar alguna medida más, como por ejemplo potencia, aunque esto sería un extra ya que la mayoría no lo hacen.
También se podría pensar en medir frecuencia o capacidad, pero habría que estudiar si es posible con Arduino.
Otra posible mejora sería conseguir que el valor de la corriente fuera más exacto, ya que aún hay un pequeño error.


También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *