You are on page 1of 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Informe de Diseo de Microcontroladores

Control de Rehabilitador Traumatolgico de Rodilla


Integrantes: Ansaldo Gastn Viccichi Jorge
..

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 1 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

ndice

Objetivo............................................................................................................. Descripcin del proyecto.................................................................................. Elementos a utilizar.......................................................................................... Funcionamiento................................................................................................ Inconvenientes durante el Desarrallo............................................................... Programacin y Simulacion.............................................................................. Programa ......................................................................................................... Variables y Puertos .......................................................................................... Aplicacin.......................................................................................................... Datos Tcnicos................................................................................................. Diagrama en bloques........................................................................................ Diagrama de flujo ............................................................................................. Conclusiones ................................................................................................... Bibliografia ....................................................................................................... Anexo A: Planos Electricos .............................................................................. Anexo B: Manual Pic........................................................................................

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 2 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Objetivo
Implementar mediante un Microcontrolador PIC 16F877a y un motor con encoder solidario al mismo, una mquina rehabilitadora de rodillas. Controlar la velocidad del aparato haciendo uso de un encoder y un motor de corriente continua. Aplicar los conocimientos adquiridos.

Descripcin del proyecto


Para el desarrollo del proyecto se cuenta con toda la estructura, la cual consiste bsicamente de una base de madera y un soporte para apoyar la pierna. Se construyo un tablero de mandos con teclado y display para el manejo manual del equipo, un potencimetro de referencia de velocidad y una selectora manualautomtico. El movimiento es realizado por medio de un motor de corriente continua alimentado por una fuente de 18 v, este posee un encoder solidario a su eje, que se utilizar para calcular velocidad. Mediante PWM se enva un tren de pulsos a un puente-H que permite al motor realizar todas las tareas a una velocidad predeterminada por el usuario. Para controlar el sentido de giro se utilizara el mismo puente-H.

Elementos utilizados
Microcontrolador 16F877a

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 3 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes Tablero de comando (teclado con codificador y display): Se divide en dos partes: Una consta del Teclado de 4x4 y el display de LCD que acta como interfaz hombre-maquina. Por otro lado se tiene el tablero de mando que contiene la selectora del modo de funcionamiento, el control de la velocidad manual mediante potencimetro y leds indicadores. Puente H (L298N):

Fig: del L298N Este integrado se alimenta con 5v para su funcionamiento y los 18v para alimentar al motor. La interfaz PUENTE H es bsicamente un sistema de conmutacin controlado por dos seales digitales de baja potencia que provienen del Micro. Cuando el sistema detecta un 1 digital en una de sus dos entradas de control y un cero en la otra, este conecta el motor al la fuente de alimentacin con determinada polaridad, si la seal de control que estaba en 1 pasa a cero y la de cero a uno el PUENTE H conecta la fuente al motor con la polaridad invertida facilitando as el giro en sentido contrario. Reguladores de Tensin a 5v. Mediante una sola fuente de 18v logramos alimentar el motor y todos los circuitos electrnicos mediante diferentes reguladores. Se usaron LM7812 y LM7805 estndar.

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 4 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes Codificador de Teclado de 16 Teclas 74C922N:

Fig: Codificador de teclado 4x4. Se implemento un codificador de Teclado por mtodos electrnicos por un tema de disponibilidad de puertos libres (en un momento se pens en usar mas puertos que los finalmente usamos). De esta manera mediante la codificacin electrnica se usaron 4 bits de Datos y un Bit de Interrupcin por teclado. El codificador funciona mediante un oscilador de Schmitt trigger, al cual se le puede variar la frecuencia cambiando el Capacitor (OSC). El C.I. lo que hace es habilitar una por una las columnas y sensar las filas para saber si se esta oprimiendo alguna tecla, de ser as, deshabilita el sensado y mantiene el valor de la tecla apretada a su salida. Una vez que se suelte la tecla el C.I. comenzara nuevamente a sensar el conjunto de teclas. Pantalla LCD: de 2 Lineas por 16 Caracteres. El LCD cuenta con 8 Bits de datos para recibir los caracteres provenientes del Micro. La alimentacin es de 5v mediante los pines Vss(-) y Vdd(+). Tiene un control de contraste mediante Voltaje regulado en la entrada del pin Vee. (potencimetro de 10K lineal) Para el manejo cuenta con un pin de habilitacin E y Rs y un bit de envo/recepcin de datos RW.

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 5 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Funcionamiento Funcionamiento Operativo


