Filtros Digitales Con DSPic

14
1 Tema: Programación de Filtro Digital en dsPIC30F2010 Conocer el entorno de programación propio del dsPIC30F2010 Realizar la programación del filtro digital que se realizó en la guía 5 Comprobar el funcionamiento del sistema Realizar un cambio en el tipo de filtro y sus coeficientes por medio de MATLAB Descargar el filtro cambiado y comprobar su funcionamiento 1 entrenador ET dsPIC 30F2010 V1 1 Programador de PICs PICKit 2 1 cable usb 1 generador de señales 1 fuente de alimentación de 12V 1 osciloscopio 1 Computadora con MPLAB, software PICkit 2 y MATLAB con FDATools En la presente práctica se hará el procedimiento de programación del dsPIC30F2010, en la guía 6 se realizó la comprobación del funcionamiento de un filtro digital de orden 31, para programar dicho filtro es necesario tener instalado el MPLAB para este caso la versión 8.84. Parte 1. Creación de un programa para dsPIC30F2010 1. Abra el MPLAB 8.84 presente en su computadora puede ser que exista un acceso directo en el escritorio, de lo contrario vaya a Inicio>Todos los Programas>Microchip>MPLAB v8.84>MPLAB IDE, aparecerá luego la siguiente ventana: Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Señales y Sistemas Discretos. Lugar de ejecución: Laboratorio de Automatización (Edificio 3, 1a planta). Objetivos específicos Materiales y equipo Procedimiento Señales y Sistemas Discretos. Guía 10

