Electroestimulador

  • Uploaded by: Maynor Flores
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Electroestimulador as PDF for free.

More details

  • Words: 6,911
  • Pages: 28
Loading documents preview...
00ZNXX-FA684X-21PQZQ-41H89P Men ya utilice este si funciona tienes q descargar el trial y ponerle la clave es super facil y es bueno este prograqma pero te sugiero q limpies el registro con varios limpiadores como el jet clean es super y rapido aki esta el serial para ponerlo en pro el jet clean si lo necesitas algun dia 7368B-578F2-5837B-E6EB1 y si quieres usa el argente es gratis y tiene buen motor lo que pasa es que es lento pero es bueno y el tune up si quieres el serial aki hay uno de todas maneras bajalo con keigen PFEK3B-8XMTD1-RWAADWCK69QA-HCRHQA-63V0N... si te sale q no es valida vuelve a meterla

http://www.ladelec.com/practicas/ci rcuitos-por-arossini/539electroestimulador-parte-2-el-pic TecMikro http://www.programarpicenc.com - Paso a paso, primer proyecto en el compilador mikroC PRO for PIC para lenguaje C con el PIC16F628A (Serie completa de videos al final de la descripción). mikroC PRO for PIC es un software para escribir programas en lenguaje C para los microcontroladores PIC de Microchip. En términos más precisos, mikroC PRO for PIC es un IDE (ambiente de desarrollo integrado), que incluye un editor de texto (para escribir el código fuente en lenguaje C), un compilador (software que se encarga de generar el código de máquina .hex), librerías de funciones (que se pueden usar fácilmente dentro del código fuente) y algunas herramientas adicionales que simplifican enormemente el proceso de programación. De manera general, mikroC PRO for PIC trabaja con Proyectos (conjunto de archivos que resultan al crear un programa). Para crear un Proyecto se debe seguir un proceso básico, que consiste de forma general en la selección del microcontrolador, la frecuencia de operación, la creación de la carpeta del proyecto, el establecimiento de los bits de configuración, la escritura del código fuente en lenguaje C y la compilación. Todos estos pasos se explican por medio de un ejemplo básico para hacer parpadear un LED usando el microcontrolador PIC 16F628A. Por último se describen los archivos más importantes que forman parte del Proyecto creado.

Display LCD 16x2 (LCD 2x16) con el HD44780 en mikroC PRO Extracto del Capítulo III del libro Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A. 2da edición Las pantallas de cristal líquido (LCD) se han popularizado mucho en los últimos años, debido a su gran versatilidad para presentar mensajes de texto (fijos y en movimiento), valores numéricos y símbolos especiales, su precio reducido, su bajo consumo de potencia, el requerimiento de solo 6 pines del PIC para su conexión y su facilidad de programación en lenguajes de alto nivel (por ejemplo, lenguaje C). Desde todo punto de vista el empleo del display LCD 16x2 (LCD 2x16) debería considerarse como la primera opción a la hora de decidir por un dispositivo de presentación alfanumérica, excepto cuando las condiciones de iluminación ambiental no sean las más favorables. En este último caso se debería pensar en el empleo de displays de 7 segmentos, que aunque no

tienen la misma versatilidad tienen la ventaja innegable de sus mejores características de visibilidad aún en los ambientes más desfavorables. En la actualidad existen diversos modelos de display LCD, aunque los más comunes son los LCD 16x2 (16 caracteres x 2 filas) o LCD 2x16, gobernados por el controlador Hitachi HD44780, que se ha convertido en el estándar de facto para las aplicaciones con microcontroladores PIC. Específicamente se hará referencia al display LM016L, que tiene las características mencionadas, aunque cualquier otro display LCD con el controlador HD44780 o compatible se puede utilizar. Existen LCD 16x2 con diferentes combinaciones de colores de fondo y texto.

Pinout (patillaje) del LCD 16x2 (LCD 2X16) con HD44780 El LCD 16x2 (LCD 2x16) tiene en total 16 pines (tome en cuenta que la posición correcta del display es con los pines en la parte superior, aunque existen modelos en los que la posición correcta es con los pines en la parte inferior) . La datasheet (pdf) muestra 14 pines, los dos pines adicionales son el ánodo (15) y el cátodo (16) del LED de fondo. Debe notarse que el controlador Hitachi HD44780 se encuentra incorporado al circuito impreso del módulo LCD y que sirve de interfaz entre la propia pantalla LCD (donde se muestran los caracteres) y el microcontrolador PIC. Por lo tanto, de todos los pines del HD44780 únicamente se tiene acceso a aquellos necesarios para la conexión al PIC y para el control de contraste.

La polarización del LED de fondo se logra conectando una resistencia externa de 50 ohm1/4 W con lo que se asegura el correcto encendido sin una corriente excesiva. El control de contraste se consigue con un potenciómetro de 10 k con el cual se ajusta el nivel de voltaje en el pin 3 (Vee ó VLC).

Conexión del LCD 16x2 al PIC La conexión más recomendable del display LCD 16x2 (2x16) requiere 4 pines para los datos (D7:D4), 1 pin para habilitar/deshabilitar el display (E) y 1 pin para los modos comando/carácter (RS). En la figura 3.1.1 se indica la forma de conectar el display al PIC16F88 y al PIC16F628A.

Figura 3.1.1 Conexión del LCD al PIC16F88 (16F628A) con 4 bits

