Вы находитесь на странице: 1из 14

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador

- CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
RESUMEN En la actualidad los sistemas electrnicos digitales estn constituidos por mdulos de hardware y de software. Los mdulos de software son programas desarrollados en lenguajes ensamblador que corren sobre un microcontrolador. Los mdulos de hardware son circuitos con funciones especficas. La combinacin hardware/software busca satisfacer las especificaciones de diseo relacionadas con el desempeo, la confiabilidad, el costo y el tiempo de desarrollo. La implementacin tradicional de este tipo d esistemas se basa en el desarrollo de los mdulos de software y hardware de manera separada. En todo sistema que involucre la metodologa de codiseo deben analizarse las tareas a realizar, evaluando las consecuencias de las posibles opciones de implementacin de cada tarea sobre los parmetros que definen el funcionamiento y el coste del sistema global. Los principales parmetros a considerar son la velocidad de ejecucin de la tarea y el rea que conllevara su implementacin en hardware. A partir de los resultados de este anlisis se realiza el proceso de particionado el cual consiste en decidir qu tareas deben ser realizadas mediante software y cules deben ser implementadas sobre hardware. Este proyecto cosiste en la implementacin de un controlador Difuso utilizando la metodologa del codiseo mediante la interfaz Microcontrolador CPLD, las tareas software son implementadas en el microcontrolador 89C52 y las tareas hardware son implementadas en el CPLD FLEX10K70RC240-4 de Altera. El microcontrolador ejecuta las tareas software, las cuales son: Control de perifricos implementados en el CPLD (hardware) mediante el

Luis Javier Martinez Montero javiermm@engineer.com


direccionamiento de cada uno de ellos con su respectiva seal de habilitacin. Conteo de los pulsos enviados por el encoder del motor y clculo de la velocidad real de este, y su visualizacin en pantalla. Manejo de la pantalla LCD que visualiza las velocidades real y deseada del motor. Procesamiento de los datos codificados por el hardware provenientes del teclado para establecer la velocidad deseada y su visualizacin. Clculo del error y del Cambio en el error entre la velocidad deseada y la velocidad real.

En el CPLD se implementaron las tareas hardware que son: Dispositivos combinacionales: Dos latch que almacenan la direccin enviada por el microcontrolador cuando se activa la seal habilitadora. Un decodificador de direcciones que genera la seales de seleccin de perifricos y la direccin de bsqueda en la LUT. Un codificador de teclado que genera el cdigo binario del dato tecleado y una seal habilitadora. Perifricos: LUT (Look Up Table) que es implementada en una memoria ROM y en la que esta almacenadas los valores correspondientes a la respuesta del controlador de acuerdo a la direccin correspondiente al error y al cambio en el error. Generador de PWM, el cual recibe el dato correspondiente al cambio en el ancho del

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com Luis Javier Martinez Montero javiermm@engineer.com

pulso proveniente de la LUT, aceptndolo cada vez que se direccione. Este mdulo provee la seal de PWM que se aplica al motor. En el anexo N.1 se presenta el diagrama de bloques del sistema global implementado.

valor del error presente y el valor del error en el instante anterior de muestreo. Con base en estas dos condiciones establecimos la magnitud de la LUT, asignamos 6 bits del Error y 4 bits del Cambio en el Error para direccionarla, esto implica que la LUT es direccionada bajo 10 bits que representan, los 6 ms significativos al Error y los 4 menos significativos al Cambio en el Error. Por esta razn la LUT presentar un total de 1024 posiciones donde se almacenan en cada una de ellas el cambio en el ancho del pulso al PWM que se aplicar al motor con el fin de llegar a la velocidad deseada. IMPLEMENTACION HARDWARE SOFTWARE En el controlador las tareas espefcas a realizar son las siguientes: - Conteo de los pulsos enviados por el encoder del motor. - Procesamiento de los datos codificados provenientes desde el teclado. - Clculo del error y del cambio en el error. - Direccionamiento de la LUT. - Decodificacin de direcciones. - Codificador de teclado. - Almacenamiento de la LUT. - Mdulo generador de PWM. SOFTWARE En el microcontrolador 89C52 se realizan las siguientes funciones: Se reciben los pulsos enviados por el encoder del motor mediante un perodo de conteo de 60mseg, este perodo se estableci de acuerdo con los parmetros del motor. El timer 1 fue configurado como temporizador de 16 bits para obtener el tiempo correspondiente al perodo de conteo necesario. El timer 0 fue configurado como contador de pulsos externos y recibe directamente los pulsos enviados por el encoder, despus de cumplido el perodo de conteo el valor almacenado en el registro TL0 representa la velocidad real del motor.

