299016_3

Upload: ricardo-parra

Post on 04-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/13/2019 299016_3

    1/22

    TRABAJO COLABORATIVO 2

    ARNULFO LIZCANO

    ALEXANDER JESUS MORA

    RAUL EFRAIN ENRIQUEZ

    DAVID PASTOR MORALES

    TUTOR

    SAULO ANDRES GOMEZ

    INSTRUMENTACION MDICA

    299016_3

    UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

    ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIAINGENIERIA ELECTRONICA

    OCTUBRE DE 2010

  • 8/13/2019 299016_3

    2/22

    INTRODUCCION

    La electroterapia es una va eficiente empleada mundialmente como

    tratamiento para el alivio del dolor, el fortalecimiento muscular, la insercin de

    sustancias medicamentosas (iontoforesis), la aceleracin de la curacin deheridas y lceras, entre otras aplicaciones.

    El uso de la estimulacin elctrica con fines teraputicos se encuentra

    ampliamente extendido por su eficacia y por las ventajas que reporta, entre

    ellas la carencia de efectos secundarios la sustitucin de sustancias qumicas

    medicamentosas.

    Con el desarrollo de este trabajo los estudiantes, realizaremos la programacin

    de un PIC 16f87 con el fin de que nos genere las ondas adecuadas para la

    estimulacin de los msculos del cuerpo humano y as crear un equipo de

    electroterapia.

  • 8/13/2019 299016_3

    3/22

    MARCO TEORICO

    Para que el microcontrolador sea capaz de funcionar en cualquier proyecto, senecesita al menos la siguiente circuitera externa:

    La alimentacin. El reloj (oscilador).

    Tambin, y de manera opcional:

    El circuito de reinicio

    1.- LA ALIMENTACIN

    Los dispositivos de la familia PIC16F87 admiten un amplio rango de tensionesde alimentacin, que va de 2,0 V a 5,5 V. La tensin a la cual se alimentendeterminar la frecuencia mxima de trabajo.

    La potencia mxima disipada es de 1 W y se calcula mediante la siguienteformula:

    donde:

    VDDes la tensin suministrada por la fuente de alimentacin. IOHes la corriente suministrada por las salidas del PIC en estado alto. IOLes la corriente absorbida por las salidas del PIC en estado bajo.

    VOHes la tensin entregada por los terminales en estado alto. VOLes la tensin presente en los terminales en estado bajo.

    LA ALIMENTACIN

    Los dispositivos de la familia PIC16F87 admiten un amplio rango de tensiones

    de alimentacin, que va de 2,0 V a 5,5 V. La tensin a la cual se alimenten

    determinar la frecuencia mxima de trabajo.

    La [[potencia]] mxima disipada es de 1 [[Vatio|W]] y se calcula mediante la

    siguiente formula:

  • 8/13/2019 299016_3

    4/22

    \,\!P_{disipada}=V_{DD}(I_{DD} - \Sigma I_{OH}) + \Sigma [(V_{DD} -

    V_{OH})I_{OH}]+ \Sigma (V_{OL} I_{OL})

    donde:

    *V_{DD} es la [[Tensin elctrica|tensin]] suministrada por la

    fuente de alimentacin.

    *I_{OH} es la [[Corriente elctrica|corriente]] suministrada por

    las salidas del PIC en estado alto.

    *I_{OL} es la corriente absorbida por las salidas del PIC en

    estado bajo.

    *V_{OH} es la tensin entregada por los terminales en estado

    alto.

    *V_{OL} es la tensin presente en los terminales en estado

    bajo.

    2.- EL RELOJ

    El reloj u oscilador se utiliza para generar la base de tiempo delmicrocontrolador. Para la conexin del oscilador se emplean los terminalesOSC1 y OSC2 del dispositivo.

    Los microcontroladores PIC16F87 emplean por cada ciclo de instruccin cuatrociclos de reloj. Esto significa que por ejemplo, si el microcontrolador debeejecutar un programa de 1000 instrucciones con un reloj de 10 MHz (periodo dereloj de 100 ns), el tiempo total que emplear para ejecutar todo el programa(asumiendo que todas las instrucciones fueran de un ciclo de instruccin) serde:

    La serie PIC16F87 puede trabajar a una frecuencia de reloj mxima de 20

    MHz. Esto quiere decir que, a esta frecuencia, el tiempo necesario paraejecutar las instrucciones de un ciclo de instruccin es de 200 ns, y de 400 nspara las de dos ciclos de instruccin (instrucciones de salto).

    La seal de reloj puede generarse mediante una red resistencia y condensador,un cristal de cuarzo piezoelctrico o un resonador y cermico aunqueempleando cristales de cuarzo se consiguen frecuencias de oscilacin muyexactas, lo cual es til para calcular tiempos de ejecucin, temporizacionesprecisas, etc.

  • 8/13/2019 299016_3

    5/22

  • 8/13/2019 299016_3

    6/22

  • 8/13/2019 299016_3

    7/22

    Debido a que el pulsador no produce una respuesta instantnea, producto delos rebotes de ste (transitorio), se generan una serie de pulsos hasta quedarestabilizado en su estado permanente. Para evitar esto se puede usar uncondensador instalado en paralelo con la entrada MCLR (filtro pasa bajo).

    Tambin resulta muy efectivo el uso de un filtro pasa alto para hacer la seal

    de reinicio independiente del tiempo en que se presiona el pulsador.Inmediatamente despus de pulsar el pulsador el C se reinicia, sin tener encuenta cunto tiempo se mantiene presionado dicho pulsador.

    Estas tcnicas de reinicio son muy efectivas, pero no son las nicas. Existeinfinidad de circuitos y posibilidades para provocar el reinicio externo en losmicrocontroladores, adecundose cada solucin a la necesidad o al criterio dediseo del circuito y su funcin especifica.

    Memoria interna

    Existen tres bloques bien diferenciados de memoria. Estos son:

    Memoria de programa EEPROM Flash: es el lugar fsico donde seguarda el programa de usuario. Es de tipo no voltil.

    Memoria de datos SRAM: es el lugar fsico donde se guardan datos. Esde tipo voltil.

    Memoria de datos EEPROM: es el lugar fsico donde se guardan datos.Es de tipo no voltil.

    Memoria de datos SRAM

    Esta memoria es de tipo voltil, lo que significa que no conserva su contenidodespus de un apagado de alimentacin.

    En esta memoria se encuentran los registros de funciones especiales (SFR) ylos registros de propsito general (GPR), y est particionada en cuatro bancos(0, 1, 2 y 3), seleccionables independientemente. El banco 0 es el bancoseleccionado por defecto cuando se alimenta al microcontrolador.

    Registros de funciones especiales (SFR)

    Todos los microcontroladores cuentan con registro internos que permitencontrolar y supervisar las funciones y recursos disponibles del dispositivo.

    Los registros de los microcontroladores PIC se encuentran en un espacioespecial de la memoria de datos, el SFR (Special Function Registers). En losdispositivos PIC16F87X estos registros son de 8 bits, la mayora de lectura yescritura. Se puede acceder a dichos bits de manera individual, o bien a todo elregistro a la vez.

    Determinados pares de registros tienen funciones especiales para las cuales sepueden considerar unidos en un nico registro de 16 bits, aunque fsicamentesiguen estando separados.

  • 8/13/2019 299016_3

    8/22

    El registro STATUS

    El registro de estado (STATUS) es uno de los ms importantes y empleados enel microcontrolador.

    Proporciona informacin acerca del resultado de operaciones aritmticas,

    operaciones lgicas y causa de reinicios, adems de permitir la seleccin delbanco de memoria de datos.

    El registro W

    El registro de trabajo W (Working Register) es un registro relevante especial de8 bits que participa en la mayora de instrucciones. A diferencia de los SFR, seencuentra dentro de la misma CPU, y puede ser accedido tanto para lecturacomo para escritura.

    Set de instrucciones y sintaxis

    Los PIC16F87X son microcontroladores RISC. Esto se refleja en que tienen unrepertorio reducido de 35 instrucciones ortogonales (prcticamente todas lasinstrucciones pueden utilizar cualquier operando), stas son rpidas y todastienen una longitud fija de 14 bits.

    Las instrucciones se pueden clasificar en:

    Instrucciones de carga. Instrucciones de bits. Instrucciones aritmticas. Instrucciones lgicas. Instrucciones de salto. Instrucciones de manejo de subrutinas. Instrucciones especiales.

    Tabla resumen de instrucciones

    Sintaxis DescripcinCiclos deInstruccin

    Instrucciones de carga

    CLRF f Borra el contenido del registro f 1

    CLRW Borra el contenido del registro W 1

  • 8/13/2019 299016_3

    9/22

    MOVF f,d Mueve el contenido del registro f 1

    MOVWF fMueve el contenido del registro W alregistro f

    1

    MOVLW k Guarda en el registro W el valor k 1

    Instrucciones de bit

    BCF f,b Pone en "0" el bit b del registro f 1

    BSF f,b Pone en "1" el bit b del registro f 1

    Instrucciones aritmticas

    ADDLW k Suma el valor k al registro W 1

    ADDWF f,dSuma el contenido del registro Wcon el de f

    1

    DECF f,dDecrementa en una unidad elcontenido del registro f

    1

    INCF f,dIncrementa en una unidad elcontenido del registro f

    1

    SUBLW k Resta el valor k al registro W 1

    SUBWF f,dResta el contenido del registro W alregistro f

    1

    Instrucciones lgicas

    ANDLW kRealiza la operacin lgica AND

    entre el valor k y el registro W

    1

    ANDWF f,dRealiza la operacin lgica ANDentre el contenido del registro W y elde f

    1

    COMF f,d Niega el valor del registro f 1

    IORLW k Realiza la operacin lgica OR entre 1

  • 8/13/2019 299016_3

    10/22

    el valor k y el registro W

    IORWF f,dRealiza la operacin lgica OR entreel contenido del registro W y el de f

    1

    RLF f,d

    Rota el contenido del registro f hacia

    la izquierda a travs del carry bit 1

    RRF f,dRota el contenido del registro f haciala derecha a travs del carry bit

    1

    SWAPF f,dIntercambia los cuatro primeros bitscon los cuatro ltimos del registro f

    1

    XORLWRealiza la operacin lgica XORentre el valor k y el registro W

    1

    XORWF f,d

    Realiza la operacin lgica XOR

    entre el contenido del registro W conel de f

    1

    Instrucciones de salto

    BTFSC f,bLee el bit b del registro f y salta lainstruccin siguiente si est en 0

    1 (2 sisalta)

    BTFSS f,bLee el bit b del registro f y salta lainstruccin siguiente si est en 1

    1 (2 sisalta)

    DECFSZf,d

    Decrementa en una unidad el

    contenido del registro f y salta lainstruccin siguiente si es cero

    1 (2 sisalta)

    INCFSZ f,dIncrementa en una unidad elcontenido del registro f y salta lainstruccin siguiente si es cero

    1 (2 sisalta)

    GOTO k Salto incondicional a la etiqueta k 2

    Instrucciones de manejo de subrutinas

    CALL k Llamada a la subrutina k 2

    RETFIE Retorno de una interrupcin 2

    RETLWRetorno de una subrutina con elvalor k en el registro W

    2

    RETURN Retorno de una subrutina 2

    Instrucciones especiales

  • 8/13/2019 299016_3

    11/22

    CLRWDT Borra el timer del Watchdog 1

    NOPNo realiza ninguna operacin (peroconsume tiempo de ejecucin)

    1

    SLEEP

    Se pone el PIC en estado de reposo

    (dormido) 1

    En todas las instrucciones donde aparece una d como operando:

    Si d = 0, el resultado de la operacin se guarda en W. Si d = 1, el resultado de la operacin se guarda en el registro f. Es el

    valor por defecto.

    Registro de configuracin

    Estos microcontroladores cuentan con un registro especial llamado palabra de

    configuracin (Configuration Word) de 14 bits, que se encuentra en la direccin2007h de la memoria de programa.

    Este registro debe escribirse durante el proceso de grabacin delmicrocontrolador ya que no puede ser modificado durante el tiempo deejecucin de un programa.

    Su funcin es especificar ciertas caractersticas de funcionamiento delmicrocontrolador, como son:

    Proteccin de memoria de programa. Uso del modo de depuracin en circuito. Permiso de escritura en memoria Flash. Proteccin de memoria EEPROM de datos. Uso de programacin en modo de bajo voltaje. Uso de reinicio por cada de tensin. Uso del temporizador de conexin de alimentacin. Uso del Watchdog. Tipo de oscilador empleado.

    Existen dos formas de configurar estos bits: una de ellas es desde MPLAB,mediante la opcin Configuration bitsdel men configure. La otra es mediantela directiva_ _CONFIGdentro del programa ensamblador.

    [El conversor analgico-digital

    El conversor analgico-digital (ADC en ingls) que llevan incorporados losmicrocontroladores de la subfamilia PIC16F87X es de 10 bits. Sufuncionamiento es bastante simple, comparado con los conversores A/D R2R,los de resistencia ponderada, etc.

    Controlando el conversor A/D

  • 8/13/2019 299016_3

    12/22

    Los registros asociados al conversor A/D son:

    ADRESH (completo) ADRESL (completo) ADCON0 (completo) ADCON1 (completo)

    Conversin Terminada

    El tiempo que le toma al C realizar la conversin se denomina TAD y nuncadebe ser menor que 1,6 s para la familia 16F87. el tiempo TADes configuradopor software segn la relacin TAD = kTOSC donde K es el divisor de lafrecuencia del conversor. Por ejemplo, si trabajamos con TOSC= 1s y en losbits 7 y 6 del registro ADCON0 ponemos 00,quedar: TAD= 2TOSC= 2 * 1s=2slo cual est dentro del rango permitido.

    Una vez terminada la conversin, el resultado se almacena en los registrosADRESH y ADRESL segn estn configurados en el bit 7 del registro

    ADCON1. La "justificacin" a la derecha o izquierda es sencilla de comprender;se trata de guardar el resultado de 10 bits en dos registros de 8 bits c/u, seaque se elegir si se quieren los 8 primeros bits en el ADRESL y los dosrestantes en el ADRESH o viceversa.

    Generalmente la eleccin de la justificacin est directamente emparentadacon la resolucin que queremos leer, es decir, si se quiere conectar unpotencimetro y segn la tensin aumentar o disminuir el tiempo de parpadeode un led, se puede justificar a la izquierda y leer como resultado de laconversin solo los 8 bits del ADRESH y descartar o despreciar los dos bits demenor peso significativo que se guardarn en el ADRESL.

    Pasos necesarios para la conversin A/D

    A modo de algoritmo los pasos necesarios para una correcta utilizacin delmodulo A/D son los siguientes:

    1. Configurar el mdulo A/D:1. Terminales de entrada analgica y de referencia.2. Seleccionar el canal adecuado.3. Seleccionar la velocidad de conversin.4. Prender el conversor: Setear el bit 0 del registro ADCON0

    2. Empezar la conversin: Setear el bit 2 del registro ADCON0

    3. Esperar que el bit 2 del registro ADCON0 se ponga a 04. Leer el resultado en los registros ADRESH:ADRESL

    En estos pasos no se tiene en cuenta que se pueden necesitar ms de unaconversin por distintos canales o bien que se realicen varias conversiones yluego tomar un promedio. Esta ultima tcnica es muy usada cuando lasvariaciones de tensin son rpidas y promediando tres o cuatro conversionesse tiene as el resultado, hasta que se realice una segunda conversin.

  • 8/13/2019 299016_3

    13/22

    Acerca de la programacin de los dispositivos

    La familia de los PIC16F87 cuenta con un set reducido de 35 instrucciones, loque facilita enormemente su memorizacin. La mayora de estas instruccionesse ejecutan en un solo ciclo de instruccin, mientras que aquellas instruccionesque realizan saltos de ejecucin lo hacen en dos ciclos de instruccin. Cada

    una de estas instrucciones se codifica en una palabra de 14 bits nica einequvoca, que conforman en conjunto lo que se conoce como cdigo maquinadel dispositivo.

    Aunque podra emplearse directamente este cdigo mquina para programar eldispositivo (ya fuera en formato binario o en hexadecimal), resultarademasiado lento y complicado. Por esta razn, cada una de las instruccionesse representa de manera equivalente con un nemnico, que es ms fcil derecordar y de interpretar por el programador. A este tipo de lenguaje deprogramacin se le llama lenguaje ensamblador.

    Actualmente, para la programacin de microcontroladores puede emplearse

    tanto el lenguaje ensamblador como lenguajes de ms alto nivel, tipo C oPascal, empleando el compilador adecuado.

    Los microcontroladores tienen un espacio de memoria que vara segn elmodelo y este espacio de memoria es limitado. Hay que tener en cuenta que acada instruccin escrita en lenguaje de alto nivel le correspondern por logeneral varias instrucciones en lenguaje ensamblador, lo que significa que unprograma escrito en lenguaje de alto nivel ocupa ms espacio de memoria queuno escrito en lenguaje ensamblador. Por este motivo, la eleccin de uno u otrotipo de lenguaje a la hora de programar deber hacerse teniendo en cuenta elespacio de memoria disponible.

    En caso de utilizar un lenguaje de alto nivel, siempre se requerir compilar elprograma terminado para obtener el archivo hexadecimal (lenguaje mquina)con el cual se programar el microcontrolador.

    La programacin fsica del dispositivo se har normalmente mediante unprogramador, capaz de grabar el programa de usuario en la memoria delmicrocontrolador.

  • 8/13/2019 299016_3

    14/22

  • 8/13/2019 299016_3

    15/22

    EndIf

    If PORTC.2=1 Then

    Inc var1

    EndIf

    inicio2:

    If var1 =1 Then

    Cls

    Inc var2

    Print At 1,1,"PARA SELECCIONAR"

    Print At 2,1,"TENS PULSE ENTER"

    DelayMS 25

    GoTo inicio1

    EndIf

    If var1 = 2 Then

    Cls

    Print At 1,1,"PARA SELECCIONAR"

    Print At 2,1,"TEMS PULSE ENTER"

    DelayMS 25

    GoTo inicio1

    EndIf

    If var1=3 Then

    var1=1

    GoTo inicio2

    EndIf

    GoTo inicio3

    inicio3:

    Low PORTC.1

    GoTo inicio1

    tems:

    Cls

  • 8/13/2019 299016_3

    16/22

    Print At 1,3,"SELECCIONO"

    Print At 2,4,"TEMS"

    High PORTC.1

    DelayMS 25

    GoTo tems

    tens:

    Cls

    High PORTC.0

    Print At 1,3,"SELECCIONO"

    Print At 2,4,"TENS"

    DelayMS 25

    GoTo tens

    Device = 16F870

    XTAL = 4

    LCD_DTPIN = PORTB.4

    LCD_RSPIN = PORTB.0

    LCD_ENPIN = PORTB.1

    LCD_INTERFACE = 4 ' 4-bit Interface

    LCD_LINES = 2

    LCD_TYPE = 0

    Dim var1As Byte

    Dim var2As Byte

    var1=0

    var2=0

    inicio1:

  • 8/13/2019 299016_3

    17/22

    If var1=2And PORTC.3=1 Then

    GoTo tems

    EndIf

    If PORTC.3=1And var1=1 Then

    GoTo tens

    EndIf

    If PORTC.2=1 Then

    Inc var1

    EndIf

    inicio2:

    If var1 =1 Then

    Cls

    Inc var2

    Print At 1,1,"PARA SELECCIONAR"

    Print At 2,1,"TENS PULSE ENTER"

    DelayMS 25

    GoTo inicio1

    EndIf

    If var1 = 2 Then

    Cls

    Print At 1,1,"PARA SELECCIONAR"

    Print At 2,1,"TEMS PULSE ENTER"

    DelayMS 25

    GoTo inicio1

    EndIf

    If var1=3 Then

    var1=1

    GoTo inicio2

    EndIf

  • 8/13/2019 299016_3

    18/22

  • 8/13/2019 299016_3

    19/22

  • 8/13/2019 299016_3

    20/22

  • 8/13/2019 299016_3

    21/22

    Conclusiones

    Al terminar este trabajo se puede concluir que:

    Las contraindicaciones fisiolgicas producidas por el electro estimulador

    permiten que los msculos adquieran volumen, fuerza y resistencia; y que,

    adems, quemen las reservas de grasa localizadas. En pocas palabras, con el

    electro estimulador se pueden estimular los msculos como si hicieran ejercicio

    fsico.

    El electro estimulador, puede actuar slo en uno o dos msculos a la vez.

    Resulta, muy til durante la rehabilitacin de los msculos en extremidades que

    por alguna lesin hayan quedado inmovilizados.

    No puede reemplazar un tratamiento rehabilitador, pero si lo puede integrar de

    manera eficiente.

  • 8/13/2019 299016_3

    22/22

    BIBLIOGRAFIA