You are on page 1of 26

Ingeniera en Automatizacin y Control Industrial

Universidad Nacional De Ingeniera

Informe de Diseo de Microcontroladores

Control de Rehabilitador Traumatolgico


de Rodilla
Integrantes:

Diaz Gonzales Kamilo


..

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 1 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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.
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.
Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 6 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
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 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

Prueba de PWM para velocidad ingresada por teclado en automatico.

Programa

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 9 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
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

EQU

0x10

AUX_PWM
cont1_pwm
PLS_ENCH
PLS_ENCL
PWM_H
PWM_L
cont
CNT_LECT

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0x26
0x27
0x28
0X29
0x2A
0x2B
0x2C
0x2D

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
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

goto
goto

org 0x00
main
org 0x04
interrup

;dir de atencio de interrupcion


;Salta a la rutina de atencion de interrupcion

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


;******
EN INGRESO DE DATOS DE TECLADO Y LEYENDAS A LCD
*****

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 10 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

org
tabla

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
retlw

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'
' '
'A'

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 11 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
retlw
retlw
retlw
retlw
;
;
;

'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

TRISE,1
TRISB,0
0x87

MOVWF

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

0x0E

MOVWF

ADCON1

MOVLW
MOVWF

0x3F
TRISA

BCF

STATUS,RP0

MOVLW
MOVWF

0x03
T1CON

CLRF
CLRF

TMR1H
TMR1L

CLRF

PORTB

MOVLW
MOVWF
MOVLW
MOVWF
MOVLW

b'10110000'
INTCON
0x15
TMR0
0x05

;SELEC. SOLO EL CANAL AN0 COMO ENTRADA


;ANALOGICA
;Y JUSTIFICACION A LA izquierda DEL RESULTADO
;REF. PAG 33 ANEXO B

;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

;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
MOVWF
CNT_LECT
;DEBE LLEGAR A 5
MOVLW
0x81
;SELECCIONA EL CONVERTIDOR CON FREC/32
MOVWF
ADCON0
;Y ENCIENDE EL CONVERSOR
;*****************************************************************

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 12 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
;
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

primerdato

CLRF
CLRF
CLRF
CLRF
CLRF
CLRF

salida
D1D
D2D
VEL_DEC1
VEL_DEC2
VEL_DESEAD

;EN VAR PRIMERDATO ESTA VALOR BIN DE LA


;TECLA PRESIONADA
;VALOR ASCII DE TECLA PRESIONADA
;**************************************
;
VARIABLES USADAS PARA
;
ADECUACION
;
DE DATOS PARA VELOCIADAD
;
DESEADA

PAGESEL
call

XLCDInit
XLCDInit

;Inicializacion de LCD

call
call
movlw
call

XLCDClear
XLCDL1home
XLCDDisplayOnCursorOff
XLCDCommand

;Dispay on cursor off

ciclo
CALL

DISPLAY

BTFSS PORTA,1
GOTO automatico
MOVLW
BCF
XORWF
BTFSS
GOTO
CALL
CALL
manual
XORWF
CLRF
CALL
BSF
espera
BTFSC
goto
MOVF
MOVWF
BSF
MOVF

;SELECTORA MAN/AUT.

'A'
STATUS,Z
salida,W
STATUS,Z
ciclo
marcha
DISPLAY

AUT=0

MAN=1

;CHEQUEA QUE SE DE ARRANQUE AL MOTOR


;PREGUNTA SI ESTA EN MARCHA
;SUBRUTINA DE MARCHA

PORTC,4
MODO
pausa
ADCON0,GO

;LED

ADCON0,GO
espera
ADRESH,W
PWM_H
STATUS,RP0
ADRESL,W

;ESPERA A QUE TERMINE LA CONVERSION BIT GO/DONE

Diseo de Microcontroladores

;DELAY PARA QUE PASE EL TIEMPO DE ADQUISICION


;INICIA CONVERSION

;TOMO VALOR alto DEL CANAL ANALOGICO


;Banco de memoria 1
;TOMO VALOR BAJO DEL CANAL ANALOGICO

Ansaldo - Viccichi

Pgina 13 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
BCF
MOVWF
MOVLW
ANDWF

STATUS,RP0
AUX_PWM
0xC0
AUX_PWM,1

RRF
RRF
MOVF
MOVWF

AUX_PWM,1
AUX_PWM,1
AUX_PWM,W
PWM_L

CALL
CALL

ciclo_pwm
DISPLAY

MOVLW
BCF
XORWF
BTFSS
GOTO
CALL
CLRF
CLRF
CALL
GOTO

'B'
STATUS,Z
salida,W
STATUS,Z
manual
paro
PWM_H
PWM_L
ciclo_pwm
ciclo

automatico
BSF
BSF
MOVLW
BCF
XORWF
BTFSS
GOTO
CALL
AUTO_RUN
CALL
MOVFW
MOVWF
MOVWF
MOVWF

PORTC,4
MODO,0
'A'
STATUS,Z
salida,W
STATUS,Z
ciclo
marcha
DISPLAY
VEL_DESEAD
VEL_AUTO
AUX1_VEL_AU
AUX_VEL_AU

BCF
RRF
ANDLW
MOVWF
RRF
ANDLW
MOVWF

