Vamos a describir un montaje en Arduino de un medidor de resistencias, en el podremos aprender:

  • Divisor de Tensión o Voltaje.
  • Uso de las entradas analógicas de arduino.
  • Pull-Down para las gestión de un pulsador.
  • Uso del Display
  • Uso de variables estáticas encapsuladas para evitar errores de programación

Para poder calcular el valor de una resistencia utilizaremos un circuito divisor de tensión como se ve en la figura

Divisor de tensión

En el podemos ver la resistencia R1, que es la que deberemos calcular y en nuestro circuito lo conectaremos a la salida digital D2(Vin que dará 5V) y la entrada analogica A0 (Vout) luego tendremos R2 que es una resistencia que podra variar segun la resistencia que pongamos.

Circuito

La resistencia de escala sera una resistencia que se conecta en la masa y Vout. para poder seleccionar la resistencia desde nuestro circuito pondremos estas resistencias (2K, 20K, 200K y 1M) en las Entradas/Salidas digitales (D3-D6) como podemos ver en el circuito.

La selección de la resistencia se realiza con el pulsador conectado a D12, poniendo todas las entradas/salidas digitales de las resistencias (D3-D6) como entradas y solo a modo salida la que nos interese tener y esta a LOW que seria su conexión a masa.

Quedando el código de esta selección de la siguiente forma:

// Se puede ver en la función escala(del código 
// Primero todas las resistencias como entrada 
pinMode(R2K,INPUT); 
pinMode(R20K,INPUT); 
pinMode(R200K,INPUT); 
pinMode(R1M,INPUT); 

int laescala=  <PIN con la resistencia de escala a usar>

pinMode(laescala,OUTPUT);  // activa el pin de escala seleccionada  a salida 
digitalWrite(laescala,LOW); // Ponemos Bajo que es Masa.

Para gestionar el pulsador del cambio de estado utilizaremos el siguiente texto:

 boolean estado = digitalRead(ESCALA);   // Recoge el estado del pulsador
 if(estado)   
  {
    while (digitalRead(ESCALA)) {;}  // Si se ha pulsado esperamos a que se levante, para
                                     // evitar que este cambiando cada vez.
    escala();   // Cambia de escala
  }

La lectura del pin analógico es muy sencillo, solo tendremos que leerlo, convertir el valor leído a voltaje y con este realizar la formula indicada en el divisor de tensión para así calcular la resistencia R1.

// Mira valor de resistencia
  medida = analogRead(BORNA2);  // Leemos valor de la entrada A0
  
  // Conversion a voltaje
  voltaje = (medida * 5.0) / 1024.0;
  
  //Realizamos la formula del divisor de tensión ((vi/vol)-1)*Esca
  laescala= R_escala();  // Nos da la resistencia de escala en Kohmios
  valor = ((5.0/voltaje)-1) * laescala;

  // Si la escala fuera 2K deberemos convertir el valor a ohmios multiplicando por 1000
impres_res(valor);  // Imprime en el display el valor, viendo si debe marcar o no error según la escala.   

Otras funciones que interesa conocer son:

  • escala(): Realiza un cambio de escala y se apoya en dos funciones
  • set_escala(true): Realiza un cambio en la variable estática «escala» que solo puede ser cambiada en esa función (encapsulación) por eso si se llama con false solo envía el valor sin realizar ningún cambio. EN una programación de clases tendríamos la variable estática en la clase y dos funciones, una para cambiar el valor set_variable y otra para obtener el valor get_variable.
  • get_escala() llama a set_escala(false) para que le de la escala en la que esta.

Todos los fuentes, junto al esquema y el proyecto fritzing lo podéis encontrar en el repositorio de GITHUB de pinguytaz.

Un comentario

Deja una respuesta

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

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad