Saltar a contenido

Reto-06. Potenciómetro

Enunciado

Introducir el uso de las entradas analógicas para visualizar los cambios que hagamos con el potenciometro en el terminal serie o consola serie. Cuando hablamos de lecturas analógicas suele ser muy útil el uso del mapeo, concepto que también vamos a introducir y que veremos en la segunda parte del reto.

Teoría

Antes de nada ya hemos indicado que el potenciometro va conectado a un pin analógico y es en este momento cuando vamos a establecer la diferencia entre los conceptos de analógico y de digital.

Una clasificación de los circuitos electrónicos es dividirlos en dos grandes categorías: digitales y analógicos.

  • La electrónica digital utiliza magnitudes con dos valores discretos conocidos como 0 - 1, alto - bajo, on - off, etc, y que se corresponden con la presencia o no de tensión en un determinado punto.
  • La electrónica analógica emplea magnitudes con valores continuos. En concreto en las placas basadas en Arduino UNO, las entradas analógicas pueden tener 210 valores (10 bits de resolución), es decir, valores comprendidos entre 0 y 1023. Estos valores se pueden expresar de forma numérica o de forma porcentual, correspondiendo el 0 a un 0% y el 1023 al 100%.

El potenciómetro

En la imagen siguiente vemos el aspecto de un modelo concreto de potenciometro así como los símbolos habituales del mismo. La numeración indica lo siguiente:

  • Terminales 1 y 3 son los contactos unidos a los extremos de la resistencia fija o resistencia total del potenciometro.
  • Terminal 2 es el contacto que va unido al cursor o parte móvil que se desliza sobre la resistencia fija haciendo que la resistencia entre un terminal y el cursor varíe en función de la posición de este.

Aspecto y símbolo del potenciómetro
Aspecto y símbolo del potenciómetro

La posición del cursor se determina de forma mecánica y son adecuados para usarlos como elementos de control de tensión (conexión en serie) o de corriente (conexión en paralelo). Los potenciometros del tipo que estamos viendo (existen de otros muchos tipos) tienen un funcionamiento en forma de rotación con un ángulo de unos 270 grados entre los puntos mas extremos.

El terminal o consola serie

Sirve para visualizar en un ordenador los datos recibidos a través del puerto serie y en realidad es una aplicación que controla las comunicaciones bidireccionales a través de la UART integrada en el microcontrolador.

Es muy importante tener siempre presente que el puerto serie es el que se utiliza para "subir" el firmware o programa a la placa, tarea que se realiza a través de una aplicación pregrabada en el microntrolador y que se denomina "bootloader".

En ArduinoBlocks es posible usar la consola serie solamente si tenemos instalada y en funcionamiento la aplicación ArduinoBlocks-Connector que es la encargada de establecer las comunicaciones locales de nuestra placa con las remotas de la aplicación. En la imagen siguiente vemos el aspecto de la consola.

Aspecto de la Consola en AB
Aspecto de la Consola en AB

A la hora de establecer una conexión serie los dos extremos que intervienen en la conexión (placa UNO y ordenador) deben establecer el mismo valor en la velocidad de la conexión. Por defecto esta velocidad es de 9600 baudios o bits por segundo y otras velocidades comunmente utilizadas son: 4800, 19200, 38400, 57600, 115200. Es por lo tanto imprescindible incluir en el bloque "Inicializar" el bloque "Iniciar" y establecer la velocidad de comunicación.

Serial Plotter - Datalogger

Es otra funcionalidad relacionada con la comunicación serie que nos permite visualizar información en forma de gráfica en tiempo real. Además el “Serial Plotter” implementa un sencillo datalogger con el que podemos ir grabando los datos para exportarlos posteriormente. En ArduinoBlocks existen bloques que nos permiten trabajar con el serial plotter. El serial plotter + datalogger se activa haciendo clic en la flecha a la derecha de Consola y tiene el aspecto que vemos en la imagen siguiente:

Serial Plotter + Datalogger
Serial Plotter + Datalogger

Mapeo

