Este documento describe los pasos para programar un filtro digital en un dsPIC30F2010. Incluye agregar archivos de cabecera necesarios, crear un proyecto en MPLAB X, agregar el código fuente que implementa el filtro, y configurar el ADC, timer y otros periféricos. El objetivo es recrear el filtro pasabajas de 2do orden estudiado previamente y comparar su funcionamiento después de programar el dsPIC30F2010.
Este documento describe los pasos para programar un filtro digital en un dsPIC30F2010. Incluye agregar archivos de cabecera necesarios, crear un proyecto en MPLAB X, agregar el código fuente que implementa el filtro, y configurar el ADC, timer y otros periféricos. El objetivo es recrear el filtro pasabajas de 2do orden estudiado previamente y comparar su funcionamiento después de programar el dsPIC30F2010.
Este documento describe los pasos para programar un filtro digital en un dsPIC30F2010. Incluye agregar archivos de cabecera necesarios, crear un proyecto en MPLAB X, agregar el código fuente que implementa el filtro, y configurar el ADC, timer y otros periféricos. El objetivo es recrear el filtro pasabajas de 2do orden estudiado previamente y comparar su funcionamiento después de programar el dsPIC30F2010.
Tema: Programacin de Filtro Digital en dsPIC30F2010
Conocer el entorno de programacin propio del dsPIC30F2010 Realizar la programacin del filtro digital que se realiz en la gua 5 Comproar el funcionamiento del sistema Realizar un camio en el tipo de filtro ! sus coeficientes por medio de "#$%#& 'escargar el filtro camiado ! comproar su funcionamiento 1 entrenador ($ dsPIC 30F2010 )1 1 Programador de PICs PIC*it 2 1 cale us 1 generador de se+ales 1 fuente de alimentacin de 12) 1 osciloscopio 1 Computadora con "P%#&, soft-are PIC.it 2 ! "#$%#& con F'#$ools (n la presente pr/ctica se 0ar/ el procedimiento de programacin del dsPIC30F2010, en la gua 1 se realiz la comproacin del funcionamiento de un filtro digital de orden 31, para programar dic0o filtro es necesario tener instalado el "P%#& para este caso la 2ersin 34354 Parte 1. Creacin de un programa para dsPIC30F2010 14 #ra el "P%#& 3435 presente en su computadora puede ser que e6ista un acceso directo en el escritorio, de lo contrario 2a!a a Inicio7$odos los Programas7"icroc0ip7"P%#& 234357"P%#& I'(, aparecer/ luego la siguiente 2entana8 Facultad8 Ingeniera4 (scuela8 (lectrnica4 #signatura8 9e+ales ! 9istemas 'iscretos4 %ugar de e:ecucin8 %aoratorio de #utomatizacin ;(dificio 3, 1a planta<4 Objetivos especficos Materiales y equipo Procedimiento Seales y Sistemas Discretos. Gua 10 2 Figura 1 !entana de MP"#$ 24 Para crear un nue2o pro!ecto seleccione del men= Pro:ect7Pro:ect >izard Figura 2 %lecci&n del Project 'i(ard 34 '? clic en siguiente en la pantalla de ien2enida ! posteriormente aparecer/ una 2entana que permitir/ elegir el tipo de PIC a programar, seleccione el dsPIC 30F2010 Figura 34 9eleccin del dispositi2o a programar4 54 '? clic en siguiente ! aparecer/ la 2entana de la siguiente figura, en ella seleccione en Seales y Sistemas Discretos. Gua ) @#cti2e $oolsuiteA "icroc0ip C30 $oolsuite ! en @toolsuite contentsA "P%#& C30 Compiler4 Figura 54 9eleccin de la $oolsuite para compilar el programa4 54 '? clic en siguiente ! ponga el nomre del pro!ecto puede utilizar @FiltrodsPICA gu/rdelo en una carpeta en "is documentos, puede nomrar a la carpeta de la misma manera4
Figura 54 Bomre del pro!ecto a guardar4 14 (n la siguiente pantalla se seleccionan los arc0i2os a incluir en el pro!ecto4 Para facilitar la tarea de inicializacin ! preparacin del pro!ecto, el "P%#& C30 dispone de 2arios arc0i2os que al incluirlos en el pro!ecto permiten traa:ar con nomres simlicos, e indican al enlazador cu/l es la organizacin de la memoria del dispositi2o en cuestin, genera rutinas autom/ticas de reset, etc, (stos arc0i2os a agregar son los siguientes8 C8 C#rc0i2os de programaC"icroc0ipC"P%#& C30CsupportCgldCp30f20104gld C8 C#rc0i2os de programaC"icroc0ipC"P%#& C30CsupportCincCp30f20104inc Seales y Sistemas Discretos. Gua 10 * Da! que dar clic en la letra que aparece antes de la ruta del arc0i2o 0asta que aparezca una @CA que indica que 0a! que copiar los arc0i2os al directorio del pro!ecto4 Figura 14 agregar arc0i2os al pro!ecto E4 '? clic en el "en= File7 Be- ! aparecer/ un cuadro 2aco para comenzar a editar el arc0i2o fuente o programa para el dsPIC, inmediatamente seleccione File79a2e #s ! ponga el nomre FiltrodsPIC4c, 0asta aqu el arc0i2o aun no est/ agregado al pro!ecto4 Para agregar el arc0i2o fuente al pro!ecto en la parte izquierda de la pantalla est/ una carpeta llamada 9ource, d? clic derec0o en ella ! seleccione #dd Files ! del siguiente cuadro de di/logo seleccione el arc0i2o FiltrodsPIC4c que 0a creado anteriormente4 Figura E4 #+adir el arc0i2o de cdigo fuente4 34 (n la carpeta Deader Files 0aga el mismo procedimiento que con la carpeta 9ource Files, Seales y Sistemas Discretos. Gua + con el arc0i2o de caecera p30F201040 que se encuentra en la siguiente ruta8 C8 C#rc0i2os de programaC"icroc0ipC"P%#& C30CsupportC0Cp30f201040 F4 'igite el siguiente listado de programa en el arc0i2o 2aco que cre ;FiltrodsPIC4c<, este corresponde a la m/quina de c/lculo del filtro pasaa:as, de 2.Dz estudiado en la gua 14 #include<p30f2010.h> #include<libpic30.h> #include<stdio.h> #include<dsp.h> #include<timer.h> #include<adc10.h> #include "fdacoefs.h" ////////////////////////////////////////////////// // Bits de configuracin //atch!og apagado //"he#ueo de relo$ apagado% &odo "ristal ' ())* //+eset habilitado% B,+ apagado //proteccin de codigo apagada -.,/"0"/-./"&-,.. 1 23-())*45 -.!30!3-,..45 -.B,+(,+0(B,+-,.. 1 &")+-6745 -.8/0",!6-(+,3-,..45 ////////////////////////////////////////////////// // definiciones para a9uda a calculos de retardos segun 'tal de :.32:&;< #define .,/" :3:2000)) #define ."= 0.,/"/>4 #define milis 0."=/1000)4 #define micros 0."=/1000000))4 ////////////////////////////////////////////////////// #define "iclo3raba$o ,"1+/ int 2?32@ A BC5 int 2(?10@ABC5 int (+,& A 05 int = A 05 int ma'A1023/25 int minA1023/25 unsigned int resultado A 05 Doid "onf3imer045 Doid "onfE!"045 Doid "onf(&045 Doid "onfFnt045 int E!",G A 05 int 6++,+ A 05 int i A 05 int $ A 05 Doid --attribute--00--interrupt--44 -31Fnterrupt0Doid4 B //interrupcin de 3F&6+1 cada 3sA1/.sA1/1102H segundos //se reali<a conDersion de E!" con pIriodo constante. Seales y Sistemas Discretos. Gua 10 , rite3imer10045 F./0bits.31F. A 05 if0E!",G4B 6++,+ A 15 C elseB 6++,+ A 05 E!",G A 15 resultado A +eadE!"100045 "onDertE!"10045 C //reset de los Dalores min 9 ma' //cada 0.2H segundos $JJ5 if0$>2:HK4B ma'AH115 minAH115 $A05 C C int main0Doid4B //configuracion inicial 3+F/! A 05 3+F/6 A 05 //timer "onf3imer045 //E!" "onfE!"045 //(& "onf(&045 for0i A 05 iJJ5 i<B)4 2?i@ A 05 Lhile014B if0E!",G4B //si se interrumpe por lectura de 3F&6+1 J lectura de E!" calcular(romedio045 //corrimiento de datos de entrada //llamese elementos de memoria for 0iA315 i>05 iMM4 2?i@A2?iM1@5 2?0@A0resultado>>24M(+,&5 // =ANector!ot(roduct0B)% B% 245 //producto punto B 9 2 "iclo3raba$o A 0=J(+,&4 1 2HH5 //a$uste del offset //calculo de salida reali<ado E!",G A 05 C C Seales y Sistemas Discretos. Gua - C Doid "onf3imer04B //configuracin de timer M muestreo a 1102H;< "onfigFnt3imer1031-F73-(+F,+-1 1 31-F73-,745 rite3imer10045 ,pen3imer1031-,7 1 31-8E36-,.. 1 31-F!)6-/3,( 1 31-(/-1-1 1 31-/=7"-623-,.. 1 31-/,O+"6-F73% 133H45 C Doid "onfE!"04B //canal 0 M auto sample M modo manual M E70 Dersus MNref E!",71 A 0b00100000000001115 E!",72 A 0'00005 E!",73 A 0'01*05 E!";/ A 0'00005 E!(".8 A 0'...65 E!",71bits.E!,7 A 15 C Doid "onf(&04B (+2 A 0'..5 //(eriodo de * bits ,"1+/ A (+2>>15 //"iclo de traba$o inicial al H0P ,"1+ A ,"1+/5 ,"1",7 A 0'020K5 //(& fault pin deshabilitado M 3F&6+ 2 //configuracion de 3F&6+2 32",7 A 0'E0005 C Doid calcular(romedio04B if0resultado>ma'4 ma' A resultado5 //registro de ma'imo if0resultado<min4 min A resultado5 //registro de minimo (+,&A0ma'Jmin4>>35 //promedio 9 truncado a * bits C %istado 14 Cdigo en CGG de la m/quina para el filtro digital 104 Hser2e las primeras lneas del arc0i2o fuente, 0acen referencia a otros arc0i2os a agregar como caeceras, en la carpeta Deader Files 0ar/ tami?n que agregarlos al pro!ecto oser2e la siguente tala para agregarlos como en el procedimiento 3 ! la ruta donde encontrar estos arc0i2os #include<libpic30.h> C8 C#rc0i2os de programaC"icroc0ipC"P%#& C30CsupportC0Clipic3040 #include<stdio.h> C8 C#rc0i2os de programaC"icroc0ipC"P%#& C30CincludeCstdio40 #include<dsp.h> C8C#rc0i2os de programaC"icroc0ipC"P%#&C30CsupportC0Cdsp40 #include<timer.h> C8C#rc0i2os de programaC"icroc0ipC"P%#&C30CsupportC0Cperip0eralI30FI25DI33FCtimer40 #include<adc10.h> C8C#rc0i2os de programaC"icroc0ipC"P%#&C30CsupportC0Cperip0eralI30FI25DI33FCadc1040 $ala 14 #rc0i2os de caecera a agregar en Deader Files 114 Para la =ltima lnea ;Jinclude Kfdacoefs40K< 0ar/ que 0acer un arc0i2o nue2o ! guardarlo Seales y Sistemas Discretos. Gua 10 . como fdacoefs40 ! agregarlo al pro!ecto en la carpeta Deader Files, el cdigo fuente que deer/ tener dic0o arc0i2o es el siguiente8 const int B) A 325 const fractionalQ B?32@ A B MHR2% MH30% 21>% *1K% >**% MH3:% M10R3% M3>R% 10KK% 1>*H% 0% M21H*% M230R% 120:% :0:K% 11K00% 11K00% :0:K% 120:% M230R% M21H*% 0% 1>*H% 10KK% M3>R% M10R3% MH3:% >**% *1K% 21>% MH30% MHR2 C5 %istado 24 Coeficientes del filtro generados por "#$%#& con F'#tool ;@fdacoefs40A< 124 #l terminar de editarlo dar clic en guardar ! pngalo dentro de la carpeta del pro!ecto ! agr?guelo a los Deader Files como en los anteriores procedimientos4 134 Para 0acer uso de las lireras '9P que "icroc0ip pro2ee, ! que se 2en en el arc0i2o fuente, es necesario agregarlos a la carpeta 9ource Files, en la siguiente tala est/n las operaciones de la lirera ! la ruta donde se encuentra el arc0i2o a agregar4 Read#'C104c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCadcCRead#'C104c Con2ert#'C104c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCadcCCon2ert#'C104c Hpen#'C104c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCadcCHpen#'C10 9etC0an#'C104c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCadcC9etC0an#'C104c ConfigInt$imer14c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCtimerCConfigInt$imer14c Read$imer14c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCtimerCRead$imer14c Hpen$imer14c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCtimerCHpen$imer14c >rite$imer14c C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCperip0eralI30FI25DI33FCsrcCpmcCtimerC>rite$imer14c )dot4s C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCdspCasmC2dot4s $ala 24 #rc0i2os de la lirera '9P para su uso en el cdigo fuente4 %os anteriores arc0i2os sir2en para usar una funcin predise+ada para el uso de los perif?ricos del dsPIC ! solamente poner los par/metros que le interesan al usuario, oser2e que los perif?ricos a utilizar inclu!en al #'C de 10 its ! al $imer 1 ! 2dot4s que sir2e para la operacin del producto punto de dos 2ectores4 154 Copie el arc0i2o dspcommon40 al directorio donde est/ el pro!ecto para que sea editale, puede encontrar este arc0i2o en8 C8C#rc0i2os de programaC"icroc0ipC"P%#& C30CsrcCdspCincCdspcommon4inc Posteriormente a copiarlo, agr?guelo al pro!ecto en la carpeta Deader Files, al final los arc0i2os agregados deer/n 2erse de la siguiente manera8 Seales y Sistemas Discretos. Gua / Figura 34 #rc0i2os agregados al Pro!ecto 154 #l 0aer realizado todos los pasos anteriores, ser/ necesario compilar el arc0i2o, para ello utilice el otn de la arra de 0erramientas que tiene la siguiente forma8 o desde el men= Pro:ect7&uild #ll o con la cominacin de teclas C$R%GF10, si todo est/ ien deer/ aparecer el mensa:e &LI%' 9LCC(('(' en la 2entana output4 Parte 2. Descarga del Programa a la memoria del DSPIC30F2010 #l 0aer compilado el programa se 0a creado un arc0i2o llamado FiltrodsPIC40e6 que es el necesario para descargar a la memoria del dsPIC para que realice su funcin de ser un Filtro pasaa:as de 2.Dz4 114 Conecte el programador PIC*it 2 0acia el entrenador ($ dsPIC 30F2010 )1, teniendo presente que el interruptor PRHMNRLB tiene que estar 0acia la posicin RLB, las cone6iones tendr/n que ser de acuerdo a la siguiente figura Seales y Sistemas Discretos. Gua 10 10 Figura F4 Cone6in del PIC.it 2 a la tar:eta ($ dsPIC 30F2010 )1 1E4 (nergice la tar:eta conect/ndola a una fuente de G12) 134 Conecte el programador PIC.it 2 al puerto us de su computadora, ! ara la aplicacin PIC.it 2 )2412 ;0a! un icono en el escritorio sino 0ar/ que uscarlo desde el men= inicio< si est/ ien conectado deer/ reconocer autom/ticamente al dsPIC conectado 2i?ndose como la figura siguiente8 Figura 104 9oft-are para descargar programa a la tar:eta dsPIC4 Seales y Sistemas Discretos. Gua 11 1F4 'el men= File seleccione Import D(O ! ara el arc0i2o FiltrodsPIC40e6 que se 0a creado en la carpeta del pro!ecto que usted cre4 204 'escargue el arc0i2o 0acia la memoria del dsPIC dando clic en el otn >rite 214 Pruee el programa 0aciendo uso de la referencia de la gua 1 compruee que a los 2.Dz la se+al se aten=a consideralemente4 Parte 3. Cambiar el tipo de filtro por medio de los coeficientes 224 #ra el programa "#$%#& 234 'esde la interfaz de comandos digite fdatool 25 Cree un filtro pasaanda con frecuencia 1 de 1000Dz ! frecuencia 2 de 3000Dz, de tipo FIR con )entana de *aiser, de orden 31, frecuencia de muestreo Fs P 11025Dz d? clic en 'esign Filter, la 2entana podr/ oser2arse de la siguiente manera8 Figura 11 Configuracin de un filtro pasaanda entre 1000 ! 3000Dz4 254 (s necesario generar los coeficientes del filtro, para ello en el fdatool eli:a la funcin $argets7Menerate C Deader aparecer/ un cuadro de di/logo como el de la siguiente figura, aseg=rese de utilizar la opcin e6port as ! use el tipo 9igned 11Nit Integer Seales y Sistemas Discretos. Gua 10 12 Figura 124 Menerar el encaezado de C 214 '? clic sore el otn Menerate ! en el cuadro de di/logo gu/rdelo con el nomre de fdacoefs"atla40 en la carpeta del pro!ecto del filtro4 2E4 #ra el arc0i2o recientemente creado, tendr/ una apariencia como en el listado 3 Q Q 8enerated onS 0HM/epM2012 1KS1KS>> Q Q/ /Q Q !iscreteM3ime .F+ .ilter 0real4 Q MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM Q .ilter /tructure S !irectM.orm .F+ Q .ilter )ength S 32 Q /table S =es Q )inear (hase S =es 039pe 24 Q/ /Q 8eneral t9pe conDersion for &E3)EB generated "Mcode Q/ #include "tmLt9pes.h" /Q Q 6'pected path to tmLt9pes.h Q"ST&E3)EB//!TEppTe'ternTincludeTtmLt9pes.h Q/ /Q Q arning M .ilter coefficients Lere truncated to fit specified data t9pe. Q 3he resulting response ma9 not match generated theoretical response. Q Ose the .ilter !esign 1 Enal9sis 3ool to design accurate Q int1K filter coefficients. Q/ const int B) A 325 const int1K-3 B?32@ A B Seales y Sistemas Discretos. Gua 1) 2H>% M*11% M1313% M12H% 3*2% M>>:% 2HR% 21R1% 1H10% MKR3% 2H% RK*% M3>0H% M:>RR% M13:R% R3*0% R3*0% M13:R% M:>RR% M3>0H% RK*% 2H% MKR3% 1H10% 21R1% 2HR% M>>:% 3*2% M12H% M1313% M*11% 2H> C5 %istado 34 Coeficientes generados por el fdatool 234 Compare el formato usado en el listado 3 ! el del listado 2, para que funcione el filtro 0a! que declarar los datos como fractional, en una sinta6is propia del dsPIC4 Copie los coeficientes del filtro ;los n=meros que est/n entre lla2es Q R< del arc0i2o fdacoefs"atla40 ! p?guelos en el arc0i2o fdacoefs40 que cre en el pro!ecto, reemplazando los n=meros entre las lla2es4 2F4 Realice el procedimiento para descargar el filtro 0acia el dsPIC ! proceda a comproar su funcionamiento, la se+al deera en un primer momento para frecuencias menores a 1000Dz estar atenuada, deera ser de ma!or amplitud al estar entre 1000 ! 3000Dz ! luego tendra que atenuarse al llegar a frecuencias ma!ores a 3000Dz 304 'esconecte el equipo ! entregue las cosas ordenadamente4 N Para el filtro pasaa:as creado SPudo 0aerse puesto los coeficientes dentro del cdigo directamente sin necesidad de generar un arc0i2o DeaderT N Cu/l es el rango de frecuencias m/6imo para generar un filtro, !a sea pasaaltas, pasaa:as o pasaandaT N SUu? es el formato fractional para n=meros inariosT N In2estigue acerca de los otros posiles targets para los que puede generar arc0i2os el fdatool4 N 0ttp8VV---4microc0ip4comVpage0andlerVenNusVfamil!V11itVarc0itectureVdspic30f40tml N #ngulo Lsategui,Wos? "araX (t6earria Ruiz, #ritzaX #ngulo "artnez, IgnacioX $ruea Parra, I2an4 '9PIC 'ise+o pr/ctico de aplicaciones "cMra- Dill Seales y Sistemas Discretos. Gua 10 $ibliografa 1nvestigaci&n 2omplementaria #n3lisis de 4esultados 1* !"#$%#CI&' ( 1)* )+ ,)10 'ota C&'&CI-I!'.& 25 2onocimiento deficiente de los fundamentos te&ricos 2onocimiento y e5plicaci&n incompleta de los fundamentos te&ricos 2onocimiento completo y e5plicaci&n clara de los fundamentos te&ricos #P$IC#CI/' D!$ C&'&CI-I!'.& 70 Realiz mal las conexiones y no produjo salida, no logr completar las mediciones de la tabla Realiz todas las conexiones y ajustes y la tabla de forma correcta, pero no concluye satisfactoriamente Realiz todo el procedimiento y tiene conclusiones lgicas y acertadas acerca de sus resultados. #C.I.%D 2,5 %s un observador pasivo Participa ocasionalmente o lo 6ace constantemente pero sin coordinarse con su compa7ero Participa propositiva e integralmente en toda la pr3ctica 2,5 %s ordenado8 pero no 6ace un uso adecuado de los recursos 9ace un uso adecuado de los recursos: respeta las pautas de seguridad8 pero es desordenado 9ace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e 6igiene TT!" #00 $u%a 5& 'ediciones en (iltro )igital !lumno& *oja de cotejo& 5 )ocente& (ec+a& $"& ,uesto -o& Seales y Sistemas Discretos. Gua