Skip to main content

Señales PWM

La señal PWM (Pulse Width Modulation, Modulación de Ancho de Pulso) es una señal que utiliza el microcontrolador para generar una señal continua sobre el proceso a controlar. Por ejemplo, la variación de la intensidad luminosa de un led, el control de velocidad de un motor de corriente continua,...

Para que un dispositivo digital, microcontrolador de la placa Arduino, genere una señal continua lo que hace es emitir una señal cuadrada con pulsos de frecuencia constante y tensión de 5V. A continuación, variando la duración activa del pulso (ciclo de trabajo) se obtiene a la salida una señal continua variable desde 0V a 5V.

Veamos gráficamente la señal PWM:

Los pines digitales de la placa Arduino que se utilizan como salida de señal PWM generan una señal cuadrada de frecuencia constante (490Hz), sobre esta señal periódica por programación podemos variar la duración del pulso como vemos en estos 3 casos:

  • La duración del pulso es pequeña y la salida va a tener un valor medio de tensión bajo, próximo a 0V.
  • La duración del pulso es casi la mitad del período de la señal, por tanto, la salida va a tener un valor medio de tensión próximo a 2,5V.
  • La duración del pulso se aproxima al tiempo del período y el valor medio de tensión de salida se aproxima a 5V.

Montaje 5: Control de la intensidad de iluminación de un LED

Como ejemplo práctico de la señal PWM vamos a realizar un control de iluminación  sobre un diodo led.

Sin EDUBASICA

En una protoboard montamos el circuito formado por el potenciómetro conectado a la entrada analógica A0.

y también montamos el circuito conectado al pin digital D3, utilizado como salida PWM, de esta manera nos va a permitir variar la luminosidad del LED.

CON EDUBÁSICA

En este caso ya tiene integrado un potenciómetro conectado a la entrada A0.

Esquema del potenciómetro en EDUBASICA

Y vamos a utilizar de salida el diodo verde conectado a D3 y a una resistencia ya integrado en EDUBASICA:

Esquema de LEDs en EDUBASICA

Un vídeo de cómo queda.

Vamos a ver una pequeña demostración:

Cargamos el programa ejemplo, en la placa Arduino y teniendo acoplada la placa EduBásica o montados los circuitos en una placa protoboard, podemos ver su funcionamiento.

Para ver su funcionamiento activamos el monitor serie del IDE de programación y variamos el potenciómetro. El resultado es una variación de luminosidad y variación de valores en el monitor serie.

El siguiente gráfico es una pantalla del monitor serie con los valores leídos y el valor aplicado a la señal PWM para variar la luminosidad.

Programa. Instrucciones analorRead analogWrite y map

El valor del potenciómetro lo leerá la instrucción analogRead(pin) que lee valores analógicos cada 100µs y los convierte por el conversor analógico digital en valores de 10 bits por lo tanto de 0 a 1024. Los pines para leer sólo pueden ser los A0 al A5. (ver+)

Utilizaremos la instrucción analogWrite(pin,value) para crear la onda PWM en el pin correspondiente, que sólo puede ser en el Arduino Uno el 3, 5, 6, 9, 10, 11. El valor value es un número entre 0 y 255 y es simulado con una onda cuadrada de 490Hz o 980Hz (depende del pin, ver+).

Como uno lee 0 a 1024 y el otro necesita valores de 0 a 255 necesitamos un traductor o mapeo con la instrucción map(value, fromLow, fromHigh, toLow, toHigh) esta instrucción la colocaremos, como suele estar los intérpretes en medio, o sea, entre la instrucción analogRead y la analogWrite

Veremos más adelante esta instrucción map

https://create.arduino.cc/editor/javierquintana/8bee8469-df52-4b88-a406-9f54fe3e20f8/preview