DESARROLLO El controlador Difuso implementado mediante la interfaz Microcontrolador CPLD tiene como objetivo controlar la velocidad de un motor DC en condiciones variables de voltaje y carga. El codiseo involucra implementacin en hardware y software de tareas especficas, para el caso concreto del Controlador de Velocidad Difuso, estas tareas estn relacionadas con la captura de las variables (velocidad real y velocidad deseada), lo que implica su codificacin y manipulacin, la visualizacin de estas, el procesamiento de estas variables y el procedimiento que involucra un control Difuso. En los sistemas de control lo que se busca es dirigir un proceso hacia un punto particular, esto normalmente se realiza comparando el estado actual del proceso y el valor al cual se pretende levarlo, y en muchas oportunidades se complementa con el clculo de su historial (acciones integrales) o con la estimacin de su tendencia (acciones derivativas). Debido a que a travs de los trabajos realizados se demuestra que empleando un esquema difuso es mas sencillo realizar un control bajo acciones derivativas hemos empleado este procedimiento para realizar el Controlador de Velocidad del motor DC, es decir nuestro sistema implementado corresponde a un control Difuso con acciones derivativas. Este hecho conlleva a seleccionar como variables de entrada al Error (E) y el Cambio en el Error (CE). El error (E) es hallado mediante una diferencia entre la Velocidad Deseada y la Velocidad Real del motor. El cambio en el error (CE) es hallado mediante una diferencia entre el

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
espus de tener la velocidad real almacenada, el microcontrolador realiza la funcin de visualizarla en pantalla, realizando la rutina necesario para esta tarea.

Luis Javier Martinez Montero javiermm@engineer.com


VARIABLES* VELREAL VELDES ERROR UNIDADES DECENAS CENTENAS TERRORANT CERROR TEMPERROR TEMPDIR TEMCERROR CONT TUNI TDEC TCEN TVELDES TERROR TCERROR RUNIDADES RDECENAS RCENTENAS RET1 RET2 RET3 COINT TPROM TRES PROM RES

Por otra parte recibe los datos codificados provenientes del controlador de teclado implementado en el CPLD, que representan la velocidad deseada. Esta velocidad deseada tambin es visualizada en pantalla de forma inmediata cada vez que se pulse una tecla, realizando el mismo procedimiento de control, por lo tanto el usuario tiene la posibilidad de sobrescribir esta velocidad hasta conseguir la que desea. Debido a que la velocidad mxima del motor es 200 RPM, no es posible teclear una velocidad mayor a esta, en caso de que ocurra, el sistema toma como velocidad deseada la almacenada anteriormente. El microcontrolador tambin obtiene el Error y el Cambio en el Error, de acuerdo a las velocidades deseada y real del motor cada vez que finaliza un perodo de conteo. De acuerdo con estas variables, direcciona con 10 bits la memoria que representa la LUT (implementada en la CPLD), los primeros 4 bits significativos representan el cambio en el error y los 6 ms significativos el error. Despus prosigue a direccionar el mdulo generador de PWM (implementado tambin en la CPLD), para actualizar el ancho del pulso necesario para alcanzar la velocidad deseada. Este dato proviene de la posicin de memoria correspondiente al error y al cambio en el error en el instante de conteo y producir un incremento o un decremento segn sea el caso del ancho del pulso en la salida PWM. A continuacin se presenta el programa del microcontrolador que realiza todas las tareas mencionadas anteriormente.
I_INT0 I_TIM1 PRINCIPAL EQU EQU EQU 0100H 0200H 0300H

EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

0030H 0031H 0032H 0035H 0034H 0033H 0036H 0037H 0038H 0039H 003AH 003BH 003EH 003DH 003CH 003FH 0040H 0041H 0044H 0043H 0042H 0045H 0046H 0047H 0048H 0049H 004AH 004BH 004CH

;--DECLARACION DE PUERTO 2 PARA CONTROL LCD-EN RS RW EQU EQU EQU P1.5 P1.6 P1.7

;--INICIO DEL PROGRAMA-ORG JMP ORG LJMP ORG LJMP 0000H PRINCIPAL 0003H I_INT0 001BH I_TIM1

