0% encontró este documento útil (0 votos)
58 vistas6 páginas

L5 3 Ard GLab3-PWM

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
58 vistas6 páginas

L5 3 Ard GLab3-PWM

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 6

Guía de Laboratorio N°3

Controlando la intensidad mediante el PWM


1 Objetivos
• Reconocer el funcionamiento de la modulación por ancho de pulso (PWM)
• Emplear el PWM para el control de intensidad de luz en un LED,

2 Fundamento Teórico
2.1. PWM (Modulación por ancho de pulso). Es una técnica empleada para generar tensiones analógicas a partir
de señales digitales. Emplea una señal cuadrada la cual tiene dos estados activo (alto) y desactivado (bajo), donde
se controla que porcentaje del periodo de señal se encuentra en estado activo con la finalidad de variar la tensión
promedio resultante [1].
2.2. LED RGB. Es un dispositivo compuesto por tres LEDs correspondientes a las tres componentes generadoras de
color (rojo, verde y azul), donde cada una de estos componentes tiene una terminal de conexión y gracias a ello
se puede obtener una gran variedad de colores.

3 Equipos y materiales
• Tarjetas de desarrollo
o Tarjeta Arduino UNO (Ver Figura1 (a))
o Tarjeta de expansión (diseñada para el curso, ver Figura 1(b))
• Componentes electrónicos
o LED RGB (incluido en la tarjeta de expansión)
• Accesorios
o Cable de conexión USB-B a USB-A
• Computador personal

Para las conexiónes entre los componentes electrónicos y las tarjetas Arduino y de expansión, se puede verificar en Tabla1.

1
(a) Tarjeta Arduino (b) Tarjeta de expansión

Figura 1. Tarjetas de desarrollo