Hemos indicado que las entradas analógicas trabajan con 10 bits, o sea valores comprendidos entre 0 y 1023 (210) y también que la salidas digitales trabajan con 8 bits, o sea valores entre 0 y 255 (28), por lo que si queremos combinar en nuestro programa entradas analógicas con salidas digitales debemos realizar un ajuste de escala en los datos. A este ajuste se le conoce como "mapear" y es un bloque disponible en el menú Matemáticas con el aspecto de la imagen siguiente:

Bloque mapear
Bloque mapear

Este bloque permite modificar un valor o variable desde un rango origen a un rango destino. Esta función es especialmente útil para adaptar los valores leídos de sensores o para adaptar valores a aplicar en un actuador.

En la TdR STEAM

El potenciometro de la TdR STEAM
El potenciometro de la TdR STEAM

Programando el reto

  • Parte 1. Vamos a guardar los datos leídos del potenciómetro en una variable y mostrarlos a través de la consola serie. La solución al reto la tenemos disponible en Reto-06: Parte 1 que es el programa que vemos en la imagen siguiente:

Parte 1 del reto 6
Parte 1 del reto 6

Si cargamos el programa en nuestra placa y posteriormente activamos la consola y conectamos ArduinoBlocks con nuestro ordenador podemos ver un resultado similar al de la imagen siguiente que se corresponde con variaciones de extremo a extremo del potenciometro.

Aspecto de la consola
Aspecto de la consola

Para entender el significado del check "salto de linea" del bloque "Enviar" podemos desactivarlo y volver a hacer el mismo proceso.

  • Parte 2. Vamos a modificar el programa de la parte 1 del reto para mapear los datos antes de enviarlos a la consola serie. La solución al reto la tenemos disponible en Reto-06: Parte 2 que es el programa que vemos en la imagen siguiente:

Parte 2 del reto 6
Parte 2 del reto 6

El resultado ahora lo vemos en la imagen siguiente:

Aspecto de la consola
Aspecto de la consola

  • Ampliación. Vamos ahora a mapear y mostrar los datos leídos del potenciómetro en el Serial Plotter. La solución al reto la tenemos disponible en Reto-06: Ampliacion que es el programa que vemos en la imagen siguiente:

Ampliación del reto 6, serial plotter
Ampliación del reto 6, serial plotter

Si activamos el Serial Plotter y vamos variando el potenciometro veremos el resultado en el mismo, obteniendo algo similar a la imagen siguiente:

Aspecto del Serial Plotter
Aspecto del Serial Plotter

Actividades de ampliación

R6.A1. Utilización del bloque "crear texto con ..." del menú "Texto". Utilizaremos cualquiera de los programas vistos en el reto y configuraremos el nuevo bloque para que en cada línea nos muestre el mensaje "El valor del potenciometro es: ", a continuación nos muestre el valor y tras el mismo el símbolo % porque configuraremos la lectura en porcentaje. Dejaremos transcurrir un tiempo de 3s entre cada muestra de salida por consola.

R6.A2. Control del LED RGB con el potenciometro. Vamos a dividir el rango total en 8 partes y asignarle a cada una de ellas uno de los colores RGB según vemos en la tabla siguiente:

Color Rango R G B
Rojo 0 a 127 255 0 0
Verde 128 a 255 0 255 0
Azul 256 a 383 0 0 255
Amarillo 384 a 511 255 255 0
Cian 512 a 639 0 255 255
Magenta 640 a 767 255 0 255
Blanco 768 a 895 255 255 255
Naranja 896 a 1023 255 127 0

  • R6.A3. (No reuelta) Repetir la actividad 2 de este reto 6 pero ahora además mostrando por consola el valor del potenciometro.

Solución R6.A1

El bloque tiene unos signos + y - que tienen la misma funcionalidad que la ya vista anteriormente. El Programa de la imagen siguiente está disponible en el enlace Reto-06-A1.

Actividad 1 del reto 6
Actividad 1 del reto 6

Cargamos, ejecutamos la consola y variando el potenciometro obtendremos resultados como el de la imagen siguiente:

Consola de la actividad 1 del reto 6
Consola de la actividad 1 del reto 6

Solución R6.A2

El Programa de la imagen siguiente está disponible en el enlace Reto-06-A2.

Actividad 2 del reto 6
Actividad 2 del reto 6