;--RUTINA DE INTERRUPCION DEL TECLADO-;I_INT0: ORG CLR CLR CLR CLR MOV MOV MOV JB JB LJMP 100H P1.5 P1.6 P1.7 A UNIDADES,A DECENAS,A CENTENAS,A P3.7,TERMINAR P1.4,NUMERO L1

L1:

;--SALTA SI ES TECLEADO UN DIGITO-;--DECLARACION DE LAS VARIABLES QUE SE UTILIZARON EN EL PROGRAMA-NUMERO: MOV MOV MOV MOV A,DECENAS CENTENAS,A A,UNIDADES DECENAS,A

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
MOV ANL MOV LCALL LCALL JMP A,P1 A,#0FH UNIDADES,A VDPINTAR RETARDO L1

Luis Javier Martinez Montero javiermm@engineer.com


MOV LCALL RETI UNIDADES,A VDPINTAR

;--SALTA SI OPRIMIDO # PARA ACEPTAR LA ;VELOCIDAD DESEADA-TERMINAR: ;LCALL ANL MOV MOV MUL JB MOV MOV MOV MUL ADD JC ADD JC MOV MOV SUBB JC MOV MOV MOV MOV MOV MOV MOV MOV RETI VDPINTAR PSW,#7BH A,CENTENAS B,#100D AB PSW.2,VDPINTARR TVELDES,A A,DECENAS B,#10D AB A,TVELDES VDPINTARR A,UNIDADES VDPINTARR TVELDES,A A,#200D A,TVELDES VDPINTARR A,TVELDES VELDES,A A,UNIDADES TUNI,A A,DECENAS TDEC,A A,CENTENAS TCEN,A

;--RUTINA DE INTERRUPCION DEL TEMPORIZADOR(60 MS)-;I_TIM1:


ORG MOV MOV CLR CLR MOV MOV MOV MOV DIV MOV MOV CLR MOV MOV ADD MOV MOV ADD MOV DJNZ MOV DIV ADD MOV LCALL MOV MOV CLR MOV MOV MOV MOV SUBB MOV JC JNC RETI 200H A,#28H TH1,A A C A,TERROR TERRORANT,A A,TL0 B,#5D AB PROM,A RES,B A TL0,A A,TPROM A,PROM TPROM,A A,TRES A,RES TRES,A COINT,PUT B,#5D AB A,TPROM VELREAL,A VRPINTAR A,#5D COINT,A A TPROM,A TRES,A TL0,A A,VELDES A,VELREAL TERROR,A NEGATIVO POSITIVO

;--RUTINA DE RETARDO EN EL CASO DE ;MANTENERSE PULSADO UN DIGITO-RETARDO: MOV MOV MOV MOV TT2: DJNZ JMP TT1: DJNZ JMP TT0: DJNZ JMP RETI A,#5D RET1,A RET2,A RET3,A RET1,TT1 L1 RET2,TT0 TT2 RET3,TT0 TT1 PUT:

;--CALCULO DE LOS ERRORES DEPENDIENDO ;SI ES NGATIVO, CERO Y NEGATIVO-ERROR NEGATIVO NEGATIVO: MOV JNB JNB JNB MOV ADD MOV JMP ERROR MINIMO=0 CERO: MOV MOV JMP ERROR POSITIVO POSITIVO: A,TERROR ACC.7,CERO ACC.6,CERO ACC.5,CERO A,#20H A,ERROR ERROR,A CCERROR A,#00H ERROR,A CCERROR

;--RUTINA QUE RECUPERA LA ANTERIOR ;VELOCIDAD DESEADA VALIDA EN CASO DE ;SOBREPASAR 200RPM-VDPINTARR: MOV MOV MOV MOV MOV A,TCEN CENTENAS,A A,TDEC DECENAS,A A,TUNI

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
MOV JB JB JB MOV ADD MOV JMP A,TERROR ACC.7,MAX ACC.6,MAX ACC.5,MAX A,#20H A,TERROR ERROR,A CCERROR

Luis Javier Martinez Montero javiermm@engineer.com


SWAP MOV MOV MOV ADD MOV MOV ANL SWAP MOV SETB NOP NOP NOP CLR NOP NOP NOP MOV MOV CLR MOV SETB NOP NOP NOP CLR RETI A TEMPDIR,A A,CERROR TEMCERROR,A A,TEMPDIR P0,A A,ERROR A,#0F0H A P2,A P3.0

ERROR MAXIMO=63 MAX: MOV A,#3FH MOV ERROR,A JMP CCERROR

P3.0

