El potenciómetro

Objetivos

  • Conocer los potenciómetros.
  • Comprender la conversión analógica a digital.
  • Aprender a usar las puertas analógicas de Arduino.

potenciometro

Material requerido

 arduino
  • Arduino Uno o similar. Esta sesión acepta cualquier otro modelo de Arduino.
 Img_3_4
  •  Una Protoboard.
 RedLed_
  • Un diodo LED.
 potenciometro
  • Un potenciómetro de 10KΩ
 Img_3_5
  • Una resistencia de 330 Ohmios.
 Img_3_6-300x185
  • Algunos cables de Protoboard.

 

Que es un potenciómetro ?

Hasta ahora hemos usado siempre resistencias fijas, de un valor dado. Pero a veces es conveniente disponer de una señal variable para controlar el circuito que nos interesa. Imaginad el volumen de un equipo de música, o el dial que sintoniza una emisora en una radio FM.

Un potenciómetro es, simplemente, un mecanismo para proporcionar una resistencia variable.

Hay potenciómetros de tantos tamaños, formas y colores como podáis imaginar, pero al final son una resistencia fija de un valor dado (10 kΩ en nuestro caso actual) y un mecanismo que permite deslizar un dial conductor sobre esa resistencia, que nos permite tomar una parte de ese valor.

Por eso un potenciómetro siempre tiene 3 pines. Los del extremo se comportan como una resistencia del valor de fondo de escala del potenciómetro, y un pin central que va tomando valores de resistencia en función del movimiento que hagamos con el ajuste.

Conectaremos 5V y GND a los extremos del potenciómetro (no importa cual es uno y otro) y luego conectaremos el pin central al positivo de un LED y el negativo a GND directo, pasando por una resistencia de limitación.

De este modo cuando giremos el potenciómetro estaremos modificando la tensión que aplicamos a la entrada del LED, que variará entre 0 y 5V  habremos conseguido un regulador de intensidad del LED.

  • Con una resistencia de 10k la intensidad en el circuito será de:

5V / 10.000Ω = 0,5 mA muy poco para conseguir iluminar el LED que requiere unos 20 mA. Así que durante la mayor parte del giro del potenciómetro el LED estará apagado.

Importante: No olvides la resistencia del led. Aunque el potenciómetro limite la intensidad, hay un momento en que llegará a cero y ahí y tu LED se estropeará.

El circuito

El montaje en el protoboard sería similar a esto ya que vamos a utilizar el Arduino simplemente para dar tensión al circuito y nada más, Veréis que la intensidad de la luz varia de forma continua al girar el potenciómetro.

el_circuito

El programa.

En realidad para hacer esta práctica no se necesita ningún programa, cuando giremos el potenciómetro el led lucirá con mayor o menor intensidad.

Entradas analógicas

Con Arduino que podemos influir en el mundo exterior aplicando salidas todo/nada en los pines digitales y también que usando PWM podemos simular bastante satisfactoriamente señales analógicas en algunos de esos pines.

En muchas ocasiones los sensores que usamos para supervisar el mundo exterior, nos entregan una señal analógica. Es el caso de los sensores de temperatura o distancia, de presión o PH, de intensidad de corriente en un circuito o de caudal de agua en una tubería.

Para leer este tipo de señales continuas necesitamos un convertidor analógico a digital  que nos permite leer el valor de una señal analógica en un momento dado.

Estos convertidores toman una muestra del valor actual de la señal y nos entregan su valor instantáneo, medido en Voltios.

Arduino UNO dispone de seis convertidores analógico a digital, nominados de A0 hasta A5, rotuladas como ANALOG IN:

pines A0_A5

El esquema.

circuito_prueba

El programa.

La primera curiosidad es que no necesitamos declarar en el setup() que vamos a usar una puerta analógica. Y la segunda es que para tomar una muestra (leer) del pin A5, usaremos la instrucción:

int Val = analogRead(A5) ;

  • Los convertidores de Arduino UNO y Mega son de 10 bits de resolución por lo que nos devolverá valores entre 0 y 210 = 1.024 para tensiones entre 0 y 5V. En cambio el Arduino DUE dispone de convertidores de 12 bits por lo que el valor de sus lecturas estará entre 0 y 1012 o sea 4.096, es decir tiene mejor resolución (pero sólo puede leer hasta 3,3V).
  • Asegúrate de no usar sensores que puedan dar más de 5V máximo (con Arduino UNO y Mega), ya que dañarías el chip principal de Arduino.

Vamos a escribir un programa que lea el valor del pin A5 y lo envíe a la consola para que podamos visualizarlo.

void setup(){
        Serial.begin(9600); // Iniciamos la puerta serie
}
void loop(){

int lectura = analogRead(A5) ;
Serial.println( lectura);
delay(200) ;

}

Veras que a medida que giras el ajuste las lecturas varían de forma continua reflejando la posición del potenciómetro, las lecturas reflejan la caída en voltios.

Velocidad de muestreo

Hasta ahora no hemos visto a qué velocidad podemos tomar muestras con nuestro Arduino. Vamos a comprobarlo, con este mismo circuito.
Tenemos una función llamada millis() que nos indica en milisegundos el tiempo transcurrido desde que iniciamos Arduino y la podemos usar para ver cuantas muestras podemos tomar por segundo.

void setup(){

     Serial.begin(9600);

}

void loop(){

unsigned long tiempo ;
int n = 0 ;
tiempo = millis();

// Mientras no pase un Segundo = 1000 mS

while (millis() <= tiempo + 1000){

analogRead( A5) ;
n++ ; // Contamos cada vez que leemos

}
Serial.println(n);

}

  • Hemos usado un unsigned long para guardar millis() porque es el tipo que Arduino usa internamente para su reloj. Sería un error manejar millis() con un int porque su valor máximo es 32.767 y midiendo milisegundos el contador se desbordaría en poco más de 32 segundos.

SI ejecutamos este programa en un Arduino UNO os dará, poco más o menos, un resultado de 8.940 muestras o lecturas por segundo. No está mal.

Es adecuado para muestrear señales que no varíen demasiado rápido con el tiempo, como son casi todos los sensores habituales en la industria, pero que se quedará corto si queréis muestrear señales de audio.

Para jugar con audio es mejor usar un Arduino DUE. Tiene una velocidad de reloj 4 veces más rápida(os hará falta), capacidad de muestreo a velocidad de audio (40Khz) y auténticos convertidores DAC (digital to analog converters).