Sie sind auf Seite 1von 14

D|seo con DSIC30I4013 en |engua[e M|kro8as|cro for DSIC Docente: Ing.

Roger Guachalla Narvez


xoroger@yahoo.es
kAC1ICA 11: ulseno de llltros ulgltales en Mlkro8aslc lor dslC
1. 0b]etivos:
kIMLkA Ak1L
8eallzar el dlseno de un llltro dlgltal IIk asa A|to usando la herramlenta 'lllter ueslgner 1ool'
lncorporada en el compllador M|kro8as|c ro lor dslC y slmular su lunclonamlento en 8C1LuS
SLGUNDA Ak1L
lmplementar y comprobar el lunclonamlento, en protoboard, de un llltro dlgltal IIk asa 8a[o,
codlllcado en M|kroC usando el procesador dsIC30I4013 en
2. iundamento 1eorico:
k1M5kA Ak15
Ll termlno llL18C hace relerencla a cualquler slstema que dlscrlmlna lo que pasa a su traves de acuerdo
con alguno de los atrlbutos de la entrada.
ue acuerdo con esta dellnlcln tan general podemos tener llltros de agua, llltros de partlculas de alre,
llltros de acelte etc. Ln uS nos conclernen los llltros dlgltales. Lstos llltros dlscrlmlnarn las senales de
acuerdo con sus caracterlstlcas lrecuenclales. Lste tlpo de llltros tlene como entrada una secuencla
dlscreta y como sallda otra secuencla dlscreta, que habr experlmentado clertas varlaclones en amplltud
y/o lase dependlendo del llltro empleado.
vamos a conslderar slstemas llneales lnvarlante temporales (Ll1) caracterlzados por una ecuacln en
dllerenclas con coellclentes constantes de la lorma:
Su luncln de translerencla es:
Los coellclentes a
k
y b
k
determlnan la respuesta en lrecuencla del llltro. una senal x(n) que pase a traves
del slstema tendr una sallda ?(w) = P(w)x (w) , slendo P(w) la respuesta en lrecuencla del llltro
conslderado.
Caracteristicas de los 1iltros 105AL5S
Los llltros suelen claslllcarse segun sus caracterlstlcas en el domlnlo lrecuenclal como:
asa 8a]os
asa Altos
asa 8anda
kechaza 8anda
asa 1odo
1al como se muestra en las llguras anterlores, estos llltros ldeales tlenen ganancla constante
(generalmente unltarla) en la banda de paso y ganancla cero en la banda ellmlnada. Ctra caracterlstlca
lmportante de los llltros ldeales es su respuesta de lase llneal.
Caracteristicas de un 1iltro k5AL
S560N0A Ak15
iiltros i1k
Ll dlseno de los llltros ll8, es relatlvamente slmple y utlllza estructuras ya dellnldas para cada tlpo de
llltro. Los llltros pueden ser de clnco naturalezas: asa ba[as, pasa altas, pasa bandas, rechaza banda, y
multl banda. ara el tratamlento de los llltros se debe tener presente las slgulentes conslderaclones:
Los clculos de los llltros se hacen en radlanes y no en herclos.
La lrecuencla de muestreo en herclos ls, es equlvalente a una lrecuencla en rad/seg de 2n.
La mxlma lrecuencla tratada por los llltros es ls/2, o n 8adlanes.
La relacln que exlste entre radlanes y herclos es: W = 2nl, y l = W/2n.
Las lrecuenclas de corte de los llltros se denotan como Wc, y lc.
La lrecuencla de corte se calcula como Wc = 2 n lc / ls.
La banda de translcln del llltro se denota como dW en rad/seg y dl en herclos.
Ll orden de los slstemas ll8 se denota como M.
Se recomlenda usar un numero lmpar para M.
iiltro asa ba]os
Los llltros pasa ba[as se caracterlzan por tener una lrecuencla de corte a partlr de la cual las lrecuenclas
lnlerlores son permltldas, y las lrecuenclas superlores son atenuadas. La luncln de translerencla h(n),
para este llltro es:
Ecuacin I.
La respuesta espectral de este llltro de orden 7, en escala llneal es la slgulente:
3. Herramienta de 0iseo de iiltros 0igitales de Mikroe
La herramlenta 'lllter ueslgner 1ool' permlte el dlseno slmple y rpldo de llltros dlgltales. Ln la llgura se
muestra el acceso a esta herramlenta a traves del menu prlnclpal:
Lxlsten dos clases de llltros dlgltales. Los de 8espuesta al lmpulso llnlta (ll8) y los de 8espuesta al lmpulso
lnllnlta (ll8).
Ambas clases tlenen sus venta[as y desventa[as. Cuando se dlsena un llltro dlgltal, la prlmera tarea es
selecclonar la clase de llltro a usar.
Venta[as y desventa[as de |os f||tros IIk
venta[as uesventa[as
La condlcln de establlldad se cumple slempre ara una caracterlstlca de amplltud dada, el llltro
ll8 tlene un orden conslderablemente mayor
comparado con un llltro ll8 (mayor comple[ldad)
La respuesta en lase es llneal
Venta[as y desventa[as de |os f||tros IIk
venta[as uesventa[as
ara una caracterlstlca de amplltud dada, el llltro ll8
tlene un orden conslderablemente menor
comparado con un llltro ll8 (menor comple[ldad)
La condlcln de establlldad no se cumple slempre. A
medlda que el orden del llltro ll8 se lncrementa, la
probabllldad de que el llltro se haga lnestable se
lncrementa
La respuesta en lase no es llneal
I||tros IIk
Las propledades bslcas de los llltros ll8 son:
Crden del llltro relatlvamente alto
8espuesta en lase llneal
Lstabllldad
Ll dlseno de un llltro ll8 empleza abrlendo la herramlenta 'lllter ueslgner 1ool'. Luego se debe selecclonar
la opcln armetros ll8 en el lado lzqulerdo:
Dev|ce setup se lntroducen la lrecuencla de relo[ y el modelo dslC a usar
Input S|gna| se lntroducen la lrecuencla de muestreo y el canal Au del procesador.
I||ter Setup se lntroducen el tlpo de llltro (asa ba[o, asa alto, asa 8anda o 8echaza banda), el orden del
llltro (sl se ellge la luncln de ventana de kalser, el orden del llltro es selecclonado automtlcamente) y la
luncln ventana a usar (La atenuacln de la banda de rechazo y la selectlvldad del llltro dependen de la
luncln ventana).
Wpass lrecuencla de paso del llltro
Cuando todos estos parmetros han sldo lntroducldos, el dlseno del llltro se reallza slmplemente
selecclonando una de las opclones: ll8 Wlndow, ll8 lrecuency, Source Code (Cdlgo luente en
Mlkro8aslc, MlkroC y Mlkro ascal) y Schematlcs (ulagrama Lsquemtlco)
I||tros IIk
Las propledades bslcas de los llltros ll8 son:
Crden del llltro ba[o
8espuesta en lase no llneal
lnestabllldad potenclal
Noto: cuooJo se uso f|lttos llk Je otJeo moyot o J, es |mpottoote cooocet ue estos soo muy seos|t|vos o
los efectos Je lotqo Je polobto (wotJleoqbt) y ue se pueJeo totoot |oestobles. los f|lttos llk Je otJeo
moyot o J, ootmolmeote se Jescompooeo eo secc|ooes ms peueos (sequoJo y pt|met otJeo) y lueqo
soo cooectoJos eo coscoJo o potolelo.
Ll dlseno de un llltro ll8 empleza abrlendo la herramlenta 'lllter ueslgner 1ool'. Luego se debe selecclonar
la opcln armetros ll8 en el lado lzqulerdo:
Dev|ce setup se lntroducen la lrecuencla de relo[ y el modelo dslC a usar
Input S|gna| se lntroducen la lrecuencla de muestreo y el canal Au del procesador.
I||ter Setup se lntroducen el tlpo de llltro (asa ba[o, asa alto, asa 8anda o 8echaza banda), el orden del
llltro y la luncln ventana a usar (La atenuacln del banda de rechazo y el metodo de dlseno a utlllzar.
Los metodos de dlseno dlsponlbles son:
1. 8utterworth: Caracterlstlca de amplltud mxlmamente plana en lrecuencla 0Pz. La caracterlstlca de
amplltud es una curva suave.
2. Chebyshev l: Caracterlstlca de amplltud de rlzado mlnlmo unllorme en la banda de paso
3. Chebyshev ll: Conocldo tamblen como llltro Chebyshev lnverso. La caracterlstlca de amplltud es
mxlmamente plana en lrecuencla 0Pz (al lgual que 8utterworth). La caracterlstlca de amplltud posee
varlacln de amplltud mlnlma en el rango de banda de rechazo.
uependlendo en el metodo de dlseno selecclonado y el tlpo de llltro ll8, es posslble lngresar los
correspondlentes parmetros, donde el restante de los parmetros ser calculado automtlcamente. Sl
se selecclona un llltro asa banda y el metodo Chebyshev l, los parmetros a lngresar son:
Mxlma atenuacln en el rango de banda de paso Ap y las lrecuencla llmltes de banda de paso Wp1 y
Wp2.
Cuando todos estos parmetros han sldo lntroducldos, el dlseno del llltro se reallza slmplemente
selecclonando una de las opclones:
ll8 rototype
ll8 lrecuency
Source Code (Cdlgo luente en Mlkro8aslc, MlkroC y Mlkro ascal)
Schematlcs (ulagrama Lsquemtlco)
k1M5kA Ak15
4. 5]emplo de 0iseo usando 'iilter 0esigner 1ool'
i1L1k0 11k ASA AL10 05 0k05N 3
0escripcion
rocesador dslC30l4013
lrecuencla de relo[ 80 MPz
llltro ulgltal ll8
asa AL1C
Crden 3
1opologla Chebyshev tlpo ll
As = 60 d8 , Ap =1 d8
Ws = 4000 Pz , Wp = 4100 Pz
lrecuencla de corte de 4000Pz
lrecuencla de muestreo de 20kPz.
0iagrama 5squematico
Codigo 1uente auto-generado en Mikro8asicro 1or ds1C
' 1hs code was generated by 11ter desgner too1 by mkroL1ektronka
' 0ate,1me: 1S,11,2012 12:20:26 p.m.
' Support n1o: http:,,www.mkroe.com
' 0evce setup:
' 0evce name: 20I4012
' 0evce c1ock: 080.000000 Muz
' Samp1ng Irequency: 20000 uz
' I1ter setup:
' I1ter knd: 118
' I1ter type: ughpass 11ter
' I1ter order: 2
' 0esgn method: Chebyshev type 11
program 118_1est
const
8uIIL8_S12L = 8
I1l1L8_080L8 = 2
C0LII_8 as wordjI1l1L8_080L8+1}={0x2682, 0x87CL, 0x4822, 0x0940, 0x0000)
C0LII_^ as wordjI1l1L8_080L8+1}={0x2000, 0x448^, 0x22LI, 0x0079)
SC^lL_8 = S
SC^lL_^ = -2
dm
1oadn as sbt at l^1I1_bt ' 0^C 1oad pn
1oadn0r as sbt at 181SI1_bt ' 0^C 1oad pn
csn as sbt at l^1I0_bt ' 0^C CS pn
csn0r as sbt at 181SI0_bt ' 0^C CS pn
next as word ' 1nput bu11er ndex
nput_ as wordj8uIIL8_S12L} ydata ' 1nput bu11er, has to be n Y data space due to 0S engne
requrements
output as wordj8uIIL8_S12L} ydata ' 0utput bu11er, has to be n Y data space due to 0S engne
requrements
' 1hs s ^0C nterrupt hand1er.
' ^na1og nput s samp1ed and the va1ue s stored nto nput bu11er.
' 1nput bu11er s then passed through 11ter.
' Ina11y, the resu1tng output samp1e s sent to 0^C.
sub procedure ^0C11nt{) org 1v1_^008_^0C1u1L88u1 ' ^0C nterrupt hand1er
dm Currentva1ue as word
nput_jnext} = ^0C8uI0 ' Ietch samp1e
Currentva1ue = 118_8adx{ SC^lL_8, '
SC^lL_^, '
C0LII_8, ' b coe11cents o1 the 11ter
C0LII_^, ' a coe11cents o1 the 11ter
I1l1L8_080L8+1, ' I1ter order + 1
nput_, ' 1nput bu11er
8uIIL8_S12L, ' 1nput bu11er 1ength
output, ' 1nput bu11er
next) ' Current samp1e
outputjnext} = Currentva1ue
next = {next+1) and {8uIIL8_S12L-1) ' next = {next + 1) mod 8uIIL8_S12L
csn = 0 ' CS enab1e 1or 0^C
S118uI = 0x2000 or Currentva1ue ' Wrte Currentva1ue to 0^C {$2 s requred by 0^C)
wh1e {S118I_bt) ' Wat 1or S1 modu1e to 1nsh wrte operaton
nop ' Wat 1or S1 modu1e to 1nsh wrte
wend
1oadn = 0 ' load data n 0^C
de1ay_us{2)
1oadn = 1
csn = 1 ' CS dsab1e 1or 0^C
^01I_bt = 0 ' C1ear ^011I
end sub
' 1hs s 1mer1 nterrupt hand1er.
' 1t s used to start ^0C at
' perodc nterva1s.
sub procedure 1mer11nt{) org 1v1_^008_111u1L88u1 ' 1mer1 nterrupt hand1er
1 {00uL_bt) then ' 11 ^0C s not busy
S^M_bt = 1 ' Start new samp1e
end 1
l^10 = 0810 xor 0xIIII ' You can put osc11oscope on 0810 to measure samp1ng 1requency
111I_bt = 0 ' C1ear 1M811I
end sub
' Man program starts here.
' Irst1y, hardware perphera1s are nta1zed and then
' the program goes to an n1nte 1oop, watng 1or nterrupts.
man:
181S0 = 0
' 0^C setup
1oadn0r = 0 ' l0^0 pn
csn0r = 0 ' CS pn
csn = 1 ' Set CS to nactve
1oadn = 1 ' Set l0^0 to nactve
' S1 setup
S11_1nt_^dvanced{_S1_M^S1L8, _S1_16_811,_S1_8LSC^lL_SLC_1, _S1_8LSC^lL_81_1,
_S1_SS_01S^8lL, _S1_0^1^_S^MlL_M100lL, _S1_Clk_10lL_u16u,
_S1_^C11vL_2_10lL)
next = 0 ' 1nta1ze bu11er ndex
vector_Set{nput_, 8uIIL8_S12L, 0) ' C1ear nput bu11er
vector_Set{output, 8uIIL8_S12L, 0) ' C1ear output bu11er
181S8 = 0xIIII ' use 0818 1or nput sgna1
^0C0u1 = 0x00L2 ' ^uto-stop samp1ng, unsgned nteger out
^0C0u2 = 0x0000
^0C0u2 = 0x021^ ' Samp1ng tme= 2*1ad, mnmum 1ad se1ected
^0CI6 = 0x0000 ' Con1gure 0818 as ^0C nput port
^0CuS = 0x000^ ' Samp1e nput on 8810
^0CSSl = 0 ' uo nput scan
^0CI6 = 0x0000 ' Con1gure 0818 as ana1og ^0C nput port
' 1nterrupts setup
1IS0 = 0 ' C1ear nterrupt 11ags
1IS1 = 0 ' C1ear nterrupt 11ags
1IS2 = 0 ' C1ear nterrupt 11ags
uS101S_bt = 1 ' uested nterrupts 01S^8lL0
1u1C0u2 = 0
111L_bt = 1 ' 1mer1 and
^01L_bt = 1 ' ^0C nterrupts Lu^8lL0
1110_bt = 1 ' 1mer1 nterrupt prorty 1eve1 = 1
^011_bt = 1 ' ^0C nterrupt prorty 1eve1 = 1
' 1mer1 setup
81 = 0x02L8 ' Samp1ng ~= 20000 kuz. va1ue o1 81 s dependent on c1ock
10u_bt = 1 ' 1mer1 0u, nterna1 c1ock ICY, presca1er 1as1
^00u_bt = 1 ' ^0C 0n
S^M_bt = 1 ' Start Samp1ng
wh1e {18uL) ' 1n1nte 1oop,
nop ' wat 1or nterrupts
wend
end.
S560N0A Ak15
5. 5]emplo de 0iseo i1L1k0 i1k ASA 8Al0
5]emplo de diseo para un 1iltro asa 8a]os i1k
Se reallza el e[emplo de dlseno de un llltro aso 8a[os ll8, lmplementando en el procesador dslC30l4013,
con una lrecuencla de 40MPz como relo[.
ara llnes prctlcos reales la lrecuencla de 40MPz, se logra utlllzando un crlstal de 10MPz, y actlvando la
luente de relo[ PS-LL en el dslC. Lst opcln lmplementa lnternamente en el dslC, un LL que
multlpllca la lrecuencla externa por un lactor de cuatro, y el resultado es usado como luente de relo[ para
el procesador del mlcrocontrolador.
0iagrama 5squematico
0atos de diseo
1lpo: ll8
asa 8a[o de orden 17
lrecuencla de muestreo ls = 1291,32kPz.
lrecuencla de corte lc = 130Pz.
ventana 8ectangular.
Calculos
Se determlna la lrecuencla de corte dlgltal:
Wc = 2 n lc / ls
= 2 n 130 / 1291,32
= 0,72983
usando la Lcuacln l, del lundamento terlco, se deslgnan los coellclentes de la luncln h(n):
h(-8)=-0.0171033387963417
h(-7)=-0.0419431379233366
h(-6)=-0.0301329294124473
h(-3)=-0.0309497847316783
h(-4)=0.0173343019383181
h(-3)=0.0864308262744764
h(-2)=0.138173992108178
h(-1)=0.212237063988464
h(0)=0.232320416318186
h(1)=0.212237063988464
h(2)=0.138173992108178
h(3)=0.0864308262744764
h(4)=0.0173343019383181
h(3)=-0.0309497847316783
h(6)=-0.0301329294124473
h(7)=-0.0419431379233366
h(8)=-0.0171033387963417
Se debe tener presente que para llnes de programacln los valores de n no pueden ser negatlvos, por
esta razn se debe lnlclar el vector en 0, y para usarlo en el cdlgo en lengua[e C.
Codigo 1uente MikroC ro 1or ds1C
#de1ne M 17
,,Iuncon de tras1erenca hjn}
const 11oat hj}=
{
-0.017102S28796S417, ,,h{0)
-0.0419421S79222266, ,,h{1)
-0.0S0122929412447S, ,,h{2)
-0.0209497847S1678S, ,,h{2)
0.017S24S019S82181, ,,h{4)
0.0864208262744764, ,,h{S)
0.1S8172992108178, ,,h{6)
0.21222706S988464, ,,h{7)
0.222220416218186, ,,h{8)
0.21222706S988464, ,,h{9)
0.1S8172992108178, ,,h{10)
0.0864208262744764, ,,h{11)
0.017S24S019S82181, ,,h{12)
-0.0209497847S1678S, ,,h{12)
-0.0S0122929412447S, ,,h{14)
-0.0419421S79222266, ,,h{1S)
-0.017102S28796S417 ,,h{16)
),
,,0ec1aracon de vara1es
11oat x0, y0,
11oat xjM},
unsgned nt YY,
unsgned short ,
,,0ec1aracon de 1a 1uncon de nterrupcon
vod nterrupt { vod )
{
1{ 1u1C0u.I2 )
{
1M80l=12S,
,,1mer0 con perodo de 774.4 useg
,, Is = 1291.22 uz
,,Corrmento contnuo de 1a sea1 xjn}
1or{ =M-1, !=0, -- )
xj}=xj-1},
,,^dquscon de una muestra de 10 bts en, xj0}
xj0} = {11oat){^0C_8ead{12)-S12.0),
,,Convo1ucon contnua
y0 = 0.0, 1or{ =0, <M, ++ ) y0 += hj}*xj},
,,8econstruccon de 1a sea1 en 10 bts
YY = {unsgned nt){y0+S12.0),
l^18 = YY,
1u1C0u.I2=0,
)
)
vod man{ vod )
{
^0CI6= 0xIIII,
,,1nco de1 puerto 8 como sa1da
181S8 = 0x0800,
0818 = 0,
,,Se con1gura e1 11ML8 0, su nterrupcon
1u1C0u = 0b10100000,
10C0u = 0b11000101,
wh1e{1) ,,8uc1e n1nto
{
)
)
6. rocedimiento 5xperimental en Laboratorio
{1ro lirmo)
kIMLkA Ak1L
usando |a herram|enta 'lllter ueslgner 1ool', reallzar el dlseno de un llltro ulgltal con las slgulentes
caracterlstlcas:
rocesador dsIC33II16G304
1lpo ll8
asa Alto
8utterworth
Crden 6
lrecuencla de corte de 2kPz
Ws=2000 Pz, Wp=2100 Pz, As=60 d8, Ap=1 d8
lrecuencla de muestreo de 8kPz
S|mu|ar e| c|rcu|to en kC1LUS y comprobar su func|onam|ento
{2do lirmo)
SLGUNDA Ak1L
Armar en protoboard el clrculto del llltro dlgltal ll8 asa 8a[o y comprobar su lunclonamlento
7. 1n1orme 1mpreso
kIMLkA Ak1L
l. Comentar DL1ALLADAMLN1L el Cdlgo luente Auto-Cenerado para el llltro llltro ulgltal pasa alto
SLGUNDA Ak1L
ll. 8eallzar el ulAC8AMA uL lLu!C del Cdlgo luente para el llltro llltro ulgltal pasa ba[o
lll. 1raba[o de lnvestlgacln: CCNVLkSCk DIGI1AL-ANLCGC MC4921"
Motet|ol 8|bl|oqtf|co o Je lotetoet lmpteso usoJo poto el tesumeo
8|bl|oqtoflo o lueotes Je u|tecc|ooes w8
k5uMN (esct|to o mooo) Je pot lo meoos l pqinos
lv. 1raba[o de lnvestlgacln: IN1LkIASL SLkIAL SI"
Motet|ol 8|bl|oqtf|co o Je lotetoet lmpteso usoJo poto el tesumeo
8|bl|oqtoflo o lueotes Je u|tecc|ooes w8
k5uMN (esct|to o mooo) Je pot lo meoos l pqinos
v. Concluslones

Das könnte Ihnen auch gefallen