Professional Documents
Culture Documents
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 1 de 27
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
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.
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
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.
Programacin y Simulacin:
Diseo de Microcontroladores Ansaldo - Viccichi Pgina 7 de 27
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
Programa
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 9 de 27
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
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 10 de 27
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
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
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
;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
;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
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
;************************************************************** ; 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
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
;*****************************************
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 16 de 27
PP PP1
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
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
SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W BCF INTCON,INTF RETFIE
end
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 18 de 27
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
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
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
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
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
LCD
Interfaz I/O
Rutina LCD
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
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
Manual
Consulta Comandos
Marcha =1
Avance=1
Paro =1
Avance=0
Diseo de Microcontroladores
Ansaldo - Viccichi
Pgina 25 de 27
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
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