Señales PWM
La señal PWM (Pulse Width Modulation, Modulación de Ancho de Pulso)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 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.
Y vamos a utilizar de salida el diodo verde conectado a D3 y a una resistencia ya integrado en EDUBASICA:
Continuamos.Continuamos..
.
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.
/*Lee la entrada analogica A0, mapea el resultado al rango de 0 a 255
y utiliza el resutado para poner la anchura del pulso PWM.
Tambien se escribe en el monitor serie el valor binario de A0 y
el valor mapeado para la señal PWM.
De esta manera controlamos la luminosidad del led verde
de la placa Edubasica
El circuito:
* potenciometro conectado a la entrada analogica A0.
Terminal central del potenciometro a pin A0.
Resto de terminales del potenciometro a +5V y masa
* Circuito de LED verde conectado a D3-PWM.
*/
https://create.arduino.cc/editor/javierquintana/8bee8469-df52-4b88-a406-9f54fe3e20f8/preview
pines usados:
const int analogInPin = A0; // Entrada analogica A0 del potenciometro
const int analogOutPin = 3; // Salida PWM
int potValor = 0; // valor de lectura del potenciometro
int outputValor = 0; // valor de salida de la señal PWM
void setup() {
// inicializacion del monitor serie a 9600 bps:
Serial.begin(9600);
}
void loop() {
// lee el valor de la entrada analogica:
potValor = analogRead(analogInPin);
// mapea el rango para la señal de salida PWM:
outputValor = map(potValor, 0, 1023, 0, 255);
// asigna el valor cambiado a pin 3 PWM:
analogWrite(analogOutPin, outputValor);
// escribe el resultado en el monitor serie:
Serial.print("Potenciometro = " );
Serial.print(potValor);
Serial.print("\t PWM = ");
Serial.println(outputValor);
// espera 1 segundo cada bucle para una visualizacion aceptable
// conviene tener un valor aunque sea pequeño (10ms)
// por el proceso de conversion de A/D
delay(10);
}