Control Ad Or de Demanda de Energia Electrica

Embed Size (px)

Citation preview

Universidad Autnoma De Santo DomingoFacultad de IngenieraTpicos Esp De Ing Electrnica IEM 403

Tema: Control de Demanda de energia electrica aplicada a una red monofasica Sustentantes:FRANCISCO RAMOS CG - 6329 CARLOS QUEZADA BC - 0704

Ciudad Universitaria Diciembre/2011 1

CONTENIDOIntroduccion............................................................................................................................................ 3 Objetivos ................................................................................................................................................. 4 I. Fundamento terico ....................................................................................................................... 5

Facturacion energetica ............................................................................................................................. 5 Convertidores A/D (ADC) : .................................................................................................................... 5 Comunicacin serial ................................................................................................................................ 6 Microcontrolador ..................................................................................................................................... 9 Visual Basic ............................................................................................................................................ 9 I. Controlador de demanda de energia electrica .............................................................................. 10

Control de demanda electrica ................................................................................................................ 11 Sistemas de control de demanda ........................................................................................................... 12 Mtodos de control de demanda ........................................................................................................... 12 y y II. 1. Control de demanda manual .................................................................................................. 12 Control automtico de demanda ............................................................................................ 13

Diseo del Sistema ........................................................................................................................ 13 Tarjeta acondicionadora de seal ................................................................................................. 16 Acondicionamiento de la seal de voltaje ...................................................................................... 16 Acondicionamiento de la seal de Corriente .................................................................................. 17

2. 3. 4.

Tarjeta de potencia ....................................................................................................................... 17 Tarjeta Microcontrolador .............................................................................................................. 19 Software........................................................................................................................................ 22 Utilizando el control de comunicaciones MSComm ........................................................................ 25

Conclusiones ......................................................................................................................................... 27 Bibliografia ............................................................................................................................................ 28 Anexos................................................................................................................................................... 29 Codigo microcontrolador: ...................................................................................................................... 29 Programa Visual Basic 6.0 ...................................................................................................................... 38

2

IntroduccionEn la industria, un mayor consumo de energa que el contratado puede conducir a severas sanciones. Muchas veces hay picos de energa producida por la coincidencia cargas que normalmente no funcionan en un mismo tiempo. Con el fin de evitar sanciones, una solucin sera el aumento de la potencia contratada de acuerdo con el pico mximo registrado, pero en cambio esto obligar a pagar una energa ms alta de lo que realmente se necesita. Otra solucin ser evitar los picos de consumo a travs de un elemento de vigilancia que nos avise de la situacin de riesgo o que pueda desconectar ciertas cargas no crticas, tales como aire acondicionado, compresores, luces y ventiladores. La finalidad de controlar la demanda es no exceder el lmite mximo de la demanda contratada. Una forma de hacerlo es arrojar cargas no crticas. Hay un montn posible que se desconecte, como luces, compresores, equipos de aire acondicionado, bombas, ventiladores y extractores, maquinaria de envasado, trituradoras y otras. En general, todas aquellas mquinas no dan un efecto significativo en el proceso de produccin principal o que no son esenciales. El avance tecnolgico ha permitido la aplicacin de microcontroladores que permiten la implementacin de programas de ahorro de energa elctrica reduciendo los picos de demanda mxima y de consumo. Por el motivo anterior se trata de disear un dispositivo o equipo que prevea el nivel de demanda actual, no excediendo el valor programado por medio de una consulta en una tabla de prioridades, decidiendo desconectar las cargas de poca prioridad, o bien bloquear o limitar en potencia, para evitar que dicho exceso se presente, este control permite a los usuarios mantener un menor costo de la energa.

3

ObjetivosLos sistemas actuales de control de demanda se desarrollan basados en controladores lgicos programables (PLC), software especial y equipo de adquisicin de seales, esto hace que el sistema se costoso para la pequea y mediana empresa por lo que no pueden aplicar estas medidas de control de demanda. Por lo tanto se construira un sistema de menor costo utilizando microcontroladores de la marca MICROCHIP, un HMI diseado en Visual Basic y tarjeta de acondicionamiento de seales y potencia; que controle la demanda mxima, para desconectar las cargas no prioritarias cuando la demanda supere un valor predeterminado.

4

I.

Fundamento tericoSe definir inicialmente los conceptos relacionados con el control de la demanda:

Facturacion energeticaDemanda maxima: Es la demanda media en Kilowatts durante un periodo de 15 minutos en el cual el consumo de energa es mayor que en cualquier otro tiempo; esta aplicacin es en la tarifa H.M. y O.M Entre ms alta sea la demanda de energa en un momento dado por un periodo de 15 min. ms alto ser su cargo o facturacin. Existen 4 tipos de demanda mxima una es demanda mxima medida, (DMM) por periodo punta, en periodo intermedio y en periodo base.

Periodo de demanda: Es el periodo de tiempo en el cual se promedia el consumo de potencia para calcular la demanda acumulada. En el caso de la CFE, el periodo de demanda es igual a 15 minutos.

Control de demanda: Este consiste en regular la mxima carga operada en forma simultnea para no propasar el valor mximo de un punto de operacin determinado ya sea en forma manual o automtica. Para poder controlar la demanda mxima es de suma importancia conocer las cargas o equipos bsicos para que se lleve acabo el proceso o trabajo y aquellas cargas que trabajen en forma peridica. Tambin es necesario medir la potencia que aporta cada una de las cargas que contribuyen a la facturacin de la demanda mxima. Una de las cargas o sistemas ms usuales a controlar son: Hornos elctricos, Bombas de pozo, Molinos, Bombas de torres, Ventiladores, Compresores de aire, Sistemas de aire acondicionado. Para el control de demanda, es importante asignar prioridades a las cargas. Las cargas que tienen poco o ningn impacto sobre la produccin o el confort, pueden considerarse como iniciales para ponerse fuera de servicio temporalmente, las cargas que son bsicas para un proceso deben de contemplarse hasta el ltimo o inclusive no ser seleccionadas. Despus de haber hecho este anlisis la planta o industria puede iniciar un plan para controlar la demanda mxima.

Convertidores A/D (ADC) :El convertidor A/D es el nico elemento totalmente indispensable en un sistema de adquisicin de datos. Adems l por si slo puede constituir un SAD. Generalmente suele ser el ms caro de todos los elementos que constituyen el SAD aunque, por supuesto, su precio depende de la calidad de las prestaciones que se le pidan. Estas sern: la exactitud, que depende de los errores que se produzcan y de la resolucin (nmero de bits), y la velocidad. A nivel de elemento de circuito, el A/D se caracteriza por una entrada analgica, una salida5