Librería LCD de mikroC PRO mikroC PRO proporciona una librería para comunicación con el display (con el controlador HD44780 o compatibles) a través de un interfaz de 4 bits para datos. Para el trabajo con el módulo LCD se debe añadir la librería Lcd, que contiene las funciones listadas en la tabla 3.1. Para poder utilizar estas funciones se debe declarar previamente un total de 12 variables: 6 que definen los pines del PIC y otras 6 que permiten programar su sentido de circulación de datos (se detallarán en los ejemplos de este capítulo).

Tabla 3.1 Funciones de la librería Lcd de mikroC PRO

PIC16F88 en C (mikroC PRO) - Ejemplo Estos ejemplos corresponden al PIC16F88 programado en mikroC PRO. El código fuente para los microcontroladores PIC16F628A y 16F877A se encuentra en las carpetas correspondientes que acompañan a este libro. En el siguiente ejemplo se emplea la función ByteToStr de la librería Conversions de mikroC PRO, para convertir el contenido de la variable “contador” (un byte) en una cadena de caracteres (string) y así poderlo visualizar en el display con la función Lcd_Out. Ejemplo-LCD1.c: Cada vez que presiona el pulsador conectado en RA4 se incrementa un contador que se visualiza en el centro de la segunda línea de la pantalla (figura 3.1.1). Si la cuenta supera 100, el conteo se reinicia desde 0. En el centro de la primera línea se muestra la palabra “Conteo:”. //LCD1.c //Declaración de las 12 variables necesarias para la conexión //de la pantalla LCD 2x16. sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction // Fin de declaración

at at at at at at de

TRISB4_bit; TRISB5_bit; TRISB0_bit; TRISB1_bit; TRISB2_bit; TRISB3_bit; variables de conexión.

