arduino: 3. salidas pwm

Introducción a los pines PWM de arduino

Shozo Shimamoto

archivado en: Electrónica / 31 Agosto, 2016 / taller:

Retomo una serie que comencé hará unos dos años y que tuve que dejar por falta de tiempo sobre arduino. Como ya dije entonces, estas entradas son fruto de mis apuntes autodidactas sobre la materia, por lo que pueden contener errores.

Salidas analógicas PWM

Como vimos, en la parte superior de la placa se encuentran 13 pines digitales que nos sirven para recibir y enviar información, electricidad, de forma binaria a partir de dos estados: high y low, que se corresponden al 1 y 0 lógico respectivamente. Cada uno de estos pines es el comienzo de un circuito electrónico, el cual siempre concluye en la toma de tierra, es decir, en el pin que lleva escrito GND como apócope de ground. Además, estos pines tienen características especiales, como el número 13 que usamos en la primera entrada de esta serie, el cual lleva una resistencia incorporada. No es el único que tiene algo peculiar, pero de momento solo vamos a ver otro tipo, los denominados PWM, que son el 3, el 5, el 6, el 9 y el 11.

Tres señales PWM con diferentes ciclos de trabajo (imagen proveniente de la documentación oficial)

Tres señales PWM con diferentes ciclos de trabajo (imagen proveniente de la documentación oficial)

Estos pines se caracterizan por ser capaces de emular las salidas analógicas apagándose y encendiéndose de forma muy rápida, de tal manera que su rango de valores posibles es mucho más amplio. Para entenderlo, una vez más, volvamos a la analogía del agua e imaginemos un grifo capaz de abrirse y cerrarse con tal precisión que entre un estado y otro, entre estar dejando correr el agua y no soltar ni una gota, no hay estados intermedios. Ahora enchufamos una manguera al grifo y al final de esta añadimos un molino de agua.

Cuando el grifo está abierto, llegan 5 litros de agua por segundo a las paletas del molino, lo suficiente para impulsar el resto de la maquinaria con una fuerza de 5 impulsos (magnitud inventada). Es una fuerza perfecta para moler cereales, pero demasiado poderosa para trabajar vegetales más delicados, como las orquídeas, así que necesitamos regularla, transformar sus estados binarios en estados analógicos, de tal manera que también lleguen impulsos con valores intermedios como 2,3 o 4,1. Y para conseguirlo hacemos un truco que es encender y apagar con una velocidad vertiginosa el grifo para que corran menos de 5 litros por segundo por la manguera. Sin entrar en holguras físicas y matemáticas que se me escapan, esto es precisamente lo que hacen los pines con señal PWM, sigla de pulse width modulation, señal de modulación por ancho de pulso.

Gracias a estas señales PWM, cuyo ciclo completo se denomina «duty cycle» (ciclo de trabajo), se puede modular el voltaje de 5v con un rango de 256 valores (del 0 al 255), donde 0 sería el mínimo -el estado low- y 255, el máximo. Así, por ejemplo, para que un led brille con la mitad de la intensidad hay que definir un valor de 127. Y esto lo podemos hacer con el método analogWrite(), que recibe dos parámetros: el pin a modificar y el valor de su ciclo de trabajo. Todo este galimatías queda más claro con una práctica.

Práctica: modular un led

Para realizar este ejercicio necesitaremos un diodo led azul, una resistencia de 100Ω, un protoboard y un par de cablecillos. El objetivo es conseguir que el led vaya bajando y subiendo la intensidad de su luz a medida que vayamos disminuyendo y aumentando su ciclo de trabajo con el método analogWrite(). Pero antes de seguir, recordemos por qué necesitamos una resistencia de 100Ω.

Los componentes de un circuito electrónico se estropean si reciben más corriente de la que pueden soportar, por lo que debemos aplicar resistencias que «absorban» lo que sobra, un valor que podemos saber gracias a la ley de Ohm:«la cantidad de corriente constante a través de un material es directamente proporcional a la tensión a través del material dividido por la resistencia eléctrica del material».

Intensidad = Voltaje / Resistencia

Un led azul tiene una tensión de trabajo de unos 3,4 voltios, luego nos sobra 1,6 para llegar a los 5V de arduino, y tiene unos 15 mA de intensidad. Por lo tanto:

1,6 voltios / 0.015 amperios = necesitamos una resistencia de 106 ohmios.

Recordado esto, vamos ya sí con la práctica.

El tinglado físico que debemos preparar es muy sencillo. Colocamos el led en algún sitio del protoboard y en la fila de su ánodo lo cableamos con el pin PWM 9. En la fila del cátodo añadimos la resistencia y la enlazamos con la toma de tierra (gnd). Algo así:

Ahora ya solo nos falta preparar el código (doy por sentado que sabemos qué es una estructura condicional):

/* Cacheamos el pin 9 en una variable */

int ledFade = 9;

int ligth = 0;

int fade = 5;

void setup() {

/* Preparamos el pin 9 para que sea de salida */

pinMode(ledFade, OUTPUT);

}

void loop() {

/* Indicamos el valor «analógico» que debe tener nuestro pin en esta vuelta del loop */

analogWrite(ledFade, ligth);

/* Aumentamos el valor analógico para la siguiente vuelta */

ligth += fade;

/* Nos esperamos unos milisegundos para que el efecto sea perceptible */

delay(25);

/* Reseteamos el valor analógico si ha llegado a su mínimo o máximo posible */

if ( ligth == 0 || ligth == 255 ) {

fade = -fade;

}

}

|| Tags: , ,

valoración de los lectores sobre arduino: 3. salidas pwm

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 5 sobre 5 (1 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

Aportar un comentario

*