;--CALCULOS DEL CAMBIO EN EL ERROR-CAMBIO EN ERROR CCERROR: MOV A,TERROR SUBB MOV JC JNC A,TERRORANT TCERROR,A CNEGATIVO CPOSITIVO

A,#04H P2,A A P0,A P3.0

CAMBIO ERROR NEGATIVO CNEGATIVO: MOV A,TCERROR JNB ACC.7,CCERO JNB ACC.6,CCERO JNB ACC.5,CCERO JNB ACC.4,CCERO JNB ACC.3,CCERO MOV A,#08H ADD A,TCERROR MOV CERROR,A JMP DIRECCION CAMBIO ERROR MINIMO=0 CCERO: MOV A,#00H MOV CERROR,A JMP DIRECCION CAMBIO ERROR POSITIVO CPOSITIVO: MOV A,TCERROR JB ACC.7,CMAX JB ACC.6,CMAX JB ACC.5,CMAX JB ACC.4,CMAX JB ACC.3,CMAX MOV A,#20H ADD A,TCERROR MOV CERROR,A JMP DIRECCION CAMBIO ERROR MAXIMO=15 CMAX: MOV A,#0FH MOV CERROR,A JMP DIRECCION

P3.0

;***********RUTINA PRINCIPAL************
;PRINCIPAL ORG MOV MOV MOV MOV MOV MOV MOV CLR MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 300H A,#235D CONT,A IE,#10001001B IP,#00001001B TCON,#01010001B TMOD,#00010101B SP,#50H A UNIDADES,A DECENAS,A CENTENAS,A RUNIDADES,A RDECENAS,A RCENTENAS,A TUNI,A TDEC,A TCEN,A TPROM,A TRES,A A,#5D COINT,A

;*******INICIALIZACION DE LA PANTALLA******** ;CON LOS RESPECTIVOS COMANDOS EN ;MODO DE 8 BITS ;INICIALIZACION DEL LCD
MOV LCALL MOV LCALL MOV A,#38H COMANDO A,#38H COMANDO A,#38H

;--DIRECCIONAMIENTO DE LOS PERIFRICOS ;IMPLEMENTADOS EN EL CPLD-FORMA DIRECCION DIRECCION: MOV A,ERROR MOV TEMPERROR,A ANL A,#0FH

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL COMANDO A,#38H COMANDO A,#06H COMANDO A,#0EH COMANDO A,#01H COMANDO

Luis Javier Martinez Montero javiermm@engineer.com

;RUTINA PARA VISUALIZAR EN LA LCD ;CUALQUIER DATO CUANDO SE LLAME ESTA ;FUNCION
PINTAR: SETB SETB MOV CLR LCALL RET EN RS P0,A EN BUSY

;********MENSAJE: VD(RPM) VR(RPM) ****** ;CON LOS RESPECTIVOS COMANDOS DE LA ;LCD


MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL MOV LCALL LCALL LCALL A,#'V' PINTAR A,#'D' PINTAR A,#'(' PINTAR A,#'R' PINTAR A,#'P' PINTAR A,#'M' PINTAR A,#')' PINTAR A,#' ' PINTAR A,#' ' PINTAR A,#'V' PINTAR A,#'R' PINTAR A,#'(' PINTAR A,#'R' PINTAR A,#'P' PINTAR A,#'M' PINTAR A,#')' PINTAR VDPINTAR VRPINTAR

;RUTINA PARA PINTAR LA VELOCIDAD ;DESEADA


VDPINTAR: MOV LCALL MOV LCALL MOV ADD LCALL MOV ADD LCALL MOV ADD LCALL RET A,#11000010B COMANDO A,#11000010B COMANDO A,CENTENAS A,#30H PINTAR A,DECENAS A,#30H PINTAR A,UNIDADES A,#30H PINTAR

;RUTINA PARA PINTAR LA VELOCIDAD REAL


VRPINTAR: MOV MOV DIV MOV MOV MOV DIV MOV MOV MOV LCALL MOV ADD LCALL MOV ADD LCALL MOV ADD LCALL RET A,VELREAL B,#100D AB RCENTENAS,A A,B B,#10D AB RDECENAS,A RUNIDADES,B A,#11001011B COMANDO A,RCENTENAS A,#30H PINTAR A,RDECENAS A,#30H PINTAR A,RUNIDADES A,#30H PINTAR

;CICLO DE ESPERA
LNA: MOV JMP A,#00H LNA

;RUTINA DE COMPROBACIN DEL BUSY DE LA ;LCD


