SlideShare una empresa de Scribd logo
Introducción a PWM
Sistemas de Tiempo Real
http://www.arcos.inf.uc3m.es/~infostr

Grupo de Arquitectura y Tecnología de Computadores
(ARCOS)
PWM: frecuencia y duty cycle
• La técnica PWM (Pulse-Width Modulation) o modulación por
anchura del pulso permite generar ondas cuadradas con una
frecuencia y ciclo de actividad determinada:
– En Arduino UNO la frecuencia del reloj del sistema es 16Mhz
• 16*10^6 ciclos (ticks) por segundo tiempo de ciclo es 1/ 16*10^6 = 62.5ns
• Es posible modificar la frecuencia para que el número de ciclos por segundo sea 1 por cada
8,16,32,64, etc. ciclos de reloj del sistema. Este valor se llama factor de pre-escalado.

– El ciclo de actividad (o duty cycle, DC) representa la anchura del
pulso: cuánto tiempo de cada onda cuadrada hay pulso (5V) y cuándo
no lo hay (0V).
Duty cycle
• Ejemplos de duty cycle:

• Otro ejemplo:
– analogWrite(pin,DC): es una función de Arduino que escribe en pin (salida) un
determinado DC o duty cycle
• Está función se implementa como un PWM con una frecuencia fija (mediante un factor de preescalado de 64).
• Problema: aunque permite modificar el duty cycle, no es posible modificar la frecuencia, ya que
el valor de pre-escalado está fijo.
Introducción a PWM
• PWM permite generar ondas con diferentes frecuencias y
duty cycles usando timers:
– Un timer es un contador software que cuenta ciclos de reloj: el timer usa el
reloj de la CPU (o reloj del sistema).
– El timer se puede configurar para que solo se incremente cada X ciclos en
lugar de cada ciclo. (siendo X el factor de preescalado)
– Un timer cuenta desde 0 hasta MAX,
• MAX es el máximo que puede almacenar, y depende del número de bits del timer:
– Si el timer usa n bits
– Ejemplo con n=8

cuenta de 0..2^n-1

255
Timer (+1)

tick1

0

tick255

Frecuencia=1tick por c/factor pre-escalado
Si usamos pre-escalado=8, en un período hay

(16*10^6/8)*255
Introducción a PWM
• PWM permite generar ondas con diferentes frecuencias y
duty cycles usando timers:
– El duty cycle se modifica haciendo uso de un registro de comparación:
• Un registro de comparación almacena un valor comprendido entre 0 y MAX
• Cada registro de comparación esta asociado a una salida digital (PWM).
• Por ejemplo, en Fast PWM, si el valor del contador del timer es menor que el registro de
comparación, la salida emite 5 v (valor 1). En caso contrario emite 0 v (valor 0).
• Ejemplo: un timer de n=8 bits y valor de comparación 2^n/2-1 genera un DC=50%
Timer (+1)

255
127
Reg. comparación

0
Salida generada
DC es 50%
Modos básicos de PWM: Fast PWM
• Fast PWM:
– El timer cuenta de 0 a MAX y vuelve a 0.
– La salida generada toma el valor 1 (ON) cuando el timer es igual a 0
– La salida generada toma el valor 0 (OFF) cuando el valor del timer alcanza el valor del
registro de comparación

255
Reg. comparación

0
Salida generada
Modos básicos de PWM: Fase correcta
• Phase-Correct PWM:
– El timer cuenta de 0 a MAX y decrece hasta 0.
– La salida generada toma el valor 0 (OFF) cuando el timer alcanza el valor del registro de
comparación durante la cuenta hacia adelante (0..MAX)
– La salida generada toma el valor 1 (ON) cuando el timer alcanza el valor del registro de
comparación durante la cuenta hacia atrás (MAX..0)

255
Reg.
comparación

0
Salida generada
Timers de Arduino
• Arduino tiene 3 Timers (Timer0, Timer1, Timer2),
– Cada timer tiene 2 registros de HW que permiten configurar las
opciones de PWM
• TCCRXA y TCCRXB (X=0,1,2) dependiendo del timer usado

– Cada timer tiene otros 2 registros de HW que actúan como registros
de comparación,
• OCRXA y OCRXB (X=0,1,2) dependiendo del timer usado

– Cada timer tiene 2 salidas que pueden conectarse a dos salidas PWM
de Arduino:
• Timer 0
• Timer 1
• Timer 2

