REPUBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN SUPERIOR INSTITUTO UNIVERSITARIO DE TECNOLOGÍA “DR.

FEDERICO RIVERO PALACIO”

DESARROLLO DE MODULO DE CONTROL REMOTO PARA LA ACTIVACIÓN DE CARGAS VÍA SMS POR MEDIO DEL MICROCONTROLADOR PIC 16F877

Autores: Freites Jhoan Marin Wilber Saab Rimén Velásquez Vicente Sección II

CARACAS, SEPTIEMBRE DE 2011

INTRODUCCION

Las ecuaciones de Maxwell abrieron camino al desarrollo de áreas como la ingeniería, específicamente la electricidad, la electrónica, las telecomunicaciones, la robótica y el control de procesos. Tal ha sido el auge alcanzado que estamos en una era en donde podemos realizar proyectos orientados al control de cualquier cantidad de equipos a distancia. Este salto en el mundo ingenieril es la semilla del proyecto que se expone en el presente informe, el cual trata sobre el control de 4 cargas vía remota aplicando la comunicación serial. Ya que hoy en día contamos con las bondades de la red GSM, podemos tomar control de cualquier equipo (realizando las adaptaciones necesarias) con solo emitir un mensaje de texto. Esto contempla un avance importante ya que el simple hecho de poder activar un motor a distancia, un artefacto electrodoméstico o simplemente las luminarias de una casa es un paso adelante para lograr ver más allá de nuestras barreras y poder pensar así en un mundo cada vez más automatizado y consumiendo la menor cantidad de recursos. En el presente informe se hablan de varios temas como lo es la red GSM, la mensajería de texto, MODEM GSM, microcontrolador PIC 16F877, el relé, brevemente se habla del contacto, el compilador CCS C, protocolo RS232, etc. A su vez, se expone una explicación concisa acerca de cómo se desarrollo el presente proyecto.

1

INDICE GENERAL

pp.

Portada Índice General

i ii

INTRODUCCIÓN

1

CAPÍTULO I. GSM Estación Móvil Subsistema de radio Base (BSS) Subsistema de Conmutación de Red (NSS) Subsistema de Gestión de Red (NMS) CAPÍTULO II. SEND MESSAGE SHORT (SMS) Short Messaging Entity (SME) Short Message Service Center (SMSC) SMS-Gateway/Interworking MSC (SMS-GMSC) Funcionamiento de la transmisión en GSM CAPITULO III. MODULADOR/DEMODULADOR (MODEM) CAPITULO IV. MICROCONTROLADOR PIC 16F877 CAPITULO V. COMUNICACIÓN SERIAL RS232 Protocolo de Comunicación RS-232 Control de flujo hardware
ii

2 4 4 7 12 15 17 17 18 21 23 27 30 31 33

Control de flujo software CAPITULO VI. EL RELÉ Partes del Relé Clasificación general de los relés Funcionamiento Tipos de relés según su funcionamiento Fabricación Características

33 34 35 35 35 36 37 37

CAPITULO VII. EL CONTACTOR Partes del contactor Clasificación de los contactores Funcionamiento Criterios para la selección de un contactor Ventajas del uso de contactores CAPITULO VIII. COMPILADOR CCS C CAPITULO IX. DESARROLLO DEL MODULO DE CONTROL REMOTO PARA LA ACTIVACIÓN DE CARGAS VÍA SMS POR MEDIO DEL MICROCONTROLADOR PIC 16F877 CONCLUSIONES. BIBLIOGRAFIAS. ANEXOS. ANEXO A ANEXO B Código fuente del programa grabado en el PIC en lenguaje C. Esquemático del circuito

39 40 45 46 47 47 48 50

58 59 60

iii

CAPITULO I

SISTEMA GLOBAL PARA COMUNICACIONES MÓVILES (GSM)

La infraestructura de Digitel es la red GSM (Sistema Global para Comunicaciones Móviles), la cual es una tecnología inalámbrica de tercera generación (3G) que presta servicios de voz de alta calidad. Es un sistema celular de estándar mundial que opera en bandas de frecuencia de 900 MHz, 1800 MHz y recientemente 1900 MHz, para USA. Está compuesto por cuatro (03) subsistemas básicos y tres (03) interfaces “abiertas”.

Air

A
M SC
VL R

M SC

VL R

HL R

O & M

Figura 1. Red GSM

2

Los sistemas celulares se basan en la división del área de cobertura de un operador en lo que se denomina células (cells), estas células se caracterizan por su tamaño que viene determinado por la potencia del transmisor pero de un modo muy particular ya que lo que se persigue siempre en los sistemas celulares es que la potencia de transmisión sea lo más baja posible a fin de poder reutilizar el mayor número de frecuencias. El porque de tener el mayor número de frecuencias disponibles tiene que ver con que a mayor número de frecuencias libres mayor es el número de usuarios que pueden hacer uso del sistema ya que cada uno puede usar una frecuencia sin interferir en la de otro usuario (realmente no se utiliza una frecuencia por usuario pero la idea general es esta). De este modo todas las bandas de frecuencias se distribuyen sobre las células a lo largo del área de cobertura del operador de manera que todos los canales de radio se encuentran disponibles para ser usados en cada grupo de células (clusters) lo cual no sucedería si se produjese una emisión de la señal con una potencia superior ya que se podría interferir en otras células adyacentes interfiriendo en las frecuencias disponibles. La distancia que debe existir entre dos células debe ser los suficientemente grande como para que no se produzca interferencia entre ellas, hay que decir también que hay determinados canales que se reservan para labores de señalización y control de toda la red. Todo lo explicado anteriormente se resume en dos condiciones que las células deben de verificar para que este sistema funcione: (a)- Por un lado el nivel de potencia del transmisor debe de ser el mínimo para reducir las interferencias con los transmisores de las células vecinas. (b)- Las células vecinas no pueden compartir los mismos canales, el motivo es similar al anterior, reducir el nivel de interferencias Las células se unen las unas a las otras mediante cable (lo más normal) o bien mediante radio enlaces así como con la red telefónica fija. Una vez que tenemos claro el concepto de célula el siguiente nivel de organización que existe en GSM es el de cluster, que no es más que un conjunto de células agrupadas entre

3

si, estos clusters suelen agrupar conjuntos de 4, 7, 12 o 21 células distintas que se distribuyen por todo el área de cobertura del operador.

Figura 2. Clúster de 7 células. Estación Móvil: Es el Terminal portátil de transferencia de voz y datos. Se comunica con la red móvil a través del interfaz aire (Um). Esta interfaz es bidireccional, ya que posee un enlace ascendente (MS-BTS) y otro descendente (BTS-MS). Cada llamada necesita de una frecuencia para subir (Uplink) y de otra para recibir (Downlink). La estación móvil o terminal, contiene la tarjeta SIM, la cual contiene las características del abonado y se puede utilizar en cualquier teléfono compatible. En ella se almacena información como es el caso del código PIN, código PUK, IMSI (Identificación internacional del abonado móvil), identificación temporal del abonado móvil y una serie de algoritmos y claves para la autentificación. Subsistema de radio Base (BSS): Cumple las siguientes funciones: (a) Se encarga de gestionar y controlar los recursos de radio de la red de acceso.

4

(b) Establecer la conexión entre el MS y el NSS. (c) Gestión de movilidad del MS. (d) Mantener el contacto con el MS. (e) Encriptamiento de la interfaz de aire. (f) Procesamiento y codificación de la voz. (g) Señalización. (h) Recolección de datos estadísticos. La BSS se compone así en tres partes, la BTS (Base Transceiver Station), la BSC (Base Station Controller) y la TRAU (Transcoder and Rate Adaptar Unit). Todos estos

componentes se comunican mediante una interfaz Abis y Asub, lo que permite la ínter conectividad de componentes de diferentes fabricantes. En la siguiente figura se muestra como se encuentra constituida una NSS:

A ir

Abis

A

BT S

B SC

TC

Figura 3. Subsistema de Radio Base (BSS)

5

La BTS tiene como función controlar la conexión radio entre el teléfono móvil y la red y es también conocida por célula, ya que cubre una determinada área geográfica. Cada BSS puede tener una o más BTS. Las BTS albergan el equipo de transmisión / recepción (los TRX o transceivers) y gestionan los protocolos de radio con el terminal móvil. En áreas urbanas existen más BTS que en zonas rurales y en algunos casos con características físicas o geográficas particulares. Cada estación utiliza técnicas digitales para permitir que varios usuarios se conecten a la red, así como para permitir que hagan y reciban llamadas simultáneamente. Esta gestión se denomina de multiplexaje. La filosofía de los sistemas celulares es utilizar estaciones base de pequeña o mediana potencia y dar servicio a un área más limitada. Esta zona de cobertura a la que dará servicio una estación base se conoce como celda. En cada celda se puede utilizar un subconjunto de frecuencias, dentro de la banda total que el operador tenga asignada. En GSM se distinguen cuatro tipos diferentes de células: Macro células (Macrocells): Son células de gran tamaño utilizadas en áreas de terreno muy grandes y donde la distancia entre áreas pobladas es muy distantes entre si. Microcelulas (Microcells): Se utilizan por el contrario en áreas donde no hay una gran densidad de población, el objetivo al hacer esto es el que comentábamos antes cuando describíamos que era una célula, a mayor número de células mayor número de canales disponibles que pueden ser utilizados por más usuarios simultáneamente. Células selectivas (Selectived Cells): En muchas ocasiones no interesa que una célula tenga una cobertura de 360 grados sino que interesa que tenga un alcance y un radio de acción determinado, en este caso es donde aparecen las células selectivas, el caso más típico de células de este tipo son aquellas que se

6

disponen en las entradas de los túneles en los cuales no tiene sentido que la célula tenga un radio de acción total (360 grados) sino un radio de acción que vaya a lo largo del túnel. Células Sombrilla (Umbrella Cells): Este tipo de células se utilizan en aquellos casos en los que tenemos un elevado número de células de tamaño pequeño y continuamente se están produciendo cambios (handovers) del terminal de una célula a otra (más adelante veremos que es el handover más detalladamente) para evitar que suceda esto lo que hacemos es agrupar conjuntos de microcelulas de modo que aumentamos la potencia de la nueva célula formada y podemos reducir el número de handovers que se producen. La BSC (Controlador de Estación Base) administra los recursos de radio de una o más BTS. Entre sus funciones se incluyen el handover (que ocurre cuando el usuario se mueve de una célula para otra, permitiendo que la conexión se mantenga), el establecimiento de los canales de radio utilizados, utiliza las interfaces Abis hacia las BTS’s y Asub hacia los TC, almacenamiento de Base de datos del Sistema de BSS y cambios de frecuencias. Finalmente, establece la ligación entre el móvil y el Mobile Service Switching Center (MSC), el corazón del sistema GSM Para cada canal de tráfico el TC (Transcoder and Rate Adapter Unit) adapta la tasa de transmisión para voz en la interfaz de radio a la tasa de transmisión estándar de 64 Kbps usada en el conmutador principal o MSC. Subsistema de Conmutación de Red (NSS): Las funciones que lleva a cabo el NSS son el control de llamadas y del BSS, interconexión con otras redes, manejo de datos y de servicios del suscriptor, manejo de la movilidad y seguridad, señalización y recolección de datos estadísticos. En otras palabras, este sistema se encarga de administrar las comunicaciones que se realizan entre los diferentes usuarios de la red; para poder hacer este trabajo la NSS se divide en los siguientes sistemas, cada uno con una misión dentro de la red:

