Inicio Arduino Manual Raspberry Pi Pico + Arduino IDE #5

Manual Raspberry Pi Pico + Arduino IDE #5

Las señales analógicas, a diferencia de las digitales, permiten manejar una gran variedad de valores entre 0 y 3.3V. Es decir, podemos medir cuando hay 1.1V 2.3V, 3.1V, etc, a diferencia de solo distinguir si algo está encendido o apagado. Los microcontroladores como la Raspberry Pi Pico usan convertidores especiales para poder leer esas señales analógicas. Estos convertidores son el convertidor analógico-digital (ADC) y el convertidor digital-analógico (DAC). En esta entrada veremos como puedes configurar y usar esos convertidores para leer señales analógicas.

Leyendo una entrada analógica

En este ejercicio, vamos a juntar un poco de lo que vimos en una guía anterior para desplegar las lecturas de nuestra entrada analógica en el monitor serial. Para ello, inicializamos al comunicación a 9600 baudios y declaramos las constantes que nos permitirán leer mejor el código, asignando en este caso nuestra entrada analógica A2.

//Declaración de constantes
const int PinPotenciometro = 26; //Da el nombre “PinPotenciometro” para pin 26
//Los pines analogicos que puedes usar son el pin 26, 27 y 28

void setup()
{
  //Inicialización de comunicación serial a 9600 bits por segundo
  Serial.begin(9600);
}
void loop()
{
  //Registra en la variable local “LecturaDelSensor” el valor de la lectura analógica
  //del pin en donde está conectado el potenciómetro.
  int LecturaDelSensor = analogRead(PinPotenciometro);
  //Envia por el puerto serial la información almacenada en “LecturaDelSensor”,
  //esta información será visualizada en el monitor serial.
  Serial.println(LecturaDelSensor);
  delay(100); //Espera un milisegundo para tener estabilidad en las mediciones
}

Generando una señal analógica

Para generar una señal analógica, los microcontroladores no pueden usar directamente valores entre 0V y 3.3V. En lugar de eso, usan un método especial llamado modulación por ancho de pulso o PWM. La señal generada mediante PWM oscila entre dos valores 0 y 3.3V, pero a altas frecuencias y con un ancho de pulso variable. Esto permite generar un valor promediado que simula ser una señal analógica. Por ejemplo, si la señal PWM tiene un ancho de pulso del 50%, obtendremos la mitad del valor máximo, es decir 1.65V; para el 25%, 0.825V y así sucesivamente.

//Declaración de constantes
const int PinPotenciometro = 26; //Da el nombre “PinPotenciometro” para pin 26
//Los pines analogicos que puedes usar son el pin 26, 27 y 28
const int PinLed = 25; //Da el nombre “PinLed” para el pin 25

//Declaración de variables
int LecturaDelPotenciometro = 0;
int SalidaPWM = 0;

void setup()
{
}

void loop()
{
  //Registra en la variable local "LecturaDelPotenciometro" el valor de
  //la lectura análogica del pin “PinPot”.
  LecturaDelPotenciometro = analogRead(PinPotenciometro);
  //Almacena en “SalidaPWM” un valor dentro del rango de 0 a 255, que sea
  //proporcional al valor almacenado en “LecturaDelPotenciómetro”, que va
  //de 0 a 1024.
  SalidaPWM = map(LecturaDelPotenciometro, 0, 1023, 0, 255);
  //Establece el valor de salida de PWM para el pin en donde esta conectado el led.
  analogWrite(PinLed, SalidaPWM);
  //Espera 2 milisegundos para que el convertidor analógico a digital se estabilice
  //después de la medición anterior.
  delay(2);
}

Diagrama de conexiones

Para estos ejercicios este es el circuito que te permitirá leer la entrada analógica y controlar el brillo del LED externo.

Puedes usar otra entrada analógica u otro sensor que te permita leer un valor analógico. Vía: Raspberry Pi

Ahora que tienes las bases para leer señales analógicas y digitales, puedes implementar distintos componentes en tus proyectos. Por ejemplo, puedes controlar cuantos LEDs se encienden en una barra dependiendo del valor de un potenciómetro. También puedes controlar la velocidad de un motor o la posición de un servomotor, como veremos en las próximas entradas. Trata de usar otros componentes que generen señales analógicas, como una fotorresistencia, y sigue experimentando con tu Raspberry Pi Pico.

Referencias:

Manual de introducción a Arduino – 330ohms

Tutorial #3 de Raspberry Pi Pico: GPIO analógico