salidas 6 (A) y 5 (B)
salidas 9 (A) y 10 (B)
salidas 11 (A) y 3 (B)
Timer 0 (8 bits)
• TCCR0A – Timer/Counter Control Register A
COM0A1

COM0A0

COM0B1

COM0B0

--

--

WGM01

WGM02

R/W

R/W

R/W

R/W

R

R

R/W

R/W

• TCCR0B – Timer/Counter Control Register B
F0C0A

F0C0B

--

--

WGM02

CS02

CS01

CS00

W

W

R

R

R/W

R/W

R/W

R/W

• Leyenda:
– WGM (Waveform Generation Mode) permite seleccionar modo PWM
– CS (Clock Select) permite especificar el factor de pre-escalado
– Los bits COM0 permite habilitar, deshabilitar o invertir las salidas A y B
Timer 1 (16 bits)
• TCCR1A – Timer/Counter Control Register A
COM1A1

COM1A0

COM1B1

COM1B0

--

--

WGM11

WGM10

R/W

R/W

R/W

R/W

R

R

R/W

R/W

• TCCR1B – Timer/Counter Control Register B
ICNC1

IC3S1

--

WGM13

WGM12

CS12

CS11

CS10

W

W

R

R/W

R/W

R/W

R/W

R/W

• Leyenda:
– WGM (Waveform Generation Mode) permite seleccionar modo PWM
– CS (Clock Select) permite especificar el factor de pre-escalado
– Los bits COM1 permite habilitar, deshabilitar o invertir las salidas A y B
Timer 2 (8 bits)
• TCCR2A – Timer/Counter Control Register A
COM2A1

COM2A0

COM2B1

COM2B0

--

--

WGM21

WGM20

R/W

R/W

R/W

R/W

R

R

R/W

R/W

• TCCR2B – Timer/Counter Control Register B
F0C2A

F0C2B

--

--

WGM22

CS22

CS21

CS20

W

W

R

R

R/W

R/W

R/W

R/W

• Leyenda:
– WGM (Waveform Generation Mode) permite seleccionar modo PWM
– CS (Clock Select) permite especificar el factor de pre-escalado
– Los bits COM2 permite habilitar, deshabilitar o invertir las salidas A y B
Configuración de opciones
• Un registro de HW se modifica como una variable de SW
– TCCR2A=5
– Opciones PWM se configuran escribiendo sobre los registros de HW

• Para activar/desactivar bits de los registros se usa la macro
_BV(pin) donde pin es el nombre del bit que queremos
activar.
– Se utilizan operadores de bits (& y |) para hacer operaciones AND y
OR con el resto de bits de los registros
• TCCR2A=BV(COM2A1) activa (pone a 1) el bit COM2A1 del registro TCCR2A
• TCCR2A=TCCR2A|BV(COM2A1) activa (pone a 1) el bit COM2A1 del registro
TCCR2A y mantiene el valor del resto de bits del registro

Más contenido relacionado

La actualidad más candente

Muestreo
MuestreoMuestreo
Muestreo
israel.1x
 
MUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALESMUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALES
Linda Yesenia
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887
whendygarcia
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
SANTIAGO PABLO ALBERTO
 
Modulos ccp v2(ring telefono)
Modulos ccp v2(ring telefono)Modulos ccp v2(ring telefono)
Modulos ccp v2(ring telefono)
panchito24mayo
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
Luis Zurita
 
Teorema de muestreo
Teorema de muestreoTeorema de muestreo
Teorema de muestreo
Verito Suarez
 
Temporizador timer0
Temporizador timer0Temporizador timer0
Temporizador timer0
electropic2013
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
Rafael Duran
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
Luis Zurita
 
El microcontrolador pic
El microcontrolador picEl microcontrolador pic
El microcontrolador pic
Victor Fernando Monroy Dipp
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0
electro_pic
 
Timers
TimersTimers
Timers
efcastillo
 
Ejemplos De Ccp
Ejemplos De CcpEjemplos De Ccp
Ejemplos De Ccp
Luis Zurita
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
Fernando Aparicio Urbano Molano
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
Luis Zurita
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Fenomeno de Aliasing
Fenomeno de AliasingFenomeno de Aliasing
Fenomeno de Aliasing
Fabián Garzón
 
Ccpx
CcpxCcpx
Ccpx
Jair BG
 

La actualidad más candente (20)

Muestreo
MuestreoMuestreo
Muestreo
 
MUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALESMUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALES
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
 
