Arduino Nano - Potenciómetro

Este tutorial le enseña cómo usar Arduino Nano con un potenciómetro, que también se conoce como pot, trimmer, resistencia variable, reóstato o sensor de ángulo giratorio. En detalle, aprenderemos:

Acerca de potenciómetro

Un potenciómetro giratorio, también conocido como sensor de ángulo giratorio, se utiliza para modificar manualmente el valor de algo. Los ejemplos incluyen el volumen de un estéreo, el brillo de una lámpara y el nivel de zoom de un osciloscopio.

Disposición de pines del potenciómetro

Esquema de pines del potenciómetro

Un potenciómetro normalmente tiene tres pines:

  • El pin GND debe estar conectado a tierra (0 V).
  • El pin VCC debe conectarse a VCC (5 V o 3,3 V).
  • El pin de salida proporciona el voltaje al pin de entrada del Arduino.
Pinout del potenciómetro

※ Nota:

Los pines GND y VCC se pueden intercambiar.

Cómo funciona

El eje giratorio del potenciómetro tiene un rango desde 0° (el más cercano a GND) hasta el ángulo máximo (el más cercano al pin VCC), al que se hace referencia como ANGLE_MAX.

※ Nota:

El valor de ANGLE_MAX es determinado por el fabricante. En general, no necesitamos considerar este valor a menos que estemos calculando el ángulo de rotación (ver la sección de casos de uso).

Cómo funciona un potenciómetro

El principio de funcionamiento:

  • Un usuario gira el eje del potenciómetro
  • ⇒ El ángulo del potenciómetro cambia
  • ⇒ La resistencia del potenciómetro cambia
  • ⇒ El voltaje en el pin de salida del potenciómetro cambia
  • ⇒ El valor analógico leído por Arduino Nano cambia

Arduino Nano - Potenciómetro giratorio

Los pines A0 a A7 del Arduino Nano son capaces de funcionar como entradas analógicas. Estos pines de entrada analógica convierten la tensión (que va de 0 voltios a VCC) en valores enteros (de 0 a 1023), conocidos como valor ADC o valor analógico.

Podemos conectar un pin de salida del potenciómetro a un pin de entrada analógica. Esto nos permite leer el valor analógico del pin y convertirlo en un valor significativo.

El valor que recibe Arduino Nano no es un ángulo ni una tensión; más bien, es un valor entero que va de 0 a 1023.

Una vez que hayamos obtenido el valor entero del pin de entrada analógica, podemos reescalarlo a un valor diferente. Consideremos las aplicaciones de esto.

Casos de Uso

  • Reescalar al ángulo del potenciómetro.
  • Reescalar al voltaje del potenciómetro.
  • Reescalar a un valor controlable, como volumen de un estéreo, brillo o velocidad de un motor de corriente continua - este es el uso más frecuente.

Rango de reescalado

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

Diagrama de Cableado

Diagrama de cableado del potenciómetro para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Cómo programar para un potenciómetro

  • Recupera el valor de un pin de entrada, conectado al pin de salida del potenciómetro, utilizando la función analogRead().
analog_value = analogRead(A5);
  • Utilice la función map() para ajustar el ángulo del potenciómetro.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Ajusta el voltaje al nivel del potenciómetro.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Reescala el valor a algo que pueda ser manejado o ajustado (p. ej. el volumen de un estéreo, el brillo, la velocidad de un motor de corriente continua...)
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Por ejemplo, ajustar el brillo de un LED. Como se indica en este tutorial, el brillo de un LED puede regularse mediante un valor PWM que va de 0 (siempre apagado) a 255 (siempre encendido). Así, podemos mapear el valor analógico al brillo del LED (desde apagado hasta el más brillante) de la siguiente manera:
brightness = map(analog_value, 0, 1023, 0, 255);

Si desea ajustar el LED desde una luz nocturna tenue hasta su nivel más brillante,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 1023, nightlight , 255);

※ Nota:

La función map() solo es aplicable para reescalar un valor analógico a cualquiera de los tipos int o long. Si el valor controlable es de tipo float, se debe usar floatMap() en lugar de map().

La función floatMap() toma una lista de flotantes como argumento y devuelve una nueva lista con la misma cantidad de elementos, donde cada elemento es el resultado de aplicar la función dada al elemento correspondiente de la lista original.

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

Código de Arduino Nano

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // The setup function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin A5: int analog_value = analogRead(A5); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Pasos R\u00e1pidos

  • Copia el código y ábrelo con el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para enviar el código al Arduino Nano.
Subir código al IDE de Arduino
  • Abre el Monitor Serial.
  • Gira el potenciómetro.
  • Revisa el resultado en el Monitor Serial.
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Desafíate a ti mismo

Utilice el potenciómetro para realizar uno de estos proyectos:

Conocimientos Adicionales

  • Los pines GND y VCC pueden intercambiarse sin ninguna convención específica. Sin embargo, hay algo que debes tener en cuenta: el valor de voltaje en el pin de salida se invertirá cuando estos pines se intercambien.

Referencias de Funciones

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!