digital y varias seales de control y alimentacin.

Las seales de control ms importantes y caractersticas son: SC (Start Conversion) y EOC (End Of Conversion). La primera es una entrada que requiere el circuito para que comience la conversin que durar un tiempo que a veces es conocido de antemano y otras veces no. La seal EOC es la que indica al circuito o microprocesador donde estn entrando las seales digitales, cundo ha terminado la conversin. Es por tanto una seal de salida. El elemento de salida del A/D es un latch o registro donde se almacena el dato. Este permanecer almacenado o cambiar controlado por unas entradas de Enable y Chip Select del latch. El funcionamiento de un A/D es muy simple: se inicia la conversin cuando la seal SC pasa a 1. El A/D comienza la conversin y avisa cundo termina mediante una bajada a 0 del EOC.

Comunicacin serialLa comunicacin serial es un protocolo muy comn (no hay que confundirlo con el Bus Serial de Comunicacin, o USB) para comunicacin entre dispositivos que se incluye de manera estndar en prcticamente cualquier computadora. La mayora de las computadoras incluyen dos puertos seriales RS-232. La comunicacin serial es tambin un protocolo comn utilizado por varios dispositivos para instrumentacin; existen varios dispositivos compatibles con GPIB que incluyen un puerto RS-232. Adems, la comunicacin serial puede ser utilizada para adquisicin de datos si se usa en conjunto con un dispositivo remoto de muestreo. El concepto de comunicacin serial es sencillo. El puerto serial enva y recibe bytes de informacin un bit a la vez. Aun y cuando esto es ms lento que la comunicacin en paralelo, que permite la transmisin de un byte completo por vez, este mtodo de comunicacin es ms sencillo y puede alcanzar mayores distancias. Por ejemplo, la especificacin IEEE 488 para la comunicacin en paralelo determina que el largo del6

cable para el equipo no puede ser mayor a 20 metros, con no ms de 2 metros entre cualesquier dos dispositivos; por el otro lado, utilizando comunicacin serial el largo del cable puede llegar a los 1200 metros. Tpicamente, la comunicacin serial se utiliza para transmitir datos en formato ASCII. Para realizar la comunicacin se utilizan 3 lneas de transmisin: (1) Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisin es asincrnica, es posible enviar datos por un lnea mientras se reciben datos por otra. Existen otras lneas disponibles para realizar handshaking, o intercambio de pulsos de sincronizacin, pero no son requeridas. Las caractersticas ms importantes de la comunicacin serial son la velocidad de transmisin, los bits de datos, los bits de parada, y la paridad. Para que dos puertos se puedan comunicar, es necesario que las caractersticas sean iguales. Los principales parmetros de configuracin son: Velocidad de transmisin (baud rate): Indica el nmero de bits por segundo que se transfieren, y se mide en baudios (bauds). Por ejemplo, 300 baudios representan 300 bits por segundo. Cuando se hace referencia a los ciclos de reloj se est hablando de la velocidad de transmisin. Por ejemplo, si el protocolo hace una llamada a 4800 ciclos de reloj, entonces el reloj est corriendo a 4800 Hz, lo que significa que el puerto serial est muestreando las lneas de transmisin a 4800 Hz. Las velocidades de transmisin ms comunes para las lineas telefnicas son de 14400, 28800, y 33600. Es posible tener velocidades ms altas, pero se reducira la distancia mxima posible entre los dispositivos. Las altas velocidades se utilizan cuando los dispositivos se encuentran uno junto al otro, como es el caso de dispositivos GPIB Bits de datos: Se refiere a la cantidad de bits en la transmisin. Cuando la computadora enva un paquete de informacin, el tamao de ese paquete no necesariamente ser de 8 bits. Las cantidades ms comunes de bits por paquete son 5, 7 y 8 bits. El nmero de bits que se enva depende en el tipo de informacin que se transfiere. Por ejemplo, el ASCII estndar tiene un rango de 0 a 127, es decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo que utiliza 8 bits. Si el tipo de datos que se est transfiriendo es texto simple (ASCII estndar), entonces es suficiente con utilizar 7 bits por paquete para la comunicacin. Un paquete se refiere a una transferencia de byte, incluyendo los bits de inicio/parada, bits de datos, y paridad. Debido a que el nmero actual de bits depende en el protocolo que se seleccione, el trmino paquete se usar para referirse a todos los casos. Bits de parada: Usado para indicar el fin de la comunicacin de un solo paquete. Los valores tpicos son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la informacin a travs de las lneas de comunicacin y que cada dispositivo tiene su propio reloj, es posible que los dos dispositivos no estn sincronizados. Por lo tanto, los bits de parada no slo indican el fin de la transmisin sino adems dan un margen de tolerancia para esa diferencia de los relojes. Mientras ms bits de parada se usen, mayor ser la tolerancia a la sincrona de7

los relojes, sin embargo la transmisin ser ms lenta. Paridad: Es una forma sencilla de verificar si hay errores en la transmisin serial. Existen cuatro tipos de paridad: par, impar, marcada y espaciada. La opcin de no usar paridad alguna tambin est disponible. Para paridad par e impar, el puerto serial fijar el bit de paridad (el ltimo bit despus de los bits de datos) a un valor para asegurarse que la transmisin tenga un nmero par o impar de bits en estado alto lgico. Por ejemplo, si la informacin a transmitir es 011 y la paridad es par, el bit de paridad sera 0 para mantener el nmero de bits en estado alto lgico como par. Si la paridad seleccionada fuera impar, entonces el bit de paridad sera 1, para tener 3 bits en estado alto lgico. La paridad marcada y espaciada en realidad no verifican el estado de los bits de datos; simplemente fija el bit de paridad en estado lgico alto para la marcada, y en estado lgico bajo para la espaciada. Esto permite al dispositivo receptor conocer de antemano el estado de un bit, lo que servira para determinar si hay ruido que est afectando de manera negativa la transmisin de los datos, o si los relojes de los dispositivos no estn sincronizados.Qu es RS-232? RS-232 (Estndar ANSI/EIA-232) es el conector serial hallado en las PCs IBM y compatibles. Es utilizado para una gran variedad de propsitos, como conectar un ratn, impresora o modem, as como instrumentacin industrial. Gracias a las mejoras que se han ido desarrollando en las lneas de transmisin y en los cables, existen aplicaciones en las que se aumenta el desempeo de RS-232 en lo que respecta a la distancia y velocidad del estndar. RS-232 est limitado a comunicaciones de punto a punto entre los dispositivos y el puerto serial de la computadora. El hardware de RS-232 se puede utilizar para comunicaciones seriales en distancias de hasta 50 pies.