Modulos ccp v2(ring telefono)
Modulos ccp v2(ring telefono)Modulos ccp v2(ring telefono)
Modulos ccp v2(ring telefono)
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Teorema de muestreo
Teorema de muestreoTeorema de muestreo
Teorema de muestreo
 
Temporizador timer0
Temporizador timer0Temporizador timer0
Temporizador timer0
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
 
Curso Micro Tema 4
Curso Micro Tema 4Curso Micro Tema 4
Curso Micro Tema 4
 
El microcontrolador pic
El microcontrolador picEl microcontrolador pic
El microcontrolador pic
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0
 
Timers
TimersTimers
Timers
 
Ejemplos De Ccp
Ejemplos De CcpEjemplos De Ccp
Ejemplos De Ccp
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Timer0 PIC16F84A
 
Fenomeno de Aliasing
Fenomeno de AliasingFenomeno de Aliasing
Fenomeno de Aliasing
 
Ccpx
CcpxCcpx
Ccpx
 

Destacado

Presentacion pwm
Presentacion pwmPresentacion pwm
Presentacion pwm
Mario Funes
 
Modulacion pwm
Modulacion pwmModulacion pwm
Modulacion pwm
pedrinhoudh
 
modulación por pulsos
modulación por pulsosmodulación por pulsos
modulación por pulsos
Fernando Rios Cortes
 
Proyecto PWM (Español)
Proyecto PWM (Español)Proyecto PWM (Español)
Proyecto PWM (Español)
Icarohack
 
El osciloscopio angel
El osciloscopio angelEl osciloscopio angel
El osciloscopio angel
saiautsiutajs san felipe
 
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digitalCurso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
AEGA
 
Ac ac monofasicos
Ac ac monofasicosAc ac monofasicos
final PWM
final PWMfinal PWM
final PWM
Lautaro Narvaez
 
22a clase generadores de pwm
22a clase generadores de pwm22a clase generadores de pwm
22a clase generadores de pwm
ManuelGmoJaramillo
 
Programacion y extraccion de codigo pin vag tacho 2.5 pointer
Programacion y extraccion de codigo pin vag tacho 2.5 pointerProgramacion y extraccion de codigo pin vag tacho 2.5 pointer
Programacion y extraccion de codigo pin vag tacho 2.5 pointer
Antonio_elfelino
 
Inversores trifásicos
Inversores trifásicosInversores trifásicos
Inversores trifásicos
jesmc182
 
Multiplexado
MultiplexadoMultiplexado
Multiplexado
Esteban Kagelmacher
 
14696862 mecanica
14696862 mecanica14696862 mecanica
Funciones ODB2
Funciones ODB2Funciones ODB2
Funciones ODB2
J Tolentino
 
Osciloscopio
OsciloscopioOsciloscopio
Osciloscopio
instrumentaciones
 
Inversor monofasico
Inversor monofasicoInversor monofasico
Inversor monofasico
Henry Ibarra Pino
 
Inversores y Cicloconvertidores
Inversores y CicloconvertidoresInversores y Cicloconvertidores
Inversores y Cicloconvertidores
Erick Alberto Salazar
 
Ignicion, Teoria Y Pruebas
Ignicion, Teoria Y PruebasIgnicion, Teoria Y Pruebas
Ignicion, Teoria Y Pruebas
guest9849aca
 
Convertidores ac,dc
Convertidores ac,dcConvertidores ac,dc
Convertidores ac,dc
erick maldonado
 
Electricidad y electrónica básica automotriz Prof. J.A.Guillén
Electricidad y electrónica básica automotriz Prof. J.A.GuillénElectricidad y electrónica básica automotriz Prof. J.A.Guillén
Electricidad y electrónica básica automotriz Prof. J.A.Guillén
Jorge Antonio Guillen
 

Destacado (20)

Presentacion pwm
Presentacion pwmPresentacion pwm
Presentacion pwm
 
Modulacion pwm
Modulacion pwmModulacion pwm
Modulacion pwm
 
modulación por pulsos
modulación por pulsosmodulación por pulsos
modulación por pulsos
 
Proyecto PWM (Español)
Proyecto PWM (Español)Proyecto PWM (Español)
Proyecto PWM (Español)
 
El osciloscopio angel
El osciloscopio angelEl osciloscopio angel
El osciloscopio angel
 
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digitalCurso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
Curso - Diagnosis avanzada. Conocimientos y utilización del osciloscopio digital
 
Ac ac monofasicos
Ac ac monofasicosAc ac monofasicos
Ac ac monofasicos
 