BUSY: SETB CLR SETB MOV MOV JB CLR CLR RET EN RS RW P0,#0FFh A,P0 ACC.7,BUSY EN RW

;RUTINA DE ENVIO DE LOS COMANDOS DE ;PROGRAMACIN DE LA LCD


COMANDO: SETB CLR MOV CLR LCALL RET EN RS P0,A EN BUSY

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
END

Luis Javier Martinez Montero javiermm@engineer.com

HARDWARE En la CPLD FLEX10K70RC240-4 se implementaron los siguientes dispositivos que representan el hardware del sistema: Dos latch Un decodificador de direcciones Una memoria Rom Un mdulo generador de PWM Un codificador de teclado Los 2 latch cumplen la funcin de retener la direccin de 16 bits enviada por el microcontrolador para manejar la LUT o el mdulo generador de PWM. Su habilitador corresponde a la seal HAB enviada tambin por el microcontrolador, cada vez que se genera una nueva direccin.

El decodificador de direcciones recibe la direccin enviada por el microcontrolador, activa la seal de CS que selecciona la LUT (CSLUT) o el mdulo generador de PWM (CSPWM), segn sea el caso. Si recibe una direccin entre el rango de 0000H a 03FFH, activa el selector CSLUT y genera una direccin de salida de 10 bits correspondientes a los menos significativos de la direccin de 16 bits de entrada, necesaria para leer la posicin de memoria correspondiente al error y al cambio en el error actual. A continuacion se presenta el codigo en vhdl del decodificador de direcciones y su representacin simbolica:
LIBRARY ieee;

A continuacion se presenta el codigo en vhdl del latch y su respectivo grafico:


LIBRARY ieee; USE ieee.std_logic_1164.all; entity latchi is port( ale, rst, clk :in std_logic; dirin: in std_logic_vector(7 downto 0); dirout: out std_logic_vector(7 downto 0)); end latchi; architecture codisenho of latchi is begin process(clk, dirin) begin if rst='1' then dirout<="11111111"; elsif clk 'event and clk='1' then if ale='1' then dirout<=dirin; end if; end if; end process; end codisenho;

USE ieee.std_logic_1164.all; entity decodire is port (hab: in std_logic; dirinl: in std_logic_vector(7 downto 0); dirinh: in std_logic_vector(7 downto 0); dirout: out std_logic_vector(9 downto 0); cspwm, cslut: out std_logic ); end decodire; architecture codisenho of decodire is signal dirin: std_logic_vector(15 downto 0); signal diroutsig: std_logic_vector(9 downto 0); begin process(dirin,diroutsig) begin dirin<=dirinh & dirinl; if hab='0' then if dirin=x"0400" then cspwm<='1'; cslut<='0'; elsif dirin<=x"03ff" then

cspwm<='0';
cslut<='1';

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
diroutsig(9 downto 0)<=dirin(9 downto 0); else cspwm<='0'; cslut<='0'; end if; dirout<= diroutsig; end if; end process; end codisenho;

Luis Javier Martinez Montero javiermm@engineer.com pulso del PWM, ya sea incrementando o decrementando este ancho. A continuacin se muestra el codigo en vhdl del modulo genrador de PWM y el smbolo creado.

La memoria Rom contiene los datos correspondientes a las 1024 posiciones de memoria que componen a la LUT, estos datos fueron obtenidos despus de un estudio del comportamiento que se espera obtener en la velocidad del motor para no presentar sobreimpulsos considerables y alcanzar un tiempo de establecimiento corto. Esta memoria se direcciona con 10 bits y en la salida se presenta el dato correspondiente al cambio en el ancho del PWM aplicado al motor.

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.ALL; USE ieee.std_logic_arith.ALL; entity pwm is port(duty : in std_logic_vector(7 downto 0); clk, cspwm: in std_logic; saldutypwm, salcont: out std_logic_vector(10 downto 0); salpwm: out std_logic); end pwm; architecture codisenho of pwm is signal dutypwm,dutyen,dutyten: integer range 0 to 1400; begin process(cspwm)

Para la implementacion de la memoria ROM se utilizo la herramienta de Mega-Wizard disponible en el software Max-Plus y este fue inicializado por el archivo memoria.mif donde fue almacenado los datos correpondientes a la respuesta del sistema.

variable dutyten:integer range 0 to 255; begin dutyen<=conv_integer(duty); if cspwm 'event and cspwm='1' then dutyten:=dutyten+dutyen; if dutyten<30 then dutyten:=0; else dutyten:=dutyten-30; end if; end if;