8

MicrocontroladorLos micrconctoladores son computadores digitales integrados en un chip que cuentan con un microprocesador o unidad de procesamiento central (CPU), una memoria para almacenar el programa, una memoria para almacenar datos y puertos de entrada salida. A diferencia de los microprocesadores de proposito general, como los que se usan en los computadores PC, los microcontroladores son unidades autosu cientes y mas economicas. El funcionamiento de los microcontroladores esta determinado por el programa almacenado en su memoria. Este puede escribirse en distintos leguajes de programacion. Ademas, la mayoria de los microcontroladores actuales pueden reprogramarse repetidas veces. Por las caracter sticas mencionadas y su alta exibilidad, los microcontroladores son ampliamente utilizados como el cerebro de una gran variedad de sistemas embebidos que controlan maquinas, componentes de sistemas complejos, como aplicaciones industriales de automatizacion y robotica, domotica, equipos medicos, sistemas aeroespaciales, e incluso dispositivos de la vida diaria como automoviles, hornos de microondas, telefonos y televisores. Frecuentemente se emplea la notacion C o las siglas MCU (por microcontroller unit para referirse a los microcontroladores. De ahora en adelante, los microcontroladores seran referidos en este documento por C.

Visual BasicVisual Basic es una herramienta de diseo de aplicaciones para Windows, en la que estas se desarrollan en una gran parte a partir del diseo de una interfaz grfica. En una aplicacin Visual Basic, el programa est formado por una parte de cdigo puro, y otras partes asociadas a los objetos que forman la interfaz grfica. Es por tanto un termino medio entre la programacin tradicional, formada por una sucesin lineal de cdigo estructurado, y la programacin orientada a objetos (OCX). Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por completo a uno de esos dos tipos de programacin, debemos inventar una palabra que la defina: Programacin Visual. La creacin de un programa bajo Visual Basic lleva los siguientes pasos: y Creacin de una interfaz de usuario. Esta interfaz ser la principal va de comunicacin hombre mquina, tanto para salida de datos como para entrada. Ser necesario partir de una ventana (formulario) a la que le iremos aadiendo los controles necesarios. y Definicin de las propiedades de los controles (objetos) que hayamos colocado en ese formulario. Estas propiedades determinarn la forma esttica de los controles, es decir, como son los controles y para qu sirven.

9

y

y

Generacin del cdigo asociado a los eventos que ocurran a estos objetos. A la respuesta a estos eventos (click, doble click, una tecla pulsada, etc.) le llamamos Procedimiento, y deber generarse de acuerdo a las necesidades del programa. Generacin del cdigo del programa. Un programa puede hacerse solamente con la programacin de los distintos procedimientos que acompaan a cada objeto. Sin embargo, VB ofrece la posibilidad de establecer un cdigo de programa separado de estos eventos. Este cdigo puede introducirse en unos bloques llamados Mdulos, en otros bloques llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento acaecido a un objeto, sino que responden a un evento producido durante la ejecucin del programa.

I.

Controlador de demanda de energia electrica

Las demandas maximas medidas en los distintos periodos de las tarifas horarias son obtenidas de la demanda instantanea integrada por el medidor de la compaa electrica sobre cualquier intervalo de 15 minutos (vease Figura 8), en el cual la demanda de energia electrica sea mayor que en cualquier otro intervalo de 15 minutos en el periodo de facturacion.

10

Control de demanda electricaEn terminos generales, el controlar la demanda, es la accion de interrumpir por intervalos de tiempo la operacin de ciertascargas electricas (iluminacion, motores, etc.) que inciden directamente sobre la demanda maxima facturable, a fin de reducir o limitar los niveles de consumo en razon de los precios tarifarios. En la figura de abjo se muestra una factura electrica, donde el cliente sobrepaso la potencia maxima establecida o contratada, y esto llevo a penalizaciones que llevo a alzar el pago del cliente. Si el cliente tuviera un control de demanda se hubiera ahorrado alrededor de un 71% del pago realizado.

El control de la demanda electrica puede ser una opurtunidad de ahorro economico muy rentable ya que actualmente el cargo por demanda representa, entre un 20 a un 30% de la facturacion electrica, ademas el ahorro no sera tan solo por la reduccion en el cargo en la demanda, sino que tambien en los cargos por consumo en el horario punta.

11

No obstante, es importante sealar que el control de demanda es una de las opurtunidades de ahorro economico que mas atencion, tiempo y compensacion del proceso productivo requiere, dado que para que esta opurtunidad sea factible, es indispensable que no afecte el proceso, requiriendo para esto adecuar las rutinas de operacin e identificar los usos inadecuados de los equipos.

Sistemas de control de demandaUn controlador de demanda es basicamente un dispositivo que actua sobre una seal , que temporalmente apaga cargas electricas predeterminadas, con el proposito de mantener la demanda maxima bajo control. El controlador, apaga o establece ciclos de trabajo a las cargas cuando la demanda alcanza un valor, o crece a una tasa preseleccionada. El punto prefijado debe ser cuidadosamente seleccionado, para que no se afecte la produccion o necesidades de operacin.

Estos equipos tienen excelente respuesta para el control automatico de cargas, las cuales se pueden desminuir, eliminar o diferir en los horarios punta donde la empresa suministradora impacta los costos por el concepto de demanda maxima de la tarifa.

Mtodos de control de demanda y Control de demanda manualEl control de demanda manual ms efectivo, es hacer una programacin de la operacin de diferentes cargas. Es decir realizar una programacin de cargas. En algunos casos, esto puede realizarse al restringir la operacin de ciertas cargas durante un tiempo especfico. En otros12

casos de trabajo, se puede definir los tiempos de operacin para ciertos departamentos, lneas de proceso o mquinas. En muchas plantas es fcil hacer esto y puede involucrar cambios en las costumbres de operacin simples pero permanentes. En otras plantas, los programas de operacin pueden necesitar de una revisin constante, a medida que la produccin cambie. Por otra parte se debe realizar un seguimiento de comportamiento de la demanda mediante mediciones en los tableros principales ya sea con analizadores de redes, potencimetros o ampermetros o a travs de los recibos de la Compaa electrica.

y Control automtico de demandaEn muchas plantas el nmero de cargas diferentes con diversas caractersticas puede ser muy grande, y las variaciones posibles suelen ser demasiadas para un control manual. En otras plantas donde ya esta trabajando el control manual, an puede haber posibles reducciones a la demanda, al aadirse el control automtico. Claro esta que el control automtico es una forma mas sofisticada, verstil y confiable para asegurar un limite a la demanda mxima. Antes de aplicar un control de demanda automtico se debe considerar las siguientes acciones: 1.- Determinar la carga base para la administracin de la demanda. Estas son las cargas en las que no se puede aplicar un control de demanda. 2.- Establecer en que reas del proceso o cargas es posible realizar un control de la demanda. 3.- Establecer procedimientos de operacin de la planta que ayuden a la implantacin del sistema de control de demanda. 4.- Disear la lgica de control, asignando prioridades a las cargas a ser controladas y establecer el mtodo para el control de la demanda. 5.- La lgica de control se puede establecer mediante procedimientos manuales, para verificar que no se presenten trastornos a la produccin y/o el confort para los cuales el equipo se tiene operando.

II.

Diseo del Sistema

13

Un sistema elctrico monofsico con un voltaje de 120V RMS alimentara una carga de seis bombillos de 120V a 150 Watts de potencia cada uno, donde un rele manejara la conexin de cada bombillo a excepcin de un rele que manejara dos bombillos. En la figura mas abajo se muestra el diagrama en bloque del sistema. Se utilizara un microcontrolador PIC16F877A el cual recibir seales anlogas correspondiente al valor del voltaje de la red RMS y la corriente de la carga en RMS, el microcontrolador convertir estos valores anlogos en valores digitales y los enviara por comunicacin serial a un computador el cual tendr un programa que tomara estos valores digitales y los procesara para obtener los valores de voltaje de la red y la corriente de carga. Al obtener los valores de corriente y voltaje, se determina la potencia que no es ms que el producto de las valores anteriores.

14

Se utilizara el mtodo de carga instantnea donde el nivel de la potencia demandada se mide continuamente y se compara con el punto de referencia preseleccionado Potencia Mxima. Este mtodo provee un control estrecho de la potencia demandada actual. Este mtodo es recomendable en instalaciones con rgimen de operacin continuo donde se presenta poca variacin de carga a lo largo de la jornada de trabajo. Si la potencia demandada supera el valor mximo de potencia preseleccionada, comienza un timer a contar, la anterior condicin se puede mantener hasta que el valor de la cuenta del timer llegue al 85% del valor del Tiempo de penalizacin, cuando suceda esto la PC mandara una seal de Reduccin de carga; esta seal har que el microcontrolador reduzca la carga empezando con las menos prioritarias, el microcontrolador desconectara una carga a la vez cada vez que reciba la seal reduccin de carga. Cuando la potencia demanda sea menor a la potencia mxima preseleccionada, y esta condicin se mantega un tiempo denominado Tiempo espera Normalizacion que es el 5% del Tiempo de penalizacin, se mandara la seal de Nomalizacion de Carga, la cual habilitara todas las cargas desconectadas anteriormente.

15

El circuito se dividir en cuatro partes principales como son: 1. 2. 3. 4. Tarjeta acondicionadora de seal Tarjeta de potencia Microcontrolador Software de PC

1. Tarjeta acondicionadora de sealEsta recibe las seales de salida de los transformadores de instrumentos, y la ajusta a un rango de 0 5 Vdc, donde 0 Vdc es el valor minimo de la magnitud medida y 5 Vdc es el valor mximo de la magnitud medida. Acondicionamiento de la seal de voltaje La medicin del voltaje se realiza utilizando el transformador de alimentacin al equipo, el cual tienen una relacin de 120V/12V, tomando los extremos del transformador. Si se aplica en el primario 140 Volts, en el lado secundario se tendrn 14 Vrms, utilizando un circuito de valor medio absoluto y un divisor de tensin se ajusta para obtener a la salida, se quiere que el voltaje a la salida del MAV sea de 5 Volts para cuando en el primario del transformador haya 5 V, el circuito final se muestra en la figura de abajo. La seal obtenida entra al convertidor anlogo digital del PIC16F877A de 10 bits.

16

Acondicionamiento de la seal de Corriente La seal de corriente se toma con un transformador de corriente, tiene una relacin de 100mV/A de tal forma que cuando en el primario circulen 8 Ampers, en el secundario se tendrn 3 volts, el circuito se muestra en la figura 3. Tambin se tiene un circuito de valor medio absoluto para obtener corriente directa en el rango de 0 a 5 volts.

2. Tarjeta de potenciaEsta tarjeta maneja la carga a traves de relevadores que conectan y desconectan la carga, segn le ordenan el programa. La salida del microcontrotrolador se conecta a una compuerta inversora que puede manejar mayor corriente y a la vez aisla al microcontrodar de cualquier transitorio. La compuerta inversora maneja un transistor el cual energiza o desenergiza la bobina de rele, el cual en sus contactos tiene un bombillo conectado en serie con una fuente de voltaje alterna de 120 Vac.

17

18

3. Tarjeta MicrocontroladorTiene como funciones principales mandarle la informacin digital de la corriente de carga y el voltaje de la red a la computadora, y manejar la reduccin o normalizacin de la carga, manejando los rel conectados a sus salidas digitales.

El lenguaje que se utiliza es el ensamblador para microcontroladores PIC, de la tecnologa microchip, y el software de programacin utilizado fue el MPLAB, tambin de la tecnologa microchip. La programacin del microcontrolador es la etapa ms extensa del diseo del medidor digital de energa elctrica puesto que es la parte central de control del proyecto, como ya se ha mencionado el PIC utilizado es el PIC16F877A, porque tiene memoria Flash, la cual se puede borrar elctricamente, esto sirve para realizar todas las pruebas necesarias de cada uno de los programas a utilizar, es decir se realiza el programa en MPLAB, para despus ensamblarlo al microcontrolador, y posteriormente realizar las pruebas de hardware en el circuito electrnico. A continuacin se describirn las partes esenciales para el desarrollo de programacin de los algoritmos del programa:

1. 2. 3. 4. 5.

Inicializacin Esperar Comando Start Adquisicion y/o conversion ADC Transmisin serial resultado ADC Comando Stop - Reduccion Normalizacion19

En la figura de abajo se muestra el diagrama de flujo que sigue el programa, que ayudara a entender mejor los procesos internos en el microcontrolador.

InicializacionEsta parte del programa solo ocurre una sola vez, y es donde se configura las diferentes opciones que tiene el microcontrolador PIC16F877A como son el convertidor analogo digital (ADC), la comunicacin serial (UARST), y los puertos de entrada y salida. Configuracion convertidor analogo digital Los registros implicados en la preparacin de una conversin analgica-digital son el ADCON0, ADCON1 y ADCON2. El primero sirve para configurar, el canal de entrada, activacin de la conversin y encendido del mdulo A/D. El segundo registro sirve para configurar las entradas del puerto A como mezcla entre digitales y analgicas. El tercero sirve para especificar el formato (justificacin) del valor devuelto y el reloj de la conversin.20

La conversin empieza por ajustar los pines del puerto A como entradas. Luego se programan los registros ADCON0, ADCON1 y ACON2 con los valores seleccionados. La conversin est formada por dos periodos: Adquisicin (TACQ) y Conversin (TAD):

Comunicacin serialEl PIC16F877A tiene un modulo de comunicacin serial que se puede comunicar con el puerto serial RS-232 de la computadora. Se utilizo una comunicacin seria asincrona para comunicar microcontroladror con el computador.

21

La programacin del interfaz serie del PIC es muy sencilla, basta con poner los valores adecuados en los registros SPBRG, TXSTA, RCSTA y BAUDCON, adems hay que programar el pin RC6 como salida y el RC7 como entrada. Para ello TRISC debe ser: TRISC = b 10000000 ; // RC6 salida, RC7 entrada, resto nada Bloques para sci en modo asncrono: Generador de Relacin de Baudios (BRG) - Define la velocidad de transferencia (transmisin y recepcin) - Genera reloj de comunicacin a partir del oscilador del MCU Circuito de Muestreo - Deteccin de 1 0 en pin RX - Sincronizacin de reloj Transmisor Asncrono - Registro serie de transmisin con buffer de carga Receptor Asncrono - Registro serie de recepcin con doble buffer

Se configuro la comunicacin seria asignando una velocidad de 9600 baud rate, sin deteccion de paridad, los datos tienen 8 bits, y solo tiene un bit de stop. El software en la PC debe de tener esta misma configuracion para que funcione el programa.

4. SoftwareEl software es el cerebro del sistema, este procesa la informacin que recibe del microcontrolador y atraves de estas toma las decisiones que evitara penalizaciones al usuario por exceder del tiempo permisible en la potencia mxima penalizada.22

Tambin el software se encarga de mostrar y adquirir informaciones que podrn: y ayudar al operador o usuario del control de demanda a saber en que valor se encuentran las magnitudes elctricas importantes, como son, corriente, voltaje y23

y

y

potencia. Tambin se pueden obsevar valores auxiliares como los valores de los tiempos de penalizacin, y normalizcion. permite cambiar los valores de potencia mxima preseleccionda y tiempo de penalizacin preseleccionado, logrando asi ajustar estos valores segn la produccin y el ahorro que se quiera. Observar los valores de voltaje en la entrada analoga del microcontroldor, para detectar posibles problemas o averias.

El software de control de demanda esta instalado en un ordenador que tenga instalado un sistema operativo WINDOWS. El software se diseo utilizando el programa Visual Basic 6.0.

24

Utilizando el control de comunicaciones MSCommEl Controlador MSComm permite realizar comunicaciones seriales para aplicaciones especficas, permitiendo la recepcin y transmisin de datos desde el puerto serial. No se encuentra en la caja de herramientas, por lo que ser necesario agregarlo mediante Proyecto >Componentes > Microsoft Com Control 6.0. En el formulario solamente se puede ver en tiempo de diseo. El icono que lo representa en la caja de herramientas aparecer en el formulario y es el siguiente:

PROPIEDADES Existen propiedades que pueden establecerse en tiempo de diseo o en tiempo de ejecucin, y otras que se pueden ejecutar o consultar en solamente en tiempo de ejecucin. CommPort Indica el nmero del puerto serie usado. Admite los valores de 1 a 255. Cambiando esa propiedad podemos cambiar el puerto de comunicacin que vamos a usar (Un PC tiene normalmente 2 puertos serie : El Com1 y el Com2. Puede tener sin grandes problemas Hardware hasta 4 (Com3 y Com4) Si le damos a ese valor un nmero de puerto inexistente, dar error. Settings Sintaxis Velocidad, Paridad, Bits por Caracter, Bits paro Indica la velocidad, paridad, nmero de bits y bits de stop (parada) que se van a usar en la comunicacin. El parmetro Velocidad indica la velocidad en baudios, y sus valores posibles son : 50 100 110 300 600 1200 2400 4800 9600 14400 19200 y 28800 Los valores posibles para paridad son : N - No enva bit de paridad ni hace comprobacin de paridad en la recepcin. O - Enva y comprueba paridad, con el criterio de paridad IMPAR E - Enva y comprueba paridad, con criterio de paridad PAR Los valores para el parmetro Bits de Caracter pueden ser : 7 - Se envan / reciben 7 bits por trama de informacin. 8 - Se envan / reciben 8 bits por trama de informacin 5 - Se envan / reciben 5 bits por trama de informacin. Este valor de 5 bits es el tpico del sistema Baudot para transmisin telegrfica (Teletipos) que se ha conservado las comunicaciones informticas. Si se eligen 5 bits, los bits de parada se ponen automticamente a 1,5.

en

25

Los valores para el parmetro Bits de paro pueden ser : 1 - Se enva un bit de paro 2 - Se envan 2 bits de paro (Si se programan 5 bits por caracter, automticamente se tendrn 1.5 bits de paro. Para este proyecto se uso la sintaxis 9600, n, 8,1. InBufferSize Mediante esta propiedad establecemos el tamao del Buffer (almacn de datos) de entrada. Este Buffer sirve para poder recibir datos sin que tenga que intervenir la aplicacin continuamente para controlar el puerto de entrada. Puede conocerse el nmero de caracteres presentes en el Buffer de entrada consultando el valor de la propiedad InBufferCount. OutBufferSize Mediante esta propiedad controlamos el tamao del Buffer de salida. El tamao de los Buffers depender de la aplicacin y de la velocidad de comunicacin.Puede conocerse el nmero de caracteres presentes en el Buffer de salida (los que an estn por transmitir), consultando el valor de la propiedad OutBufferCount.

26

ConclusionesEl avance de la tecnologa de los dispositivos electrnicos, contribuye con la sencillez y exactitud de los medidores digitales, puesto que cada vez se disean ms sofisticados y econmicos, ayudando a una mejor medicin de los parmetros elctricos a medir. Se dise y construy un prototipo de un medidor digital de energa elctrica con un microcontrolador PIC16F877A y una de las caractersticas del trabajo realizado, es que el diseo presenta un medidor en el cual se pueden registrar ms parmetros, y no solo el de energa como se realiza actualmente en los medidores monofsicos, la idea es registrar y visualizar parmetros tales como voltaje RMS, corriente RMS y potencia activa dentro de la memoria del medidor.

Presentar los principales algoritmos que forman el diseo de este instrumento ejemplifica la programacin utilizada en el microcontrolador PIC16F877A, que es un dispositivo muy econmico y de gran alcance, por lo que este se puede emplear como procesador principal de un medidor digital de energa elctrica.

27

Bibliografia1. Dennis E. Coleman, Microchip Technology Inc. Watt-Hour Meter Reference Desing , july 1998; printed in the U.S.A. 2. Jose Maria Angulo Usategui Microcontroladores PIC diseo prctico de aplicaciones. Ed. Mc Graw Hill, copyrigh 1997. 3. PIC16F87XA 28/40/44-Pin Enhanced Flash Microcontrollers, MICROCHIP4. Interfaces y Perifricos, Gua 3.PDF 5. Axelson, J, Serial Port Complete, 2nd ed.

28

AnexosCodigo microcontrolador:#INCLUDE "P16F877A.INC" LIST P=16F877A ;Include header file

RADIX HEX TEMP1 EQU 41 #DEFINE TIME1mS #DEFINE TIME100mS #DEFINE TIME1000mS

0x31 0x32 0x33

TEMP EQU 0x40 ; Variable temporal CONVERSIONL EQU 42 CONVERSIONH EQU 43 CANAL EQU 44 DATO equ 45 VALIDO equ 46 STOPREDNORM equ 47 CARGA equ 48 ;---------------------------------------------------------------------------;Constants SPBRG_VAL EQU .25 ;set baud rate 9600 for 4Mhz clock

;---------------------------------------------------------------------------;Bit Definitions GotStart EQU 0 ;bit indicates new data received

;---------------------------------------------------------------------------;Variables CBLOCK 0x020 Flags ENDC

;byte to store indicator flags

;---------------------------------------------------------------------------;Macros to select the register bank ;Many bank changes can be optimized when only one STATUS bit changes Bank0 MACRO bcf STATUS,RP0 bcf STATUS,RP1 ENDM MACRO bsf STATUS,RP0 bcf STATUS,RP1 ;macro to select data RAM bank 0

Bank1

;macro to select data RAM bank 1

29

ENDM Bank2 MACRO bcf STATUS,RP0 bsf STATUS,RP1 ENDM ;macro to select data RAM bank 2

Bank3

MACRO ;macro to select data RAM bank 3 bsf STATUS,RP0 bsf STATUS,RP1 ENDM ;******************************************** org goto org goto 0 INICIO 4 MainLoop

;salta a INICIO

;No se usan interrupciones

;*********************************************** ;Rutina de retardo de 1ms, una frecuencia ;de oscilacion de 4MHZ RETARDO nop movlw 249 movwf TEMP1 CICLO nop decfsz TEMP1,f goto CICLO return ;*************************************************** ;Rutina de configuracion del ADC ;para el canal AN0 en modo sondeo ;y resultado justificado a los MSB CONFIG_ADC bsf STATUS, RP0 ;Banco 1 movlw b'10000000' ;Activar todos los canales (AN0 hasta AN7) ; vdd sera +VREF movwf ADCON1 bcf STATUS, RP0 ;Banco 0 movlw b'10000000' ;Elegir Fosc/8 y convertir solo AN0 movwf ADCON0 bsf ADCON0, 0 ;Enciende el ADC ;*************************************************** ;Rutina para configurar la direccionalidad ;de los puertos del PIC, CONFIG_PUERTOS

30

bsf STATUS, RP0 ;Cambio al BANCO 1 MOVLW 0XFF MOVWF TRISA clrf TRISB ;Puerto B como salida clrf TRISD ;Puerto D como salida bcf TRISC, 0 ;RC0 como salida bcf TRISC, 1 ;RC1 como salida bcf STATUS, RP0 ;Cambio al BANCO 0 return

CONFIG_SERIAL: Bank1 clrf TRISD movlw 0xc0 iorwf TRISC,F movlw SPBRG_VAL movwf SPBRG movlw 0x24 movwf TXSTA Bank0 MOVLW .48 MOVWF TEMP movlw 0x90 movwf RCSTA clrf Flags return ;****************************************************** ;Ciclo de inicializacion INICIALIZACION call CONFIG_PUERTOS CALL CONFIG_SERIAL clrf PORTC clrf PORTB movlw 0xff movwf PORTD CLRF CARGA call CONFIG_ADC call RETARDO return ;select bank 1 ;set tris bits for TX and RX ;set baud rate ;enable transmission and high baud rate ;select bank 0

;enable serial port and reception ;clear all flags

;************************************************************** ;programa principal INICIO call wait bcf Flags,GotStart ;do other stuff here call $$$$ ;indicate no data received INICIALIZACION

31

goto MainLoop: call

wait

ADQUISICION

call call Scanal:

TransmitSerial

;if so then go transmit the data

StopReduceCommand

MOVLW .1 ADDWF CANAL, F goto MainLoop

;go do main loop again

;---------------------------------------------------------------------------;Check if data received and if so, return it in the working register. WaitStartCommand: Bank0 ;select bank 0 ;check if data ;return if no data ;if overrun error occurred ; then go handle error ;if framing error occurred ; then go handle error ;get received data

btfss PIR1,RCIF return btfsc goto btfsc goto movf RCSTA,OERR ErrSerialOverr RCSTA,FERR ErrSerialFrame RCREG,W

;****************VALIDATION DATA**********************

movwf VALIDO movlw 0X22 ;el dato que viene es valido bcf STATUS, Z xorwf VALIDO,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? RETURN ;Z=0 NO ES UN DATO VALIDO checkdato: btfss GOTO btfsc goto btfsc goto PIR1,RCIF checkdato RCSTA,OERR ErrSerialOverr RCSTA,FERR ErrSerialFrame ;check if data

;if overrun error occurred ; then go handle error ;if framing error occurred ; then go handle error

32

movf RCREG,W ;get received data movwf CANAL movlw 0X48 ;el dato que viene es valido bcf STATUS, Z xorwf CANAL,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? return

bsf Flags,GotStart ;indicate new data received return ;error because OERR overrun error bit is set ;can do special error handling here - this code simply clears and continues ErrSerialOverr: bcf RCSTA,CREN ;reset the receiver logic bsf RCSTA,CREN ;enable reception again return

;error because FERR framing error bit is set ;can do special error handling here - this code simply clears and continues ErrSerialFrame: movf RCREG,W return ;discard received data that has error

;*********************************************************** ;Ciclo de adquisicion ADQUISICION Bank0 AN0 ; select AN0 if CANAL = H48 movlw 0X48 ; bcf STATUS, Z xorwf CANAL,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? goto AN1 ;Z=0, check folowing channel Bank0 ;select bank 0 movlw b'10000000' ;Elegir Fosc/8 y convertir solo AN0 movwf ADCON0 GOTO $$$$ AN1 ; select AN1 if CANAL = H49 movlw 0X49 ;W=10 bcf STATUS, Z xorwf CANAL,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? goto NOCANAL ;Z=0, check folowing channel Bank0 ;select bank 0

33

movlw b'10001000' movwf ADCON0

;Elegir Fosc/8 y convertir solo AN1

CANALACEPTADO ; bsf ADCON0, 0 call Delay_100mSec bsf ADCON0, 2 ADC_BUSY call Delay_100mSec btfsc ADCON0, 2 goto ADC_BUSY movf movwf bsf movf ADRESH, w CONVERSIONH STATUS, RP0 ADRESL, w ;apaga el ADC ;inicia conversion

;ya termino la conversion ;no ;si lee los 2 MSB ;banco 1 ;lee los 8 LSB

bcf STATUS, RP0 ;banco 0 MOVWF CONVERSIONL MOVF CONVERSIONL, W return NOCANAL ; any channel select return to first channel MOVLW 0X48 MOVWF CANAL goto $$$$

;---------------------------------------------------------------------------;Transmit data in WREG when the transmit register is empty. TransmitSerial: check Bank0 call btfss goto movf movwf call check2 btfss goto movf movwf PIR1,TXIF ;check if transmitter busy checkT2 ;wait until transmitter is not busy CONVERSIONL, w TXREG ;and transmit the data L byte ;select bank 0 Delay_1mSec PIR1,TXIF ;check if transmitter busy checkT1 ;wait until transmitter is not busy CONVERSIONH, w TXREG ;and transmit the data H byte Delay_1mSec

return

34

;---------------------------------------------------------------------------;Check if data received and if so, return it in the working register. StopReduceCommand: Bank0 ;select bank 0 ;check if data ;return if no data ;if overrun error occurred ; then go handle error ;if framing error occurred ; then go handle error ;get received data

btfss PIR1,RCIF return btfsc goto btfsc goto movf RCSTA,OERR ErrSerialOverr2 RCSTA,FERR ErrSerialFrame2 RCREG,W

;****************VALIDATION DATA**********************

movwf VALIDO movlw 0X22 ;el dato que viene es valido bcf STATUS, Z xorwf VALIDO,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? RETURN ;Z=0 NO ES UN DATO VALIDO checkdato: btfss GOTO btfsc goto btfsc goto PIR1,RCIF checkdato2 RCSTA,OERR ErrSerialOverr RCSTA,FERR ErrSerialFrame ;check if data

;if overrun error occurred ; then go handle error ;if framing error occurred ; then go handle error ;get received data

movf RCREG,W movwf STOPREDNORM call Parar Call Reducir Call Normalizar return

Parar:

movlw 0X80 ;el dato que viene es valido bcf STATUS, Z xorwf STOPREDNORM,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0?

35

return CLRF VALIDO CLRF CANAL CLRF STOPREDNORM movlw 0xff movwf PORTD goto wait Reducir: movlw 0X82 ;el dato que viene es valido bcf STATUS, Z xorwf STOPREDNORM,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? return ;*************************************************************** ; esta parte hace que la variable carga aumente de 1 en 1 ; cada vez que aumenta apaga una salida del PORTD desde la menos ;significatiba a la mayor. movlw 0x06 ;W=10 xorwf CARGA,W ;W XOR TEMP bcf STATUS, Z btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? call SIGUE ;Z=0, NO es diferente de 0, TMRO = 0,1,2,3,4,5,6,7,8,9 ;clrf TMR0 ;Z=1, SI vale 10, TMRO > 9, TMR0=0 return ;Temp=0 ;*******************************************************************

SIGUE: movf CARGA,W ;W=TEMP call Descenso ;Decodifica el valor de DISPLAY movwf PORTD ;Escribe el valor en PORTD INCF CARGA,F return ;Salta a la etiqueta bucle

Descenso: addwf PCL,f

36

retlw b'00111110' ;0 retlw b'00111100' ;1 retlw b'00111000' ;2 retlw b'00110000' ;3 retlw b'00100000' ;4 retlw b'00000000' ;5

Normalizar: ;normaliza la carga al estado inicial, habilita toda la carga movlw 0X78 ;el dato que viene es valido bcf STATUS, Z xorwf STOPREDNORM,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? return movlw 0x3f movwf PORTD CLRF CARGA return ;************************************************************** Delay_1mSec: MOVLW .250 ;250*4uSec=1 mSec MOVWF TIME1mS Loop_1mSec: NOP ;(1 cycle) DECFSZ TIME1mS,F ;(1 cycle) GOTO Loop_1mSec ;(2 cycle) RETURN ;************************************************************* ;Esta Funcion crea un delay de 100 milisegundo Delay_100mSec: MOVLW .100 MOVWF TIME100mS loop_100mSec: CALL Delay_1mSec DECFSZ TIME100mS,F GOTO loop_100mSec RETURN ;************************************************************* ;************************************************************* ;Esta Funcion crea un delay de 1000 milisegundo Delay_1000mSec: MOVLW .10 MOVWF TIME1000mS loop_1000mSec:

37

CALL Delay_100mSec DECFSZ TIME1000mS,F GOTO loop_1000mSec RETURN

END

Codigo programa Visual Basic 6.0Option Explicit Dim i As Integer Dim BytesToSend(0 To 5) As Byte Dim bufferEnv As Variant Dim DatosRecibidos() As Byte Dim time1 As Integer Dim time2 As Integer Dim subtime As Integer Dim temp As Integer Dim corriente As Single Dim voltaje As Single Dim potencia As Single Dim DVF1 As Single Dim vanalogo As Single Dim pmaximavalue As Integer Dim TpenalM As Integer Dim TpenalS As Integer Dim Treduce As Integer Dim Tsubreduce As Integer Dim Tnorm As Integer Dim Command As Long Dim StartC As Integer Dim CANAL As Integer Dim timestop As Integer Dim HVALIDO As Long Dim bufferRec As Variant Dim timerseg As Integer Dim txtConversion As Variant

Private Sub Command1_Click() TpenalM = Text9.Text TpenalS = TpenalM * 60 38

Label12.Caption = TpenalS Treduce = TpenalS * 0.85 Tnorm = TpenalS * 0.05 Tsubreduce = TpenalS * 0.016 End Sub Private Sub Enviar_Click() pmaximavalue = pmaxima.Text End Sub Private Sub Form_Load() ' Fire Rx Event Every Two Bytes MSComm1.RThreshold = 2 ' When Inputting Data, Input 2 Bytes at a time MSComm1.InputLen = 2 ' 2400 Baud, No Parity, 8 Data Bits, 1 Stop Bit MSComm1.Settings = "9600,N,8,1" ' Disable DTR MSComm1.DTREnable = False ' Open COM1 MSComm1.CommPort = 6 MSComm1.OutBufferCount = 0 MSComm1.PortOpen = True Timer1.Enabled = False 'habi++lita el timer Timer1.Interval = 1000 'rutina de recepcin cada 1 segundo Timer2.Enabled = False 'habi++lita el timer Timer2.Interval = 1000 'rutina de recepcin cada 1 segundo timestop = 0 time1 = 0 time2 = 0 Command = 0 pmaxima.Text = 10 StartC = 0 TpenalM = 15 Text9.Text = TpenalM TpenalS = 900 Label12.Caption = TpenalS Treduce = 765 pmaximavalue = 10 End Sub

39

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub

Private Sub mnsalir_Click() Timer1.Enabled = False 'desactiva el Timer Instrumentacion.Visible = False

End Sub Private Sub MSComm1_OnComm() MSComm1.InputMode = comInputModeText Dim sData As String ' Holds our incoming data Dim lHighByte As Long ' Holds HighByte value Dim lLowByte As Long ' Holds LowByte value Dim lWord As Long ' Holds the Word result

If StartC = 1 Then ' If comEvReceive Event then get data and display If MSComm1.CommEvent = comEvReceive Then sData = MSComm1.Input ' Get data (2 bytes) lHighByte = Asc(Mid$(sData, 1, 1)) ' get 1st byte lLowByte = Asc(Mid$(sData, 2, 1)) ' Get 2nd byte ' Combine bytes into a word lWord = (lHighByte * &H100) Or lLowByte ' Convert value to a string and display DVF1 = CStr(lWord) vanalogo = DVF1 / 204.6 vanalogo = FormatNumber(vanalogo, 2)

End If End If If CANAL = 48 Then Text2.Text = vanalogo

40

corriente = (vanalogo * 1.62) + 0.55 If corriente < 0.9 Then corriente = 0 End If Text4.Text = corriente End If If CANAL = 49 Then Text3.Text = vanalogo voltaje = (595) / (vanalogo) If voltaje < 0.9 Then voltaje = 0 End If Text5.Text = voltaje End If potencia = (corriente * voltaje) / 100 pactual.Text = potencia If potencia > pmaximavalue Then Timer1.Enabled = True 'habilita el timer End If If potencia < pmaximavalue Then If Timer1.Enabled = True Then Timer2.Enabled = True Timer1.Enabled = False End If End If

CANAL = CANAL + 1 If CANAL = 50 Then CANAL = 48 End If Text8.Text = Command

Label14.Caption = time1 Label15.Caption = time2 End Sub

Private Sub pmaxima_Change() pmaxima.Text = pmaxima.Text End Sub 41

Private Sub START_Click() StartC = 1 HVALIDO = 22 Text1.Text = HVALIDO Command = 48 'manda el valor del primer canal a convertir CANAL = 48 Text8.Text = Command BytesToSend(0) = Val("&H" + Text1.Text) BytesToSend(1) = Val("&H" + Text8.Text) bufferEnv = BytesToSend() MSComm1.Output = bufferEnv

End Sub Private Sub STOP_Click() StartC = 0 HVALIDO = 22 Text1.Text = HVALIDO Command = 80 'parar P ascii = 80 Text8.Text = Command BytesToSend(0) = Val("&H" + Text1.Text) BytesToSend(1) = Val("&H" + Text8.Text) bufferEnv = BytesToSend() MSComm1.Output = bufferEnv Timer1.Enabled = False 'habi++lita el timer Timer2.Enabled = False 'habi++lita el timer time1 = 0 time2 = 0 CANAL = 0 End Sub

Private Sub Timer1_Timer() If time1 > Treduce Then subtime = subtime + 1 42

If subtime = Tsubreduce Then HVALIDO = 22 Text1.Text = HVALIDO Command = 82 'manda a Reducir carga R ascii = 82 Text8.Text = Command BytesToSend(0) = Val("&H" + Text1.Text) BytesToSend(1) = Val("&H" + Text8.Text) bufferEnv = BytesToSend() MSComm1.Output = bufferEnv subtime = 0 End If End If time1 = time1 + 1 End Sub Private Sub Timer2_Timer() time2 = time2 + 1 If time2 > Tnorm Then HVALIDO = 22 Text1.Text = HVALIDO Command = 78 'manda a Normalizar carga N ascii = 78 Text8.Text = Command BytesToSend(0) = Val("&H" + Text1.Text) BytesToSend(1) = Val("&H" + Text8.Text) bufferEnv = BytesToSend() MSComm1.Output = bufferEnv time2 = 0 time1 = 0 Timer2.Enabled = False Timer1.Enabled = False End If

End Sub

43