7

A ir

A
MSC MSC
VL R

VL R

HLR

O & M

Figura 4. Subsistema de Conmutación de Red

El Home Location Register (HLR) contiene toda la información administrativa sobre el cliente del servicio y la localización actual del terminal. Es a través del HLR que la red verifica si un móvil que se intenta conectar posee un contrato de servicio válido. Si la respuesta es afirmativa el MSC envía un mensaje de vuelta al terminal informándole que está autorizado a utilizar la red. El nombre de la operadora aparece entonces en pantalla, informando que se puede efectuar y recibir llamadas. Cuando el MSC recibe una llamada destinada a un móvil él va al HLR a verificar la localización. Paralelamente, el terminal de tiempos a tiempos envía un mensaje para la red, para informarla del sitio donde se encuentra (este proceso es denominado polling).

8

HLR

Figura 5. Home Local Register (HLR)

El Visitor Location Register (VLR) es una Base de Datos temporal que contiene la ubicación, en cada momento, de los suscriptores que se encuentran dentro del área de cobertura de dicho VLR/MSC. El VLR es utilizado para controlar el tipo de conexiones que un terminal puede hacer. Por ejemplo, si un usuario posee restricciones en las llamadas internacionales el VLR impide que estas sean hechas, bloqueándolas y enviando un mensaje de vuelta al teléfono móvil informando al usuario. El Equipment Identity Register (EIR) y el Authentication Center (AC) son utilizados ambos para garantizar la seguridad del sistema. El EIR posee una lista de IMEI de terminales que han sido declarados como robados o que no son compatibles con la red GSM. Si el teléfono móvil está en esa lista negra, el EIR no permite que se conecte a la red. Dentro del AC hay una copia del código de seguridad del SIM. Cuando ocurre la

autorización el AC genera un número aleatorio que es enviado para el móvil. Los dos aparatos, de seguida, utilizan ese número, junto al código del SIM y un algoritmo de encriptación denominado A3, para crear otro número que es enviado de nuevo para el AC. Si el número enviado por el terminal es igual al calculado por el AC, el usuario es autorizado a usar la red. Una vez vista la arquitectura de red que tenemos en GSM vamos a ver dos aspectos que son fundamentales dentro del funcionamiento normal de una red GSM, como lo son el handover y el roadming.

9

El concepto de handover, como ya se explico, consiste en la transición que se produce cuando pasamos del rango de acción de una célula al rango de acción de otra. Esto se produce sobre todo cuando viajamos. El handover, por tanto, es el responsable de mantener el servicio de manera constante y de que las transiciones entre una célula y otra sean lo suficientemente pequeñas como para pasar desapercibidas por los usuarios. Hay distintos tipos de handover en función de las células que intervengan en el proceso. Según esto podemos hablar de cuatro tipos diferentes de handover, que pueden producirse: (a) Handover de canales en la misma célula. (b) Handover de células controladas por el mismo BSC. (c) Handover de células que pertenecen al mismo MSC, pero controladas por diferentes BSC. (d) Handover de células de diferentes MSC. En las siguientes figuras se ilustran estos cuatro tipos de handover:

A ir
B SC BT S TC

A

Figura 6. Handover de canales en la misma célula.

10

Air
BTS BSC TC

A

BTS

Old Cell / BTS

New Cell / BTS

Figura 7. Handover de canales en la misma célula.
New Cell / BTS

Air

A

BTS

BSC

TC

MSC
BTS BSC TC

VLR

Old Cell / BTS

Figura 8. Handover de células que pertenecen al mismo MSC, pero controladas por diferentes BSC.

11

New Cell / BTS

Air

A

BTS

BSC

TC

MSC

VLR

BTS

BSC

TC

MSC

VLR

Old Cell / BTS

Figura 9. Handover de células de diferentes MSC. El roadming se produce siempre que nos estamos validando dentro de la red GSM y el terminal no es capaz de encontrar la red en la cual somos clientes; esto pasa fundamentalmente cuando salimos de viaje al extranjero, donde existe la red, pero no es la de nuestro operador; en este caso, el roadming consiste en la utilización de la red que se encuentre disponible y con la que nuestro operador tiene un acuerdo de colaboración. De este modo, podemos seguir conectados con nuestro móvil a la red independientemente de que estemos fuera del alcance de nuestro operador habitual. Existe un problema con el roadming que tenemos que tener en cuenta y es que cuando nuestro terminal se encuentra en roadming sucede que en el caso de que alguien nos llame, el coste de la llamada se divide de manera que la persona que nos llama paga la parte nacional de la llamada y nosotros corremos con los gastos de la parte internacional; esto es debido a que en el roadming nuestro operador no sabe de antemano donde nos encontramos, ya que estamos en una red que no le pertenece y por tanto no puede establecer la tarifa que debe aplicar. NMS: Este subsistema está conectado tanto al NSS como al BSS, específicamente a la BSC, con el propósito de controlar y monitorear toda la red. Este subsistema también se encarga de supervisar el tráfico de la BSS al momento de una sobrecarga del mismo. El OSS está
12

al tanto de cualquier eventualidad ocurrida en la red en forma tal que está en capacidad de controlar situaciones de mal funcionamiento de la misma en forma remota. Aquí se vigila el rendimiento de las distintas interfaces entre los distintos elementos de la red, entre los cuales destacan: Interfaz Abis. Es un enlace PCM entre la BSC y la BTSE. Los timeslots del PCM pueden usarse como canales de señalización (16 o 64 kbit/s) ó canales de tráfico (16 kbit/s). Las funciones implementadas en esta interfaz son: (a) Sub-multiplexación de los canales de tráfico (4x16kbit/s canales en fullrate (Velocidad de transmisión completa) a un canal de 64kbit/s y 8x8kbit/s canales en halfrate (Velocidad de transmisión media) a un canal de 64kbit/s) (b) Tráfico de voz/datos (c) Señalización entre la BSC y la BTS (d) Transporte de la información de sincronismo de la BTS Interfaz Asub. Es un enlace PCM entre la BSC y la TRAU, en el cual se encuentran multiplexados cuatro canales de 16Kbit/s en un timeslot de 64kbit/s. Interfaz A. Es la interfaz entre la TRAU y el MSC, y está formada por máximo cuatro enlaces PCM. Estos transportan canales de tráfico y canales de señalización por Canal Común (CCSS7) en timeslots de 64kbit/s. Esta interfaz se especifica en las Recomendaciones ETSI GSM 08.01 a la 08.20. Entre las funciones que implementan las aplicaciones del BSS sobre la interfaz A son: (a) Tráfico de voz / datos. (b) Gestión del BSS (un canal asignado para tal fin). (c) Control de la llamada. (d) Gestión de la movilidad.
13

(e) Servicios agregados. (f) Servicio de mensajes cortos. (g) Señalización multifrecuencia.

Figura 10. Interfaces UM, ABIS, ASUB Y A DEL BSS

14

CAPITULO II

SEND MESSAGE SHORT (SMS):

Es un sistema para enviar y recibir mensajes de texto, para y desde teléfonos móviles. El texto puede estar compuesto de palabras, números o una combinación alfanumérica de hasta 160 caracteres cuando se usa el alfabeto latino, y 70 caracteres si se usa otro alfabeto como el árabe o el chino. Hay varias características únicas del servicio de mensajes cortos (SMS), según lo definido dentro del estándar digital de telefonía móvil GSM: (a) Los mensajes cortos no se envían directamente del remitente al receptor, sino que se envían a través de un centro de SMS. Cada red de telefonía móvil que utiliza SMS tiene uno o más centros de mensajería para manejar los mensajes cortos. (b) El servicio de mensajes cortos se caracteriza por la confirmación de mensaje de salida. Esto significa que el usuario que envía el mensaje, recibe posteriormente otro mensaje notificándole si su mensaje ha sido enviado o no. (c) Los mensajes cortos se pueden enviar y recibir simultáneamente a la voz, datos y llamadas del fax. Esto es posible porque mientras que la voz, los datos y las llamadas del fax asumen el control de un canal de radio dedicado durante la llamada, los mensajes cortos viajan sobre un canal dedicado a señalización independiente de los de tráfico.

15

(d) Hay formas de enviar múltiples mensajes cortos. La concatenación SMS (que encadena varios mensajes cortos juntos) y la compresión de SMS (que consigue más de 160 caracteres de información dentro de un solo mensaje corto) han sido definidas e incorporadas en los estándares del GSM SMS. (e) Para utilizar el servicio de mensajes cortos, los usuarios necesitan la suscripción y el hardware específico: (e.1) Una suscripción a una red de telefonía móvil que soporte SMS. (e.2) Un teléfono móvil que soporte SMS (e.3) Conocimiento de cómo enviar o leer mensajes cortos usando su terminal móvil. (e.4) Un destino para enviar el mensaje, o dónde recibir el mensaje. Éste es generalmente otro teléfono móvil pero puede ser una máquina de fax, un PC o un buzón de e-mail. A continuación, se muestra la estructura básica de la red SMS:

Figura 11. Estructura básica de la red SMS.

16

SME (Short Messaging Entity): Son todos los elementos capaces de recibir y enviar mensajes cortos. Las entidades de mensajes cortos, pueden estar localizadas en una red de comunicaciones fija, una estación móvil, u otro centro de servicio. SMSC (Shor Message Service Center): El SMSC, es el responsable de la transmisión y el almacenamiento de un mensaje corto, entre el SME y una estación móvil. SMS-Gateway/Interworking MSC (SMS-GMSC): Es una central de conmutación móvil (MSC) capaz de recibir un mensaje corto de un SMSC, interrogando al HLR (Home Location Register) sobre la información de encaminamiento y enviando el mensaje corto al MSC visitado, de la estación móvil receptora. El "SMS-Gateway/Interworking MSC" es un MSC capaz de recibir un mensaje corto de la red móvil y enviarlo hacia el SMSC correspondiente. El SMS Gateway Mobile Switching Center / SMS Interworking Mobile Switching Center (SMS-GMSC/SMSIWMSC), se encuentra normalmente en el mismo SMSC. Los pasos para el envío de mensajes de texto son: (a) El mensaje corto es enviado desde el SME al SMSC. (b) Después de completar su proceso interno, el SMSC interroga al HLR y recibe del mismo, información de enrutamiento para el subscriptor móvil. (c) El SMSC envía el mensaje corto al MSC usando el mecanismo forward Short Message de GSM. (d) El MSC interroga al VLR, para extraerle información del usuario. Esta operación puede incluir un procedimiento de autentificación. (e) El MSC transfiere el mensaje corto a la estación móvil destinataria (MS).

17

