Está en la página 1de 12

Introduccin a PWM

Sistemas de Tiempo Real


http://www.arcos.inf.uc3m.es/~infostr
Grupo de Arquitectura y Tecnologa de !omputadores
"AR!#S$
%&': frecuencia y duty cycle
(a t)cnica %&' "Pulse-Width Modulation$ o modulaci*n por
anchura del pulso permite generar ondas cuadradas con una
frecuencia y ciclo de actividad determinada:
+n Arduino ,-# la frecuencia del reloj del sistema es 16Mhz
./0.12/ ciclos "tic3s$ por segundo tiempo de ciclo es ./ ./0.12/ 4 /5.6ns
+s posi7le modificar la frecuencia para que el n8mero de ciclos por segundo sea . por cada +s posi7le modificar la frecuencia para que el n8mero de ciclos por segundo sea . por cada
9:./:35:/;: etc. ciclos de relo< del sistema. +ste =alor se llama factor de pre-escalado.
+l ciclo de actividad "o duty cycle, DC$ representa la anchura del
pulso: cu>nto tiempo de cada onda cuadrada hay pulso "6?$ y cu>ndo
no lo hay "1?$.
@uty cycle
+<emplos de duty cycle:
#tro e<emplo:
analoWrite!pin,DC": es una funci*n de Arduino que escri7e en pin !salida" un
determinado @! o duty cycle
+st> funci*n se implementa como un %&' con una frecuencia fi<a "mediante un factor de preA
escalado de /;$.
%ro7lema: aunque permite modificar el duty cycle: no es posi7le modificar la frecuencia: ya que
el =alor de preAescalado est> fi<o.
Bntroducci*n a %&'
%&' permite generar ondas con diferentes frecuencias y
duty cycles usando ti#ers:
,n timer es un contador soft$are que cuenta ciclos de relo<: el timer usa el
relo< de la !%, "o relo< del sistema$.
+l timer se puede configurar para que solo se incremente cada C ciclos en
lugar de cada ciclo. "siendo C el factor de preescalado$ lugar de cada ciclo. "siendo C el factor de preescalado$
,n timer cuenta desde 1 hasta 'AC:
'AC es el m>Dimo que puede almacenar: y depende del n8mero de 7its del timer:
Si el timer usa n 7its cuenta de 1..52nA.
+<emplo con n49
1
566
Timer "E.$
tic3. tic3566
%recuencia4.tic3 por c/factor preAescalado
Si usamos preAescalado49: en un perodo hay "./0.12//9$0566
Bntroducci*n a %&'
%&' permite generar ondas con diferentes frecuencias y
duty cycles usando ti#ers:
+l duty cycle se modifica haciendo uso de un reistro de co#paracin&
,n registro de comparaci*n almacena un =alor comprendido entre 1 y 'AC
!ada registro de comparaci*n esta asociado a una salida digital "%&'$.
%or e<emplo: en Fast %&': si el =alor del contador del timer es menor que el registro de %or e<emplo: en Fast %&': si el =alor del contador del timer es menor que el registro de
comparaci*n: la salida emite 6 = "=alor .$. +n caso contrario emite 1 = "=alor 1$.
+<emplo: un timer de n49 7its y =alor de comparaci*n 52n/5A. genera un @!461G
1
566
Timer "E.$
.5H
Reg. comparaci*n
Salida generada
@! es 61G
'odos 7>sicos de %&': Fast %&'
%ast PWM&
+l timer cuenta de 1 a 'AC y =uel=e a 1.
(a salida generada toma el =alor . "#-$ cuando el timer es igual a 1
(a salida generada toma el =alor 1 "#FF$ cuando el =alor del timer alcanIa el =alor del
registro de comparaci*n
566
1
566
Reg. comparaci*n
Salida generada
'odos 7>sicos de %&': Fase correcta
Phase-Correct PWM&
+l timer cuenta de 1 a 'AC y decrece hasta 1.
(a salida generada toma el =alor 1 "#FF$ cuando el timer alcanIa el =alor del registro de
comparaci*n durante la cuenta hacia adelante "1..'AC$
(a salida generada toma el =alor . "#-$ cuando el timer alcanIa el =alor del registro de
comparaci*n durante la cuenta hacia atr's "'AC..1$
1
566
Reg.
comparaci*n
Salida generada
Timers de Arduino
Arduino tiene ( )i#ers ")i#er*, )i#er1, )i#er+$:
!ada timer tiene + reistros de ,W que permiten configurar las
opciones de %&'
)CC-./ y )CC-.0 ".1*,1,+$ dependiendo del timer usado
!ada timer tiene otros + reistros de ,W que act8an como registros !ada timer tiene otros + reistros de ,W que act8an como registros
de comparaci*n:
2C-./ y #C-.0 ".1*,1,+$ dependiendo del timer usado
!ada timer tiene + salidas que pueden conectarse a dos salidas PWM
de /rduino&
)i#er * salidas 6 !/" y 3 !0"
)i#er 1 salidas 4 !/" y 1* !0"
)i#er + salidas 11 !/" y ( !0"
Timer 1 "9 7its$
)CC-*/ 5 )i#er6Counter Control -eister /
)CC-*0 5 )i#er6Counter Control -eister 0
!#'1A. !#'1A1 !#'1J. !#'1J1 AA AA &G'1. &G'15
R/& R/& R/& R/& R R R/& R/&
)CC-*0 5 )i#er6Counter Control -eister 0
7eyenda&
&G' "&a=eform Generation 'ode$ permite seleccionar modo %&'
!S "!loc3 Select$ permite especificar el factor de preAescalado
(os 7its !#'1 permite ha7ilitar: desha7ilitar o in=ertir las salidas A y J
F1!1A F1!1J AA AA &G'15 !S15 !S1. !S11
& & R R R/& R/& R/& R/&
Timer . "./ 7its$
)CC-1/ 5 )i#er6Counter Control -eister /
)CC-10 5 )i#er6Counter Control -eister 0
!#'.A. !#'.A1 !#'.J. !#'.J1 AA AA &G'.. &G'.1
R/& R/& R/& R/& R R R/& R/&
)CC-10 5 )i#er6Counter Control -eister 0
7eyenda&
&G' "&a=eform Generation 'ode$ permite seleccionar modo %&'
!S "!loc3 Select$ permite especificar el factor de preAescalado
(os 7its !#'. permite ha7ilitar: desha7ilitar o in=ertir las salidas A y J
B!-!. B!3S. AA &G'.3 &G'.5 !S.5 !S.. !S.1
& & R R/& R/& R/& R/& R/&
Timer 5 "9 7its$
)CC-+/ 5 )i#er6Counter Control -eister /
)CC-+0 5 )i#er6Counter Control -eister 0
!#'5A. !#'5A1 !#'5J. !#'5J1 AA AA &G'5. &G'51
R/& R/& R/& R/& R R R/& R/&
)CC-+0 5 )i#er6Counter Control -eister 0
7eyenda&
&G' "&a=eform Generation 'ode$ permite seleccionar modo %&'
!S "!loc3 Select$ permite especificar el factor de preAescalado
(os 7its !#'5 permite ha7ilitar: desha7ilitar o in=ertir las salidas A y J
F1!5A F1!5J AA AA &G'55 !S55 !S5. !S51
& & R R R/& R/& R/& R/&
!onfiguraci*n de opciones
,n registro de K& se modifica como una =aria7le de S&
)CC-+/13
#pciones %&' se configuran escri7iendo so7re los registros de K&
%ara acti=ar/desacti=ar 7its de los registros se usa la macro %ara acti=ar/desacti=ar 7its de los registros se usa la macro
809!pin" donde pin es el nom7re del 7it que queremos
acti=ar.
Se utiliIan operadores de :its "L y M$ para hacer operaciones /;D y
2- con el resto de 7its de los registros
)CC-+/109!C2M+/1" acti=a "pone a .$ el 7it !#'5A. del registro T!!R5A
)CC-+/1)CC-+/<09!C2M+/1" acti=a "pone a .$ el 7it !#'5A. del registro
T!!R5A y mantiene el =alor del resto de 7its del registro

También podría gustarte