En este post se explicará cómo controlar la intensidad de brillo de un LED conectado a una salida digital con PWM en Arduino.
Para lograr este objetivo, se utilizará un potenciómetro y una entrada analógica de Arduino. Un potenciómetro es una resistencia variable que está formada por tres terminales: dos fijos en los extremos y uno móvil en el centro. Gracias a esta configuración, se puede controlar indirectamente la intensidad de corriente que fluye a través de un circuito si se conecta en paralelo, o la diferencia de potencial al conectarlo en serie. Para más información sobre los potenciómetros te recomiendo este post: ¿Qué es un potenciómetro y cómo funciona?.
Es importante tener en cuenta que los potenciómetros se utilizan en circuitos de poca corriente. Para circuitos de corrientes mayores, se utilizan los reóstatos, que pueden disipar más potencias. Para el caso particular de este post, no es necesario utilizar reóstatos. Aquí utilizaremos un potenciómetro y una entrada analógica de Arduino para controlar la intensidad de brillo de un LED conectado a una salida digital con PWM. Con esta información, se podrá lograr el objetivo deseado de manera efectiva y sencilla.
Ahora explicaremos cómo controlar el brillo de un LED utilizando una entrada analógica y una salida digital de PWM en Arduino.
El proceso comienza con la utilización de la entrada analógica A0 y la salida digital D0 que tiene PWM. La entrada digital recibirá un valor de tensión entre 0 y 5V, dependiendo de la posición del mando del potenciómetro.
Arduino tiene un convertidor A/D de 10 bits de resolución, que convierte el valor de tensión de entrada en un número entre 0 y 1023. Este número se lleva a la salida digital con PWM, que es transformado por el convertidor D/A de 8 bits de Arduino en un valor de tensión aplicable en el circuito.
Sin embargo, el convertidor D/A tiene menor resolución que el convertidor A/D, por lo que el número obtenido en la entrada debe ser dividido por 4 para ajustarse a los valores que puede manejar el convertidor D/A (0-255). De esta manera, se pueden obtener nuevamente valores de tensión entre 0 y 5V.
En resumen, el proceso de control del brillo de un LED en Arduino implica la utilización de la entrada analógica A0 y la salida digital D0 con PWM, así como la conversión de valores de tensión a través de los convertidores A/D y D/A de Arduino. La siguiente imagen muestra un esquema simplificado de cómo se realiza esta conversión.
Hay que tener en cuenta que al LED no le pueden llegar los 5V que ofrece Arduino en su salida, puesto que se quemaría, por lo que tenemos que limitar la corriente que lo atraviesa mediante una resistencia de 220Ω, con lo que en sus extremos tendrá como máximo unos 2.2V.
Lista de Materiales
- Arduino UNO Rev.3
- Cable USB tipo A-B
- LED 5mm (de cualquier color)
- Potenciómetro lineal de 10KΩ
- Resistencia de 220Ω
- Protoboard
- Cables de conexión
Código del programa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
/* TITULO: Control del brillo de un LED con un potenciómetro AUTOR: MARIANO DEL CAMPO GARCÍA (@2015) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia - TWITTER: https://twitter.com/MarianoCampoGa - CORREO: [email protected] DESCRIPCIÓN DEL PROGRAMA Con este programa regulamos el brillo del LED a medida que movamos el mando del potenciómetro. ESQUEMA DE CONEXION +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| P2 | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| LED(+) | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ NOTAS: - Cátodo(-) del LED (pata más corta) a GND a través de una R=220 omhs. - Utilizamos un potenciómetro lineal de 10K ohms. - Denomínamos a los terminales del potenciómetro como P1, P2 y P3 (donde P2 es el terminal central). - P1 conectado a VCC. - P3 conectado a GND. */ const int LED = 3; // Pin digital con PWM const int potenciometro = 0; // Pin analógico int brillo = 0; // Variable que acumula el brillo void setup() { pinMode(LED, OUTPUT); // Pin digital 3 como salida } void loop() { brillo = (analogRead(potenciometro))/4; // Leemos el valor de A0 y lo guardamos en brillo analogWrite(LED, brillo); // Escribimos el valor del brillo en el pin 3 (PWM) delay(20); } |
Video
En este post se ha explicado cómo controlar el brillo de un LED utilizando una entrada analógica y una salida digital con PWM en Arduino. Se ha mostrado cómo se realiza la conversión de valores de tensión a través de los convertidores A/D y D/A de Arduino, y cómo se ajustan los valores para obtener la intensidad de brillo deseada.
Agradecemos sinceramente a todos los lectores por su tiempo y atención, y esperamos haber proporcionado información útil e interesante. Si tienen alguna pregunta o comentario, por favor no duden en hacerlo. Sería un placer escuchar sus pensamientos y opiniones. ¡Gracias por leer!