DESARROLLO DE MODULO DE CONTROL REMOTO PARA LA ACTIVACIÓN DE CARGAS VÍA SMS POR MEDIO DEL...

98
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

Transcript of DESARROLLO DE MODULO DE CONTROL REMOTO PARA LA ACTIVACIÓN DE CARGAS VÍA SMS POR MEDIO DEL...

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

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

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

1

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.

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

ii

INDICE GENERAL

pp.

Portada i

Índice General ii

INTRODUCCIÓN 1

CAPÍTULO I. GSM 2

Estación Móvil 4

Subsistema de radio Base (BSS) 4

Subsistema de Conmutación de Red (NSS) 7

Subsistema de Gestión de Red (NMS) 12

CAPÍTULO II. SEND MESSAGE SHORT (SMS) 15

Short Messaging Entity (SME) 17

Short Message Service Center (SMSC) 17

SMS-Gateway/Interworking MSC (SMS-GMSC) 18

Funcionamiento de la transmisión en GSM 21

CAPITULO III. MODULADOR/DEMODULADOR (MODEM) 23

CAPITULO IV. MICROCONTROLADOR PIC 16F877 27

CAPITULO V. COMUNICACIÓN SERIAL RS232 30

Protocolo de Comunicación RS-232 31

Control de flujo hardware 33

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

iii

Control de flujo software 33

CAPITULO VI. EL RELÉ 34

Partes del Relé 35

Clasificación general de los relés 35

Funcionamiento 35

Tipos de relés según su funcionamiento 36

Fabricación 37

Características 37

CAPITULO VII. EL CONTACTOR 39

Partes del contactor 40

Clasificación de los contactores 45

Funcionamiento 46

Criterios para la selección de un contactor 47

Ventajas del uso de contactores 47

CAPITULO VIII. COMPILADOR CCS C 48

CAPITULO IX. DESARROLLO DEL MODULO DE CONTROL 50

REMOTO PARA LA ACTIVACIÓN DE CARGAS

VÍA SMS POR MEDIO DEL MICROCONTROLADOR

PIC 16F877

CONCLUSIONES. 58

BIBLIOGRAFIAS. 59

ANEXOS. 60

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

ANEXO B Esquemático del circuito

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

2

O & M

V L R M S C

V L R M S C

HL

R

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

Figura 1. Red GSM

Air A

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

3

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

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

4

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.

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

5

A i r A

T C B T S B S C

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

Figura 3. Subsistema de Radio Base (BSS)

Abis

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

6

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

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

7

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:

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

8

A i r A

O & M

V L R M S C

V L R M S C

HLR

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

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

9

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.

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

10

A i r A

T C B T S

B S C

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:

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

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

11

Air A

TCBTS

BTS

BSC

Old Cell / BTS New Cell / BTS

Air A

BTS

Old Cell / BTS

New Cell / BTS

BTS

BSC TC

BSC TC

VLRMSC

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

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

diferentes BSC.

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

12

Air A

BTS

Old Cell / BTS

New Cell / BTS

BTS

BSC TC

BSC TC

VLRMSC

VLRMSC

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á

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

13

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.

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

14

(e) Servicios agregados.

(f) Servicio de mensajes cortos.

(g) Señalización multifrecuencia.

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

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

15

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.

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

16

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

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

17

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

IWMSC), 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).

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

18

SME

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

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.

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

19

(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

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

20

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.

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

21

(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

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

22

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.

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

23

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.

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

24

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.

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

25

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

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

Conector de SDM

Conector DB-15

Conector de

Alimentación

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

26

Led Indicador del

Status del

MODEM

Bandeja para

inserción de la SIM

CARD

Botón para

extraer la SIM

CARD

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.

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

27

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

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

28

(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

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

29

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.

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

30

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.

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

31

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.

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

32

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 0 DTE encendido y funcionando.

(b) DSR 0 DCE encendido y funcionando.

(c) RTS 0 DTE listo para comenzar a transmitir.

(d) DCD 0 DCE Detectó portadora (tono).

(e) CTS 0 DCE listo para comenzar a transmitir.

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

33

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.

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

34

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

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

35

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

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

36

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.

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

37

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.

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

38

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

soportable.

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

39

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.

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

40

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.

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

41

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.

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

42

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

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

43

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.

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

44

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.

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

45

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.

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

46

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

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

47

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.

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

48

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.

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

49

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

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

50

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:

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

51

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:

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

52

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-

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

53

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:

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

54

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')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 1 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_C5);

Send_SMS_Activa_Carga1();

}

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

55

if((Carga=='C')&&(Tipo=='1')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 1"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa"); //Se envía mensaje a la pantalla LCD

output_low(PIN_C5);

Send_SMS_No_Activa_Carga1();

}

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 2 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_C4);