final PWM
final PWMfinal PWM
final PWM
 
22a clase generadores de pwm
22a clase generadores de pwm22a clase generadores de pwm
22a clase generadores de pwm
 
Programacion y extraccion de codigo pin vag tacho 2.5 pointer
Programacion y extraccion de codigo pin vag tacho 2.5 pointerProgramacion y extraccion de codigo pin vag tacho 2.5 pointer
Programacion y extraccion de codigo pin vag tacho 2.5 pointer
 
Inversores trifásicos
Inversores trifásicosInversores trifásicos
Inversores trifásicos
 
Multiplexado
MultiplexadoMultiplexado
Multiplexado
 
14696862 mecanica
14696862 mecanica14696862 mecanica
14696862 mecanica
 
Funciones ODB2
Funciones ODB2Funciones ODB2
Funciones ODB2
 
Osciloscopio
OsciloscopioOsciloscopio
Osciloscopio
 
Inversor monofasico
Inversor monofasicoInversor monofasico
Inversor monofasico
 
Inversores y Cicloconvertidores
Inversores y CicloconvertidoresInversores y Cicloconvertidores
Inversores y Cicloconvertidores
 
Ignicion, Teoria Y Pruebas
Ignicion, Teoria Y PruebasIgnicion, Teoria Y Pruebas
Ignicion, Teoria Y Pruebas
 
Convertidores ac,dc
Convertidores ac,dcConvertidores ac,dc
Convertidores ac,dc
 
Electricidad y electrónica básica automotriz Prof. J.A.Guillén
Electricidad y electrónica básica automotriz Prof. J.A.GuillénElectricidad y electrónica básica automotriz Prof. J.A.Guillén
Electricidad y electrónica básica automotriz Prof. J.A.Guillén
 

Similar a Introduccionpwm

pwm fast en un microcontrolador 328p.pptx
pwm  fast en un microcontrolador 328p.pptxpwm  fast en un microcontrolador 328p.pptx
pwm fast en un microcontrolador 328p.pptx
jjcordero1
 
18 generador de_pulsos
18 generador de_pulsos18 generador de_pulsos
18 generador de_pulsos
kanon1986
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
Instituto Tecnológico de Tuxtla Gutiérrez
 
preinforme PWM
preinforme PWMpreinforme PWM
preinforme PWM
Lautaro Narvaez
 
Tacometro digital
Tacometro digitalTacometro digital
Tacometro digital
sant1288
 
Encoder _s7 1200_tiaportal
Encoder _s7 1200_tiaportalEncoder _s7 1200_tiaportal
Encoder _s7 1200_tiaportal
Gerardo Moya
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plc
ForrestMamani
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidad
Miguel sosa
 
Reloj digital
Reloj digitalReloj digital
Reloj digital
Anika Love
 
Presentación de la Fase 4 de Microelectrónica - Grupo 18
Presentación de la Fase 4 de Microelectrónica - Grupo 18Presentación de la Fase 4 de Microelectrónica - Grupo 18
Presentación de la Fase 4 de Microelectrónica - Grupo 18
Jorge Microelectrónica
 
18 Timers
18 Timers18 Timers
18 Timers
Jaime E. Velarde
 
Timers
TimersTimers
Caso timers
Caso timersCaso timers
Caso timers
Billy Phillips
 
Usart PIC config LANDA
Usart PIC config LANDAUsart PIC config LANDA
Usart PIC config LANDA
dave
 
seminario-de-plc- controladores logicos programables
seminario-de-plc- controladores logicos programablesseminario-de-plc- controladores logicos programables
seminario-de-plc- controladores logicos programables
LuisLobatoingaruca
 
Lab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfLab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdf
sopitamani1
 
Informe dav
Informe  davInforme  dav
Informe dav
Carlos Torres
 
Microcontroladores pic14f84a
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84a
danqueas
 
Control nivel luz
Control nivel luzControl nivel luz
Control nivel luz
Fernando Venegas Riera
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
alascaperu
 

Similar a Introduccionpwm (20)

pwm fast en un microcontrolador 328p.pptx
pwm  fast en un microcontrolador 328p.pptxpwm  fast en un microcontrolador 328p.pptx
pwm fast en un microcontrolador 328p.pptx
 
18 generador de_pulsos
18 generador de_pulsos18 generador de_pulsos
18 generador de_pulsos
 
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHOPRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
PRÁCTICA 2 ENSAMBLADOR - JESÚS ASMETH PÉREZ CAMACHO
 