(f) El MSC devuelve al SMSC el resultado de la operación que se está llevando a cabo, es decir, de la transferencia del mensaje corto. (g) Si lo solicita el SME, el SMSC envía un reporte indicando que el mensaje corto fue entregado al destinatario.

SME

Figura 12. Pasos para el envío de mensajes de texto

Los pasos para la recepción de mensajes de texto son: (a) La estación móvil (MS), después de ser autentificada por el VLR, envía el mensaje corto al MSC. (b) El MSC interroga al VLR para verificar que la transferencia del mensaje cumpla con los servicios suplementarios o las restricciones impuestas. (c) El MSC envía el mensaje corto al SMSC, usando el mecanismo Forward Short Message. (d) El SMSC entrega el mensaje corto al SME.

18

(e) El SMSC confirma la entrega al MSC, utilizando la operación Forward Short Message. (f) El MSC le devuelve a la estación móvil (MS) el resultado de la operación del envío (Mobile Originated Short Message). Las principales aplicaciones basadas en SMS son: (a) Simples mensajes de persona a persona. (b) Notificaciones del buzón de voz y fax. Cuando un nuevo mensaje nos llega a nuestro buzón, una alerta en forma de SMS, nos informa de este hecho. (c) Alertas de e-mail - Uniendo el correo electrónico con SMS, los usuarios pueden ser notificados cada vez que reciben un e-mail. (d) Descarga de Melodías. (e) Chat basado en SMS, se trata de una aplicación que está emergiendo. (f) Servicios de Información - Solicitas a una fuente pública o privada que te envíe periódicamente información sobre algún tema en concreto a tu terminal móvil.

Figura 13. Pasos para la recepción de mensajes de texto

19

Para proveer un servicio de mensaje corto punto a punto, es necesario realizar las siguientes operaciones básicas MAP: (a) Solicitud de Información de Ruta: Antes de entregar un mensaje corto, el SMSC debe conocer la ruta de ubicación del MSC que sirve a la estación móvil destino, para esto el SMSC interroga al HLR. (b) Entrega de Mensaje Corto Punto a Punto: Es un mecanismo que permite al SMSC transferir un mensaje corto al MSC que sirve al área donde se encuentra la estación móvil, el MSC entrega el mensaje corto a la estación móvil, sin importar donde se haya registrado y aunque se encuentre ocupada. El mecanismo de entrega del mensaje corto provee una respuesta de confirmación de entrega o falla en el envío. (c) Indicación de Espera de Mensaje Corto: Esta operación está activa cuando falla el intento de enviar un mensaje corto por un SMSC, debido a que la estación móvil no está activa en la red. Cuando el móvil se vuelve activo, el HLR se lo indica al SMSC. (d) Centro de Servicios de Alerta: En esta operación el HLR indica al SMSC que el mensaje corto previamente enviado fue fallido. Elementos de Servicio: SMS contempla algunos elementos de servicio, relacionados con la recepción y aceptación de mensajes cortos: (a) Período de Validez: Indica el tiempo que el SMSC guardará el mensaje corto antes de entregarlo al recipiente seleccionado.

20

(b) Prioridad: Es el elemento de información suministrado por la entidad de mensajes cortos (SME) para indicar la prioridad del mensaje. (c) Tiempo de Marca (“Time Stamp”): Es una información suministrada por el SMS, que indica el tiempo en que acepta el mensaje e indica al móvil si tiene más mensajes. Funcionamiento de la transmisión en GSM: El sistema GSM 900 utiliza dos conjuntos de frecuencias en la banda de los 900 MHz, el primer en los 890-915MHz, utilizado para las transmisiones del terminal y el segundo en los 935-960MHZ, para las transmisiones de la red. El método utilizado por el GSM para administrar las frecuencias es una combinación de dos tecnologías: el TDMA (Time Division Multiple Access) y el FDMA (Frequency Division Multiple Access). El FDMA divide los 25 MHz disponibles de frecuencia en 124 canales con una anchura de 200 kHz y una capacidad de transmisión de datos de alrededor 270 Kbps. Una o más de estas frecuencias es atribuida a cada estación base y dividida de nuevo en cuestión de tiempo, utilizando el TDMA, en ocho espacios de tiempo (timeslots). El terminal utiliza un timeslot para recepción y otro para emisión. Ellos están separados temporalmente para que el móvil no reciba y transmita al mismo tiempo. Esta división de tiempo también es denominada full rate. Las redes también pueden dividir las frecuencias en 16 espacios, proceso designado halfrate, pero la calidad de transmisión es inferior. La voz es codificada de una forma compleja, para que los errores en la transmisión puedan ser detectados y corregidos. Luego es enviada en los timeslots, cada uno con una duración de 577 milisegundos y una capacidad de 116 bits codificados. Cada terminal posee una agilidad de frecuencia, pudiendo desplazarse entre los timeslots utilizados para el envío, recepción y control dentro de un frame completo. Asimismo, un teléfono móvil

21

verifica otros canales para determinar si la señal es más fuerte y cambiar la transmisión para los mismos, si la respuesta es afirmativa.

22

CAPITULO III

MODULADOR/DEMODULADOR (MODEM)

MODEM es la contracción de Modulador y Demodulador, que representan las operaciones de transmisión y recepción en un sistema de transmisión punto a punto. Un MODEM es un dispositivo que convierte las señales digitales en señales analógicas para poder transmitirlas a través de una red telefónica. No obstante, en el proceso de recepción, se realiza el proceso inverso convirtiendo las señales analógicas en señales digitales. Cuando un MODEM llama a otro, el protocolo negocian la velocidad de línea telefónica, el modo de compresión de datos y el de corrección de errores; y establecen comunicación a esa velocidad y demás parámetros configurados. La mayoría de los MODEMs se controlan y responden a caracteres enviados a través de un puerto serial. El lenguaje de comandos para MODEM más extendido es el de los comandos Hayes conocido como Comandos AT (del inglés Attention). Los comandos AT se envían al Módem para realizar una función concreta. Todos los comandos de este protocolo comienzan por AT y acaban por CR (del inglés Carry Return), aunque este último carácter es configurable.

23

Existen dos tipos principales de comandos: (a) Comandos que ejecutan acciones inmediatas. Ejemplo: ATD (marcación), ATA

(contestación) o ATH (desconexión). (b) Comandos que cambian algún parámetro del MODEM. Ejemplo: ATE0 (cancelación de eco de data). Este MODEM es de tamaño reducido, su peso es de aproximadamente 130 gramos, y su alimentación de + 5Vcc a 32Vcc. Las ventajas que brinda este MODEM se describen a continuación: (a) Con el módem WM0D2 se pueden realizar llamadas así como recibir de la manera (b) Con el módem WM0D2 su terminal o PC estará capacitado para comunicarse en datos utilizando un software de comunicaciones tipo hyperterminal, siendo posible establecer una comunicación transparente. (c) El módem WM0D2 permite el envío y recepción de faxes, utilizando el puerto serie RS 232. (d) EL módem WM0D2 ofrece las prestaciones más avanzadas para comunicarse vía Telefonía Móvil GSM. Además de ser el módem más pequeño del mercado, entre sus prestaciones están las posibilidades del envío de mensajes cortos SMS: (d.1) Mensajes de 160 caracteres de texto (Standard GSM) (d.2) Confirmación de envío y recepción. (d.3) Confección rápida de mensajes. (d.4) Velocidad de envío instantánea. (d.5) Posibilidad de envío de paquetes de mensajes.

24

A pesar de ser bastante estándar, los comandos difieren en función del tipo del MODEM. En la siguiente figura se muestra el MODEM GSM de la marca Wavecom Dual Band (900/1800 MHz).

Figura 14. Módem GSM WMOD2 G900/1800 banda doble puerto serie

Conector de SDM

Conector de Alimentación

Conector DB-15

Figura 15. Descripción externa 1 del MODEM Wavecom.

25

Botón para extraer la SIM CARD

Bandeja para inserción de la SIM CARD

Led Indicador del Status del MODEM

Figura 16. Descripción externa 2 del MODEM Wavecom. Los MODEM’s Dual Band permiten la utilización de las dos redes: GSM 900 y GSM 1800. La conmutación entre las dos redes se hace automáticamente cuando una de las redes está saturada o no tiene cobertura. Los Módems Dual Band son ventajosos en relación con los Módems GSM normales, ya que la red GSM 900 está cada vez más saturada.

26

CAPITULO IV

MICROCONTROLADOR PIC 16F877

El microcontrolador PIC 16F877 de la marca MICROCHIP es un circuito integrado de 40 terminales que posee las siguientes características: (a) Frecuencia de operación máxima 20MHz. 200ns ciclos por instrucción (b) 8 niveles de apilamiento (Hardware Stack) (c) Direccionamiento directo e indirecto de la memoria (d) Reinicio por encendido (Power On-Reset) (e) Perro Guardián (Watch Dog Timer) (f) 3 Timers con prescaladores: 2 timers de 8bits y 1 timer de 16bits (g) Módulo PWM con resolución de 10bits (h) 5 puertos paralelos (i) Puerto serial asincrónico (USART) (j) Puerto serial sincrónico (MSSP I2C/SPI)

(k) Convertidor Analógico Digital con resolución de 10bit (l) Voltaje de operación 2,0V a 5,5V

27

(m) Corriente máxima de salida por los puertos 25mA (n) 256 bytes de EEPROM (o) 368 bytes de RAM (p) Bajo consumo de energía. Las conexiones básicas del microcontrolador se muestran en la Figura 17:

Figura 17. Microcontrolador 16F877

28

El terminal 1 es el que representa el Reset por hardware del microcontrolador. El circuito asociado a él lo conforma básicamente un pulsador que al ser presionado reinicializa el dispositivo. Los terminales 11,12, 31 y 32 corresponden a terminales de alimentación y tierra del dispositivo, los terminales 13 y 14 son empleados para conectar un sistema oscilador que generará los pulsos de reloj necesarios para la operación regular del microcontrolador y el resto de los terminales actúan como entradas o salidas digitales. Como se puede apreciar, el PIC 16F877 consta únicamente de un puerto serial el cual está acoplado para interactuar con el MODEM externo o PC.

29

CAPITULO V

COMUNICACIÓN SERIAL RS232

La principal ventaja de la comunicación serial es el uso de menos líneas cuando lo comparamos con la comunicación paralela. Efectivamente un enlace serial puede ser realizado con apenas tres líneas, una para transmisión, una para recepción y una tercera común a las dos anteriores o retorno. Las cadenas seriales de bits generadas por los puertos serie usan una forma muy simple de codificación. Un bit se transmite durante cada periodo baud, con un bit "1" representado por un voltaje alto TTL y un "0" por un voltaje bajo TTL. Así la velocidad en baudios (baud rate, 1/(periodo baud)) de un puerto serie es igual al número de bits por segundo que se transmiten o reciben. Para enviar información codificada de esta manera, el transmisor y receptor registran el tiempo, el cual define el periodo baud, deben estar a la misma frecuencia y estar sincronizados. Los bits se transmiten como grupos separados, con una longitud típia de 8 bits, llamados caracteres. El nombre carácter se usa porque cada grupo de bits representan una letra del alfabeto cuando el texto esta codificado en ASCII. Cada carácter se envía en una trama (frame) consistiendo de un bit "0" llamado un bit de inicio, seguido por el carácter mismo, seguido opcionalmente por un bit de paridad, y después un bit "1" llamado bit de paro. La lógica del bit de inicio le dice al receptor que está empezando una trama, y la lógica del bit alto de paro indica el final de la trama.