Iniciado el proceso se puede seleccionar el modo de funcionamiento manual/automtico utilizando la selectora ubicada en el tablero de comando. Para comenzar con el movimiento se debe presionar el botn de marcha (teclado). En automtico la mquina hace el recorrido a velocidad constante, cuyo valor es ingresado por teclado (1-65 RPM) y confirmado mediante el mismo. La velocidad en modo Automtico se podr variar sin necesidad de detener el equipo. En modo manual, el operador podr realizar los movimientos del equipo de manera independiente del ciclo, cambiando la velocidad del mismo por medio del potencimetro incorporado en el tablero de comando.

Funcionamiento Tcnico
Se utiliz un motor de corriente continua con una alimentacin nominal de 18v y caja reductora incorporada. El teclado de interfaz con la maquina cuenta con un conversor 74C922N el cual entrega un cdigo Hexadecimal de 4 Bits (0000-1111) conectado a la entrada del C y el Pin DA del Conversor a la entrada de Interrupcin (RB0/INT0) para determinar cuando se encuentra un dato nuevo a la salida del mismo. El movimiento del motor tanto de giro en avance como en giro en retroceso est regulado por un puente H (L298N) a travs de sus lneas de control manejadas por el C. Se utilizara un encoder incremental solidario al motor para poder conocer la velocidad cuasi-instantnea. Este encoder es del tipo Disco Magntico, al estar solidario al eje, gira a la misma velocidad del motor provocando una variacin del flujo magntico respecto a la velocidad, y este es enviado a la salida mediante una variacin de la frecuencia en dicha seal. La variacin de frecuencia provoca distinta cantidad de pulsos para un tiempo determinado, y la lgica para el conteo de pulsos se hace desde el Micro. Tomando como referencia la cantidad de pulsos en un tiempo y luego en otro tiempo diferente, con un t constante, se puede hacer una relacin para determinar la variacin de cantidades de pulsos y as obtener una velocidad cercana a la que se obtendra en tiempo real. La seal que entrega el encoder se introduce en la base de un Transistor BC548 polarizado en funcionamiento de Corte-Saturacin para tener una seal acondicionada a la entrada del C con un nivel de 5v. Esta seal tiene una variacin de frecuencia entre 1 Khz y 2 Khz para un factor de PWM del 40% al100%. La velocidad del motor est referenciada por un potencimetro lineal de 10k ubicado en el tablero de comando el cual varia entre 0-5v. El potencimetro se conecta a un Canal Analgico del C.

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 6 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes El Canal analgico que se usa es el ANO (PortA, bit0) y esta configurado con un reloj de conversin (Fosc/32) y alineacin a la izquierda mediante el Registro ADCON1. Los dems bits del Puerto A se usan como entradas Digitales. Para el PWM se usa el Pin RC2/CCP1 como Salida. Se usa una Resolucin de 10 Bits y una divisin de 1:4 del Timer2. Para tomar el ciclo de trabajo del PWM existen dos formas: Una en Manual donde se toma el valor del canal Analgico o en Automtico mediante el ingreso de RPMs por Teclado. Para el Capturador de pulsos del Encoder se usa el Pin RC1/CCP2 como Entrada, con un Preescalador 1:1 del Timer1. El Timer0 esta siendo utilizado para realizar una interrupcin temporizada de 12ms y mediante sumas sucesivas realizamos cada 60ms la consulta del valor proporcionado por el encoder y reseteamos el mismo para una nueva contabilidad.

Inconvenientes durante el Desarrollo