Send_SMS_Activa_Carga2();

}

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 2"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa");

output_low(PIN_C4);

Send_SMS_No_Activa_Carga2();

}

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

56

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 3 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_D3);

Send_SMS_Activa_Carga3();

}

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 3"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa");

output_low(PIN_D3);

Send_SMS_No_Activa_Carga3();

}

if((Carga=='C')&&(Tipo=='4')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 4 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_D2);

Send_SMS_Activa_Carga4();

}

if((Carga=='C')&&(Tipo=='4')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 4"); //Se envía mensaje a la pantalla LCD

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

57

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa");

output_low(PIN_D2);

Send_SMS_No_Activa_Carga4();

}

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.

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

58

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.

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

59

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)

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

60

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

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

61

ANEXO A

CONTENIDO PÁGINA

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

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

62

//***********************************************************************************************//

//-------------------------Programa de Control Remoto de Cargas vía SMS--------------------------//

//***********************************************************************************************//

#include <16f877.h>

#byte PORTA=0X05 //Posición del registro PORTA

#byte PORTB=0X06 //Posición del registro PORTB

#byte PORTC=0X07 //Posición del registro PORTC

#byte PORTD=0X08 //Posición del registro PORTD

#byte PORTE=0X09 //Posición del registro PORTE

#byte PIR1=0X0C //Posición del registro PIR1

#byte RCREG=0X1A //Posición del registro RCREG

#byte TXREG=0X19 //Posición del registro TXREG

#byte RCSTA=0X18 //Posición del registro RCSTA

#byte TXSTA=0X98 //Posición del registro TXSTA

#byte SPBRG=0X99 //Posición del registro SPBRG

#byte INTCON=0X0B //Posición del registro INTCON

#FUSES NOWDT //No Watch Dog Timer

#FUSES HS //High speed Osc (> 4mhz)

#FUSES PUT //Power Up Timer

#FUSES NOPROTECT //Code not protected from reading

#FUSES BROWNOUT //Reset when brownout detected

#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#FUSES NOCPD //No EE protection

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

63

#FUSES NOWRT //Program memory not write protected

#FUSES NODEBUG //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 //Se define el valor 0X00 como ALL_OUT

#define ALL_INPUT 0XFF //Se define el valor 0XFF como ALL_INPUT

#define buffer_full 89 //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

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

64

void Delete_SMS(); //Función para borrar SMS

void Test_Input_SMS(); //Función para verificar la llegada de un SMS

void Read_SMS(); //Función para leer un SMS

void Send_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();

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

65

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); //Se configura el puerto A como salida

set_tris_b(ALL_OUT); //Se configura el puerto B como salida

set_tris_c(0b10001100); //Se configuran los pines RC0:RC6 como salida y RC7 como entrada

set_tris_d(0b00000011); //Se configura el puerto D como salida

set_tris_e(ALL_OUT);

setup_adc(ADC_OFF); //Se coloca inactivo el conversor analógico digital del pic

TXSTA = 0b00100100; //Activación del BIT de transmisión y configuración

//en modo asíncrono a alta velocidad

RCSTA = 0b10010000; //Activación del puerto serial de recepción continua

SPBRG=129; //Baud rates para alta velocidad (9600 baudios)

TXREG=0X00; //Se limpia el registro TXREG

RCREG=0X00; //Se limpia el registro RCREG

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

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

66

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;

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

67

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

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

68

//***********************************************************************************************//

//------------------------------------------Programa Principal-----------------------------------//

//***********************************************************************************************//

output_low(PIN_C5);

output_low(PIN_C4);

output_low(PIN_D3);

output_low(PIN_D2);

lcd_init(); //Inicializa la pantalla LCD

lcd_putc("\f"); //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); //El mensaje anterior se muestra por un lapso de 3s

lcd_putc("\f"); //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(); //Se llama a la funcion de Inicializacion del Modem

Delete_SMS(); //Se llama a la funcion de Borrado de SMS

while(true){ //Ciclo infinito

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Sistema Activo"); //Se envía mensaje a la pantalla LCD

Test_Input_SMS(); //Se llama a la rutina de recepción de SMS

lcd_putc("\f"); //Limpia la pantalla LCD

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

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

69

Read_SMS(); //Se llama a la funcion de leer SMS

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Procesando..." ); //Se envía mensaje a la pantalla LCD mientras se procesa

//la solicitud recibida

Delete_SMS(); //Se llama a la funcion de borrar SMS

delay_ms(3000); //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')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 1 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_C5);

Send_SMS_Activa_Carga1();

}

if((Carga=='C')&&(Tipo=='1')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 1"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa"); //Se envía mensaje a la pantalla LCD

output_low(PIN_C5);

Send_SMS_No_Activa_Carga1();

}

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

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