30

La comunicación serial puede ser síncrona o asíncrona, siendo esta ultima la que se empleara para el desarrollo del modulo de consulta del SG vía SMS. La comunicación asíncrona define una serie de reglas a fin de estandarizar la técnica de comunicación, en esta caso se establece un bit de comienzo activo a 0 y un bit de parada lógico activo 1. También se contempla la velocidad de transmisión de datos, la cual puede ser de:75, 110, 150, 300, 600, 1200,2400, 4800, 9600 y 19200 bit/seg. Diferentes parámetros deben ser especificados cuando configuramos un puerto serial, donde los más comunes son: (a) Bits por carácter, usualmente de 8 bits por carácter. (b) Número de Stop bit, usualmente 1 o 2. (c) Bit de paridad, usado para detectar un error en un único bit , puede ser especificado como par, impar o sin paridad. (d) Velocidad de Transmisión. Protocolo de Comunicación RS-232: Es un protocolo desarrollado para manejar la interconexión entre Terminales y MODEMS. La característica más resaltante de este estándar, es que los niveles lógicos no son compatibles con TTL. La lógica TTL es usada en la mayoría de los microprocesadores y microcontroladores, por lo que es necesario la conversión de señales RS-232 a TTL y viceversa para su interconexión con dispositivo que emplee un puerto serial. Un receptor RS-232 interpreta un voltaje más negativo que -3V como un 1 lógico, y un voltaje más positivo que +3V como un 0 lógico. Un transmisor RS-232 debe tener como salida un voltaje mas negativo que-5V para un 1 lógico y un voltaje más positivo que +5V para un cero lógico. Los valores típicos RS-232 para un 0 ó 1 lógico esta entre +/- 10V a +/- 12V. Las características eléctricas del estándar RS-232 permite mayores distancias para los cables de conexión y una mayor inmunidad a ruidos.
31

Como ya se menciono con anterioridad, el estándar RS-232 fue desarrollado originalmente para la interconexión entre un MODEM, denominado "Data Communication Equipment" o DCE, y un Terminal denominado "Data Terminal Equipment" o DTE. En la interconexión entre un dispositivo y un microcontrolador, se debe considerar al primero como DTE y al segundo como DCE. También debe tenerse en cuenta, que las señales RTS, CTS, DSR, CD, DTR y RI son activas bajo, es decir cero. A continuación se describen estas señales: (a) DTR (Data Terminal Ready) El DTE indica al DCE que esta listo para recibir datos. (b) DSR (Data Signal Receiber) Afirmada por el DCE en respuesta a una señal DTE. (c) RTS (Request to Send) Enviado por el DTE cuando este desea enviar información sobre el enlace. DCD (Data Carrier Detect) Enviado por el DCE cuando este recibe una portadora del enlace de comunicación. (d) CTS (Clear to Send) Afirmado por el DCE después de recibir la señal RTS, indica que el DTE puede transmitir. (e) TX (Transmitted Data) Línea de datos desde DTE al DCE. (f) RX (Received Data) Línea de datos desde DCE al DTE. La secuencia para el establecimiento de la comunicación es la siguiente: (a) DTR (b) DSR (c) RTS (d) DCD (e) CTS 0 0 0 0 0 DTE encendido y funcionando. DCE encendido y funcionando. DTE listo para comenzar a transmitir. DCE Detectó portadora (tono). DCE listo para comenzar a transmitir.

32

El control de flujo es un mecanismo por el cual módem y ordenador gestionan los intercambios de información. Estos mecanismos permiten detener el flujo cuando uno de los elementos no puede procesar más información y reanudar el proceso no mas vuelve a estar disponible. Los métodos más comunes de control de flujo son: Control de flujo hardware: Donde RTS y CTS permiten al PC y al módem parar el flujo de datos que se establece entre ellos de forma temporal. Este sistema es el más seguro y el que soporta una operación adecuada a altas velocidades. Control de flujo software: XON/XOFF: Aquí se utilizan para el control dos caracteres especiales XON y XOFF (en vez de las líneas hardware RTS y CTS) que controlan el flujo. Cuando el PC quiere que el módem pare su envío de datos, envía XOFF. Cuando el PC quiere que el módem le envíe más datos, envía XON. Los mismos caracteres utiliza el módem para controlar los envíos del PC. Este sistema no es adecuado para altas velocidades.

33

CAPITULO VI

EL RELÉ

Es un dispositivo interruptor, generalmente electromagnético, cuyos contactos operan debido a la presión que ejerce sobre ellos la armadura de un electroimán, para controlar las condiciones existentes en otro. Sus usos más comunes son el control remoto, conmutación y protección de aparatos. En general consta de: el elemento operador (la bobina), un elemento móvil (la armadura) y un juego de contactos que funcionan como switch.

Figura 18. Relé eléctrico

34

Partes del relé: a) La bobina: es el arrollado que hace las veces de electroimán. b) La Armadura: mecanismo de metal que sirve como contacto móvil. Esta es atraída magnéticamente por la bobina abriendo y/o cerrando uno o varios contactos de acuerdo a la fabricación de los mismos. c) Contactos: son dispositivos mecánicos que sirven para conectar circuitos adicionales según un diseño funcional. Clasificación general de los relés: a) Auxiliares: son relés repetidores, es decir, les llega una señal y abren y cierran un contacto. b) De protección: A partir de una señal eléctrica protegen un circuito. En funcionamiento debe asegurar la buena utilización del objeto a proteger, pero también desconectar automáticamente cuando se sobrepasa la cantidad admisible de la señal que sensan (temperatura en relés térmicos, corriente en relés de sobre corrientes, etc…). c) Especiales: Se fabrican de acuerdo al uso que se le va a dar. Según esto tenemos: termostatos, contactores, detectores de proximidad, etc. Todos ellos abren o cierran un circuito al recibir la señal propia de cada caso. Por ejemplo: señales de nivel, de presión, de temperatura, etc. Funcionamiento: El funcionamiento depende del tipo de relé y la fuente de suministro. Pero en general, se basan en principios comunes. Los de corriente continua utilizan la fuerza magnética que produce el paso de la corriente a través de la bobina. Así, cuando conectamos una batería a los extremos de una bobina, éste atrae una armadura (relé excitado).

35

El movimiento de la armadura hace cambiar la posición inicial de los contactos del relé, los cuales se utilizan como switch. Es por esto la importancia de dichos contactos, quienes pueden conectarse a un circuito independiente y de esta forma dicho circuito queda controlado por el relé. Los de corriente alterna funcionan por la acción de los campos magnéticos, haciendo desplazar un anillo metálico. Son como motores a escala reducida cuyo rotor acciona los contactos. Los de carga electrónica son relés con base semiconductora, con separación galvánica entre el circuito de mando y el de conmutación. El circuito de mando consta de un elemento de acoplamiento opto-electrónico que proporciona la separación galvánica. En el circuito de conmutación un triac o los tiristores se encargan de conmutar la carga. Tipos de relés según su funcionamiento: a) Relés electromagnéticos: funcionan con la fuerza electromagnética que hace accionar los contactos. b) Relés monoestables: son relés que vuelven a la posición de reposo una vez terminada la corriente de excitación. c) Relés biestables: son relés que permanecen en la última posición una vez desconectada la corriente de excitación. d) Relés neutros: son relés en los que el sentido de la corriente de excitación no afecta la posición de reposo o trabajo. e) Relés monoestables neutros: son relés monoestables que trabajan

independientemente del sentido de la corriente. f) Relés biestables neutros: son relés biestables en los que el tránsito de la posición de reposo a la de trabajo es independiente al sentido de la corriente de la excitación. g) Relés polarizados: son los relés en los que el sentido de la corriente de excitación influye en el tránsito de la posición de reposo a la posición de trabajo. h) Relés monoestables polarizados: son relés monoestables que adoptan la posición de trabajo según sentido de la corriente de excitación.

36

i) Relés biestables polarizados: son relés biestables que adoptan una posición de conmutación a una corriente de excitación determinada y adopta la otra posición a una corriente de sentido contrario. Fabricación: Cada relé se fabrica de acuerdo al trabajo que va a realizar. Según esto se construye: a) Relés sin ningún tipo de protección física. b) Relés protegidos del polvo. c) Relés protegidos del agua. d) Relés miniaturas. e) Relés sellados. f) Relés de vacío. g) Relés de carga electrónica. Características: Representan la identificación técnica de cada relé. Son todos aquellos detalles que diferencian un relé de otro y son características de fabricación. Dentro las características comunes tenemos: a) La tensión nominal: es la tensión de funcionamiento permanente del relé. Se escoge dependiendo del uso que se le dará y la tensión disponible en el sitio donde trabajará el relé. b) La corriente nominal: es la corriente máxima que puede circular por los contactos sin que estos se deterioren o se dañen. Esto dependerá de la potencia del equipo que estará bajo el control del relé. c) El tiempo de funcionamiento: es el tiempo mínimo empleado por el relé desde el instante en que la corriente de la bobina operadora alcanza el valor de calibrado mínimo y el instante en que actúan los contactos. d) Los contactos: en ellos se estipula la potencia al cierre y la apertura. Hay que distinguir entre la sobrecarga con contactos cerrados y la sobre carga al conectar.

37

Cuanto más corta sea la sobrecarga de intensidad, más alta será la sobrecarga soportable.

38

CAPITULO VII

EL CONTACTOR

Definición y generalidades: Podemos definir un contactor como un aparato mecánico de conexión y desconexión eléctrica, accionado por cualquier forma de energía, menos manual, capaz de establecer, soportar e interrumpir corrientes en condiciones normales del circuito, incluso las de sobrecarga. Las energías utilizadas para accionar un contactor pueden ser muy diversas: mecánicas, magnéticas, neumáticas, fluídricas, etc. Los contactores corrientemente utilizados en la industria son accionados mediante la energía magnética proporcionada por una bobina. Un contactor accionado por energía magnética, consta de un núcleo magnético y de una bobina capaz de generar un campo magnético suficientemente grande como para vencer la fuerza de los muelles antagonistas que mantienen separada del núcleo una pieza, también magnética, solidaria al dispositivo encargado de accionar los contactos eléctricos. Así pues, característica importante de un contactor será la tensión a aplicar a la bobina de accionamiento, así como su intensidad ó potencia. Según sea el fabricante, dispondremos de una extensa gama de tensiones de accionamiento, tanto en continua como en alterna siendo las más comúnmente utilizadas, 24, 48, 220, y 380. La intensidad y potencia de la bobina, naturalmente dependen del tamaño del contador.

39