Se probaron diferentes frecuencias para el PWM y se notaron variaciones en el arranque y la velocidad final del motor. Se opto por usar la divisin por 4 del Timer. El encoder era muy impreciso por lo que no se pudo hacer las relaciones para controlar la velocidad. La idea era hacer la relacin de pulsos anteriores con pulsos actuales pero haba demasiadas variaciones para una velocidad constante. Se pens en agregar un encoder a la maquina pero fue difcil su implementacin (se necesitaba tornear una pieza y hacerle un agujero en el centro con exactitud). Sin embargo estos pulsos del encoder, si bien no marcaban una cantidad real nos sirvi para efectuar una rutina de captura y enviar los pulsos al LCD, por lo que consiguiendo mejorar la calidad del encoder se tendr la lectura de velocidad en el LCD y un optimo control. Por el mismo motivo no se pudo implementar un pequeo lazo cerrado PI. La idea consista en realimentar una variable en memoria con la cantidad de pulsos durante un Tiempo constante y comparando esta variable con los pulsos actuales ir aumentando o disminuyendo el ciclo del PWM dependiendo de la relacin entre los pulsos. El control si bien era algo sencillo lograba incrementar la velocidad cuando se incrementaba la carga.

Programacin y Simulacin:
Diseo de Microcontroladores Ansaldo - Viccichi Pgina 7 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Se uso el MPLab V.8 para desarrollar el codigo. Este codigo era cargado en el Soft de Simulacin: ISIS Proteus, el cual tuvo un funcionamiento similar a la maquina real. Para pasar el programa al PIC se uso el EPIC con un programador in-circuit Made in Casa Capturas y Circuitos:

Simulacion

Esquema conexin Programador In-Circuit. Seal de interrupcin cada 60ms (color purpura) 1div/10ms

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 8 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Prueba de PWM para velocidad ingresada por teclado en automatico.

Programa

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 9 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

list p=16f877 include <P16F877.INC> include "XLCD.inc" ;This include all required files and variables. ;********* DISEO DE MICROCONTROLADORES PROYECTO DE MATERIA *********** ; PROF: JOSE JUAREZ ; UNIVERSIDAD NACIONAL DE QUILMES ; ALUMNOS: VICCICHI ANSALDO ;**************************************************************************** ;LAS 6 PRIMERAS POSICIONES DE MEMORIA ESTAN UTILIZADAS POR LA RUTINA DE ;INICIALIZACION DEL DISPLAY, 0x20 - 0x25 ;**************************************************************************** ;************************* DECLARACION DE VARIABLES ************************* ;**************************************************************************** T1CON AUX_PWM cont1_pwm PLS_ENCH PLS_ENCL PWM_H PWM_L cont CNT_LECT dato primerdato motor_stad salida D1D D2D VEL_DEC1 VEL_DESEAD VEL_DEC2 PASO MODO VEL_AUTO AUX_VEL_AU AUX1_VEL_AU PWM_HAU PWM_LAU STATUS_TEMP W_TEMP Same EQU EQU EQU EQU EQU EQU EQU EQU EQU 0x10 0x26 0x27 0x28 0X29 0x2A 0x2B 0x2C 0x2D

equ 0x30 equ 0x31 equ 0x32 equ 0x33 EQU 0x34 EQU 0x35 EQU 0x36 EQU 0x37 EQU 0x38 EQU 0x39 EQU 0x40 EQU 0x41 EQU 0x42 EQU 0x43 EQU 0x44 EQU 0x45 EQU 0x7D EQU 0x7E equ 1 org 0x00 main org 0x04 interrup

goto goto

;dir de atencio de interrupcion ;Salta a la rutina de atencion de interrupcion

;****** TABLA DE DATOS UTILIZADAS PARA DEVOLUCION DE VALORES ASCII *****

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 10 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


;****** tabla org EN INGRESO DE DATOS DE TECLADO Y LEYENDAS A LCD 0x10 PCL,1 '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' 'A' 'B' 'C' 'D' 'E' 'F' PCL,1 'R' 'U' 'N' ' ' ' ' 'M' 'A' 'N' ' ' '-' 'S' 'T' 'O' 'P' ' ' 'M' 'A' 'N' ' ' '-' 'R' 'U' 'N' ' ' ' ' 'A' 'U' 'T' 'O' '-' 'S' 'T' 'O' 'P' ' ' *****

addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw estado addwf retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 11 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


retlw retlw retlw retlw retlw ; ; ; 'A' 'U' 'T' 'O' '-'

*********************************************************** ********** PROGRAMA PRINCIPAL ************ *********************************************************** org 0x60