STATUS,C
AUX_VEL_AU,0
0x7F
AUX_VEL_AU
AUX_VEL_AU,0
0x7F
AUX1_VEL_AU

ADDWF
CLRF
BTFSC
BSF
BTFSC
BSF
BCF
RRF
RRF
ANDLW

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
0x3F

Diseo de Microcontroladores

;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
;
;
;
;
;
;
;

Ansaldo - Viccichi

Pgina 14 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
MOVWF AUX_VEL_AU

BCF
RLF
RLF
BCF
MOVFW
SUBWF

STATUS,C
VEL_AUTO,1
VEL_AUTO,1
STATUS,C
AUX1_VEL_AU
VEL_AUTO,1

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

DECF
MOVFW
ADDWF
MOVFW
MOVWF

VEL_AUTO
AUX_VEL_AU
VEL_AUTO,1
VEL_AUTO
PWM_HAU

MOVLW
BCF
XORWF
BTFSS
GOTO

'C'
STATUS,Z
salida,W
STATUS,Z
NO_CAMBIA_DATO

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

;PREGUNTA SI ACEPTO UN CAMBIO DE VELOCIAD


;POR MEDIO DE LA TECLA C DEL TECLADO

;** 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

paro

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 15 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
BCF
PORTE,1
BCF
PORTC,5
RETURN
DISPLAY
call
MOVFW
call
MOVFW
call
call
MOVFW
ANDLW
MOVWF
MOVLW
BTFSS
MOVLW
BTFSC
ADDLW
MOVWF

;LED

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

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

Diseo de Microcontroladores

;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 ?

;*****************************************
;PROVISORIO PARA CHEQUEAR LA INTERRUPCION

Ansaldo - Viccichi

Pgina 16 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

PP

GOTO
BCF
GOTO

PP
PORTE,0
PP1

BSF

PORTE,0

PP1
BCF
T1CON,TMR1ON
MOVLW 0x05
BCF
MOVWF
MOVFW
MOVWF
MOVFW
MOVWF
CLRF
CLRF
BSF
RET1

STATUS,C
CNT_LECT
TMR1L
PLS_ENCL
TMR1H
PLS_ENCH
TMR1H
TMR1L
T1CON,TMR1ON

BCF
INTCON,2
MOVLW 0x15
MOVWF TMR0

tecla

SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
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

;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

;SE ALOJA EL VALOR BINARIO DE LA TECLA


;PRESIONADA
;Banco de memoria 0

;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

STATUS,DC
primerdato,W
STATUS,DC
PASAR
VEL_DEC1
VEL_DEC2

RLF
VEL_DEC2,1
MOVFW VEL_DEC2
RLF
VEL_DEC2,1

Diseo de Microcontroladores

;**********************************************
;*
;*
;*
PASO DE MULTIPLICACION x10 PARA LA DECENA

Ansaldo - Viccichi

Pgina 17 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

PASAR

RLF
ADDWF
MOVFW
MOVWF
ADDWF
MOVWF
MOVFW
MOVWF
MOVFW
MOVWF

VEL_DEC2,1
VEL_DEC2,1
primerdato
VEL_DEC1
VEL_DEC2,0
VEL_DESEAD
D1D
D2D
salida
D1D

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

;*
DEL DATO INGRESADO POR TECLADO
;*
;*
;*
;*
;**********************************************

;RESTAURA VALORES ANTERIORES A LA INTERRUPCION

end

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 18 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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

Puertos

PUERTO
PORTA

BIT
0

PORTA
PORTA
PORTA
PORTA
PORTA
PORTB
PORTB
PORTB
PORTB
PORTC
PORTC
PORTC

1
2
3
4
5
0
1
2
4
1
2
4

PORTC

PORTD
Ansaldo
- Viccichi

0 7
1
2

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.

Diseo de Microcontroladores

0x35
0x36
0x37
0x38
0x39
0x40
0x41
0x42
0x43
0x44
0x45
0x7D
0x7E

PORTE
PORTE

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
Pgina 19 de 26
Giro hor. Pte H
Giro Antihor. Pte H

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
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.

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

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 20 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

Datos tcnicos:
Altura del paciente

1.40 a 1.90 m.

Longitud de desplazamiento 250 mm


Rosca de Tornillo

14x2.6 mm

Peso

15 Kg.

Longitud

1200 mm

Anchura

450 mm

Altura

500 mm

Tensin de Entrada

220 V 50 Hz

Tensin de Motor

18 Vdc

R.P.M. del motor

65 1/min.

Potencia del motor

27 W

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 21 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

Diagrama funcional
Base de
Tiempo
Sensor y
Encoder

Acond. De
Seal

Motor
PWM

Pot
e

Teclado y
Comando

LCD

A/D

Interfaz
I/O

Interfaz
I/O

Controlador

Rutina
A/D

Man/Aut.

Rutina
Teclado

Rutina
LCD

Rutina de
Control.
Programa
Principal

Interfaz
I/O
Seguridad

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.

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 22 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera
Diagrama de flujo
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 23 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

Manual

Consulta
Comandos

Marcha
=1

Avance=1

Carga
velocidad de
AN0

Paro
=1

Avance=0

Diseo de Microcontroladores

Ansaldo - Viccichi

Pgina 24 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 25 de 26

Ingeniera en Automatizacin y Control Industrial


Universidad Nacional De Ingeniera

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 26 de 26

You might also like