El tamaño de un contactor, depende de la intensidad que es capaz de establecer, soportar e interrumpir, así como del número de contactos de que dispone (normalmente cuatro). El tamaño del contactor también depende de la tensión máxima de trabajo que puede soportar, pero esta suele ser de 660 V. para los contactores de normal utilización en la industria. Referente a la intensidad nominal de un contactor, sobre catálogo y según el fabricante, podremos observar contactores dentro de una extensa gama, generalmente comprendida entre 5 A y varios cientos de amperios. Esto equivale a decir que los contactores son capaces de controlar potencias dentro de un amplio margen; así, por ejemplo, un contactor para 25 A. conectado en una red bifásica de 380 V. es capaz de controlar receptores de hasta 380ð 25=9.500 VA. Y si es trifásica 3ð 220ð 25=16.454 VA. Naturalmente nos referimos a receptores cuya carga sea puramente resistiva (cos ð = 1), ya que de lo contrario, las condiciones de trabajo de los contactos quedan notablemente modificadas. Partes del contactor:

Figura 19. Partes del contactor.

40

Carcaza: La carcaza es el elemento en el cual se fijan todos los componentes conductores del contactor, para lo cual es fabricada en un material no conductor con propiedades como la resistencia al calor, y un alto grado de rigidez. Uno de los más utilizados materiales es la fibra de vidrio pero tiene un inconveniente y es que este material es quebradizo y por lo tanto su manipulación es muy delicada. En caso de quebrarse alguno de los componentes no es recomendable el uso de pegantes. Electroimán: También es denominado circuito electromagnético, y es el elemento motor del contactor. Esta compuesto por una serie de elementos cuya finalidad es transformar la energía eléctrica en un campo magnético muy intenso mediante el cual se produce un movimiento mecánico aprovechando las propiedades electromagnéticas de ciertos materiales. Bobina: Consiste en un arrollamiento de alambre de cobre con unas características muy especiales con un gran número de espiras y de sección muy delgada para producir un campo magnético. El flujo magnético produce un par magnético que vence los pares resistentes de los muelles de manera que la armadura se puede juntar con el núcleo estrechamente. Bobina energizada con CA: Para el caso cuando una bobina se energiza con corriente alterna, se produce una corriente de magnitud muy alta puesto que solo se cuenta con la resistencia del conductor, ya que la reactancia inductiva de la bobina es muy baja debido al gran entrehierro que existe entre la armadura y el núcleo, esta corriente tiene factor de potencia por consiguiente alto, del orden de 0.8 a 0.9 y es llamada corriente de llamada.

41

Esta corriente elevada produce un campo magnético muy grande capaz de vencer el par ejercido por los muelles o resorte que los mantiene separados y de esta manera se cierra el circuito magnético uniéndose la armadura con el núcleo trayendo como consecuencia el aumento de la reactancia inductiva y así la disminución de hasta aproximadamente diez veces la corriente produciéndose entonces una corriente llamada corriente de mantenimiento con un factor de potencia más bajo pero capaz de mantener el circuito magnético cerrado. Para que todo este procedimiento tenga éxito las bobinas deben ser dimensionadas para trabajar con las corrientes bajas de mantenimiento pues si no se acciona el mecanismo de cierre del circuito magnético la corriente de llamada circulará un tiempo más grande del previsto pudiendo así deteriorar la bobina. Bobina energizada con CC: En este caso no se presenta el fenómeno anterior puesto que las corrientes de llamada y de mantenimiento son iguales. La única resistencia presente es la resistencia de la bobina misma por lo cual las características y la construcción de estas bobinas son muy especiales. La bobina puede ser energizada por la fuente de alimentación o por una fuente independiente. El núcleo: Su función es concentrar y aumentar el flujo magnético con el fin de atraer la armadura eficientemente. Está construido de láminas de acero al silicio superpuestas y unidas firmemente unas con otras con el fin de evitar las corrientes parásitas. El pequeño entrehierro entre la armadura y el núcleo se crea con el fin de eliminar los magnetismos remanentes. Cuando circula una corriente alterna por la bobina es de suponerse que cuando la corriente pasa por el valor cero, el núcleo se separa de la armadura puesto que el flujo también es cero pero como esto sucede 120 veces en un segundo (si la frecuencia es de

42

60Hz) por lo cual en realidad no hay una verdadera separación pero esto sin embargo genera vibraciones y un zumbido además del aumento de la corriente de mantenimiento; por esto las bobinas que operan con corriente alterna poseen unos dispositivos llamados espiras de sombra las cuales producen un flujo magnético desfasado con el principal de manera que se obtiene un flujo continuo similar al producido por una corriente continua. Armadura: Es un elemento móvil muy parecido al núcleo pero no posee espiras de sombra, su función es la de cerrar el circuito magnético ya que en estado de reposo se encuentra separada del núcleo. Este espacio de separación se denomina entrehierro o cota de llamada. Tanto el cierre como la apertura del circuito magnético suceden en un espacio de tiempo muy corto (10 milisegundos aproximadamente), todo debido a las características del muelle, por esto se pueden presentar dos situaciones. Cuando el par resistente es mayor que el par electromagnético, no se logra atraer la armadura. Si el par resistente es débil no se lograra la separación rápida de la armadura. Cada una de las acciones de energizar o desenergizar la bobina y por consiguiente la atracción o separación de la armadura, es utilizada para accionar los contactos que obran como interruptores, permitiendo o interrumpiendo el paso de la corriente. Estos contactos están unidos mecánicamente (son solidarios) pero son separados eléctricamente. Contactos: El objeto de estos elementos es permitir o interrumpir el paso de la corriente, son elementos conductores, los cuales se accionan tan pronto se energiza o se desenergiza la bobina por lo que se les denomina contactos instantáneos. Esta función la cumplen tanto en el circuito de potencia como en el circuito de mando.

43

Los contactos están compuestos por tres partes dos de las cuales son fijas y se encuentran ubicadas en la carcaza y una parte móvil que une estas dos y posee un resorte para garantizar el contacto Las partes que entran en contacto deben tener unas características especiales puesto que al ser accionados bajo carga, se presenta un arco eléctrico el cual es proporcional a la corriente que demanda la carga, estos arcos producen sustancias que deterioran los contactos pues traen como consecuencia la corrosión, también las características mecánicas de estos elementos son muy importantes.

Figura 20. Contactos Contactos principales: Son los encargados de permitir o interrumpir el paso de la corriente en el circuito principal, es decir que actúa sobre la corriente que fluye de la fuente hacia la carga. Contactos secundarios: Estos contactos secundarios se encuentran dimensionados para corrientes muy pequeñas porque estos actúan sobre la corriente que alimenta la bobina del contactor o sobre elementos de señalización. Dado que en ocasiones deben trabajar con los PLC estos contactos deben tener una confiabilidad muy alta.

44

Gran parte de la versatilidad de los contactores depende del correcto uso y funcionamiento de los contactos auxiliares. Normalmente los contactos auxiliares son: Instantáneos: Actúan tan pronto se energiza la bobina del contactor. De apertura lenta: La velocidad y el desplazamiento del contacto móvil es igual al de la armadura. De apertura positiva: Los contactos abiertos y cerrados no pueden coincidir cerrados en ningún momento. Sin embargo se encuentran contactores auxiliares con adelanto al cierre o a la apertura y con retraso al cierre o a la apertura. Estos contactos actúan algunos milisegundos antes o después que los contactos instantáneos. Existen dos clases de contactos auxiliares: (a) Contacto normalmente abierto: (NA o NO), llamado también contacto instantáneo de cierre: contacto cuya función es cerrar un circuito, tan pronto se energice la bobina del contactor. En estado de reposo se encuentra abierto. (b) Contacto normalmente cerrado: (NC), llamado también contacto instantáneo de apertura, contacto cuya función es abrir un circuito, tan pronto se energice la bobina del contactor. En estado de reposo se encuentra cerrado. Clasificación de los contactores: Los contactores se pueden clasificar de acuerdo con: (a) Por su construcción (b) Contactores electromecánicos: Son aquellos ya descritos que funcionan de acuerdo a principios eléctricos, mecánicos y magnéticos. (c) Contactores estáticos o de estado sólido: Estos contactores se construyen a base de tiristores. Estos presentan algunos inconvenientes como: (d) Su dimensionamiento debe ser muy superior a lo necesario. (e) La potencia disipada es muy grande (30 veces superior). (f) Son muy sensibles a los parásitos internos y tiene una corriente de fuga importante.

45

(g) Su costo es muy superior al de un contactor electromecánico equivalente. (h) Por el tipo de corriente eléctrica que alimenta la bobina. (i) Contactores para AC. (j) Contactores para DC. (k) Por los contactos que tiene. (l) Contactores principales. (m) Contactores auxiliares. (n) Por la carga que pueden maniobrar (categoría de empleo). Tiene que ver con la corriente que debe maniobrar el contactor bajo carga. Funcionamiento del contactor: Cuando la bobina se energiza genera un campo magnético intenso, de manera que el núcleo atrae a la armadura, con un movimiento muy rápido. Con este movimiento todos los contactos del contactor, principales y auxiliares, cambian inmediatamente y de forma solidaria de estado. Existen dos consideraciones que debemos tener en cuenta en cuanto a las características de los contactores: (a) Poder de cierre: Valor de la corriente independientemente de la tensión, que un contactor puede establecer en forma satisfactoria y sin peligro que sus contactos se suelden. (b) Poder de corte: Valor de la corriente que el contactor puede cortar, sin riesgo de daño de los contactos y de los aislantes de la cámara apaga chispas. La corriente es más débil en cuanto más grande es la tensión. Para que los contactos vuelvan a su posición anterior es necesario desenergizar la bobina. Durante esta desenergización o desconexión de la bobina (carga inductiva) se producen sobre-tensiones de alta frecuencia, que pueden producir interferencias en los aparatos electrónicos. Desde el punto de vista del funcionamiento del contactor las bobinas tienen la mayor importancia y en cuanto a las aplicaciones los contactos tienen la mayor importancia.

46

Criterios para la selección de un contactor: Para elegir el contactor que más se ajusta a nuestras necesidades, se debe tener en cuenta los siguientes criterios: (a) Tipo de corriente, tensión de alimentación de la bobina y la frecuencia. (b) Potencia nominal de la carga. (c) Condiciones de servicio ya sea ligera, normal, dura, extrema. Existen maniobras que modifican la corriente de arranque y de corte. (d) Si es para el circuito de potencia o de mando y el número de contactos auxiliares que necesita. (e) Para trabajos silenciosos o con frecuencias de maniobra muy altas es recomendable el uso de contactores estáticos o de estado sólido. (f) Por la categoría de empleo. Ventajas del uso de los contactores: Los contactores presentan ventajas en cuanto a los siguientes aspectos y por los cuales es recomendable su utilización. (a) Automatización en el arranque y paro de motores. (b) Posibilidad de controlar completamente una máquina, desde barios puntos de maniobra o estaciones. (c) Se pueden maniobrar circuitos sometidos a corrientes muy altas, mediante corrientes muy pequeñas. (d) Seguridad del personal, dado que las maniobras se realizan desde lugares alejados del motor u otro tipo de carga, y las corrientes y tensiones que se manipulan con los aparatos de mando son o pueden ser pequeños. (e) Control y automatización de equipos y máquinas con procesos complejos, mediante la ayuda de los aparatos auxiliares de mando, como interruptores de posición, detectores inductivos, presóstatos, temporizadores, etc.