main ;********************************************************************** ; CONFIGURACION DE INTERRUPCIONES ;********************************************************************** BSF STATUS,RP0 ;BANCO DE MEMORIA 1 BSF TRISC,1 ;PATITA RC1/CCP2 COMO ENTRADA BCF TRISE,0 ;PATITA 0 DEL PUERTO E COMO SALIDA BCF BSF MOVLW MOVWF TRISE,1 TRISB,0 0x87 OPTION_REG ;PATITA 1 DEL PUERTO E COMO SALIDA ;RESIT PULL-UP PORTB,INT0 F_D,TMR0 POR ;PULSOS DE RELOJ INTERNO. ;CONFIGURA PRESC DEL TMR0 1/256

;***************************************************************** ; CONFIGURACION CONVERSOR ANALOGICO/DIGITAL ;***************************************************************** MOVLW MOVWF MOVLW MOVWF BCF MOVLW MOVWF CLRF CLRF CLRF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF 0x0E ADCON1 0x3F TRISA STATUS,RP0 0x03 T1CON TMR1H TMR1L PORTB b'10110000' INTCON 0x15 TMR0 0x05 CNT_LECT 0x81 ADCON0 ;CONFIGURACION DE INTERRUPCIONES RB0 Y TMR0 ;CARGO EN TMR0 VALOR 15 PARA CONTAR DESDE EL Y ;CONSEGUIR EL EQUIVALENTE A 12ms ;PONE A CERO EL CONT. DE 12ms PARA LLEGAR A ;60ms ;DEBE LLEGAR A 5 ;SELECCIONA EL CONVERTIDOR CON FREC/32 ;Y ENCIENDE EL CONVERSOR ;BANCO DE MEMORIA 0 ;CONFIGURA EL TIMER 1 EN MODO CONTADOR, PREESC ;1/1 ;INICIALIZA EN CERO EL TIMER 1 ;APAGA EL MODULO CCP PARA INICIALIZAR ;SELEC. SOLO EL CANAL AN0 COMO ENTRADA ;ANALOGICA ;Y JUSTIFICACION A LA izquierda DEL RESULTADO ;REF. PAG 33 ANEXO B

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 12 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


;***************************************************************** ; CONFIGURACION PWM ;***************************************************************** BSF STATUS,RP0 ;Banco de memoria 1 MOVLW 0xFF ;Carga periodo MOVWF PR2 ;lo establece para el PWM BCF TRISC,2 ;Patita RC2/CCP1 como salida BCF STATUS,RP0 ;Banco de memoria 0 CLRF CCPR1L ;Inicializa el ciclo de trabajo en cero BCF CCP1CON,CCP1X ;PONE A CERO EL BIT 0 DE LA SIG PALABRA ;DADO QUE USAMOS RESOLUCION 10 BITS BCF CCP1CON,CCP1Y ;PONE A CERO EL BIT 1 DE LA SIG PALABRA MOVLW 0x05 ;Configura el timer 2 MOVWF T2CON ;PREESCALADOR 1/1, HABILITA TIMER BSF CCP1CON,CCP1M3 ;CONFIGURA MODO DE TRABAJO BSF CCP1CON,CCP1M2 ;CONFIGURA MODO DE TRABAJO CLRF CLRF CLRF CLRF CLRF CLRF CLRF PAGESEL call call call movlw call ciclo CALL primerdato salida D1D D2D VEL_DEC1 VEL_DEC2 VEL_DESEAD XLCDInit XLCDInit ;EN VAR PRIMERDATO ESTA VALOR BIN DE LA ;TECLA PRESIONADA ;VALOR ASCII DE TECLA PRESIONADA ;************************************** ; VARIABLES USADAS PARA ; ADECUACION ; DE DATOS PARA VELOCIADAD ; DESEADA ;Inicializacion de LCD

XLCDClear XLCDL1home XLCDDisplayOnCursorOff XLCDCommand DISPLAY

;Dispay on cursor off