preinforme PWM
preinforme PWMpreinforme PWM
preinforme PWM
 
Tacometro digital
Tacometro digitalTacometro digital
Tacometro digital
 
Encoder _s7 1200_tiaportal
Encoder _s7 1200_tiaportalEncoder _s7 1200_tiaportal
Encoder _s7 1200_tiaportal
 
Arquitectura del plc
Arquitectura del plcArquitectura del plc
Arquitectura del plc
 
Ctrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidadCtrl discreto de un motor de cc en velocidad
Ctrl discreto de un motor de cc en velocidad
 
Reloj digital
Reloj digitalReloj digital
Reloj digital
 
Presentación de la Fase 4 de Microelectrónica - Grupo 18
Presentación de la Fase 4 de Microelectrónica - Grupo 18Presentación de la Fase 4 de Microelectrónica - Grupo 18
Presentación de la Fase 4 de Microelectrónica - Grupo 18
 
18 Timers
18 Timers18 Timers
18 Timers
 
Timers
TimersTimers
Timers
 
Caso timers
Caso timersCaso timers
Caso timers
 
Usart PIC config LANDA
Usart PIC config LANDAUsart PIC config LANDA
Usart PIC config LANDA
 
seminario-de-plc- controladores logicos programables
seminario-de-plc- controladores logicos programablesseminario-de-plc- controladores logicos programables
seminario-de-plc- controladores logicos programables
 
Lab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdfLab# 2 - Temporizador.pdf
Lab# 2 - Temporizador.pdf
 
Informe dav
Informe  davInforme  dav
Informe dav
 
Microcontroladores pic14f84a
Microcontroladores pic14f84aMicrocontroladores pic14f84a
Microcontroladores pic14f84a
 
Control nivel luz
Control nivel luzControl nivel luz
Control nivel luz
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
 