70

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 2 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_C4);

Send_SMS_Activa_Carga2();

}

if((Carga=='C')&&(Tipo=='2')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 2"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa");

output_low(PIN_C4);

Send_SMS_No_Activa_Carga2();

}

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 3 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_D3);

Send_SMS_Activa_Carga3();

}

if((Carga=='C')&&(Tipo=='3')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 3"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

lcd_putc(" No Activa");

output_low(PIN_D3);

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

71

Send_SMS_No_Activa_Carga3();

}

if((Carga=='C')&&(Tipo=='4')&&(Opcion=='1')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Carga 4 Activa"); //Se envía mensaje a la pantalla LCD

output_high(PIN_D2);

Send_SMS_Activa_Carga4();

}

if((Carga=='C')&&(Tipo=='4')&&(Opcion=='2')){ //Activar Motor1, velocidad alta y sentido horario

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc(" Carga 4"); //Se envía mensaje a la pantalla LCD

lcd_putc("\n"); //Limpia la pantalla LCD

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)

{

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

72

printf("AT\r"); //Se transmite el comando AT al MODEM

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Err==1) //Si existe un error se vuelve a enviar el comando

{

Err=0; //Se limpia la bandera Err

delay_ms(5000); //Retardo de 5s para volver enviar el comando en caso de error

}

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Modem_Ini=1; //Se iguala a uno (1) Modem_Ini para salir del ciclo while

}

}

Modem_Ini=0; //Se vuelve a inicializar la bandera Modem_Ini

}

//***********************************************************************************************//

//------------------------------Rutina de Borrado de SMS de la SIM CARD--------------------------//

//***********************************************************************************************//

void Delete_SMS()

{

while (Delet_SMS==0) //Hacer mientras Delete_SMS sea igual a cero (0)

{

printf("AT+CMGD=5,4\r"); //Se transmite el comando AT+CMGD=5,4 al MODEM

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

73

delay_ms(10000); //Retardo de 10s

Test_Ok_And_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Err==1) //Si existe un error se vuelve a enviar el comando

{

Err=0; //Se limpia la bandera Err

delay_ms(5000); //Retardo de 5s para volver enviar el comando en caso de error

}

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Delet_SMS=1; //Se iguala a uno (1) Delete_SMS para salir del ciclo while

}

}

Delet_SMS=0; //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; //Se iguala a cero (0) el contador

wait_ok:

if (Datos_Recibidos[Position]=='O') //Si el dato recibido es OK se procede a llamar a

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

74

{ //la funcion clear_buffer() para limpiar el buffer

Position+=1;

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;

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

75

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) //Si el mensaje recibido no es ERROR se verifica que sea OK

{

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

{

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

76

Datos_Recibidos[size_buffer]=0x00;

}

}

//***********************************************************************************************//

//--------------------------------Rutina para Detectar un SMS Entrante---------------------------//

//***********************************************************************************************//

void Test_Input_SMS()

{

while (Input_SMS==0) //Hacer mientras Input_SMS sea igual a cero (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); //Retardo de 1s

Cont_Rx=0; //Se limpia el contador

clear_buffer(); //Se procede a limpiar el buffer

Input_SMS=1; //Se iguala a uno (1) Input_SMS para salir del ciclo while

}

if (input(PIN_D1)){

Flag_Falla1=1;

output_low(PIN_C5);

if (Cont_Falla1==0){

if(Flag_Falla1 == 1){

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Falla Carga 1"); //Se envía mensaje a la pantalla LCD

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

77

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"); //Limpia la pantalla LCD

lcd_putc("Falla Carga 2"); //Se envía mensaje a la pantalla LCD

delay_ms(3000);

Send_SMS_Falla2();

Flag_Falla2=0;

Cont_Falla2+=1;

}

}

}else{

Cont_Falla2=0;

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

78

}

if (input(PIN_C3)){

Flag_Falla3=1;

output_low(PIN_D3);

if (Cont_Falla3==0){

if(Flag_Falla3 == 1){

lcd_putc("\f"); //Limpia la pantalla LCD

lcd_putc("Falla Carga 3"); //Se envía mensaje a la pantalla LCD

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"); //Limpia la pantalla LCD

lcd_putc("Falla Carga 4"); //Se envía mensaje a la pantalla LCD

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

79

delay_ms(3000);

Send_SMS_Falla4();

Flag_Falla4=0;

Cont_Falla4+=1;

}

}

}else{

Cont_Falla4=0;

}

}

Input_SMS=0; //Se vuelve a inicializar la bandera Input_SMS

}

//***********************************************************************************************//

//--------------------------------Rutina para Detectar un SMS Entrante---------------------------//

//***********************************************************************************************//

void Read_SMS()