BTFSS PORTA,1 GOTO automatico MOVLW BCF XORWF BTFSS GOTO CALL CALL manual XORWF CLRF CALL BSF espera BTFSC goto MOVF MOVWF BSF 'A' STATUS,Z salida,W STATUS,Z ciclo marcha DISPLAY PORTC,4 MODO pausa ADCON0,GO ADCON0,GO espera ADRESH,W PWM_H STATUS,RP0 ;LED

;SELECTORA MAN/AUT.

AUT=0

MAN=1

;CHEQUEA QUE SE DE ARRANQUE AL MOTOR ;PREGUNTA SI ESTA EN MARCHA ;SUBRUTINA DE MARCHA

;DELAY PARA QUE PASE EL TIEMPO DE ADQUISICION ;INICIA CONVERSION ;ESPERA A QUE TERMINE LA CONVERSION BIT GO/DONE ;TOMO VALOR alto DEL CANAL ANALOGICO ;Banco de memoria 1

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 13 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


MOVF BCF MOVWF MOVLW ANDWF RRF RRF MOVF MOVWF CALL CALL MOVLW BCF XORWF BTFSS GOTO CALL CLRF CLRF CALL GOTO automatico BSF BSF MOVLW BCF XORWF BTFSS GOTO CALL AUTO_RUN CALL MOVFW MOVWF MOVWF MOVWF BCF RRF ANDLW MOVWF RRF ANDLW MOVWF ADDWF CLRF BTFSC BSF BTFSC BSF BCF RRF RRF ADRESL,W STATUS,RP0 AUX_PWM 0xC0 AUX_PWM,1 AUX_PWM,1 AUX_PWM,1 AUX_PWM,W PWM_L ciclo_pwm DISPLAY 'B' STATUS,Z salida,W STATUS,Z manual paro PWM_H PWM_L ciclo_pwm ciclo PORTC,4 MODO,0 'A' STATUS,Z salida,W STATUS,Z ciclo marcha DISPLAY VEL_DESEAD VEL_AUTO AUX1_VEL_AU AUX_VEL_AU STATUS,C AUX_VEL_AU,0 0x7F AUX_VEL_AU AUX_VEL_AU,0 0x7F AUX1_VEL_AU AUX_VEL_AU,1 PWM_LAU AUX_VEL_AU,0 PWM_LAU,4 AUX_VEL_AU,1 PWM_LAU,5 STATUS,C AUX_VEL_AU,1 AUX_VEL_AU,0 ;TOMO VALOR BAJO DEL CANAL ANALOGICO ;Banco de memoria 0 ;FORMO LA PARTE BAJA DEL CANAL ANALOGICO PARA PASARLO AL PWM ;ACOMODO EL DATO OBTENIDO EN EL CANAL ANALOGICO ;PARA LLEVARLO AL REGISTRO DE SALIDA DEL PWM ;DADO QUE LOS LSB ESTAN EN EL BIT 4Y5 CCP1CON ;ENVIA DATO AL PTE H ;ENVIA DATOS AL DISPLAY

;PREGUNTA SI ESTA EN PARO

;PONE A CERO LA SALIDA DEL PWM ;SI ESTA EN PARO

;LED ;INDICACION DE MODO EN AUTOMATICO(AUXILIAR) ;PREGUNTA SI ESTA EN MARCHA ;SUBRUTINA DE MARCHA ;VELOCIDAD ;VELOCIDAD ;VELOCIDAD ;VELOCIDAD INGRESADA ACTUAL EN ACTUAL EN ACTUAL EN POR TECLADO MODO AUTOMATICO MODO AUTOMATICO(AUXILIAR) MODO AUTOMATICO(AUXILIAR)

;BORRA FLAG DE CARRY DEL STATUS PARA USAR RRF ;******************************************** ; ADECUA DATO INGRESADO POR TECLADO ; PARA ENVIARLO AL CANAL ; DEL PWM ; (REF PAG 49 ANEXO B) ;SE USA EN LA CUENTA PROXIMA PARA DESCONTAR 1 ;DE (VEL x 16) ; APROXIMA CUENTAS PARA DADO QUE: ; ;VELOCIDAD DESEADA * 15.75 = PWM ; ; ; ; ; ;

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 14 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


