Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INGENIERIA ELECTRICA
INTEGRANTES
Calificación: ___________
JLDM Página 1 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
1 Computadora
1 Software ATMEL Studio y/o Arduino IDE.
1 Tarjeta Arduino Due
INTRODUCCION TEORICA.
La modulación por ancho o de pulso (o en inglés pulse width modulation PWM) es un tipo de señal
de voltaje utilizada para enviar información o para modificar la cantidad de energía que se envía a
una carga. Este tipo de señales es muy utilizada en circuitos digitales que necesitan emular una
señal analógica.
Este tipo de señales son de tipo cuadrada o sinusiodales en las cuales se les cambia el ancho
relativo respecto al período de la misma, el resultado de este cambio es llamado ciclo de trabajo y
sus unidades están representadas en términos de porcentaje. Matemáticamente se tiene que:
𝑡𝑜𝑛
𝐷=
𝑇
D = ciclo de trabajo
ton = tiempo en que la señal es positiva
T = Período
Para emular una señal analógica se cambia el ciclo de trabajo (duty cicle en inglés) de tal manera
que el valor promedio de la señal sea el voltaje aproximado que se desea obtener, pudiendo
entonces enviar voltajes entre 0[V] y el máximo que soporte el dispositivo PWM utilizado, en el
caso de Arduino es 5[V].
En Arduino este tipo de señales sólo puede ser realizado con los pines que tienen el símbolo ~ en
sus números. En Arduino UNO son los pines 3, 5, 6, 9, 10 y 11.
La señal en Arduino tiene valores de 0[V] a 5[V] y una frecuencia de aproximadamente 500[Hz].
En los pines 5 y 6 esta frecuencia es aproximadamente el doble.
Modulación de ancho de pulso o PWM es una técnica común utilizada para variar la anchura de
los impulsos en un tren de impulsos. PWM tiene muchas aplicaciones como el control de los servos
y variadores de velocidad, lo que limita el poder efectivo de los motores y los LEDs.
JLDM Página 2 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
Principio básico de PWM
modulación por ancho de pulso es básicamente, una onda cuadrada con un tiempo de alta y baja
variación. Una señal PWM básico se muestra en la siguiente figura.
Ciclo de trabajo - Se representa como el porcentaje de señal de tiempo que se mantiene durante
el período de la señal PWM.
Período
Como se muestra en la figura, T sobre denota el tiempo on-off y T denota el tiempo de apagado
de la señal. El periodo es la suma de dentro y fuera de los tiempos y se calcula como se muestra
en la siguiente ecuación -
Ciclo de trabajo
El ciclo de trabajo se calcula como el tiempo en el período de tiempo. Usando el período calculado
anteriormente, el ciclo de trabajo se calcula como -
$$ D = \ frac {T_ {on}} {T_ {on} + T_ {off}} = \ frac {T_ {on}} {T_ {} $$ totales}
JLDM Página 3 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
Hay muchas aplicaciones que se puede dar a este tipo de modulación de señales.
analogWrite () Función
La función analogWrite () escribe un valor analógico (señal PWM) a un pasador. Se puede utilizar
para encender un LED con luminosidad variable o accionar un motor a diferentes velocidades.
Después de una llamada de la función analogWrite (), se va a generar una onda cuadrada
constante del ciclo de trabajo especificado hasta la siguiente llamada a analogWrite () o una
llamada a digitalRead () o digitalWrite () en el mismo pin. La frecuencia de la señal PWM en la
mayoría de las terminales es de aproximadamente 490 Hz. En los tarjetas de Arduino Uno y
similares, los pines 5 y 6 tienen una frecuencia de aproximadamente 980 Hz. Los pines 3 y 11 en
el Leonardo también se ejecutan a 980 Hz.
En la mayoría de las placas Arduino (aquellos con los ATmega168 o ATmega328), esta función
se puede utilizar en las terminales 3, 5, 6, 9, 10, y 11. En el Arduino Mega, que funciona en los
pines 2 - 13 y 44 - 46. Mayor Arduino tableros con un ATmega8 sólo admiten analogWrite () en los
pines 9, 10 y 11.
En Arduino Uni se apoya de analogWrite () en las terminales 2 a la 13, y los salida DAC0 y DAC1. A
diferencia de los pines PWM, DAC0 y DAC1 son Convertidores digitales a analógicos, y actúan
como verdaderas salidas analógicas.
No es necesario llamar a la función pinMode () para establecer el pin como salida antes de llamar
analogWrite ().
valor - el ciclo de trabajo: entre 0 (siempre apagado) y 255 (siempre encendido) como es un
registro de 8 bits.
JLDM Página 4 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
La señal PWM se utiliza como técnica para controlar circuitos analógicos. El periodo y el ciclo de
trabajo (duty cycle) del tren de pulsos puede determinar la tensión promedio entregada a dicho
circuito. Si, por ejemplo, tenemos un voltaje de 5v y lo modulamos con un duty cycle del 10%,
obtenemos 0.5V de señal analógica de salida.
Las señales PWM son comúnmente usadas para el control de velocidad de motores DC (si
decrementas el ciclo de trabajo sobre la señal de control del circuito de potencia que actúa sobre
el motor el motor se mueve más lentamente), ajustar la intensidad de brillo de un LED, etc.
Otra forma de generar señales PWM es utilizando la capacidad del microprocesador. La señal de
salida obtenida de un microprocesador es una señal digital de 0 Voltios (LOW) y de 5 voltios
(HIGH).
El dividir el voltaje en ciclos de trabajo ofrece muchas ventajas. La información puede ser
transmitida modulando la duración y la prolongación del voltaje en un ciclo de trabajo. De igual
forma se puede regular la energía que se entrega a una determinada carga. Esta es la función que
nos interesa en este post ya que con Arduino podemos modular el ancho de los pulsos de una
señal.
Esto quiere decir que podemos reducir en determinado porcentaje la prolongación del voltaje en
cada ciclo de trabajo. Digamos que decidimos enviar un pulso de 5 voltios en un 50% del ciclo de
trabajo. El resultado será el siguiente:
JLDM Página 5 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
Cabe destacar que es posible trabajar a diferentes porcentajes del total del ciclo de trabajo. Así
podríamos por ejemplo reducir la luminosidad de un LED en un porcentaje de su luminosidad total
y eso es lo que vamos a hacer.
DESARRROLLO DE LA PRÁCTICA.
Para nuestro ejemplo vamos a diseñar un "dimmer" muy sencillo que ilumine el led al 10%,
variando el ciclo de carga de la señal que haremos llegar al led. Lo que hará nuestro algoritmo es
encender y apagar el LED, pero con una frecuencia tan alta, que nuestro ojo no percibe el
parpadeo, sino una menor luminosidad. Variando el ancho del pulso incrementaríamos el ciclo de
carga, pasaría mayor tiempo encendido y por tanto dará la sensación de mayor luminosidad.
El hardware del ejemplo, será nuestro archiconocido LED rojo, conectado al Arduino en su pin 9
a través de una resistencia de 220Ω. Por si hay alguna duda, algo como esto:
JLDM Página 6 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
/*
* Practica 12a_PWM Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: PWM con potenciometro
*/
void setup() {
pinMode(ledPin, OUTPUT); // Configura la terminal 9 como salida
}
void loop() {
val = analogRead(analogPin); // Se le asigna lo leido de la señal analógica a la variable val
analogWrite(ledPin, (val / 4)); // Los valores obtenidos de analogRead values van de 0 a 1023,
// Se escriben los valores de analogWrite de 0 a 255
}
El siguiente ejercicio que realizaremos es tener tres salidas PWM, siendo las terminals 9, 10
y 11, con lo cual controlaremos la iluminación de un LED RGB.
/*
* Practica 12b_PWM Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: Tres salidas PWM para RGB con potenciometro
*/
void setup() {
pinMode(ledPinR, OUTPUT); // Configura la terminal 9 como salida
pinMode(ledPinV, OUTPUT); // Configura la terminal 9 como salida
pinMode(ledPinA, OUTPUT); // Configura la terminal 9 como salida
}
JLDM Página 7 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
void loop() {
valR = analogRead(ROJ); // Se le asigna lo leido de la señal analógica a la variable val
valV = analogRead(VER); // Se le asigna lo leido de la señal analógica a la variable val
valA = analogRead(AZL); // Se le asigna lo leido de la señal analógica a la variable val
analogWrite(ledPin, (valR / 4)); // Los valores obtenidos de analogRead values van de 0 a 1023,
analogWrite(ledPin, (valV / 4)); // Los valores obtenidos de analogRead values van de 0 a 1023,
analogWrite(ledPin, (valA / 4)); // Los valores obtenidos de analogRead values van de 0 a 1023,
// Se escriben los valores de analogWrite de 0 a 255
}
Ejercicio que permite aumentar o disminuir un contador para modular el ancho de pulso de
un led.
/*
* Practica 12a_PWM Fecha:
* Grupo: 6EV Equipo:
* Integrantes: JLDM
* Objetivo: PWM con potenciometro
*/
void setup() {
pinMode(ledPin, OUTPUT); // Configura la terminal 9 como salida
}
void loop() {
SIMULACIONES.
Para este punto describa sus comentarios obtenidos durante el desarrollo de esta práctica,
y que aportaciones usted haría de esta práctica.
CONCLUSIONES Y HALLAZGOS.
Conclusiones de cada uno de los integrantes, y que nuevos hallazgos logro descubrir de
acuerdo a su experiencia con el acercamiento de esta asignatura.
BIBLIOGRAFIAS.
JLDM Página 8 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a
REFERENCIAS.
Para este punto usted debe incluir en el reporte cuando menos dos artículos, o temas de
alguna revista, libro o publicación actual, referente al tema tratado en esta práctica.
JLDM Página 9 de 19