Upload
rss24
View
4.444
Download
3
Embed Size (px)
Citation preview
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
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.
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
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
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
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
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.
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
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
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:
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).
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.
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.
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.
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á
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.
14
(e) Servicios agregados.
(f) Servicio de mensajes cortos.
(g) Señalización multifrecuencia.
Figura 10. Interfaces UM, ABIS, ASUB Y A DEL BSS
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.
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.
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).
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.
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
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.
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
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.
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.
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.
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
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.
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
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
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.
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.
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.
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.
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.
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
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).
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.
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.
38
Cuanto más corta sea la sobrecarga de intensidad, más alta será la sobrecarga
soportable.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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
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:
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:
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-
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:
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();
}
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();
}
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
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.
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.
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)
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
61
ANEXO A
CONTENIDO PÁGINA
1. Código fuente del programa grabado en el PIC en lenguaje C 62
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
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
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();
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
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;
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';
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
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
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);
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)
{
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
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
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;
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
{
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
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;
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
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
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);
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
}
}
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
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
}
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
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
}
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
}
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-------------------//
//***********************************************************************************************//
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)
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
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
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
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
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
94
ANEXO B.
CONTENIDO PÁGINA
1. Esquemático del circuito 95
95