ANDLW 0x3F MOVWF AUX_VEL_AU BCF RLF RLF BCF MOVFW SUBWF DECF MOVFW ADDWF MOVFW MOVWF MOVLW BCF XORWF BTFSS GOTO STATUS,C VEL_AUTO,1 VEL_AUTO,1 STATUS,C AUX1_VEL_AU VEL_AUTO,1 VEL_AUTO AUX_VEL_AU VEL_AUTO,1 VEL_AUTO PWM_HAU 'C' STATUS,Z salida,W STATUS,Z NO_CAMBIA_DATO ; ; ; ; ; ; ; ;**********************************************

;PREGUNTA SI ACEPTO UN CAMBIO DE VELOCIAD ;POR MEDIO DE LA TECLA C DEL TECLADO

MOVFW PWM_HAU MOVWF PWM_H MOVFW PWM_LAU MOVWF PWM_L CALL ciclo_pwm NO_CAMBIA_DATO MOVLW 'B' BCF STATUS,Z XORWF salida,W BTFSS STATUS,Z GOTO AUTO_RUN CALL paro CLRF PWM_H CLRF PWM_L CALL ciclo_pwm GOTO ciclo

;** PASA DATOS AL PWM ** ; ; ;***********************

;PREGUNTA SI ESTA EN PARO ; ;PONE A CERO EL PWM ;SI ESTA EN PARO

;************************************************************** ; RUTINAS ;************************************************************** Pausa ;RETARDO NECESARIO PARA CONVERSION ANALOGICA MOVLW 0x30 ;APROXIMADAMENTE 30uSEG CON XTLA 20MHz ;Tcy=0.2 Useg (REF PAG 30 ANEXO B) MOVWF cont ;CARGA EL DATO EN UNA VARIABLE rep DECFSZ cont,1 ;DECREMENTA EL CONTADOR Y SALTA SI ES CERO GOTO rep RETURN marcha BSF PORTE,1 BSF PORTC,5 RETURN

;LED

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 15 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


paro

BCF PORTE,1 BCF PORTC,5 RETURN XLCDL1home D2D XLCDPut D1D XLCDPut XLCDL2home PORTE B'00000010' motor_stad 0x00 motor_stad,1 .10 MODO,0 .20 PASO

;LED

DISPLAY call MOVFW call MOVFW call call MOVFW ANDLW MOVWF MOVLW BTFSS MOVLW BTFSC ADDLW MOVWF

LEYENDA call estado call XLCDPut BCF STATUS,Z XORLW '-' BTFSC STATUS,Z RETURN INCF PASO,1 MOVFW PASO GOTO LEYENDA RETURN ciclo_pwm MOVF PWM_H,W MOVWF CCPR1L MOVLW 0xCF ANDWF CCP1CON,1 MOVF PWM_L,W IORWF CCP1CON,1 RETURN org 0x0140 interrup MOVWF W_TEMP SWAPF STATUS,W CLRF STATUS MOVWF STATUS_TEMP BTFSC INTCON,INTF GOTO tecla BTFSS INTCON,2 RETFIE DECFSZ CNT_LECT,F GOTO RET1 BTFSS PORTE,0

;RUTINA PARA MOSTRAR POR DISPLAY EL ESTADO ;DEL EQUIPO RUN/STOP MAN/AUTO

;TOMO VALOR ALTO PARA PWM ;PASO EL VALOR ESTE AL CICLO DE TRABAJO DEL PWM ;TOMO VALOR BAJO PARA PWM ;PASO ESTE AL CICLO DE TRABAJO DEL PWM

;Ha sido el TECLADO ? ;Ha sido el TIMER ?

;*****************************************

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 16 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


;PROVISORIO PARA CHEQUEAR LA INTERRUPCION ;TEMPORIZADA ; ;ENCIENDE Y APAGA EL RE0 CADA 60mS ; ; ; ;***************************************** ;APAGA EL CONTADOR DE PULSOS ;PONE A CERO EL CONTADOR DE CONTEO DE 12ms PARA LLEGAR A 60ms ;DEBE LLEGAR A 5 ;PULSO ENCODER BAJO ; PULSO ENCODER ALTO ;INICIALIZA EN CERO EL TIMER 1 ;APAGA EL MODULO CCP PARA INICIALIZAR ;ENCIENDE EL CONTADOR DE PULSOS ;LIMPIA BANDERA DE DESBORDE ;CARGO EN TMR0 EL VALOR 15 PARA QUE EMPIECE ;A CONTAR DESDE EL Y ;CONSEGUIR EL EQUIVALENTE A 12ms ;SECUENCIA PARA RESTITUIR VALORES DE REGISTROS ;CUANDO SALE DE LA INTERRUPCION ;Y EVITAR QUE SE PIERDA EL CONTEXTO DEL ;PROGRAMA