47

CAPITULO VIII

COMPILADOR CCS C

El compilador CCS C ha sido desarrollado específicamente para PIC MCU, obteniendo la máxima optimización del compilador con estos dispositivos. Dospone de una amplia librería de funciones predefenidas, comandos de procesado y ejemplos. Además, suministra los controladores (drivers) para diversos dispositivos como LCD, convertidores AD, relojes en tiempo real, EEPROM, comunicación serial, comunicación USB, etc. Las características generales de este compilador y más información se pueden encontrar en la dirección http://www.ccsinfo.com. Un compilador convierte el lenguaje de alto nivel a instrucciones en código máquina; un cross – compiler es un compilador que funciona en un procesador (normalmente en un PC) diferente al procesador objeto. El compilador CCS C es un cross – compile. Los programas son editados y compilados a instrucciones máquina en el entorno de trabajo del PC, el código máquina puede ser cargado del PC al sistema PIC mediante el ICD2 (o mediante cualquier otro programador) y puede ser depurado (paso a paso) desde el entorno de trabajo del PC. El CCS C es C estándar y, además de las directivas estándar (#include, etc.), suministra unas directivas especificas para PIC (#device, etc.); además incluye funciones específicas (bit_set(), etc). Se suministra con un editor que permite controlar la sintaxis del programa.

48

Para escribir un programa en C con CCS C se deben tener en cuenta una serie de elementos básicos de su estructura: (a) Directivas de procesado: controlan la conversión del programa a código máquina por parte del compilador. (b) Programas o funciones: conjunto de instrucciones. Puede haber uno o varios; en cualquier caso siempre debe haber uno definido como principal mediante la inclusión de la llamada main(). (c) Instrucciones: indican cómo debe comportar el PIC en todo momento. (d) Comentarios: permiten describir lo que significa cada línea del programa. A continuación se ilustra el entorno de desarrollo del compilador CCS C:

Figura 21. Entorno de desarrollo de CCS C

49

CAPITULO IX

DESARROLLO DEL MODULO DE CONTROL REMOTO PARA LA ACTIVACIÓN DE CARGAS VÍA SMS POR MEDIO DEL MICROCONTROLADOR PIC 16F877

La tecnología de microcontroladores PIC tiene una gran cantidad de funciones y un gran número de dispositivos. Una de las virtudes de estos circuitos integrados es su versatilidad para interactuar con un importante número de equipos lo que facilita el desarrollo de proyectos de varias escalas, es decir, desde simples circuitos de laboratorio con fines académicos como proyectos de gran envergadura con fines innovadores que impulsen el desarrollo tecnológico. En tal sentido, se aprovecho una de las bondades más importantes con las que cuenta estos dispositivos como lo es la comunicación serial bajo el protocolo de comunicación RS232 y la posibilidad de contar con una operadora con una red GSM robusta. El PIC que se eligió es el 16F877 quien cuenta con un puerto serial y 5 puertos lo que permite una gran flexibilidad a la hora de manejar una cantidad mayor de periféricos. Para la realización de este proyecto se requirió de una librería llamada LCD9.c la cual fue adaptada con el fin de controlar una pantalla display de manera de que sea más amigable el desarrollo. En la siguiente figura se muestra el diagrama de conexión del PIC y la pantalla LCD:

50

Figura 22 Diagrama de conexión entre el PIC y la pantalla LCD

A su vez, debido al hecho de que los niveles de tensión que maneja el protocolo RS232 son distintos a los que maneja el PIC por ser de tecnología TTL, es necesario emplear una interfaz de acople entre el MODEM y el microcontrolador 16F7877. Por tal motivo, se eligió el dispositivo MAX232 el cual tiene dicha capacidad. En la siguiente figura se muestra el circuito integrado MAX232:

51

Figura 23 Circuito Integrado MAX232 (Vista Interna) Las conexiones de los puertos seriales del microcontrolador PIC con el Módem a través del driver MAX232 se muestran en la Figura 23.

Figura 24 Conexiones del driver MAX232.

De esta manera, se pueden enviar SMS desde un teléfono celular sin importar la operadora al número de la SIM CARD que se encuentra en el MODEM, y éste a su vez, en-

52

vía la data al PIC vía serial para que éste último la procese. Dependiendo del mensaje que se reciba, el PIC procederá a la activación o desactivación de la carga deseada. El

conexionado del PIC con el MAX232 se muestra en la siguiente figura:

Figura 25 Conexión del PIC con el MAX232

Para el control de las 4 cargas se emplearon 4 relés de 12 voltios DC con el fin de activar un contactor que tiene como fin arrancar una carga determinada una vez que el PIC reciba un SMS de activación. En caso de requerirse, también es posible solicitarle la desactivación de la misma. El conexionado se ilustra en la siguiente imagen:

53

Figura 26 Conexión del PIC con los relés El código del programa que maneja la activación de los relés se muestra a continuación: //**********************************************************************// //------------------------------Rutina de Acción de Control de la Carga ----------------------------// //**********************************************************************// if((Carga=='C')&&(Tipo=='1')&&(Opcion=='1')){ sentido horario lcd_putc("\f"); lcd_putc("Carga 1 Activa"); output_high(PIN_C5); Send_SMS_Activa_Carga1(); } //Activar Motor1, velocidad alta y

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

54

if((Carga=='C')&&(Tipo=='1')&&(Opcion=='2')){ sentido horario lcd_putc("\f"); lcd_putc(" Carga 1");

//Activar Motor1, velocidad alta y //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_C5); Send_SMS_No_Activa_Carga1(); } if((Carga=='C')&&(Tipo=='2')&&(Opcion=='1')){ y sentido horario lcd_putc("\f"); lcd_putc("Carga 2 Activa"); LCD output_high(PIN_C4); Send_SMS_Activa_Carga2(); } if((Carga=='C')&&(Tipo=='2')&&(Opcion=='2')){ y sentido horario lcd_putc("\f"); lcd_putc(" LCD Carga 2");

//Activar Motor1, velocidad alta //Limpia la pantalla LCD //Se envía mensaje a la pantalla

//Activar Motor1, velocidad alta //Limpia la pantalla LCD //Se envía mensaje a la pantalla //Limpia la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_C4); Send_SMS_No_Activa_Carga2(); }

55

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='1')){ sentido horario lcd_putc("\f"); lcd_putc("Carga 3 Activa"); output_high(PIN_D3); Send_SMS_Activa_Carga3(); } if((Carga=='C')&&(Tipo=='3')&&(Opcion=='2')){ sentido horario lcd_putc("\f"); lcd_putc(" Carga 3");

//Activar Motor1, velocidad alta y //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

//Activar Motor1, velocidad alta y //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_D3); Send_SMS_No_Activa_Carga3(); } if((Carga=='C')&&(Tipo=='4')&&(Opcion=='1')){ sentido horario lcd_putc("\f"); lcd_putc("Carga 4 Activa"); output_high(PIN_D2); Send_SMS_Activa_Carga4(); } if((Carga=='C')&&(Tipo=='4')&&(Opcion=='2')){ sentido horario lcd_putc("\f"); lcd_putc(" Carga 4");

//Activar Motor1, velocidad alta y //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

//Activar Motor1, velocidad alta y //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

56

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_D2); Send_SMS_No_Activa_Carga4(); }

//Limpia la pantalla LCD

En los anexos se encuentran tanto el diagrama el código fuente del programa grabado en el PIC en lenguaje C y el esquemático del circuito de control.

57

CONCLUSIONES

El proyecto presentado cumple las expectativas iniciales ya que permite controlar un total de 4 cargas por medio de la emisión de mensajes de texto desde un teléfono móvil independientemente de la operadora. Esto permite fundamentar los conceptos adquiridos en cuanto al funcionamiento de la Red GSM, el de los microcontroladores PIC lo cuales tienen un impresionante número de aplicativos, MODEM GSM, las Leyes de Maxwell, la forma de operar del relé y del contactor (muy empleados hoy en día en la industria moderna). En tal sentido, el modulo desarrollado viene siendo desde una tarjeta electrónica que puede ser empleada con fines didácticos a nivel universitario como también puede abrirse cómodamente espacios en el ámbito industrial y doméstico. Las comunicaciones inalámbricas, representa una de las vías a la hora de seleccionar un medio para la manipulación de distintos tipos de equipos, dando total comodidad y confiabilidad ya que el servicio de mensajería es muy práctico y robusto permitiendo así la creación de este tipo de proyectos.

58

BIBLIOGRAFIAS

Fraile Mora, Jesús. (2008). Máquinas Eléctricas (6º ed). Madrid: Editorial McGraw-Hill Chapman, Stephen J. (1996). Máquinas Eléctricas (2º ed). México: Editorial McGraw-Hill Angulo, J., Angulo I. (1999). Microcontroladores <PIC>. Diseño práctico de aplicaciones (2º ed). Madrid: Editorial McGraw-Hill/Interamericana.

