X

Al usar esta página web, aceptas nuestro uso de cookies. Usamos cookies para ofrecerte una mejor experiencia y para ayudar a que tu página funcione de manera efectiva.

A5A4A3A2A1A0VINGNDGND5V3V3RESETIOREFRX0 0TX0 12- 34- 5- 678- 9- 10- 111213GNDAREF " D0/RXD1/TXD2D3 PWMD4D5 PWMD6 PWMD7D8D9 PWMD10 PWM/SSD11 PWM/MOSID12/MISOD13/SCKRESETRESET2AREFiorefA0A1A2A3A4/SDAA5/SCLN/CGND3V35VVINArduino Uno(Rev3) R (10kΩ) R (10kΩ)RLED
MecatrónicaLATAM

ARDUINO POTENCIÓMETRO

Normalmente se utiliza un potenciómetro para introducir valores analógicos en la tarjeta Arduino permitiendo realizar una acción completa con otros componentes, por ejemplo: variar la velocidad de un motor, la posición de un servomotor o regular la intensidad de la luz

Los potenciómetros son dispositivos que utilizamos con frecuencia para modificar la variable deseada ya sea voltaje o corriente.

Es importante conocer la resolución la tarjeta Arduino, al tener una resolución de 10 bits quiere decir que tenemos un valor máximo de 1024. Para comprender mejor es importante conocer la conversión de analógico - digital.


LECTURA DE UN POTENCIÓMETRO CON ARDUINO

Se procede a realizar la lectura de un potenciómetro e imprimir los datos por el monitor serial.

MATERIAL
  • 1x Arduino.
  • 1x Potenciómetro(10kΩ).
  • 1x Protoboard.

Esquema de montaje

Como se puede observar en el esquema, las terminales de los extremos corresponden a Rmax del potenciómetro, por lo tanto, una terminal se conecta a Vcc y la otra terminal a GND.

La terminal central del potenciómetro se conecta al pin analógico que vamos a utilizar de la tarjeta Arduino.

Circuito esquemático

Código

Primero se definen los pines y las variables para almacenar los valores.

En la parte del setup donde se inicializa todo lo necesario, se usa Serial.begin(9600), para inicializar y cargar la comunicación serial a la velocidad de 9600 baudios. Inicializamos el pin como entrada, muchos no hacen eso ya que por default los pines analógicos ya están configurados como entrada, pero al hacerlo se aprende a programar de forma limpia y correcta.

Dentro del loop se usa la función analogRead para poder leer los valores analógicos del pin donde hemos conectado la salida del potenciómetro, ese valor se almacena en la variable LeePot. También se útiliza Serial.print, esta función permite imprimir un mensaje o enviar los datos por medio del serial, en este caso al monitor serie, después usamos Serial.println para imprimir los valores del potenciómetro, la única diferencia con print y println es que println también envía un enter.

Al abrir el monitor serial se puede observar que abajo dice 9600 baudio, se debe considerar que ambos extremos deben de tener la misma velocidad, al poner Serial.begin en el setup se configura el Arduino y su microcontrolador a la velocidad de 9600, ahora el otro extremo será la computadora en este caso se escoge nuevamente 9600 baudios en el monitor serial.

  • #define POT A0 //Damos el alias a nuestro pin A0.
  • int LeePot;
  • void setup()
  • {
    • Serial.begin(9600);
    • pinMode(POT,INPUT); //Definimos el pin POT como entrada.
    }
  • void loop() //Definimos nuestra secuencia.
  • {
    • LeePot = analogRead(POT);
    • Serial.print("El valor es: ");
    • Serial.println(LeePot);
    • delay(50);
    }


FADE DE UN LED CON POTENCIÓMETRO Y ARDUINO

Para el uso del PWM únicamente se requiere conectar los actuadores indicados.

MATERIAL
  • 1x Arduino.
  • 1x Potenciómetro(10kΩ).
  • 1x Protoboard.
  • 1x LED.
  • 1x Resistor(Para el LED).

Esquema de montaje

Como se puede observar el esquema del circuito es muy simple, se usa la configuración de "lectura de un potenciómetro" y el "uso de un LED".