PP PP1

GOTO BCF GOTO BSF

PP PORTE,0 PP1 PORTE,0

BCF T1CON,TMR1ON MOVLW 0x05 BCF MOVWF MOVFW MOVWF MOVFW MOVWF CLRF CLRF BSF STATUS,C CNT_LECT TMR1L PLS_ENCL TMR1H PLS_ENCH TMR1H TMR1L T1CON,TMR1ON

RET1

BCF INTCON,2 MOVLW 0x15 MOVWF TMR0 SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W RETFIE tecla movlw 0x00 movwf primerdato BCF movf andlw movwf BCF rrf rrf movf CALL movwf STATUS,RP0 PORTA,W b'00111100' primerdato STATUS,C primerdato,1 primerdato,1 primerdato,0 tabla salida

;SE ALOJA EL VALOR BINARIO DE LA TECLA ;PRESIONADA ;Banco de memoria 0

MOVLW b'00001010' BCF SUBWF BTFSC GOTO MOVFW MOVWF STATUS,DC primerdato,W STATUS,DC PASAR VEL_DEC1 VEL_DEC2

;EN LA VARIABLE SALIDA TENEMOS EN VALOR EN ASCII DE LA TECLA PRESIONADA ;ES MAYOR QUE 9? PARA DETERMINAR SI SE ;PRESIONO UN NUMERO O UN COMANDO

;**********************************************

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 17 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes


RLF VEL_DEC2,1 MOVFW VEL_DEC2 RLF VEL_DEC2,1 RLF ADDWF MOVFW MOVWF ADDWF MOVWF MOVFW MOVWF MOVFW MOVWF PASAR VEL_DEC2,1 VEL_DEC2,1 primerdato VEL_DEC1 VEL_DEC2,0 VEL_DESEAD D1D D2D salida D1D ;* ;* ;* PASO DE MULTIPLICACION x10 PARA LA DECENA ;* DEL DATO INGRESADO POR TECLADO ;* ;* ;* ;* ;**********************************************

SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W BCF INTCON,INTF RETFIE

;RESTAURA VALORES ANTERIORES A LA INTERRUPCION

end

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 18 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Variables
VARIABLES AUX_PWM CONT1_PWM PLS_ENCH PLS_ENCL PWM_H PWM_L CONT CNT_LECT DATO PRIMERDATO MOTOR_STAD SALIDA D1D D2D VEL_DEC1 VEL_DESEAD VEL_DEC2 PASO MODO VEL_AUTO AUX_VEL_AU AUX1_VEL_AU PWM_HAU PWM_LAU STATUS_TEMP W_TEMP DIRECCION 0x26 0x27 0x28 0X29 0x2A 0x2B 0x2C 0x2D 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x40 0x41 0x42 0x43 0x44 0x45 0x7D 0x7E PUERTO PORTA PORTA PORTA PORTA PORTA PORTA PORTB PORTB PORTB PORTB PORTC PORTC PORTC PORTC PORTD PORTE PORTE BIT 0 1 2 3 4 5 0 1 2 4 1 2 4 5 0 7 1 2 FUNCION Canal Anal. Vel. Man. Man / Aut. Teclado IN0 (LSB) Teclado IN1 Teclado IN2 Teclado IN3 (MSB) Interrupciones Display (RS) Display (EN) Display (R/W) IN Pulso Encoger OUT P.W.M. Led Estado Man/Aut. Led Estado Run/Stop Display Giro hor. Pte H Giro Antihor. Pte H