Transcript of Filtros Digitales Con DSPic

  • 1Tema: 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 Comprobar el funcionamiento del sistema Realizar un cambio en el tipo de filtro y sus coeficientes por medio de MATLAB Descargar el filtro cambiado y comprobar su funcionamiento

    1 entrenador ET dsPIC 30F2010 V1 1 Programador de PICs PICKit 2 1 cable usb 1 generador de seales 1 fuente de alimentacin de 12V 1 osciloscopio 1 Computadora con MPLAB, software PICkit 2 y MATLAB con FDATools

    En la presente prctica se har el procedimiento de programacin del dsPIC30F2010, en la gua 6 se realiz la comprobacin del funcionamiento de un filtro digital de orden 31, para programar dicho filtro es necesario tener instalado el MPLAB para este caso la versin 8.84.

    Parte 1. Creacin de un programa para dsPIC30F2010

    1. Abra el MPLAB 8.84 presente en su computadora puede ser que exista un acceso directo en el escritorio, de lo contrario vaya a Inicio>Todos los Programas>Microchip>MPLAB v8.84>MPLAB IDE, aparecer luego la siguiente ventana:

    Facultad: Ingeniera.Escuela: Electrnica.Asignatura: Seales y Sistemas Discretos.Lugar de ejecucin: Laboratorio de Automatizacin (Edificio 3, 1a planta).

    Objetivos especficos

    Materiales y equipo

    Procedimiento

    Seales y Sistemas Discretos. Gua 10

  • 2Figura 1. Ventana de MPLAB

    2. Para crear un nuevo proyecto seleccione del men Project>Project Wizard

    Figura 2. Eleccin del Project Wizard

    3. D clic en siguiente en la pantalla de bienvenida y posteriormente aparecer una ventana que permitir elegir el tipo de PIC a programar, seleccione el dsPIC 30F2010

    Figura 3. Seleccin del dispositivo a programar.

    4. D clic en siguiente y aparecer la ventana de la siguiente figura, en ella seleccione en

    Seales y Sistemas Discretos. Gua 5

  • 3Active Toolsuite Microchip C30 Toolsuite y en toolsuite contents MPLAB C30 Compiler.

    Figura 4. Seleccin de la Toolsuite para compilar el programa.

    5. D clic en siguiente y ponga el nombre del proyecto puede utilizar FiltrodsPIC gurdelo en una carpeta en Mis documentos, puede nombrar a la carpeta de la misma manera.

    Figura 5. Nombre del proyecto a guardar.

    6. En la siguiente pantalla se seleccionan los archivos a incluir en el proyecto. Para facilitar la tarea de inicializacin y preparacin del proyecto, el MPLAB C30 dispone de varios archivos que al incluirlos en el proyecto permiten trabajar con nombres simblicos, e indican al enlazador cul es la organizacin de la memoria del dispositivo en cuestin, genera rutinas automticas de reset, etc, Estos archivos a agregar son los siguientes:

    C: \Archivos de programa\Microchip\MPLAB C30\support\gld\p30f2010.gldC: \Archivos de programa\Microchip\MPLAB C30\support\inc\p30f2010.inc

    Seales y Sistemas Discretos. Gua 10

  • 4Hay que dar clic en la letra que aparece antes de la ruta del archivo hasta que aparezca una C que indica que hay que copiar los archivos al directorio del proyecto.

    Figura 6. agregar archivos al proyecto

    7. D clic en el Men File> New y aparecer un cuadro vaco para comenzar a editar el archivo fuente o programa para el dsPIC, inmediatamente seleccione File>Save As y ponga el nombre FiltrodsPIC.c, hasta aqu el archivo aun no est agregado al proyecto. Para agregar el archivo fuente al proyecto en la parte izquierda de la pantalla est una carpeta llamada Source, d clic derecho en ella y seleccione Add Files y del siguiente cuadro de dilogo seleccione el archivo FiltrodsPIC.c que ha creado anteriormente.

    Figura 7. Aadir el archivo de cdigo fuente.

    8. En la carpeta Header Files haga el mismo procedimiento que con la carpeta Source Files,

    Seales y Sistemas Discretos. Gua 5

  • 5con el archivo de cabecera p30F2010.h que se encuentra en la siguiente ruta:C: \Archivos de programa\Microchip\MPLAB C30\support\h\p30f2010.h

    9. Digite el siguiente listado de programa en el archivo vaco que cre (FiltrodsPIC.c), este corresponde a la mquina de clculo del filtro pasabajas, de 2kHz estudiado en la gua 6.

    #include#include#include#include#include#include#include "fdacoefs.h"

    //////////////////////////////////////////////////// Bits de configuracin //WatchDog apagado//Chequeo de reloj apagado, Modo Cristal x PLL8//Reset habilitado, BOR apagado//proteccin de codigo apagada

    _FOSC(CSW_FSCM_OFF & XT_PLL8);_FWDT(WDT_OFF);_FBORPOR(PBOR_OFF & MCLR_EN); _FGS(CODE_PROT_OFF);

    //////////////////////////////////////////////////// definiciones para ayuda a calculos de retardos segun xtal de 7.327MHz#define FOSC 7372000LL#define FCY (FOSC/4)#define milis (FCY/1000L)#define micros (FCY/1000000LL)//////////////////////////////////////////////////////#define CicloTrabajo OC1RS

    int X[32] = {};int XP[10]={};int PROM = 0;int Y = 0;int max=1023/2;int min=1023/2;unsigned int resultado = 0;void ConfTimer();void ConfADC();void ConfPWM();void ConfInt();int ADCOK = 0;int ERROR = 0;int i = 0;int j = 0;

    void __attribute__((__interrupt__)) _T1Interrupt(void){

    //interrupcin de TIMER1 cada Ts=1/Fs=1/11025 segundos//se realiza conversion de ADC con priodo constante.

    Seales y Sistemas Discretos. Gua 10

  • 6WriteTimer1(0);IFS0bits.T1IF = 0;if(ADCOK){

    ERROR = 1;}else{

    ERROR = 0;ADCOK = 1;resultado = ReadADC10(0);ConvertADC10();

    } //reset de los valores min y max //cada 0.25 segundos

    j++;if(j>2756){

    max=511;min=511;j=0;

    }}

    int main(void){

    //configuracion inicialTRISD = 0;TRISE = 0;

    //timerConfTimer();

    //ADCConfADC();

    //PWMConfPWM();

    for(i = 0; i++; i0; i--) X[i]=X[i-1];X[0]=(resultado>>2)-PROM;//

    Y=VectorDotProduct(BL, B, X); //producto punto B y XCicloTrabajo = (Y+PROM) & 255; //ajuste del offset

    //calculo de salida realizadoADCOK = 0;

    }}

    Seales y Sistemas Discretos. Gua 5

  • 7}void ConfTimer(){

    //configuracin de timer - muestreo a 11025HzConfigIntTimer1(T1_INT_PRIOR_1 & T1_INT_ON);WriteTimer1(0);OpenTimer1(T1_ON & T1_GATE_OFF & T1_IDLE_STOP &T1_PS_1_1 & T1_SYNC_EXT_OFF &T1_SOURCE_INT, 1335);

    }

    void ConfADC(){//canal 0 - auto sample - modo manual - AN0 versus -Vref

    ADCON1 = 0b0010000000000111;ADCON2 = 0x0000;ADCON3 = 0x0180;ADCHS = 0x0000;ADPCFG = 0xFFFE;ADCON1bits.ADON = 1;

    }

    void ConfPWM(){PR2 = 0xFF; //Periodo de 8 bitsOC1RS = PR2>>1; //Ciclo de trabajo inicial al 50%OC1R = OC1RS;OC1CON = 0x0206; //PWM fault pin deshabilitado - TIMER 2//configuracion de TIMER2T2CON = 0xA000;

    }

    void calcularPromedio(){if(resultado>max) max = resultado; //registro de maximo if(resultado>3; //promedio y truncado a 8 bits

    }Listado 1. Cdigo en C++ de la mquina para el filtro digital

    10. Observe las primeras lneas del archivo fuente, hacen referencia a otros archivos a agregar como cabeceras, en la carpeta Header Files habr tambin que agregarlos al proyecto observe la siguente tabla para agregarlos como en el procedimiento 8 y la ruta donde encontrar estos archivos

    #include C: \Archivos de programa\Microchip\MPLAB C30\support\h\libpic30.h#include C: \Archivos de programa\Microchip\MPLAB C30\include\stdio.h#include C:\Archivos de programa\Microchip\MPLABC30\support\h\dsp.h#include C:\Archivos de

    programa\Microchip\MPLABC30\support\h\peripheral_30F_24H_33F\timer.h#include C:\Archivos de

    programa\Microchip\MPLABC30\support\h\peripheral_30F_24H_33F\adc10.hTabla 1. Archivos de cabecera a agregar en Header Files

    11. Para la ltima lnea (#include "fdacoefs.h") habr que hacer un archivo nuevo y guardarlo

    Seales y Sistemas Discretos. Gua 10

  • 8como fdacoefs.h y agregarlo al proyecto en la carpeta Header Files, el cdigo fuente que deber tener dicho archivo es el siguiente:

    const int BL = 32;const fractional* B[32] = { -592, -530, 214, 816, 488, -537, -1093, -349, 1066, 1485, 0, -2158, -2309, 1207, 7076, 11600, 11600, 7076, 1207, -2309, -2158, 0, 1485, 1066, -349, -1093, -537, 488, 816, 214, -530, -592};

    Listado 2. Coeficientes del filtro generados por MATLAB con FDAtool (fdacoefs.h)

    12. Al terminar de editarlo dar clic en guardar y pngalo dentro de la carpeta del proyecto y agrguelo a los Header Files como en los anteriores procedimientos.

    13. Para hacer uso de las libreras DSP que Microchip provee, y que se ven en el archivo fuente, es necesario agregarlos a la carpeta Source Files, en la siguiente tabla estn las operaciones de la librera y la ruta donde se encuentra el archivo a agregar.ReadADC10.c C:\Archivos de programa\Microchip\MPLAB

    C30\src\peripheral_30F_24H_33F\src\pmc\adc\ReadADC10.c

    ConvertADC10.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\adc\ConvertADC10.c

    OpenADC10.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\adc\OpenADC10

    SetChanADC10.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\adc\SetChanADC10.c

    ConfigIntTimer1.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\timer\ConfigIntTimer1.c

    ReadTimer1.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\timer\ReadTimer1.c

    OpenTimer1.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\timer\OpenTimer1.c

    WriteTimer1.c C:\Archivos de programa\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\pmc\timer\WriteTimer1.c

    Vdot.s C:\Archivos de programa\Microchip\MPLAB C30\src\dsp\asm\vdot.sTabla 2. Archivos de la librera DSP para su uso en el cdigo fuente.

    Los anteriores archivos sirven para usar una funcin prediseada para el uso de los perifricos del dsPIC y solamente poner los parmetros que le interesan al usuario, observe que los perifricos a utilizar incluyen al ADC de 10 bits y al Timer 1 y vdot.s que sirve para la operacin del producto punto de dos vectores.

    14. Copie el archivo dspcommon.h al directorio donde est el proyecto para que sea editable, puede encontrar este archivo en:C:\Archivos de programa\Microchip\MPLAB C30\src\dsp\inc\dspcommon.incPosteriormente a copiarlo, agrguelo al proyecto en la carpeta Header Files, al final los archivos agregados debern verse de la siguiente manera:

    Seales y Sistemas Discretos. Gua 5

  • 9Figura 8. Archivos agregados al Proyecto

    15. Al haber realizado todos los pasos anteriores, ser necesario compilar el archivo, para

    ello utilice el botn de la barra de herramientas que tiene la siguiente forma: o desde el men Project>Build All o con la combinacin de teclas CTRL+F10, si todo est bien deber aparecer el mensaje BUILD SUCCEEDED en la ventana output.

    Parte 2. Descarga del Programa a la memoria del DSPIC30F2010

    Al haber compilado el programa se ha creado un archivo llamado FiltrodsPIC.hex que es el necesario para descargar a la memoria del dsPIC para que realice su funcin de ser un Filtro pasabajas de 2kHz.

    16. Conecte el programador PICKit 2 hacia el entrenador ET dsPIC 30F2010 V1, teniendo presente que el interruptor PROG-RUN tiene que estar hacia la posicin RUN, las conexiones tendrn que ser de acuerdo a la siguiente figura

    Seales y Sistemas Discretos. Gua 10

  • 10

    Figura 9. Conexin del PICkit 2 a la tarjeta ET dsPIC 30F2010 V1

    17. Energice la tarjeta conectndola a una fuente de +12V

    18. Conecte el programador PICkit 2 al puerto usb de su computadora, y abra la aplicacin PICkit 2 V2.62 (hay un icono en el escritorio sino habr que buscarlo desde el men inicio) si est bien conectado deber reconocer automticamente al dsPIC conectado vindose como la figura siguiente:

    Figura 10. Software para descargar programa a la tarjeta dsPIC.

    Seales y Sistemas Discretos. Gua 5

  • 11

    19. Del men File seleccione Import HEX y abra el archivo FiltrodsPIC.hex que se ha creado en la carpeta del proyecto que usted cre.

    20. Descargue el archivo hacia la memoria del dsPIC dando clic en el botn Write

    21. Pruebe el programa haciendo uso de la referencia de la gua 6 compruebe que a los 2kHz la seal se atena considerablemente.

    Parte 3. Cambiar el tipo de filtro por medio de los coeficientes

    22. Abra el programa MATLAB

    23. Desde la interfaz de comandos digite fdatool

    24 Cree un filtro pasabanda con frecuencia 1 de 1000Hz y frecuencia 2 de 3000Hz, de tipo FIR con Ventana de Kaiser, de orden 31, frecuencia de muestreo Fs = 11025Hz d clic en Design Filter, la ventana podr observarse de la siguiente manera:

    Figura 11 Configuracin de un filtro pasabanda entre 1000 y 3000Hz.

    25. Es necesario generar los coeficientes del filtro, para ello en el fdatool elija la funcin Targets>Generate C Header aparecer un cuadro de dilogo como el de la siguiente figura, asegrese de utilizar la opcin export as y use el tipo Signed 16-bit Integer

    Seales y Sistemas Discretos. Gua 10

  • 12

    Figura 12. Generar el encabezado de C

    26. D clic sobre el botn Generate y en el cuadro de dilogo gurdelo con el nombre de fdacoefsMatlab.h en la carpeta del proyecto del filtro.

    27. Abra el archivo recientemente creado, tendr una apariencia como en el listado 3

    * * Generated on: 05-Sep-2012 16:16:44 * */

    /* * Discrete-Time FIR Filter (real) * ------------------------------- * Filter Structure : Direct-Form FIR * Filter Length : 32 * Stable : Yes * Linear Phase : Yes (Type 2) */

    /* General type conversion for MATLAB generated C-code */#include "tmwtypes.h"/* * Expected path to tmwtypes.h *C:\MATLABSSD\App\extern\include\tmwtypes.h *//* * Warning - Filter coefficients were truncated to fit specified data type. * The resulting response may not match generated theoretical response. * Use the Filter Design & Analysis Tool to design accurate * int16 filter coefficients. */const int BL = 32;const int16_T B[32] = {

    Seales y Sistemas Discretos. Gua 5

  • 13

    254, -811, -1313, -125, 382, -447, 259, 2191, 1510, -693, 25, 968, -3405, -7499, -1379, 9380, 9380, -1379, -7499, -3405, 968, 25, -693, 1510, 2191, 259, -447, 382, -125, -1313, -811, 254};

    Listado 3. Coeficientes generados por el fdatool

    28. Compare el formato usado en el listado 3 y el del listado 2, para que funcione el filtro hay que declarar los datos como fractional, en una sintaxis propia del dsPIC. Copie los coeficientes del filtro (los nmeros que estn entre llaves { }) del archivo fdacoefsMatlab.h y pguelos en el archivo fdacoefs.h que cre en el proyecto, reemplazando los nmeros entre las llaves.

    29. Realice el procedimiento para descargar el filtro hacia el dsPIC y proceda a comprobar su funcionamiento, la seal debera en un primer momento para frecuencias menores a 1000Hz estar atenuada, debera ser de mayor amplitud al estar entre 1000 y 3000Hz y luego tendra que atenuarse al llegar a frecuencias mayores a 3000Hz

    30. Desconecte el equipo y entregue las cosas ordenadamente.

    - Para el filtro pasabajas creado Pudo haberse puesto los coeficientes dentro del cdigo directamente sin necesidad de generar un archivo Header?- Cul es el rango de frecuencias mximo para generar un filtro, ya sea pasaaltas, pasabajas o pasabanda?- Qu es el formato fractional para nmeros binarios?

    - Investigue acerca de los otros posibles targets para los que puede generar archivos el fdatool.

    - http://www.microchip.com/pagehandler/en-us/family/16bit/architecture/dspic30f.html- Angulo Usategui,Jos Mara; Etxebarria Ruiz, Aritza; Angulo Martnez, Ignacio; Trueba Parra, Ivan. DSPIC Diseo prctico de aplicaciones McGraw Hill

    Seales y Sistemas Discretos. Gua 10

    Bibliografa

    Investigacin Complementaria

    Anlisis de Resultados

  • 14

    EVALUACION

    % 1-4 5-7 8-10 Nota

    CONOCIMIENTO 25 Conocimiento deficiente de los fundamentos tericos

    Conocimiento y explicacin incompleta de los fundamentos tericos

    Conocimiento completo y explicacin clara de los fundamentos tericos

    APLICACIN DEL CONOCIMIENTO

    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.

    ACTITUD 2,5 Es un observador pasivo.

    Participa ocasionalmente o lo hace constantemente pero sin coordinarse con su compaero.

    Participa propositiva e integralmente en toda la prctica.

    2,5 Es ordenado; pero no hace un uso adecuado de los recursos

    Hace un uso adecuado de los recursos, respeta las pautas de seguridad; pero es desordenado.

    Hace un manejo responsable y adecuado de los recursos conforme a pautas de seguridad e higiene.

    TOTAL 100

    Gua 5: Mediciones en Filtro Digital

    Alumno:

    Hoja de cotejo: 5

    Docente: Fecha:GL:

    Puesto No:

    Seales y Sistemas Discretos. Gua 5