(http://www.microchip.com)

59

REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN SUPERIOR INSTITUTO UNIVERSITARIO DE TECNOLOGÍA “DR. FEDERICO RIVERO PALACIO” EDO. MIRANDA

ANEXOS

60

ANEXO A CONTENIDO PÁGINA

1. Código fuente del programa grabado en el PIC en lenguaje C

62

61

//***********************************************************************************************// //-------------------------Programa de Control Remoto de Cargas vía SMS--------------------------// //***********************************************************************************************// #include <16f877.h> #byte PORTA=0X05 #byte PORTB=0X06 #byte PORTC=0X07 #byte PORTD=0X08 #byte PORTE=0X09 #byte PIR1=0X0C #byte RCREG=0X1A #byte TXREG=0X19 #byte RCSTA=0X18 #byte TXSTA=0X98 #byte SPBRG=0X99 #byte INTCON=0X0B #FUSES NOWDT #FUSES HS #FUSES PUT #FUSES NOPROTECT #FUSES BROWNOUT #FUSES NOLVP #FUSES NOCPD //Posición del registro PORTA //Posición del registro PORTB //Posición del registro PORTC //Posición del registro PORTD //Posición del registro PORTE //Posición del registro PIR1 //Posición del registro RCREG //Posición del registro TXREG //Posición del registro RCSTA //Posición del registro TXSTA //Posición del registro SPBRG //Posición del registro INTCON //No Watch Dog Timer //High speed Osc (> 4mhz) //Power Up Timer //Code not protected from reading //Reset when brownout detected //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O //No EE protection

62

#FUSES NOWRT #FUSES NODEBUG

//Program memory not write protected //No Debug mode for ICD

#use delay(clock=20000000) #use standard_io(c) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include <LCD9.C> #define ALL_OUT 0X00 #define ALL_INPUT 0XFF #define buffer_full 89 //Se define el valor 0X00 como ALL_OUT //Se define el valor 0XFF como ALL_INPUT //Se define el valor 89 como buffer_full

setup_adc_ports(NO_ANALOG); //Se configuran los puertos como digitales (No Analógicos) //***********************************************************************************************// //------------------------------------Declaración de Variables-----------------------------------// //***********************************************************************************************// int1 Modem_Ini,Err,Ok,Delet_SMS,Input_SMS,Read_Input_SMS,Send_Msj,Send_OK,Conmutar,Err_Msj,Flag_Falla1,Cont_Falla1,Flag_Fall a2,Cont_Falla2,Flag_Falla3,Cont_Falla3,Flag_Falla4,Cont_Falla4; int8 i,j,size_buffer,Position,Cont_Rx,Cont_Tx,Indice_SMS,Valor; char Carga, Tipo, Opcion; char Datos_Recibidos[90]; char Voice_Number[14]; //***********************************************************************************************// //------------------------------------Declaración de Funciones-----------------------------------// //***********************************************************************************************// void Inicializacion(); //Función inicialización del MODEM

void Test_Ok_and_Error(); //Función que verifica la recepción del dato OK y ERROR void clear_buffer(); //Función que limpia el buffer

63

void Delete_SMS(); void Test_Input_SMS(); void Read_SMS(); void Send_SMS();

//Función para borrar SMS //Función para verificar la llegada de un SMS //Función para leer un SMS //Función para enviar un SMS

void Send_SMS_Activa_Carga1(); void Send_SMS_No_Activa_Carga1(); void Send_SMS_Activa_Carga2(); void Send_SMS_No_Activa_Carga2(); void Send_SMS_Activa_Carga3(); void Send_SMS_No_Activa_Carga3(); void Send_SMS_Activa_Carga4(); void Send_SMS_No_Activa_Carga4(); void Send_SMS_Falla1(); void Send_SMS_Falla2(); void Send_SMS_Falla3(); void Send_SMS_Falla4(); //***********************************************************************************************// //--------------------Vector de Interrupción Recepción de Comunicación Serial--------------------// //***********************************************************************************************// #int_RDA RDA_isr() { if(kbhit()) { Datos_Recibidos[Cont_Rx]=getc();

64

Cont_Rx+=1; } if (bit_test(RCSTA,1)) { bit_clear(RCSTA,4); bit_set(RCSTA,4); } } //***********************************************************************************************// //----------------------------------------Programa Principal-------------------------------------// //***********************************************************************************************// void main(void){ set_tris_a(ALL_OUT); set_tris_b(ALL_OUT); set_tris_c(0b10001100); set_tris_d(0b00000011); set_tris_e(ALL_OUT); setup_adc(ADC_OFF); TXSTA = 0b00100100; //Se coloca inactivo el conversor analógico digital del pic //Activación del BIT de transmisión y configuración //Se configura el puerto A como salida //Se configura el puerto B como salida //Se configuran los pines RC0:RC6 como salida y RC7 como entrada //Se configura el puerto D como salida

//en modo asíncrono a alta velocidad RCSTA = 0b10010000; SPBRG=129; TXREG=0X00; RCREG=0X00; //Activación del puerto serial de recepción continua //Baud rates para alta velocidad (9600 baudios) //Se limpia el registro TXREG //Se limpia el registro RCREG

setup_timer_0( RTCC_8_BIT|RTCC_DIV_16); //Se configura el TIMER 0

65

set_timer0(135); setup_timer_2(T2_DIV_BY_16,255,1); //Se configura el TIMER 2 setup_ccp1(CCP_PWM); //Se configura el modulo PWM1

enable_interrupts(INT_RDA); //Se habilita la interrupción por recepción serial enable_interrupts(GLOBAL); //Se habilitan todas las interrupciones //***********************************************************************************************// //--------------------------------------Inicialización de Variables------------------------------// //***********************************************************************************************// i=0; j=0; Ok=0; Err=0; Err_Msj=0; Modem_Ini=0; Delet_SMS=0; Input_SMS=0; Read_Input_SMS=0; Send_Msj=0; Send_OK=0; Cont_Rx=0; Cont_Tx=0; Indice_SMS=0; Conmutar=0; Position=0; size_buffer=0;

66

Valor=0; Flag_Falla1=0; Cont_Falla1=0; Flag_Falla2=0; Cont_Falla2=0; Flag_Falla3=0; Cont_Falla3=0; Flag_Falla4=0; Cont_Falla4=0; Voice_Number[0]='"'; Voice_Number[1]=0X30; Voice_Number[2]=0X00; Voice_Number[3]=0X00; Voice_Number[4]=0X00; Voice_Number[5]=0X00; Voice_Number[6]=0X00; Voice_Number[7]=0X00; Voice_Number[8]=0X00; Voice_Number[9]=0X00; Voice_Number[10]=0X00; Voice_Number[11]=0X00; Voice_Number[12]='"'; Voice_Number[13]='\r';

67

//***********************************************************************************************// //------------------------------------------Programa Principal-----------------------------------// //***********************************************************************************************// output_low(PIN_C5); output_low(PIN_C4); output_low(PIN_D3); output_low(PIN_D2); lcd_init(); lcd_putc("\f"); //Inicializa la pantalla LCD //Limpia la pantalla LCD

lcd_putc("Sist de Control" );//Se envía mensaje a la pantalla LCD lcd_putc("\n"); //Salto de línea

lcd_putc(" de Potencia"); //Se envía mensaje a la pantalla LCD delay_ms(3000); lcd_putc("\f"); //El mensaje anterior se muestra por un lapso de 3s //Limpia la pantalla LCD

lcd_putc(" Inicializando" ); //Se envía mensaje a la pantalla LCD lcd_putc("\n"); //Salto de línea

lcd_putc("Espere por favor");//Se envía mensaje a la pantalla LCD Inicializacion(); Delete_SMS(); while(true){ lcd_putc("\f"); //Se llama a la funcion de Inicializacion del Modem //Se llama a la funcion de Borrado de SMS //Ciclo infinito //Limpia la pantalla LCD

lcd_putc("Sistema Activo"); //Se envía mensaje a la pantalla LCD Test_Input_SMS(); lcd_putc("\f"); //Se llama a la rutina de recepción de SMS //Limpia la pantalla LCD

lcd_putc("SMS recibido" ); //Se envía mensaje a la pantalla LCD

68

Read_SMS(); lcd_putc("\f");

//Se llama a la funcion de leer SMS //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD mientras se procesa //la solicitud recibida

lcd_putc("Procesando..." );

Delete_SMS(); delay_ms(3000);

//Se llama a la funcion de borrar SMS //Retardo de 3 segundo mientras antes de enviar SMS de //confirmación

//***********************************************************************************************// //---------------------------Rutina de Acción de Control de la Carga ----------------------------// //***********************************************************************************************// if((Carga=='C')&&(Tipo=='1')&&(Opcion=='1')){ lcd_putc("\f"); lcd_putc("Carga 1 Activa"); output_high(PIN_C5); Send_SMS_Activa_Carga1(); } if((Carga=='C')&&(Tipo=='1')&&(Opcion=='2')){ lcd_putc("\f"); lcd_putc(" Carga 1"); //Activar Motor1, velocidad alta y sentido horario //Activar Motor1, velocidad alta y sentido horario

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_C5); Send_SMS_No_Activa_Carga1(); }

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='1')){

//Activar Motor1, velocidad alta y sentido horario

69

lcd_putc("\f"); lcd_putc("Carga 2 Activa"); output_high(PIN_C4); Send_SMS_Activa_Carga2(); }

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='2')){ lcd_putc("\f"); lcd_putc(" Carga 2");

//Activar Motor1, velocidad alta y sentido horario

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_C4); Send_SMS_No_Activa_Carga2(); }

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='1')){ lcd_putc("\f"); lcd_putc("Carga 3 Activa"); output_high(PIN_D3); Send_SMS_Activa_Carga3(); } if((Carga=='C')&&(Tipo=='3')&&(Opcion=='2')){ lcd_putc("\f"); lcd_putc(" Carga 3");

//Activar Motor1, velocidad alta y sentido horario

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

//Activar Motor1, velocidad alta y sentido horario

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_D3);

70

Send_SMS_No_Activa_Carga3(); } if((Carga=='C')&&(Tipo=='4')&&(Opcion=='1')){ lcd_putc("\f"); lcd_putc("Carga 4 Activa"); output_high(PIN_D2); Send_SMS_Activa_Carga4(); } if((Carga=='C')&&(Tipo=='4')&&(Opcion=='2')){ lcd_putc("\f"); lcd_putc(" Carga 4"); //Activar Motor1, velocidad alta y sentido horario //Activar Motor1, velocidad alta y sentido horario

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

//Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD

lcd_putc("\n"); lcd_putc(" No Activa"); output_low(PIN_D2); Send_SMS_No_Activa_Carga4(); } } }

//***********************************************************************************************// //---------------------------------Rutina de Inicialización del Modem----------------------------// //***********************************************************************************************// void Inicializacion() { while (Modem_Ini==0) { //Hacer mientras Modem_Ini sea igual a cero (0)

71

printf("AT\r"); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Err==1) { Err=0; delay_ms(5000); } if (Ok==1) { Ok=0; Modem_Ini=1; } } Modem_Ini=0; }

//Se transmite el comando AT al MODEM //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si existe un error se vuelve a enviar el comando

//Se limpia la bandera Err //Retardo de 5s para volver enviar el comando en caso de error

//Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Modem_Ini para salir del ciclo while

//Se vuelve a inicializar la bandera Modem_Ini

//***********************************************************************************************// //------------------------------Rutina de Borrado de SMS de la SIM CARD--------------------------// //***********************************************************************************************// void Delete_SMS() { while (Delet_SMS==0) { printf("AT+CMGD=5,4\r"); //Se transmite el comando AT+CMGD=5,4 al MODEM //Hacer mientras Delete_SMS sea igual a cero (0)

72

delay_ms(10000); Test_Ok_And_Error(); Cont_Rx=0; if (Err==1) { Err=0; delay_ms(5000); } if (Ok==1) { Ok=0; Delet_SMS=1; } } Delet_SMS=0; }

//Retardo de 10s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si existe un error se vuelve a enviar el comando

//Se limpia la bandera Err //Retardo de 5s para volver enviar el comando en caso de error

//Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Delete_SMS para salir del ciclo while

//Se vuelve a inicializar la bandera Delete_SMS

//***********************************************************************************************// //---------------------------------Rutina de Verificación de OK y Error--------------------------// //***********************************************************************************************// void Test_Ok_and_Error() { wait_data: Position=0; wait_ok: if (Datos_Recibidos[Position]=='O') //Si el dato recibido es OK se procede a llamar a //Se iguala a cero (0) el contador

73