Introduccionpwm

  • 1. Introducción a PWM Sistemas de Tiempo Real http://www.arcos.inf.uc3m.es/~infostr Grupo de Arquitectura y Tecnología de Computadores (ARCOS)
  • 2. PWM: frecuencia y duty cycle • La técnica PWM (Pulse-Width Modulation) o modulación por anchura del pulso permite generar ondas cuadradas con una frecuencia y ciclo de actividad determinada: – En Arduino UNO la frecuencia del reloj del sistema es 16Mhz • 16*10^6 ciclos (ticks) por segundo tiempo de ciclo es 1/ 16*10^6 = 62.5ns • Es posible modificar la frecuencia para que el número de ciclos por segundo sea 1 por cada 8,16,32,64, etc. ciclos de reloj del sistema. Este valor se llama factor de pre-escalado. – El ciclo de actividad (o duty cycle, DC) representa la anchura del pulso: cuánto tiempo de cada onda cuadrada hay pulso (5V) y cuándo no lo hay (0V).
  • 3. Duty cycle • Ejemplos de duty cycle: • Otro ejemplo: – analogWrite(pin,DC): es una función de Arduino que escribe en pin (salida) un determinado DC o duty cycle • Está función se implementa como un PWM con una frecuencia fija (mediante un factor de preescalado de 64). • Problema: aunque permite modificar el duty cycle, no es posible modificar la frecuencia, ya que el valor de pre-escalado está fijo.
  • 4. Introducción a PWM • PWM permite generar ondas con diferentes frecuencias y duty cycles usando timers: – Un timer es un contador software que cuenta ciclos de reloj: el timer usa el reloj de la CPU (o reloj del sistema). – El timer se puede configurar para que solo se incremente cada X ciclos en lugar de cada ciclo. (siendo X el factor de preescalado) – Un timer cuenta desde 0 hasta MAX, • MAX es el máximo que puede almacenar, y depende del número de bits del timer: – Si el timer usa n bits – Ejemplo con n=8 cuenta de 0..2^n-1 255 Timer (+1) tick1 0 tick255 Frecuencia=1tick por c/factor pre-escalado Si usamos pre-escalado=8, en un período hay (16*10^6/8)*255
  • 5. Introducción a PWM • PWM permite generar ondas con diferentes frecuencias y duty cycles usando timers: – El duty cycle se modifica haciendo uso de un registro de comparación: • Un registro de comparación almacena un valor comprendido entre 0 y MAX • Cada registro de comparación esta asociado a una salida digital (PWM). • Por ejemplo, en Fast PWM, si el valor del contador del timer es menor que el registro de comparación, la salida emite 5 v (valor 1). En caso contrario emite 0 v (valor 0). • Ejemplo: un timer de n=8 bits y valor de comparación 2^n/2-1 genera un DC=50% Timer (+1) 255 127 Reg. comparación 0 Salida generada DC es 50%
  • 6. Modos básicos de PWM: Fast PWM • Fast PWM: – El timer cuenta de 0 a MAX y vuelve a 0. – La salida generada toma el valor 1 (ON) cuando el timer es igual a 0 – La salida generada toma el valor 0 (OFF) cuando el valor del timer alcanza el valor del registro de comparación 255 Reg. comparación 0 Salida generada
  • 7. Modos básicos de PWM: Fase correcta • Phase-Correct PWM: – El timer cuenta de 0 a MAX y decrece hasta 0. – La salida generada toma el valor 0 (OFF) cuando el timer alcanza el valor del registro de comparación durante la cuenta hacia adelante (0..MAX) – La salida generada toma el valor 1 (ON) cuando el timer alcanza el valor del registro de comparación durante la cuenta hacia atrás (MAX..0) 255 Reg. comparación 0 Salida generada
  • 8. Timers de Arduino • Arduino tiene 3 Timers (Timer0, Timer1, Timer2), – Cada timer tiene 2 registros de HW que permiten configurar las opciones de PWM • TCCRXA y TCCRXB (X=0,1,2) dependiendo del timer usado – Cada timer tiene otros 2 registros de HW que actúan como registros de comparación, • OCRXA y OCRXB (X=0,1,2) dependiendo del timer usado – Cada timer tiene 2 salidas que pueden conectarse a dos salidas PWM de Arduino: • Timer 0 • Timer 1 • Timer 2 salidas 6 (A) y 5 (B) salidas 9 (A) y 10 (B) salidas 11 (A) y 3 (B)
  • 9. Timer 0 (8 bits) • TCCR0A – Timer/Counter Control Register A COM0A1 COM0A0 COM0B1 COM0B0 -- -- WGM01 WGM02 R/W R/W R/W R/W R R R/W R/W • TCCR0B – Timer/Counter Control Register B F0C0A F0C0B -- -- WGM02 CS02 CS01 CS00 W W R R R/W R/W R/W R/W • Leyenda: – WGM (Waveform Generation Mode) permite seleccionar modo PWM – CS (Clock Select) permite especificar el factor de pre-escalado – Los bits COM0 permite habilitar, deshabilitar o invertir las salidas A y B
  • 10. Timer 1 (16 bits) • TCCR1A – Timer/Counter Control Register A COM1A1 COM1A0 COM1B1 COM1B0 -- -- WGM11 WGM10 R/W R/W R/W R/W R R R/W R/W • TCCR1B – Timer/Counter Control Register B ICNC1 IC3S1 -- WGM13 WGM12 CS12 CS11 CS10 W W R R/W R/W R/W R/W R/W • Leyenda: – WGM (Waveform Generation Mode) permite seleccionar modo PWM – CS (Clock Select) permite especificar el factor de pre-escalado – Los bits COM1 permite habilitar, deshabilitar o invertir las salidas A y B
  • 11. Timer 2 (8 bits) • TCCR2A – Timer/Counter Control Register A COM2A1 COM2A0 COM2B1 COM2B0 -- -- WGM21 WGM20 R/W R/W R/W R/W R R R/W R/W • TCCR2B – Timer/Counter Control Register B F0C2A F0C2B -- -- WGM22 CS22 CS21 CS20 W W R R R/W R/W R/W R/W • Leyenda: – WGM (Waveform Generation Mode) permite seleccionar modo PWM – CS (Clock Select) permite especificar el factor de pre-escalado – Los bits COM2 permite habilitar, deshabilitar o invertir las salidas A y B
  • 12. Configuración de opciones • Un registro de HW se modifica como una variable de SW – TCCR2A=5 – Opciones PWM se configuran escribiendo sobre los registros de HW • Para activar/desactivar bits de los registros se usa la macro _BV(pin) donde pin es el nombre del bit que queremos activar. – Se utilizan operadores de bits (& y |) para hacer operaciones AND y OR con el resto de bits de los registros • TCCR2A=BV(COM2A1) activa (pone a 1) el bit COM2A1 del registro TCCR2A • TCCR2A=TCCR2A|BV(COM2A1) activa (pone a 1) el bit COM2A1 del registro TCCR2A y mantiene el valor del resto de bits del registro