El modulo de PWM genera constantemente la salida correspondiente a una modulacin por ancho de pulso de 17.982KHz, cada vez que se activa la seal CSPWM se toma el dato que proviene de la LUT y se actualiza el ancho del

if dutyten>200 then dutyten:=200; else dutypwm<=dutyten*7; saldutypwm<=conv_std_logic_vector(dutypw m,11); end if;

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com
end process; process(clk) variable cont: integer range 0 to 1400; begin if clk 'event and clk='1' then cont:=cont+1; if cont<dutypwm then salpwm<='1'; elsif cont<1400 then salpwm<='0'; else cont:=0; end if; end if; salcont<=conv_std_logic_vector(cont,11); end process; end codisenho; when "0000001000" => sal<="0011"; hab<='1'; when "0000010000" => sal<="0100"; hab<='1'; when "0000100000" => sal<="0101"; hab<='1'; when "0001000000" => sal<="0110"; hab<='1'; when "0010000000" => sal<="0111"; hab<='1'; when "0100000000" => sal<="1000"; hab<='1'; when "1000000000" => sal<="1001"; hab<='1'; when "0000000001" => sal<="0000"; hab<='1'; when others=> hab<='0'; sal<="0000"; end case; end process; end codisenho;

Luis Javier Martinez Montero javiermm@engineer.com

El codificador de teclado recibe la senal correspondiente a cada tecla del teclado, la codifica de acuerdo al formato binario y genera una senal habilitadora, estas salidas estan conectadas directamente al microcontrolador.

LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.ALL; entity teclado is port(tecla :in std_logic_vector(9 downto 0); sal: out std_logic_vector(3 downto 0); hab: out std_logic); end teclado; architecture codisenho of teclado is begin process(tecla) begin case tecla is when "0000000010" => sal<="0001"; hab<='1'; when "0000000100" => sal<="0010"; hab<='1';

CONCLUSIONES Se utilizo el microcontrolador 89c52 por la capacidad de direccionamiento externo y la cantidad de pines de entrada/salida los cuales en otro tipo de microcontroladores no se cuenta con estas caractersticas.

El diseo hardware se implemento en el CPLD FLEX10K70RC240-4 de ALTERA creando el codigo en VHDL de cada modulo por separado y posteriormente interconectando cada uno de estos, para de Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com esta forma simular y verificar el funcionamiento de cada uno de estos modulos lo que hace al diseo mas sencillo para su ejecucin. Luis Javier Martinez Montero javiermm@engineer.com DIRECIONAMIENTO EXTERNO DEL 8051, Carlos Ivan Camargo, Universidad Nacional

La arquitectura utilizada para el controlador implementada es general y puede estar abierta a posibles cambios o implementar otros modulos a parte de los ya existentes y en el cual se puede implementar otro tipo de proceso a controlar solo realizando cambios en el contenido de la LUT y en el tipo de salida, por ejemplo modulacin sigma-delta.

La capacidad utilizada de el CPLD es de 44% con lo cual es posible la implementacion de nuevos perifricos en esta.

Los sistemas de control basados en logica difusa PD presentan un buen rendimiento en la velocidad de respuesta a cambios en el punto de establecimiento y realizan un control mas optimo y son facil implementacion en

dispositivos lgicos programables como lo es la CPLD. BIBLIOGRAFA

UNIVERSITY PROGRAM UP2 DEVELOPMENT KIT USER GUIDE, Altera

DISENO VHDL, Jose A. Boluda

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com Luis Javier Martinez Montero javiermm@engineer.com

El siguiente es el diagrama de bloques del sistema completo, donde se sealan los dispositivos implementados en el CPLD y el microcontrolador empleado.

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com Luis Javier Martinez Montero javiermm@engineer.com

A continuacion se presenta el diagrama completo del hardware implementado en el CPLD

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com Luis Javier Martinez Montero javiermm@engineer.com

A continuacion se presentan imagenes con el dispositivo ya implementado.

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERA ELECTRNICA MICROCONTROLADORES - MICROELECTRONICA Implementacin de un Controlador Difuso de un motor DC empleando la interfaz Microcontrolador - CPLD
Lina Mara Aguilar Lobo linamaria_a_l@hotmail.com Luis Javier Martinez Montero javiermm@engineer.com

Ing. Gabriel Snchez Surez gsanchez@bari.ufps.edu.co

Вам также может понравиться