{ Position+=1;

//la funcion clear_buffer() para limpiar el buffer

if (Datos_Recibidos[Position]=='K') { Ok=1; clear_buffer(); } } else { //Si el dato recibido es ERROR se procede a llamar a //la funcion clear_buffer() para limpiar el buffer if (Datos_Recibidos[Position]=='E') { Position+=1; if (Datos_Recibidos[Position]=='R') { Position+=1; if (Datos_Recibidos[Position]=='R') { Position+=1; if (Datos_Recibidos[Position]=='O') { Position+=1; if (Datos_Recibidos[Position]=='R') { Err=1;

74

clear_buffer(); } } } } } if ((Position==buffer_full) && (Err==0) && (Ok==0)) //Si no se ha recibido ningun dato se sigue esperando { Position=0; goto wait_data; } if (Err==0) { Position+=1; goto wait_ok; } } } //***********************************************************************************************// //------------------------------Rutina de Borrado de Buffer de Entrada---------------------------// //***********************************************************************************************// void clear_buffer() { for (size_buffer=0;size_buffer<=buffer_full;size_buffer++) //Se limpia el buffer { //Si el mensaje recibido no es ERROR se verifica que sea OK

75

Datos_Recibidos[size_buffer]=0x00; } } //***********************************************************************************************// //--------------------------------Rutina para Detectar un SMS Entrante---------------------------// //***********************************************************************************************// void Test_Input_SMS() { while (Input_SMS==0) { //Se verifica que se haya recibido +CMTI if ((Datos_Recibidos[2]=='+') && (Datos_Recibidos[3]=='C') && (Datos_Recibidos[4]=='M') && (Datos_Recibidos[5]=='T') && (Datos_Recibidos[6]=='I')) { delay_ms(1000); Cont_Rx=0; clear_buffer(); Input_SMS=1; } if (input(PIN_D1)){ Flag_Falla1=1; output_low(PIN_C5); if (Cont_Falla1==0){ if(Flag_Falla1 == 1){ lcd_putc("\f"); lcd_putc("Falla Carga 1"); //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Retardo de 1s //Se limpia el contador //Se procede a limpiar el buffer //Se iguala a uno (1) Input_SMS para salir del ciclo while //Hacer mientras Input_SMS sea igual a cero (0)

76

delay_ms(3000); Send_SMS_Falla1(); Flag_Falla1=0; Cont_Falla1+=1; } } }else{ Cont_Falla1=0; }

if (input(PIN_D0)){ Flag_Falla2=1; output_low(PIN_C4); if (Cont_Falla2==0){ if(Flag_Falla2 == 1){ lcd_putc("\f"); lcd_putc("Falla Carga 2"); delay_ms(3000); Send_SMS_Falla2(); Flag_Falla2=0; Cont_Falla2+=1; } } }else{ Cont_Falla2=0; //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

77

}

if (input(PIN_C3)){ Flag_Falla3=1; output_low(PIN_D3); if (Cont_Falla3==0){ if(Flag_Falla3 == 1){ lcd_putc("\f"); lcd_putc("Falla Carga 3"); delay_ms(3000); Send_SMS_Falla3(); Flag_Falla3=0; Cont_Falla3+=1; } } }else{ Cont_Falla3=0; } if (input(PIN_C2)){ Flag_Falla4=1; output_low(PIN_D2); if (Cont_Falla4==0){ if(Flag_Falla4 == 1){ lcd_putc("\f"); lcd_putc("Falla Carga 4"); //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD //Limpia la pantalla LCD //Se envía mensaje a la pantalla LCD

78

delay_ms(3000); Send_SMS_Falla4(); Flag_Falla4=0; Cont_Falla4+=1; } } }else{ Cont_Falla4=0; } } Input_SMS=0; } //***********************************************************************************************// //--------------------------------Rutina para Detectar un SMS Entrante---------------------------// //***********************************************************************************************// void Read_SMS() { while (Read_Input_SMS==0) { printf("AT+CMGR=1\r"); delay_ms(2500); //Se transmite el comando AT+CMGR=1 al MODEM //Retardo de 2.5s //Hacer mientras Read_Input_SMS sea igual a cero (0) //Se vuelve a inicializar la bandera Input_SMS

//Se verifica que se haya recibido +CMGR if ((Datos_Recibidos[12]=='+') && (Datos_Recibidos[13]=='C') && (Datos_Recibidos[14]=='M') && (Datos_Recibidos[15]=='G') && (Datos_Recibidos[16]=='R')) { if ((Datos_Recibidos[34]=='5') && (Datos_Recibidos[35]=='8')) //Se verifica que se haya recibido el código 58

79

{ Voice_Number[0]='"'; delay_ms(1000); Voice_Number[1]=0X30; delay_ms(1000); Voice_Number[2]=Datos_Recibidos[36]; delay_ms(1000); Voice_Number[3]=Datos_Recibidos[37]; delay_ms(1000); Voice_Number[4]=Datos_Recibidos[38]; delay_ms(1000); Voice_Number[5]=Datos_Recibidos[39]; delay_ms(1000); Voice_Number[6]=Datos_Recibidos[40]; delay_ms(1000); Voice_Number[7]=Datos_Recibidos[41]; delay_ms(1000); Voice_Number[8]=Datos_Recibidos[42]; delay_ms(1000); Voice_Number[9]=Datos_Recibidos[43]; delay_ms(1000); Voice_Number[10]=Datos_Recibidos[44]; delay_ms(1000); Voice_Number[11]=Datos_Recibidos[45]; delay_ms(1000); //Se procede a grabar el número de voz que pertenece a la SIM CARD que envío el SMS

80

Voice_Number[12]='"'; delay_ms(1000); Voice_Number[13]='\r'; delay_ms(1000); }

if (Datos_Recibidos[72]==0X0A) { Carga = Datos_Recibidos[73]; Tipo = Datos_Recibidos[74]; Opcion = Datos_Recibidos[75]; Test_Ok_and_Error(); Cont_Rx=0; } } if (Err==1) { Err=0; } if (Ok==1) { Ok=0; Read_Input_SMS=1; } }

//Se verifica que se haya recibido el salto de línea en la posición 72

//Se graba en comando recibido de la tarjeta 1

//Se procede a validar la respuesta del MODEM //Se limpia el contador

//Si existe un error se vuelve a enviar el comando

//Se limpia la bandera Err

//Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Read_Input_SMS para salir del ciclo while

81

Read_Input_SMS=0; }

//Se vuelve a inicializar la bandera Read_Input_SMS

//***********************************************************************************************// //----------------------------------Rutina para enviar un SMS------------------------------------// //***********************************************************************************************// void Send_SMS() { Position = 0; while (Send_Msj==0) { printf("AT+CMGS="); Voice_Number[0]='"'; for (j=0;j<=13;j++) { printf("%c",Voice_Number[j]); delay_ms(500); } delay_ms(5000); wait_send_msj: //Se transmite el comando AT+CMGS= al MODEM //Se transmite el número de voz la SIM CARD de la tarjeta 1 //Se limpia el contador //Hacer mientras Send_Msj sea igual a cero (0)

if ((Datos_Recibidos[24]=='>')&&(Datos_Recibidos[25]==0X20)) //Al recibir los caracteres '>' y ' ' { Send_Msj=1; } else //De lo contrario se espera a recibir dichos caracteres //Se coloca en uno (1) la bandera Send_Msj para salir //del ciclo while

82

{ goto wait_send_msj; } } Send_Msj=0; } //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 1 Activada----------------------// //***********************************************************************************************// void Send_SMS_Activa_Carga1() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Carga 1 Activada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Send_Msj

83

} Send_OK=0; } //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 1 No Activada-------------------// //***********************************************************************************************// void Send_SMS_No_Activa_Carga1() { while (Send_OK==0) { //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Read_Input_SMS

Send_SMS(); Cont_Rx = 0; printf("Carga 1 Desactivada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0;

//Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

//Se vuelve a inicializar la bandera Read_Input_SMS

84

} //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 2 Activada----------------------// //***********************************************************************************************// void Send_SMS_Activa_Carga2() { while (Send_OK==0) { //Hacer mientras Send_OK sea igual a cero (0)

Send_SMS(); Cont_Rx = 0; printf("Carga 2 Activada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; }

//Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

//Se vuelve a inicializar la bandera Read_Input_SMS

85

//***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 2 No Activada-------------------// //***********************************************************************************************// void Send_SMS_No_Activa_Carga2() { while (Send_OK==0) { //Hacer mientras Send_OK sea igual a cero (0)

Send_SMS(); Cont_Rx = 0; printf("Carga 2 Desactivada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; }

//Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

//Se vuelve a inicializar la bandera Read_Input_SMS

86

//***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 3 Activada----------------------// //***********************************************************************************************// void Send_SMS_Activa_Carga3() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Carga 3 Activada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; } //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 3 No Activada-------------------// //***********************************************************************************************// //Se vuelve a inicializar la bandera Read_Input_SMS //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0)

87

void Send_SMS_No_Activa_Carga3() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Carga 3 Desactivada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; } //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 4 Activada----------------------// //***********************************************************************************************// void Send_SMS_Activa_Carga4() { while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Read_Input_SMS //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0)

88

{ Send_SMS(); Cont_Rx = 0; printf("Carga 4 Activada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; } //***********************************************************************************************// //----------------Funcion para enviar Msj al Administrador Carga 4 No Activada-------------------// //***********************************************************************************************// void Send_SMS_No_Activa_Carga4() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; //Se llama a la función Send_SMS() //Se limpia el contador //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Read_Input_SMS //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

89

printf("Carga 4 Desactivada"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; }

//Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

//Se vuelve a inicializar la bandera Read_Input_SMS

//***********************************************************************************************// //---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 1------------// //***********************************************************************************************// void Send_SMS_Falla1() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Falla Carga 1"); printf("%c",0x1A); delay_ms(5000); //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Hacer mientras Send_OK sea igual a cero (0)

90

Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; }

//Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK

//Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

//Se vuelve a inicializar la bandera Read_Input_SMS

//***********************************************************************************************// //---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 2------------// //***********************************************************************************************// void Send_SMS_Falla2() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Falla Carga 2"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0)

91

{ Ok=0; Send_OK=1; } } Send_OK=0; } //***********************************************************************************************// //---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 3------------// //***********************************************************************************************// void Send_SMS_Falla3() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Falla Carga 3"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Read_Input_SMS //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while

92

} } Send_OK=0; } //***********************************************************************************************// //---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 4------------// //***********************************************************************************************// void Send_SMS_Falla4() { while (Send_OK==0) { Send_SMS(); Cont_Rx = 0; printf("Falla Carga 4"); printf("%c",0x1A); delay_ms(5000); Test_Ok_and_Error(); Cont_Rx=0; if (Ok==1) { Ok=0; Send_OK=1; } } Send_OK=0; } //Se vuelve a inicializar la bandera Read_Input_SMS //Se limpia la bandera Ok //Se iguala a uno (1) Send_OK para salir del ciclo while //Se llama a la función Send_SMS() //Se limpia el contador //Se envía el mensaje R de recibido //Se envía el limitador de caracteres //Retardo de 5s //Se procede a validar la respuesta del MODEM //Se limpia el contador //Si no existe un error se valida el OK //Hacer mientras Send_OK sea igual a cero (0) //Se vuelve a inicializar la bandera Read_Input_SMS

93

ANEXO B. CONTENIDO 1. Esquemático del circuito PÁGINA 95

94

95

Sign up to vote on this title
UsefulNot useful