Está en la página 1de 9

CARRERA DE INGENIERIA ELECTRICA.

Prácticas de Laboratorio de Electrónica III. Practica No. 11a

INSTTITUTO POLITECNICO NACIONAL


Escuela Superior de Ingeniería Mecánica y Eléctrica

INGENIERIA ELECTRICA

LABORATORIO DE ELECTRONICA III.

PRACTICA No. 12 6EV2_(NOVIEMBRE 2016)

Modulación Por Ancho de Pulso (PWM).

Número de Equipo: _____

INTEGRANTES

Nombre de los Alumnos: No. de Boleta:


1). ___________ ___________ ______________ ____________
2). ___________ ___________ ______________ ____________

Nombre de los Profesores:


Prof. Titular: ___________ ___________ _____________
Prof. Adjunto: ___________ ___________ _____________
Prof. Adjunto: ___________ ___________ _____________

Fecha de realización: ___________

Calificación: ___________

JLDM Página 1 de 19
CARRERA DE INGENIERIA ELECTRICA.
Prácticas de Laboratorio de Electrónica III. Practica No. 11a

PRÀCTICA No. 11a: Modulación Por Ancho de Pulso (PWM).


OBJETIVOS:

a) Manejo del software de programación ATMEL Studio o ARDUINO IDE, para


configuración del microcontrolador ATSAM3X8E.
b) Configuración de registros del microcontrolador ATSAM3X8E.
c) Manejo de la herramienta de desarrollo DEMOJM, en la configuración de sus puertos de
entrada y salida.

Material y equipo utilizado

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.

Hay varios términos asociados a PWM -

On-Time - Duración de la señal de tiempo es alta.

Off-Time - Duración de la señal de tiempo es bajo.

Período - Se representa como la suma del tiempo off-on-tiempo y de la señal PWM.

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 -

$$ T_ {totales} = T_ {on} + T_ {off} $$

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}

¿Qué usos se le da a este tipo de señales? Algunos de ellos son:

- Generar señales de audio.


- Variar la velocidad de los motores.
- Generar una señal analógica , si se filtra la salida digital.
- Generar una señal modulada, para por ejemplo encender y apagar un LED de infrarrojo de un
control remoto,
- Variar la luminosidad de un led de baja señal o de portencia,
- Generar señales aplicadas a un puente con FET, IGBT de potencia (inversor).

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 ().

analogWrite () (Función y Sintaxis).

analogWrite ( pin , value ) ;

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).

De lo anterior, el voltaje permanece constante. No varía en el tiempo. Sin embargo, es posible


dividir esa onda en ciclos de trabajo. Los ciclos de trabajo duran un tiempo determinado, por lo
que una onda de voltaje puede ser dividida en cuadrados.

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.

12.1 Ejercicio con PWM.

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
*/

int ledPin = 9; // Salida en la terminal 9 con un LED


int analogPin = 3; // Potenciómetro conectado a la entrada analogical 3
int val = 0; // Variable que almacena el valor leído

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
}

Con el siguiente circuito Podemos controlar la iluminación de una lampara incandescente o


de un motor universal.

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
*/

int ledPinR = 9; // Salida en la terminal 9 con un LED


int ledPinV = 10; // Salida en la terminal 10 con un LED
int ledPinA = 11; // Salida en la terminal 11 con un LED
int ROJ = 0; // Potenciómetro conectado a la entrada analogica 0
int VER = 1; // Potenciómetro conectado a la entrada analogica 1
int AZL = 2; // Potenciómetro conectado a la entrada analogica 2
int valR = 0; // Variable que almacena el valor leído
int valV = 0; // Variable que almacena el valor leído
int valA = 0; // Variable que almacena el valor leído

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
*/

int ledPin = 9; // Salida en la terminal 9 con un LED


int val = 0; // Variable auxiliar

void setup() {
pinMode(ledPin, OUTPUT); // Configura la terminal 9 como salida
}

void loop() {

for(val=0; val<256 ; val++){


analogWrite(ledPin,val);
delay(10);
}
//Se recorren los valores del 255 al 0 de mayor a menor igual que el for anterior.
for(val=255; val>-1 ; val--){
analogWrite(ledPin,val);
delay(10);
}
}

SIMULACIONES.

COMENTARIOS Y APORTACIONES NUEVAS.

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.

----------------------------------- FIN DE LA PRÁCTICA -----------------------------------

JLDM Página 9 de 19

También podría gustarte