char contador=0,estado=1,texto1[]="Conteo:", texto2[4]; void main(){ OSCCON=0x40; //Oscilador interno a 1MHz. while (OSCCON.IOFS==0);//Esperar mientras el oscilador está inestable. ANSEL=0x00; //Bits AN6:AN0 como E/S digital. Lcd_Init(); //Inicializa el LCD. Lcd_Cmd(_LCD_CLEAR); //Borra el display. Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor. Lcd_Out(1,6,texto1); //Escribe el texto1. while (1) { if (Button(&PORTA,4,1,0)) estado=0; //Si se pulsa. if (estado==0 && Button(&PORTA,4,1,1)) //Si se pulsa y se libera. { contador++; //"contador" contiene el número de pulsaciones. if (contador>100) contador=0; estado=1; } ByteToStr(contador,texto2); //Convierte el contenido de la variable //en texto. Lcd_Out(2,6,texto2); //Escribe el texto2. } }

Temas relacionados que también encontrarás en este libro:  

Creación de caracteres especiales RAM del Generador de Caracteres (CGRAM)



Herramienta LCD Custom Character de mikroC PRO



Presentación de números decimales en el LCD 16x2 (2x16)

La memoria EEPROM de los microcontroladores PIC en mikroC PRO Extracto del Capítulo IV del libro Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A. 2da edición En este capítulo se estudia el uso de una de las bibliotecas más útiles del conocido compilador mikroC PRO. La memoria EEPROM de los microcontroladores PIC tiene la capacidad para ser programada y reprogramada por la CPU del PIC, para asegurar que en caso de una falla o desconexión de la energía los valores o variables críticas se puedan mantener en una memoria no volátil. La memoria EEPROM es muy útil en procesos que deben continuar a partir del último dato obtenido cuando se ha producido una interrupción en la energía. mikroC PRO incluye una librería con funciones que facilitan enormemente el trabajo de programación.

Librería EEPROM de mikroC PRO En la tabla 4.1 se describen las funciones que permiten la lectura y escritura en la memoria EEPROM.

Tabla 4.1 Funciones de mikroC PRO Ambas funciones soportan microcontroladores PIC inclusive con más de 256 bytes (recuerde que los microcontroladores PIC16F88 y 16F877A tienen 256 bytes, mientras que el 16F628A tiene 128 bytes). Todas las interrupciones deben estar deshabilitadas durante la ejecución de la función EEPROM_Write (el bit GIE del registro INTCON debe ser igual a cero). Al finalizar la ejecución, la función restaura el estado previo de este bit. Se debe asegurar un retardo mínimo de 20 ms entre el uso sucesivo de las funciones EEPROM_Write y EEPROM_Read; de lo contrario, aunque el PIC escribirá el valor

correcto, la lectura con EEPROM_Read puede dar un resultado indefinido. Para tener a disposición estas funciones se debe añadir la librería EEPROM.

PIC16F88 en C (mikroC PRO) - Ejemplo Estos ejemplos corresponden al PIC16F88 en mikroC PRO. El código fuente para los microcontroladores PIC16F628A y 16F877A así como la simulación en Proteus se encuentra en las carpetas correspondientes que acompañan a este libro. En los ejemplos EEPROM1.c y EEPROM2.c debe observarse que las 2 instrucciones resaltadas sólo deben ejecutarse en una ocasión (la primera vez que se enciende el PIC), con el propósito de colocar un valor inicial (0) en la primera dirección (0x00); por lo tanto estos programas deben compilarse en dos ocasiones y el PIC debe ser programado igualmente en dos ocasiones: la primera con las 2 instrucciones activadas (no comentadas), y la segunda con las dos instrucciones desactivadas (comentadas). El conteo empieza la segunda vez que se enciende el PIC. Ejemplo-EEPROM1.c: Cada vez que el PIC es reiniciado se incrementa un contador que se guarda en la primera posición de la memoria EEPROM y es visualizado en el LCD (circuito de la figura 3.2). //EEPROM1.c //Declaración de las 12 variables necesarias para la conexión //del módulo LCD. sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction // Fin de declaración

at at at at at at de

TRISB4_bit; TRISB5_bit; TRISB0_bit; TRISB1_bit; TRISB2_bit; TRISB3_bit; variables de conexión.

char contador, texto[4]; void main(){ OSCCON=0x40; //Oscilador interno a 1MHz. while (OSCCON.IOFS==0);//Esperar mientras el oscilador está inestable. ANSEL=0x00; //Bits AN6:AN0 como E/S digital. Lcd_Init(); //Inicializa el LCD. Lcd_Cmd(_LCD_CLEAR); //Borra el display. Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor. //EEPROM_Write(0x00,0); //Valor inicial(sólo la 1era vez) . //Delay_ms(20); //Sólo la 1era vez. contador=EEPROM_Read(0x00); ByteToStr(contador, texto); Lcd_Out(1,1,texto); contador++; EEPROM_Write(0x00,contador); }

Timer 0 (Timer0 / TMR0) temporizador / contador con PIC Extracto del Capítulo V del libro Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A. 2da edición El Timer 0 del PIC tiene las siguientes características:  Temporizador - contador de 8 bits.  Se puede leer y escribir. 

Prescaler programable de 8 bits.



Selección de reloj interno o externo.



Genera una interrupción al desbordarse desde 0xFF a 0x00.



Selección de flanco del reloj externo.

La operación del Timer0 se controla a través del registro OPTION_REG (figura 5.1). En el modo temporizador (TOCS=0), se produce un incremento del registro TMR0 cada ciclo de instrucción (prescaler asignado al perro guardián WDT). Si se escribe en el registro TMR0, no se produce el incremento durante los dos siguientes ciclos de instrucción; este hecho debe tenerse muy en cuenta por parte del usuario y, de ser necesario, ajustar el valor escrito en TMR0.

Figura 5.1 Bits del registro de control del Timer 0 En el modo contador (TOCS=1), se produce un incremento por cada transición ascendente (T0SE=0) o descendente (T0SE=1) en el pin RA4 del Timer0. Prescaler Un prescaler es un circuito que reduce la frecuencia que ingresa a un temporizadorcontador dividiéndola para un determinado valor (figura 5.2). Por ejemplo, si la relación es 1:8, el prescaler entrega una frecuencia igual a la octava parte de la frecuencia del oscilador.

Figura 5.2 Prescaler actuando como divisor de frecuencia El prescaler es compartido entre el Timer 0 y el watchdog timer (WDT) del PIC, y no se puede leer ni escribir. Cuando se asigna el prescaler al Timer 0 no puede ser utilizado por el WDT al mismo tiempo, y viceversa. Los bits PSA y PS<2:0> determinan la asignación y la relación de división del prescaler. Cuando se asigna al Timer0, todas las instrucciones de escritura en el registro TMR0 reinician el prescaler. Cuando se asigna al WDT, una instrucción CLRWDT reinicia el prescaler y también el WDT.

PIC16F88 en C (mikroC PRO) - Ejemplo Estos ejemplos corresponden al PIC16F88 en mikroC PRO. El código fuente para los microcontroladores PIC16F628A y PIC16F877A se encuentra en las carpetas correspondientes que acompañan a este libro. Ejemplo-Timer0_1.c: Cada vez que se actúe sobre el pulsador conectado en RA4 se incrementa un contador que se visualiza en el LCD (circuito de las figuras 3.1.1 y 3.1.2). //Timer0_1.c //El registro OPTION_REG tiene todos sus bits en 1 después del encendido //por lo tanto el Timer 0 actúa como contador, incrementa en transición //descendente y el prescaler está asignado al WDT. //Declaración de las 12 variables necesarias para la conexión //del módulo LCD. sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction // Fin de declaración char texto[4]; void main(){

at at at at at at de

TRISB4_bit; TRISB5_bit; TRISB0_bit; TRISB1_bit; TRISB2_bit; TRISB3_bit; variables de conexión.

OSCCON=0x40; //Oscilador interno a 1MHz. while (OSCCON.IOFS==0);//Esperar mientras el oscilador está inestable. ANSEL=0x00; //Pines AN<6:0> como E/S digital. TMR0=0; //Inicializa el registro TMR0. Lcd_Init(); //Inicializa el LCD. Lcd_Cmd(_LCD_CLEAR); //Borra el display. Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor. Lcd_Out(1,6,"Conteo:"); while (1) { ByteToStr(TMR0,texto); Lcd_Out(2,6,texto); } }

Cuando este módulo trabaja como temporizador cuenta los ciclos de instrucción (sin prescaler) o los ciclos que recibe del prescaler. Como es un contador ascendente el TMR0 debe ser cargado con el valor de los ciclos que se desean contar restados de 256 que es el valor de desbordamiento. Por ejemplo, para contar 28 ciclos (de instrucción/prescaler), se carga el TMR0 con 256-28=228. El ciclo de instrucción tiene una duración de 4 us para una frecuencia de oscilador de 1 MHz (16F88). Sin prescaler mediría un tiempo de 28x4x1 us = 112 us. Con un prescaler 1:8, el tiempo medido sería 28x4x8 us = 896 us. De manera general, el intervalo de temporización T se puede calcular con la siguiente fórmula: T=NxTCIxn Donde: N TCI n

= =

número período =

de

ciclos del valor

de ciclo del

instrucción/prescaler de instrucción prescaler

Mientras que el valor de carga Q del TMR0 se calcula así: Q=256-N Para medir 500 us, con un prescaler 1:1 (prescaler asignado al perro guardián WDT) y un TCI = 4 us se necesitan 500/4 = 125 ciclos de instrucción. El valor inicial del TMR0 debe ser 256-125=131. Encontrará más ejemplos acerca de este tema en el libro.

Teclado matricial 4x4 con los microcontroladores PIC Extracto del Capítulo VIII del libro Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A. 2da edición. En este capítulo se hará el estudio del teclado matricial 4x4 (figura 8.1), que son los más utilizados en el desarrollo de proyectos con microcontroladores PIC y que tienen su aplicación en el ingreso de datos de manera manual por parte del usuario, en aquellos casos en que el empleo de pulsadores simples no es lo más apropiado, ya sea por la presentación final del producto o por la restricción del número de líneas de entrada de los microcontroladores PIC. El teclado matricial 4x4 está constituido por una matriz de pulsadores dispuestos en filas (A,B,C,D) y columnas (1,2,3,4), con la intención de reducir el número de pines necesarios para su conexión. Las 16 teclas necesitan sólo 8 pines del microcontrolador, en lugar de los 16 pines que se requerirían para la conexión de 16 teclas independientes.

Figura 8.1 Teclado matricial 4x4 Su funcionamiento es muy sencillo, cuando se presiona una tecla, se conectan internamente la fila y columna correspondientes; por ejemplo, al presionar la tecla “7” se conectan la fila C y la columna 1. Si no hay ninguna tecla presionada, las filas están desconectadas de las columnas.

Librería Keypad4x4 de mikroC PRO para teclado matricial 4x4 En la tabla 8.1 se describen las funciones que se incluyen en la librería Keypad4x4 de mikroC PRO para el manejo del teclado matricial 4x4.

Para poder utilizar estas funciones se tiene que declarar previamente una variable que especifica el puerto que se empleará para la conexión del teclado matricial 4x4, como se observa en los ejemplos de programación. La conexión a los microcontroladores PIC16F88, 16F628A y 16F877A se muestra en las figuras 8.2.1, 8.2.2 y 8.2.3 donde se ha empleado el puerto B: las columnas se conectan al nibble bajo, mientras que las filas se conectan al nibble alto del mismo puerto.

Figura 8.2.1 Conexión de un teclado matricial 4x4 a los microcontroladores PIC16F88 y 16F628A

PIC16F88 en C (mikroC PRO) - Ejemplo Estos ejemplos se pueden probar en el circuito de la figura 8.2.1 y corresponden al microcontrolador PIC16F88. El código fuente para los microcontroladores PIC16F628A y 16F877A se encuentra en las carpetas correspondientes que acompañan a este libro. Debe notarse que el código que se obtiene al presionar una tecla es un número entero entre 1 y 16, de izquierda a derecha y de arriba abajo, comenzando por la fila A. Este número se emplea para asociarle el símbolo respectivo impreso en el teclado matricial 4x4 (por medio de los códigos ASCII), para su uso posterior en el programa. Esto se

detalla

en

el

siguiente

ejemplo.

Ejemplo-Teclado_1.c: Lo que se va escribiendo por el teclado es visualizado en la primera línea del LCD. Cuando llega al final se borra todo y comienza de nuevo. //Teclado_1.c // Variable necesaria para la conexión del teclado. char keypadPort at PORTB; //Declaración de las 12 variables necesarias para la conexión //del módulo LCD. sbit LCD_RS at RA4_bit; sbit LCD_EN at RA6_bit; sbit LCD_D4 at RA0_bit; sbit LCD_D5 at RA1_bit; sbit LCD_D6 at RA2_bit; sbit LCD_D7 at RA3_bit; sbit LCD_RS_Direction sbit LCD_EN_Direction sbit LCD_D4_Direction sbit LCD_D5_Direction sbit LCD_D6_Direction sbit LCD_D7_Direction // Fin de declaración char kp, contador=0;

at at at at at at de

TRISA4_bit; TRISA6_bit; TRISA0_bit; TRISA1_bit; TRISA2_bit; TRISA3_bit; variables de conexión.

void main(){ OSCCON=0x40; //Oscilador interno a 1MHz (TCI=4 us). while (OSCCON.IOFS==0); //Esperar mientras el oscilador está inestable. ANSEL=0x00; //Bits AN6:AN0 como E/S digital. Keypad_Init(); //Inicializa el teclado. Lcd_Init(); //Inicializa el LCD. Lcd_Cmd(_LCD_CLEAR); //Borra el display. Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor. while (1){ kp=0; do //Espera por una tecla. kp=Keypad_Key_Click(); //Lee el número de la tecla y lo guarda en kp. while (!kp); switch (kp){ case 1: kp = 49; break; //49 es el código ASCII del número 1. case 2: kp = 50; break; //50 es el código ASCII del número 2. case 3: kp = 51; break; //51 es el código ASCII del número 3. case 4: kp = 65; break; // A case 5: kp = 52; break; // 4 case 6: kp = 53; break; // 5 case 7: kp = 54; break; // 6 case 8: kp = 66; break; // B case 9: kp = 55; break; // 7 case 10: kp = 56; break; // 8 case 11: kp = 57; break; // 9 case 12: kp = 67; break; // C case 13: kp = 42; break; // * case 14: kp = 48; break; // 0 case 15: kp = 35; break; // # case 16: kp = 68; break; // D } Lcd_Chr_CP(kp); //Presenta el carácter en el LCD. contador++; //Cuenta el número de pulsaciones. if (contador==16){ //Si se han efectuado 16 pulsaciones. contador=0; Delay_1sec(); //Espera 1 s. Lcd_Cmd(_LCD_CLEAR); //Borra la pantalla y retorna el cursor al } //origen. } }

Temas relacionados que también encontrarás en este libro: 

Otros ejemplos de programación del teclado matricial 4x4

L293D / L293B: driver para motores CC (DC) Extracto del Capítulo XII del libro Cómo programar en lenguaje C los microcontroladores PIC16F88, 16F628A y 16F877A. 2da edición Las aplicaciones que tienen los motores CC ( DC) en el área de la automatización son muy amplias, van desde los juguetes hasta la robótica industrial, pasando por la medicina, las aplicaciones militares, la investigación espacial y submarina, los electrodomésticos, las computadoras, los dispositivos de entretenimiento, los simuladores, las máquinas herramientas, los automóviles, etc. En este capítulo se estudia en detalle el control de sentido de giro, velocidad y posición angular de los motores CC ( DC) convencionales y los motores paso a paso (PAP) o stepper motor usando el driver L293D / L293B con los microcontroladores PIC programados en mikroC PRO.

Driver L293B El circuito integrado L293B (tabla 12.1 y figuras 12.1, 12.2, 12.3 y 12.4) se ha diseñado con el propósito de realizar el control de los motores CC ( DC) de manera óptima y económica. Está conformado por cuatro amplificadores push-pull capaces de entregar una corriente de salida de 1A por canal. Cada canal está controlado por entradas compatibles con los niveles TTL y cada par de amplificadores (un puente completo) está equipado con una entrada de habilitación, que puede apagar los cuatro transistores de salida. Tiene una entrada de alimentación independiente para la lógica, de manera que se puede polarizar con bajos voltajes para reducir la disipación de potencia. Los cuatro pines centrales se emplean para conducir el calor generado hacia el circuito impreso. Sus características sobresalientes son las siguientes:  

Corriente de salida de 1A por canal. Corriente pico de salida 2A por canal (no repetitiva).



Pines de Habilitación.



Alta inmunidad al ruido.



Fuentes de alimentación separadas.



Protección contra exceso de temperatura.

Tabla 12.1 Valores máximos absolutos del driver L293B

Figura 12.1 Distribución de terminales del driver L293B

Figura 12.2 Diagrama de bloques del driver L293B y tabla de verdad (Z= Alta impedancia de salida). Se muestran diferentes tipos de conexión de motores CC ( DC). Observe con cuidado la tabla de verdad de la figura 12.2 y note que si el voltaje de entrada de habilitación Vinh tiene un nivel ALTO el voltaje de salida Vo tendrá el mismo nivel (ALTO o BAJO), aunque NO el mismo valor, del nivel de entrada Vi. Algo que debe tenerse muy en cuenta es que los valores del voltaje de entrada Vi no son los mismos valores del voltaje de salida Vo, ya que Vi corresponde a valores TTL mientras que Vo es el voltaje de alimentación de los motores Vs. Por otro lado, si Vinh tiene un valor BAJO, el pin de salida se pone en estado de alta impedancia (sin importar el valor del voltaje de entrada Vi).

Figura 12.3 Control de motores CC ( DC) (con conexión al positivo y al negativo de la fuente). Tabla de verdad. La tabla de verdad de la figura 12.3 muestra la posibilidad de controlar dos motores CC ( DC) en el mismo sentido de giro, con la diferencia de que M1 girará si la entrada A tiene un nivel BAJO, mientras que M2 girará si la entrada B tiene un nivel ALTO.

Figura 12.4 Control de giro en ambos sentidos de un motor eléctrico DC Driver L293D El driver L293D (figura 12.5) es similar al L293B, se diferencia fundamentalmente en su máxima corriente de salida y en la incorporación de los diodos de protección en cada uno de los cuatro amplificadores. Sus características principales son las siguientes:  

Corriente de salida de 600 mA por canal. Corriente pico de salida 1,2A por canal (no repetitiva).



Pines de Habilitación.



Alta inmunidad al ruido.



Fuentes de alimentación separadas.



Protección contra exceso de temperatura.



Diodos de protección incorporados.

Figura 12.5 Diagrama de bloques del driver L293D El L293D diseñado para recibir niveles TTL y alimentar cargas inductivas (relés, motores DC y PAP bipolares y unipolares) y transistores de potencia de conmutación. Este dispositivo se puede usar en aplicaciones de conmutación hasta los 5 kHz. Está encapsulado en formato DIP16 y sus cuatro pines centrales se han conectado juntos y se emplean como disipadores de calor.

Conexión del driver L293D al PIC El control de giro de motores DC por medio del driver L293D se detalla en el siguiente ejemplo. También puede emplearse el L293B tomando en cuenta que se deben añadir los diodos de protección (pueden ser del tipo 1N4007) como se indica en la figura 12.4. Ejemplo-MotorDC_01.c: Conexión típica de un motor eléctrico DC al PIC a través del driver L293D (figuras 12.6.1 y 12.6.2). El giro del motor está determinado por el estado de los pines RB0 y RB1 de acuerdo a la tabla 12.2. El pin RB0 determina el encendido o apagado del motor, mientras que RB1 controla el sentido de giro.

Tabla 12.2 Tabla de verdad del problema MotorDC_01.c

Figura 12.6.1 Circuito de control de motores CC (DC) con el L293D //MotorDC_01.c void main(){ OSCCON=0x60; //Oscilador interno a 4MHz (TCI=1 us). while (OSCCON.IOFS==0); //Esperar mientras el oscilador está inestable. PORTB=0x00; //Inicialización. NOT_RBPU_bit=0; //Habilitar las pull-up. TRISB=0b11100011; //RB<4:2> como salidas. while (1){ if (RB0_bit==0) RB4_bit=0; //Motor desconectado. if (RB0_bit==1){ if (RB1_bit==0) PORTB=0b00011000; //Giro a la derecha. if (RB1_bit==1) PORTB=0b00010100; //Giro a la izquierda. } } }

Electroestimulación – www.arossini.com.ar

Para conocer sobre la Electroestimulación, bajar el paquete de artículos bajados de Internet. Son aproximadamente 7 Mb. Todo lo aquí mostrado como Firmware (Fuentes y Hex), esquema de mayor definición, simulación en Proteus, se baja de Archivo ZIP. En lugar de explayarme aquí sobre teoría de la electroestimulación, prefiero que lo lean directamente de los artículos de los expertos. El dispositivo que les ofrezco, funciona con onda cuadrada simétrica. Lo elegí así como conclusión después de leer todos los artículos presentados. Hice muchas pruebas, y esta onda es la más suave desde el punto de vista de los efectos eléctricos de la corriente en el cuerpo (En el mío). Aún las personas muy sensibles o temerosas la soportan muy bien (Otras personas en las cuales lo probé). Tiene dos canales de salida y cada uno se regula en intensidad en forma independiente. La programación se aplica por igual a los dos. Esta es la forma de una onda:

El PIC permite controlar: Amplitud, Ancho del pulso, Separación entre pulsos, Descanso y Frecuencia. Además se puede seleccionar Pulso Bifásico (Un pulso positivo y uno negativo) o Monofásico, donde todos los pulsos son positivos. De acuerdo a la experiencia que se quiera realizar, se programan los valores en el PIC. Hay disponibles 23 posibilidades de programar. Los aparatos comerciales no permiten hacer esto. El PIC genera una onda a voluntad, y luego se repite durante el tiempo programado. El dibujo muestra el tren de ondas formado a partir de una onda como la anterior.

El PIC permite generar un pulso con un ancho de 1 a 5 mSeg, y lo hace durante un segundo. Luego provee un descanso que puede ser de 2, 1,5 o 1 segundo, para que el músculo se recupere, y así sucesivamente. En el PIC se programa Separación, Ancho de Pulso y Frecuencia. Estas tres variables dependen del tratamiento a realizar. El tren de pulsos es siempre de un segundo, de manera que a mayor frecuencia entrarán en 1 segundo mayor cantidad de pulsos. Se decide si el tratamiento será o no bifásico. Se decide el tiempo del tratamiento según necesidad, dividido en tres etapas. La primera se ajusta entre 0 y 30 minutos; las otras dos entre 0 y 15. Aquí se elige también para solo la primera etapa, el tiempo del tren de pulsos, incluido el descanso. Tres minutos significan uno de pulsos y dos de descanso. Continuo significa que no tiene descanso. Las etapas siguientes no permiten seleccionar, pues están programadas a 2,5 y 2 segundos. Es así porque usualmente se hace la primera etapa lenta, para acostumbrar el músculo, y luego acelerar las dos siguientes. Si se hace un tratamiento especial, se usa solo la primera. Para operar, con los botones sube y baja se selecciona el programa (Ya preprogramado), que se muestra el número en el display. El botón arrancar, arranca cuando ya está elegido el programa. El número elegido queda grabado en el PIC, de manera que en otra sesión comienza con el mismo programa. Para cuando transcurren los tiempos programados. También se para el tratamiento con una llave de seguridad que tiene el paciente en su mano, si ocurriera algo que no le gustara. En el Firmware hay 3 programas (Preprogramados). Los tres primeros se usan para: descontracturar cualquier músculo, eliminar dolores de nervios, fundamentalmente el nervio ciático y el tercero para tonificar músculos. En la bibliografía entregada, deberán encontrar toda la ayuda médica necesaria para usar el aparato sin riesgos, e inclusive podrán comunicarse con sus autores. Todo fue bajado de Internet. He eliminado todos los artículos que no me parecían serios. Encontrarán muchos ejemplos con fotos y dibujos, de los lugares de aplicación, de acuerdo a la dolencia. Algo sobre la filosofía del diseño. El diseño es totalmente propio, ya que no encontré en Internet ninguno que me satisficiera. Ninguno cumple con los requisitos que plantean los médicos con experiencia en el tema. De manera que fui avanzando muy lentamente, creando módulos a medida que los fui probando. Todo el circuito está formado por bloques o módulos, que son casi independientes y se pueden usar para muchas otras cosas.

Por ejemplo, el módulo de control mediante PIC, puede ser usado (Su filosofía) para controlar cualquier proceso. El módulo 555 es un generador de pulsos de la frecuencia que se desee, que se usa para generar hasta altas frecuencias variando solo dos resistencias y un condensador. El módulo que genera la tensión es usado para hacer fuentes hasta de alta tensión. El módulo puente, es un inversor puente de tensión, que se maneja con la señal de la computadora y se usa para controlar giros e inversiones de motores de contínua u electroimanes. En la página WEB encontrarán módulos que se le pueden agregar, tales como: Voltímetro a LEDs para controlar la salida y la fuente de alta tensión, indicador de batería baja, cargador de batería y un detector de puntos de acupuntura, que indica exactamente cuales son los puntos de aplicación. Sobre el uso de los voltímetros, hay una complicación interesante con las tierras, ya que la salida del puente y la salida propiamente dicha, está aisladas de tierra, y por lo tanto la tierra de los voltímetros no debe mezclarse porque causa problemas. Es por eso que para alimentar a los voltímetros de salida hay dos pilas de 9 Volt y un relay que corta su alimentación cuando no se usa el aparato.

Operación Verificar que la batería de 12 Volt está cargada. Colocar los electrodos en el lugar elegido. Poner en marcha el Electroestimulador mediante la llave de mano, al extremo del cable. El LED verde se debe encender. Elegir el programa mediante los pulsadores sube/baja. El display marcará el número de programa seleccionado, sin punto. El valor se guarda en memoria solo. Verificar que los potenciómetros estén en mínimo. Entregarle al paciente la llave de mano, para que corte la tensión cuando sienta molestias. Subir la tensión de la fuente al valor deseado, según la práctica. Subir lentamente la tensión de aplicación (muy lentamente) en uno o los dos canales, según se use. Consultar con el paciente continuamente sobre como soporta la tensión. Se debe ajustar al máximo tolerable. Al pasar tiempo, se puede soportar más tensión, por lo que deberá subirse. El mismo paciente puede ir ajustándola a su gusto, al máximo tolerable. Arrancar la secuencia mediante el pulsador de arranque. El display mostrará 1. (¡ con punto) que significa que está corriendo el tiempo 1. Luego de transcurrido marcará 2. y después 3. . Cuando termine la secuencia marcará F. . El punto significa que está en operación. La secuencia se detiene en cualquier momento con la llave de mano, reseteándose el PIC, por lo que se reiniciará la secuencia cuando se le dé arranque.

Programas disponibles en el Firmware Pro gra ma.

Ca rac ter

Ancho

Separac.

Frec.

Descanso

Bifasica

Tiempo 1

Tiemp o2

Tiempo3

Usos

Uni dad

mSeg

mSeg

1/Seg

mSeg

1/0

Min

Min

Min

---------------------

1

1

5

0

3

3000

1

10

10

10

Descontracturar

2

2

5

0

5

3000

1

10

10

10

Nervio Ciático

3

3

5

0

10

3000

1

10

10

10

Estimulación muscular

4

4

1

1

255

0

1

1

0

0

Pruebas a 255 Hz que es frecuencia bifásica máxima

5

5

333

333

1

0

1

1

0

0

Pruebas a 1 Hz que es la frecuencia bifásica mínima

6

6

100

100

3

0

0

1

0

0

Pruebas monofásica a 3 Hz

7

7

10

10

33

0

1

1

0

0

Pruebas bifásica a 33 Hz

8

8

100

100

3

0

1

1

0

0

Pruebas bifásica a 3 Hz

9

9

10

0

11

.

12

-

13

_

14

A

15

C

16

e

17

F

18

H

19

J

20

L

21

o

22

P

23

U

Los programas 1 a 8 son los programados en el Firmware. Los programas 9 a 23 están disponibles para programar a voluntad. Los programas 4 a 8 son solo para pruebas del PIC y del Electroestimulador. NO DEBEN APLICARSE EN EL CUERPO. Se muestran como ejemplo y sería conveniente que fueran borrados al concluir el proyecto. Se aplica la siguiente fórmula: Frecuencia = Parte entera de ( 1000 / (2 * Ancho + Separacion)) Frecuencia en Hz; Ancho y Separacion en mSeg.

Electrodos Se muestran en la foto siguiente:

Los mostrados miden 5 x 5 cm y 10 x 5 cm. Se hacen también los dos de 5 x 5 cm. El uso de cada tipo se encontrará en los artículos provistos. Están fabricados en “Papel España” como aquí se lo conoce. Es laminado de bronce de 0,25 mm de espesor. Para usarlos, antes de aplicarlos sobre la piel, humedecerlos con alcohol en gel.

Se fijan con una faja de neoprene, de las finas, que vienen con abrojos. Las venden como fajas reductoras, o para luxaciones.

Gabinete Se muestra en la foto siguiente: Está hecho en plástico de alto impacto de 2 mm de espesor. Se ven los tres voltímetros, debajo de ellos las dos salidas con sus potenciómetros. Debajo del voltímetro de LEDs redondos está el potenciómetro que controla la tensión generada. En la esquina superior izquierda está la ficha y los controles del detector de puntos de acupuntura. Arriba del gabinete está el cable con llave de control que maneja el paciente. Las perforaciones muestran la posición del parlante. Cable y llave de control

La llave está armada en forma casera, con el LED indicador. No encontré una llave comercial que pudiera servir. Cables para conexión

Se observa el cable con doble aislamiento y las fichas RCA.

Vista de frente del gabinete

Vista general del interior del gabinete con los adicionales incluidos

Detector de Puntos de Acupuntura No es requerido para el funcionamiento del ElectroEstimulador. Este adicional está en:

Detector Acupuntura

Esquema del ElectroEstimulador

El esquema se puede copiar a un programa gráfico por ejemplo PAINT de Windows para imprimirlo a mayor tamaño. Posee tres pulsadores: uno para seleccionar número de programa en forma ascendente, uno ídem pero en forma descendente, y el tercero pone en marcha el programa elegido y lo ejecuta hasta finalizar. Si se elige parar en forma anticipada se lo hace con el pulsador que está en la mano de la persona bajo tratamiento. Cada programa tiene una secuencia determinada con valores preprogramados. Se proveen tres programas de aplicación y 5 para hacer pruebas durante la construcción. Estos últimos no se deben aplicar sobre el cuerpo y sería conveniente borrarlos al terminar la construcción para no tener equivocaciones. Puede programarse un total de 23, y de ser necesario se pueden agregar varios mas. Por simplicidad puse un solo dígito de display, pero quedan sin usar 3 pines, de manera que se pueden colocar tres dígitos de display y mostrar entonces los dos dígitos de programa y alguna variable durante el proceso. Para los que quieran experimentar, se puede usar el PIC 18F4550, para disponer de más pines. La opción es entonces programar las variables con pulsadores guardándolas en la memoria EEPROM y visualizar en el proceso las distintas variables siguiendo el avance del mismo. En este caso, además de pre programar, se pueden variar las variables a voluntad sin necesidad de re grabar el PIC. La salida se conecta en el lugar de la ficha DB25 (Puerto Paralelo). La alimentación se conecta a 12 Volt, después de la llave de mano del aparato.

La ficha RJ11 es para programar el PIC con el Programador Alf (Bajar). El programador está diseñado para alimentar la plaqueta sin tener que desenchufarla del mismo. Para ponerla en marcha se debe correr la llave del programador que corresponde al Vpp, ya que este resetea al PIC. Además, como los Pines de Clock y Data, alimentan al display, se ha colocado una llave doble que aísla esta conexión. De no hacerlo, el consumo del display hace caer las tensiones de Data y Clock y a veces falla la grabación. En caso de usar otro método de grabación, no haría falta el RJ11 y las dos llaves.

Firmware Está hecho en CCS; comentado en todas sus líneas, de manera que no creo que requiera ninguna explicación porque es bastante simple e intuitivo. El programa seleccionado se guarda en la memoria EEPROM, en el registro número 0, de manera que con un corte de energía, al arrancar otra vez el PIC, se retoma el número de programa guardado. Los tres programas (1, 2, 3) “pre programados” son los que uso normalmente.

Proteus En la entrega hay un archivo con la simulación en Proteus. Está simulado el módulo PIC, y la salida se ve en el osciloscopio. Se ven perfectamente los dos pulsos positivos que salen del PIC, el tren generado y los tiempos de descanso. Se miden exactamente los tiempos programados en mseg. Si los tiempos no son exactos es porque han modificado la frecuencia del clock del PIC o en las propiedades del PIC en Proteus. Pueden preparar un programa donde vayan variando los parámetros para visualizarlos. Tengan en cuenta que deberán entrar en propiedades del PIC y variar el path del archivo HEX si lo colocan en un directorio distinto al del ZIP.

Comentarios sobre la construcción Con el generador de frecuencias 555 no hay problemas. Genera una corriente pulsante de unos 6 Volts (Medidos con voltímetro. Con osciloscopio debería ser casi 12 Volt pico) y cerca de 700 Hz. Probé con distintas frecuencias y esta fue la mejor, la que entregaba mayor tensión. El transistor aumenta la corriente del 555, los 220 Ohm regulan la corriente máxima y por lo tanto la tensión máxima de salida. El potenciómetro regula la tensión de salida y su valor no es crítico. La resistencia de 0.9 es válida para el transformador que usé. Si el trafo tuviera más resistencia en el bobinado que el mío la resistencia debería ser menor. El valor de 0.9 es el de una de 1 Ohm que al medirla tenía ese valor. El trafo lo saqué de un timbre viejo, por eso tiene ese valor raro. La tensión máxima de salida es contínua y filtrada. Debe indefectiblemente llegar a los 180 Volt, porque de esa manera se puede tener en la salida hasta cerca de 140 Volt, que es lo necesario. Llegar a los 180 Volt fue un trabajo artesanal. Veo en mis anotaciones que tengo 5,65 Volt y 717 Hz en la salida del 555. La tensión en la base del transistor es de 0.35 Volt. La máxima es 0.65 Volt, Corriente de base 4.3 mA y corriente Ic en primario (al revés) del trafo 350 mA con ganancia 81.4. La resistencia del trafo es de 0.8 Ohm más la de 0.9 = 1.7 Ohm. Con éste valor se debe jugar para sacarle el máximo al transistor, que puede dar una corriente mayor aún. No uso

disipador. Recuerden que la corriente es pulsante y que lo que midan con el tester es solo indicativo, ya que son valores eficaces de un ancho de pulso desconocido. El transistor trabaja en zona activa, para regular corriente y tensión en salida (Bornes del condensador. No recuerdo bien, pero creo que le saqué algunas espiras al trafo del lado de los 220 volt o salida en este circuito. Según un cálculo en borrador, veo que la R del trafo es 0.8 Ohm, la impedancia medida a 50 Hz es de 6 Ohm y la impedancia calculada para 1000 Hz es de 120 Ohm, lo que limita mucho la corriente en el transistor. Para cualquier explicación adicional, por favor escriban a mailto:[email protected]

www.arossini.com.ar

Related Documents

Electroestimulador
February 2021 0

More Documents from "Maynor Flores"

Electroestimulador
February 2021 0
Acta De Reinicio De Obra
January 2021 0
January 2021 0
January 2021 0
Dinamica Del Bosque 2010
February 2021 0