Puertos

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 19 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Aplicacin
Ventajas clnicas: Rompe el ciclo traumtico, inflamatorio y la perdida de rango de movimiento. Elimina la rigidez articular en rodilla y cadera. Acelera la recuperacin del rango de movimiento en el periodo postoperatorio. Mantiene la calidad de la superficie articular. Reduce el dolor y los edemas. Evita la trombosis venosa. Proporciona un movimiento pasivo continuo postoperatorio inmediato. Reduce el periodo de hospitalizacin. Disminuye la necesidad de administrar medicacin para el dolor. Mantiene la posicin deseada para el estiramiento y el reposo muscular. Indicaciones: Artrolisis Ciruga para la sustitucin de rodilla Fracturas (rotulianas, del platillo tibial, femorales...) Reparacin de ligamentos Ciruga artroscpica Ciruga de cadera Quemaduras, sepsis articular Y en general, cualquier patologa que precise de un periodo de rehabilitacin de miembro inferior.

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 20 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Tablero de mando: Pulsador Marcha y Pulsador Paro sobre Teclado (teclas A y B ) Selectora Manual Automtico (2 posiciones fijas) Teclado 4x4 Display Potencimetro lineal 10K

Datos tcnicos: Altura del paciente 1.40 a 1.90 m.

Longitud de desplazamiento 250 mm Rosca de Tornillo Peso Longitud Anchura Altura Tensin de Entrada Tensin de Motor R.P.M. del motor Potencia del motor 14x2.6 mm 15 Kg. 1200 mm 450 mm 500 mm 220 V 50 Hz 18 Vdc 65 1/min. 27 W

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 21 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Diagrama funcional Base de Tiempo Sensor y Encoder Motor PWM Controlador Acond. De Seal

Pote

A/D

Rutina A/D

Man/Aut.

Teclado y Comando

Interfaz I/O

Rutina Teclado

Rutina de Control. Programa Principal

LCD

Interfaz I/O

Rutina LCD

Interfaz I/O Seguridad

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 22 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes El diagrama funcional da una idea de cmo se relacionan los diferentes dispositivos con el Microcontrolador. Se puede apreciar como se transmiten los datos d eun dispositivo al otro y que relacion hay entre dispositivos.

Diagrama de flujo

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 23 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Inicio

Configuracin General

Inicializacin de Variables

Consulta Comandos

SelMan =0

Rutina Manual

Marcha =1 Avance=1

Vel. Nueva

Carga VEL.

Paro =1

Avance=0

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 24 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Manual

Consulta Comandos

Marcha =1

Avance=1

Carga velocidad de AN0

Paro =1

Avance=0

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 25 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes

Conclusiones: Utilizando las herramientas de simulacin proporcionadas por Proteus y MPLab pudimos depurar el cdigo de programacin sin necesidad de utilizar hardware optimizando los tiempos de desarrollo (mediante el Proteus se logro la simulacin completa del desarrollo). Durante el desarrollo se realizaron pruebas con distintas frecuencias de salida para el PWM y basndonos en datos del Puente H y el cristal seleccionado para el C (20 MHz) elegimos la frecuencia ms alta (20KHZ), con el fin de evitar movimientos bruscos del motor en el arranque. Se probo de forma individual el capturador de entrada obtenindose buenos resultados (se leia de forma optima la cantidad de pulsos recibidos por el micro) pero debido a problemas en el encoder interno del motor ya explicados debimos realizar un control a lazo abierto. El C (P16F877a) fue elegido en base a los requerimientos planteados en el inicio del desarrollo (capturador de entrada, salida PWM, cantidad de puertos e interrupciones).

Bibliografa:
Diseo de Microcontroladores Ansaldo - Viccichi Pgina 26 de 27

Ingeniera en Automatizacin y Control Industrial Universidad Nacional de Quilmes http://www.datasheetcatalog.net

De aqu se sacaron los PDF tcnicos de cada integrado. http://www.melabs.com/support/icsp.htm http://todopic.mforos.com/15353/218789-entrenador-para-16f877/ http://www.todopic.com.ar/pbp_sp.html http://www.alos.5u.com/indexpic877.htm http://www.4shared.com/file/83461416/e8eb6f26/Manual_PIC16F87X.html http://s.scribd.com/doc/101172/pic16f877-en-espanol1 http://s.scribd.com/doc/101172/pic16f877-en-espanol2

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 27 de 27

You might also like