{

while (Read_Input_SMS==0) //Hacer mientras Read_Input_SMS sea igual a cero (0)

{

printf("AT+CMGR=1\r"); //Se transmite el comando AT+CMGR=1 al MODEM

delay_ms(2500); //Retardo de 2.5s

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

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

80

{

Voice_Number[0]='"'; //Se procede a grabar el número de voz que pertenece a la SIM CARD que envío el SMS

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

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

81

Voice_Number[12]='"';

delay_ms(1000);

Voice_Number[13]='\r';

delay_ms(1000);

}

if (Datos_Recibidos[72]==0X0A) //Se verifica que se haya recibido el salto de línea en la posición 72

{

Carga = Datos_Recibidos[73]; //Se graba en comando recibido de la tarjeta 1

Tipo = Datos_Recibidos[74];

Opcion = Datos_Recibidos[75];

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

}

}

if (Err==1) //Si existe un error se vuelve a enviar el comando

{

Err=0; //Se limpia la bandera Err

}

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Read_Input_SMS=1; //Se iguala a uno (1) Read_Input_SMS para salir del ciclo while

}

}

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

82

Read_Input_SMS=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

//----------------------------------Rutina para enviar un SMS------------------------------------//

//***********************************************************************************************//

void Send_SMS()

{

Position = 0; //Se limpia el contador

while (Send_Msj==0) //Hacer mientras Send_Msj sea igual a cero (0)

{

printf("AT+CMGS="); //Se transmite el comando AT+CMGS= al MODEM

Voice_Number[0]='"'; //Se transmite el número de voz la SIM CARD de la tarjeta 1

for (j=0;j<=13;j++)

{

printf("%c",Voice_Number[j]);

delay_ms(500);

}

delay_ms(5000);

wait_send_msj:

if ((Datos_Recibidos[24]=='>')&&(Datos_Recibidos[25]==0X20)) //Al recibir los caracteres '>' y ' '

{ //Se coloca en uno (1) la bandera Send_Msj para salir

Send_Msj=1; //del ciclo while

}

else //De lo contrario se espera a recibir dichos caracteres

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

83

{

goto wait_send_msj;

}

}

Send_Msj=0; //Se vuelve a inicializar la bandera Send_Msj

}

//***********************************************************************************************//

//----------------Funcion para enviar Msj al Administrador Carga 1 Activada----------------------//

//***********************************************************************************************//

void Send_SMS_Activa_Carga1()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 1 Activada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

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

84

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

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

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 1 Desactivada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

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

85

}

//***********************************************************************************************//

//----------------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(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 2 Activada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

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

86

//***********************************************************************************************//

//----------------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(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 2 Desactivada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

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

87

//***********************************************************************************************//

//----------------Funcion para enviar Msj al Administrador Carga 3 Activada----------------------//

//***********************************************************************************************//

void Send_SMS_Activa_Carga3()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 3 Activada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

//----------------Funcion para enviar Msj al Administrador Carga 3 No Activada-------------------//

//***********************************************************************************************//

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

88

void Send_SMS_No_Activa_Carga3()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 3 Desactivada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

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

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

89

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Carga 4 Activada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

//----------------Funcion para enviar Msj al Administrador Carga 4 No Activada-------------------//

//***********************************************************************************************//

void Send_SMS_No_Activa_Carga4()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

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

90

printf("Carga 4 Desactivada"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //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) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Falla Carga 1"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

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

91

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //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) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Falla Carga 2"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

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

92

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

//---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 3------------//

//***********************************************************************************************//

void Send_SMS_Falla3()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Falla Carga 3"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

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

93

}

}

Send_OK=0; //Se vuelve a inicializar la bandera Read_Input_SMS

}

//***********************************************************************************************//

//---------Funcion para enviar Msj al Administrador por Falla Detectada en la Carga 4------------//

//***********************************************************************************************//

void Send_SMS_Falla4()

{

while (Send_OK==0) //Hacer mientras Send_OK sea igual a cero (0)

{

Send_SMS(); //Se llama a la función Send_SMS()

Cont_Rx = 0; //Se limpia el contador

printf("Falla Carga 4"); //Se envía el mensaje R de recibido

printf("%c",0x1A); //Se envía el limitador de caracteres

delay_ms(5000); //Retardo de 5s

Test_Ok_and_Error(); //Se procede a validar la respuesta del MODEM

Cont_Rx=0; //Se limpia el contador

if (Ok==1) //Si no existe un error se valida el OK

{

Ok=0; //Se limpia la bandera Ok

Send_OK=1; //Se iguala a uno (1) Send_OK para salir del ciclo while

}

}

Send_OK=0; } //Se vuelve a inicializar la bandera Read_Input_SMS

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

94

ANEXO B.

CONTENIDO PÁGINA

1. Esquemático del circuito 95

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

95