Saltar la navegación

Variación de un LED con Potenciómetro

Como ejemplo práctico de la señal PWM vamos a realizar el control de la intensidad de iluminación de un diodo LED. Los componentes que vamos a utilizar son:

  • Un potenciómetro de 10K conectado a la entrada analógica A0.
  • Un LED conectado al pin digital D3, con su correspondiente resistencia de protección de 220 ohmios. La salida D3 está marcada con ~ por tanto permite usarla como salida PWM. Esto nos permite variar la luminosidad de salida del LED desde 0 hasta 255 y al mismo tiempo podemos verlo en el Monitor Serie.
  • Arduino UNO y una placa protoboard para realizar las conexiones.

Control luminosidad LED. Ejemplo PWM

Cargamos el programa de más abajo en el programa y lo enviamos a la placa Arduino.

Variando el potenciómetro (a veces se necesita un pequeño destornillador para girar un tornillo) el resultado es una variación de luminosidad del LED y variación de valores PWM en el Monitor Serie.

La siguiente imagen es un pantallazo del monitor serie con los valores leídos y el valor aplicado a la señal PWM para variar la luminosidad.

(recordar que la entrada A0 donde está conectada el Potenciómetro podemos leer hasta 1024 valores diferentes (10 bits) y la salida PWM hasta 256 valores diferentes (8bits).

Valores PWM

-------------------------------------------------------------------------------------
/*Lee la entrada analogica A0, mapea el resultado al rango de 0 a 255
y utiliza el resultado 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.
*/

// 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);
}
-------------------------------------------------------------------------------------