Circuito esquemático

Código

Se definen los pines a usar, en este caso el pin 3 y el pin A0, se crea una variable para almacenar los datos del potenciómetro, en el setup inicializamos los pines y cargamos el Serial para visualizar los datos.

En el loop leemos los datos del potenciómetro y se almacenan en la varíale valor, después con el uso del Serial.println imprimimos esos valores. Se preguntarán, ¿por qué se divide entre 4?, es muy simple, recuerden que la resolución del Arduino para el ADC es de 10 bits así que nos entregará un máximo de 1024 - 1, pero la resolución del PWM es de 8 bits y acepta un valor máximo de 255, así que , por eso se divide entre 4 para obtener el valor máximo de la resolución del PWM. Esto también se hace en la función analogWrite, pues es ahí donde enviaremos esos valores al LED para que aumente y disminuya su brillo cada 100 milisegundos por medio del potenciómetro, esto con ayuda del delay.

  • #define LED 3
  • #define POT A0 //Damos el alias a nuestro pin A0.
  • void setup()
  • {
    • Serial.begin(9600);
    • pinMode(POT,INPUT); //Definimos el pin POT como entrada.
    • pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
    }
  • void loop() //Definimos nuestra secuencia.
  • {
    • int valor = analogRead(POT);
    • Serial.print("Valor POT: ");
    • Serial.print(valor);
    • Serial.print("| Valor PWM: ");
    • Serial.println(valor/4);

    • analogWrite(LED,valor/4);
    • delay(100);
    }

Ahora al mover el potenciómetro se puede apreciar el cambio de brillo del led, además de visualizar los datos en el monitor serial.

Son los conceptos básicos de cómo podemos manipular el PWM con sensores, en este caso un potenciómetro y como siempre esto es la base para proyectos más avanzados.


FADE DE UN LED CON POTENCIÓMETRO, ARDUINO Y LA FUNCIÓN MAP

En palabras simples, la función map hace una conversión de valores entre un rango dado por una variable a valores de otro rango, por ejemplo:

y = map(x, 0, 1023, 0, 255);

En este ejemplo se está empleando la función map, en la cual como primer parámetro recibe la variable de los datos a convertir, después recibe el primer valor mínimo que se tendrá en la variable x, a continuación recibe el valor máximo que se tendrá en la variable x, como cuarto parámetro recibe el valor a convertir del valor mínimo, en este caso queremos que cero permanezca como cero y como quinto parámetro recibe el valor a convertir en valor máximo de la variable x, en este caso queremos que el 1023 sea 255, esos valores se almacenarán en la variable y.

Se pueden convertir a cualquier tipo de valor en cualquier rango entero tanto positivo como negativo.

MATERIAL
  • 1x Arduino.
  • 1x Potenciómetro(10kΩ).
  • 1x Protoboard.
  • 1x LED.
  • 1x Resistor(Para el LED).

Esquema de montaje

Circuito esquemático

Código

El código es similar al anterior y la explicación también, lo único que se agrega en lugar de variables globales se usan variables internas del tipo entero en el loop, la primera almacena los datos del potenciómetro y la segunda almacenará los datos de la conversión de la función map, como se explicó anteriormente, la función map recibe la variable de la cual tomará los datos a convertir así como el máximo y mínimo de estos valores dados por la variable valor y después los convertirá a valores queremos, en este caso de 0 a 255.

Después simplemente se imprimen los valores y a la función analogWrite también le pasamos estos valores almacenados en la variable mapeo.

  • #define LED 3
  • #define POT A0 //Damos el alias a nuestro pin A0.
  • void setup()
  • {
    • Serial.begin(9600);
    • pinMode(POT,INPUT); //Definimos el pin POT como entrada.
    • pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
    }
  • void loop() //Definimos nuestra secuencia.
  • {
    • int valor = analogRead(POT);
    • int mapeo = map(valor,0,1023,0,255);
    • Serial.print("Valor POT: ");
    • Serial.print(valor);
    • Serial.print("| Valor PWM: ");
    • Serial.println(mapeo);

    • analogWrite(LED,mapeo);
    • delay(100);
    }