Fuente: (a) Arduino UNO Rev 3 (https://store.arduino.cc/usa/arduino-uno-rev3),
(b) Adaptado de Domótica e IoT (R. Acosta y R. Yauri, 2018)

Tabla 1. Tabla de conexión entre el Arduino UNO y la tarjeta de expansión

Recursos o periféricos J15 J14 J2 J11 J7 J13 PinOUT


LED rojo 5V_IZQ C A4
Pulsador (N. O.) 5V_IZQ C A3
Potenciómetro 10Kohm 5V_IZQ C_DER A0
LED RGB 5V_IZQ NC NC C A5, A4, A3
Sensor DHT22 5V_IZQ A1
Sensor DS18B20 5V_IZQ C A2
Sensor UV 5V_IZQ C_IZQ A0
OLED 5V_IZQ NC NC NC A4(Señal), A5(CK)
C: Conexión con Jumper NC: No conexión de Jumper
C_DER: Conexión con jumper lado derecho C_IZQ: Conexión con jumper lado izquierdo

Fuente: Adaptado de Domótica e IoT (R. Acosta y R. Yauri, 2018)

4 Experiencias
El presente laboratorio cuenta con dos experiencias:

4.1. Experiencia 1: Control de brillo de un LED


A través de esta experiencia se aprenderá a controlar el brillo del LED empleando un módulo PWM contenido en el Arduino
UNO.

4.1.1. Diagrama de conexiones

2
Figura 2. Diagrama de conexiones, experiencia control brillo de LED.
Fuente: Elaboración propia

La conexión requerida para esta experiencia se puede apreciar en la Figura 2, donde se observa la conexión de alimentación a
5V a través del jumper J15, así como la conexión al LED RGB a través del jumper J13. Se resalta también que tanto el jumper
J2 como el J11 permanecerán desconectados para esta experiencia.

4.1.2. Programa en el microcontrolador


Los programas empleados para esta experiencia se presentan a continuación:
Código 1. Programa para variar la intensidad del LED
/*
* Ejemplo para variar la intensidad en un LED
*/

const int LED = A3;

void setup(){
pinMode(LED,OUTPUT);
}

void loop() {
int i;

// el contador crece incrementando la intensidad


for (i=1;i<255; i++){
analogWrite(LED,i);
delay(5);
}

// el contador decrece disminuyendo la intensidad


for (i=255;i>0; i--){
analogWrite(LED,i);
delay(5);
}
}

3
Código 2. Programa para controlar intensidad desde consola
/*
* Ejemplo para controlar intensidad con dato obtenido desde serial
* Basado en ReadASCIIString https://www.arduino.cc/en/Tutorial/ReadASCIIString
*/

const int LED = A3; // almacena el pin del LED

void setup() {
// inicializa la comunicacion serial:
Serial.begin(9600);
pinMode(LED, OUTPUT); // establece el pin de salida para el LED
}

void loop() {
// verifica si hay algun dato serial
while (Serial.available() > 0) {

// lee el valor ingresado desde la consola serial:


int value = Serial.parseInt();

// busca caracter de nueva línea, final del dato ingresado:


if (Serial.read() == '\n') {

// limita los valores entre 0 - 255


value = constrain(value, 0, 255);

// establece el valor de intensidad en el LED


analogWrite(LED, value);

// imprime el valor en la consola


Serial.print("El valor aplicado es: ");
Serial.println(value);
}
}
}

4.1.3. Procedimiento
1. Abrir el código de ejemplo en Archivo>Proyecto>GLab3-PWM>3-1_ControlBrilloLED
2. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
3. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
4. Subir el programa haciendo clic en (Subir).
5. Observar el comportamiento de la tarjeta.
6. Abrir el código de ejemplo en Archivo>Proyecto>GLab3-PWM>3-2_ControlBrilloConsola
7. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
8. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
9. Subir el programa haciendo clic en (Subir).
10. Abrir el monitor serial desde Herramientas>Monitor Serie.
11. Ingresar un número desde 0 a 255 para asignarlo como valor al PWM.
12. Observar el comportamiento del LED.
13. Ingresar valores fuera del rango y luego observar el valor aplicado en el monitor serial.

4.2. Experiencia 2: Manejo de LED RGB


A través de esta experiencia se pretende abordar el manejo de un LED RGB el cual cuenta con tres pines de control para
poder modificar la intensidad de color de cada uno de sus componentes y generar una amplia variedad de colores.

4.2.1. Diagrama de conexiones

4
Para esta experiencia se emplea el mismo diagrama de conexiones mostrado en la Figura 2, donde se especifica la conexión con
el LED RGB (J13), manteniendo desconectados los jumpers correspondientes al LED rojo (J11) y al pulsador (J2).

4.2.2. Programa en el microcontrolador


Los programas empleados para esta experiencia se muestran a continuación:
Código 3. Programa para la prueba de colores del LED RGB
/*
* Ejemplo para prueba de colores de LED RGB
* Basado en PruebaColores, Domotica e IoT, R. Acosta y R Yauri
*/

const int redPin = A5;


const int greenPin = A4;
const int bluePin = A3;

void setup() {
// El LED RGB es cátodo común
pinMode(bluePin, OUTPUT); //Color Azul
pinMode(greenPin, OUTPUT); //Color verde
pinMode(redPin, OUTPUT); //Color rojo
}

void loop() {
// prueba color azul
digitalWrite(bluePin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
delay(2000);

// prueba color verde


digitalWrite(bluePin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(redPin, LOW);
delay(2000);

// prueba color rojo


digitalWrite(bluePin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(redPin, HIGH);
delay(2000);
}

Código 4. Programa para probar diferentes colores de RGB


/*
* Ejemplo para prueba de colores de LED RGB
* Basado en PruebaMatices, Domotica e IoT, R. Acosta y R Yauri
*/
const int redPin= A5;
const int greenPin = A4;
const int bluePin = A3;

void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}

void loop() {
setColor(255, 0, 0); //Rojo
delay(1000);
setColor(0, 255, 0); //Verde
delay(1000);
setColor(0, 0, 255); //Azul
delay(1000);
setColor(255, 255, 255); //Blanco
delay(1000);
setColor(170, 0, 255); //Magenta
delay(1000);
setColor(255, 255, 0); //Amarillo

5
delay(1000);
}

/*
* Definición de una función para establecer el color en la forma de RGB
*/
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}

4.2.3. Procedimiento
1. Abrir el código de ejemplo en Archivo>Proyecto>GLab3-PWM>3-3_PruebaColores
2. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
3. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
4. Subir el programa haciendo clic en (Subir).
5. Observar el comportamiento del LED RBG en la tarjeta.
6. Abrir el código de ejemplo en Archivo>Proyecto>GLab3-PWM>3-4_PruebaMaticesFuncion
7. Seleccionar la tarjeta en Herramientas>Placa>Arduino/Genuino UNO.
8. Seleccionar el puerto en Herramientas>Puerto>COMx Arduino/Genuino UNO, donde “x” es el número del
puerto reconocido por Windows.
9. Subir el programa haciendo clic en (Subir).
10. Observar el comportamiento del LED RGB en la tarjeta.

5 Ejercicios propuestos
5.1. Empleando la configuración de la Experiencia 1, con el programa 3-1_ControlBrilloLED, modificarlo de tal
manera que los pasos entre cada valor de intensidad (0-255) se realice en intervalos de 5: 0, 5, 10, ..., 255.
Imprimir los valores en el monitor serie.

5.2. Empleando la configuración de la Experiencia 1, con el programa 3-2_ControlBrilloConsola, cambiar el rango de


entrada para que solo se pueda ingresar valores desde el 0 al 10, donde 0 represente el valor mínimo y 10 valor
máximo de intensidad.

5.3. Empleando la configuración de la Experiencia 2, empleando el programa 3-3_ControlBrilloConsola y el


programa 3-2_ControlBrilloConsola, modificar este último para que el usuario pueda ingresar los valores para los
tres LEDS. Considerar que se puede emplear la función parseInt () sucesivas veces para números separados por
comas: número1, número2, número3.

5.4. Empleando la configuración de la Experiencia 2, empleando el programa 3-3_PruebaMaticesFunction, crear una


función que genere colores aleatorios y sea llamada al final de la secuencia de colores del programa
permaneciendo activo por 2 segundos.
Nota: para generar números aleatorios considerar el uso de la función random(x), donde x es el número límite
superior del rango de valores.

Referencias
[1] T. Hirzel. [En línea]. Available: https://www.arduino.cc/en/tutorial/PWM. [Último acceso: 2019].

También podría gustarte