picbibing.us.es/proyectos/abreproy/50027/fichero/pfc+ivan...establecer dos canales de comunicación,...
TRANSCRIPT
![Page 1: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/1.jpg)
2.4. Subsistema 16F877
2.4.1. Introducción
2.4.2. Implementación Hardware
2.4.2.1. Circuito de Alimentación
2.4.2.2. Circuito de Reloj y Reset
2.4.2.3. Entradas y Salidas
2.4.2.4. Driver y relés
2.4.2.5. Multiplexor del puerto serie
2.4.3. Organización de la Memoria
![Page 2: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/2.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 40
2.4.1. Introducción
Una vez visto el funcionamiento de los dispositivos a integrar en nuestro sistema hay que pensar en pasar esta aplicación a un entorno bajo microcontrolador. Son muchos los micros disponibles en el mercado, existiendo una amplia variedad en cuando a cantidad de memoria y tipo, periféricos disponibles, velocidad de procesado, número de pines de entrada/salida, consumos…
Debido a que se estuvieron haciendo trabajos en el departamento de Ingeniería Electrónica enfocados a realizar un entorno de desarrollo para un micro como el PIC16F877, se ha usado éste en el presente proyecto.
El hecho de haber desarrollado esta PCB de pruebas ha posibilitado conocer a fondo este micro y realizar la aplicación de manera más fácil y rápida. Entre las características más importantes de este microcontrolador RISC destacamos las siguientes:
Memoria de programa FLASH 8 kBytes
Memoria de datos RAM 368 bytes
Memoria EEPROM 256 bytes
Frecuencia de trabajo DC – 20Mhz
Comunicaciones Serie UART,MSSP
Pines entrada/salida 33 pines
Timers 3
Convertidor AD 8 entradas de 10bits
Juego de instrucciones 35 instrucciones
PCB desarrolladas para el Dpto. de Ingeniería Electrónica
![Page 3: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/3.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 41
Con todas las características citadas anteriormente vemos que es un micro válido para la aplicación que requerimos, sin embargo vemos que es necesario añadir cierta lógica más para completar la funcionalidad precisada, como ya comentaremos mas adelante. Para más información acerca de este micro invitamos al lector a que visite www.microchip.com.
2.4.2. Implementación hardware
Una vez vista la elección del micro y todos los elementos que componen nuestra aplicación final (gps, modem gsm, LCD, circuito arranque…) pasamos a ver en los apartados sucesivos los distintos circuitos que necesitamos añadir al microcontrolador para cumplir nuestro objetivo. En la imagen tomada vemos la circuitería completa excepto la que va instalada en la cubierta superior, destacando las diferentes partes que iremos explicando a continuación.
2.4.2.1. Circuito de alimentación
Nuestro sistema va a estar instalado en un vehículo, con lo cual partimos de la tensión de batería de 12V. La caja dispone de un jack de alimentación a modo de conector de pruebas que puede ser enchufado al encendedor del vehículo, pero la alimentación definitiva vendrá por el conector de arranque en el cual están los 12V directos de batería.
�
�
��
�
1: Circuito Alimentación. 2: Circuito Reset y Reloj. 3: Entradas y Salidas. 4: Driver y relés. 5: Multiplexor del puerto serie
![Page 4: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/4.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 42
En el siguiente esquema vemos la topología montada, con la entrada, interruptor, puente de diodos para evitar la inversión de polaridad y el regulador de tensión 7805 con sus condensadores de desacoplo y led indicador. Vemos que también sacamos la tensión de 12V para posterior alimentación de los relés.
2.4.2.2. Circuito Reset y Reloj
Para fijar la frecuencia de trabajo del microcontrolador pueden usarse varios métodos pero se ha elegido el oscilador de cristal entre las patas OSC1-OSC2. Por otro lado montamos el circuito con resistencia de pull-up, pulsador y condensadores al pin MCLR del micro que es la entrada de reset, que es activo a nivel bajo. (cuando MCLR=0 se produce un reset hardware en el micro).
2.4.2.3. Entradas y Salidas
Además de la entrada principal de datos al microcontrolador que se realiza por el puerto serie, bien del GPS o del móvil, es necesario muestrear múltiples parámetros del entorno como son los testigos de aceite, batería, punto muerto o la actuación sobre leds indicadores y relés de arranque. Para ello se utilizan los pines de los puertos del micro y en función de para que son usados se elegirán en uno u otro puerto.
![Page 5: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/5.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 43
En la siguiente tabla se muestran todas las entradas/salidas del sistema y los pines asociados a ellas.
Número pin I/O Ubicación Uso2 Salida RA0 Led / relé contacto3 Salida RA1 Led / relé arranque4 Salida RA2 Led uso general5 Salida RA3 Led GSM7 Salida RA5 Led GPS8 Entrada RE0 Testigo aceite9 Entrada RE1 Testigo batería
10 Entrada RE2 Entrada AUX17 Salida RC2 Enable LCD20 Salida RD1 Dato1 LCD21 Salida RD2 Dato2 LCD22 Salida RD3 Dato3 LCD27 Salida RD4 Dato4 LCD28 Salida RD5 RW LCD29 Salida RD6 RS LCD33 Salida RB0 Control Multiplexor34 Entrada RB1 Up Pulsador35 Entrada RB2 Down Pulsador36 Entrada RB3 Pulsador137 Entrada RB4 Pulsador238 Entrada RB5 Pulsador3
El porque de utilizar estos pines han sido por diferentes motivos, como por ejemplo las resistencias de pull-up configurables que vienen en el puerto B para así no tener que ponerlas externas en los pulsadores, la facilidad en el manejo de los datos en el PORTD para comunicación con el LCD…
En el siguiente esquema mostramos las salidas que van dirigidas a leds y las entradas de pulsadores y testigos.
![Page 6: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/6.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 44
2.4.2.4. Driver y relés
Para realizar la operación de arrancado tenemos que hacer el puente de los cables que llegan a la llave de contacto. Estos puentes los haremos con tres relés que van alimentados a 12V. Para separar la parte del micro, que opera a 5V, de los relés, se va a utilizar un driver de potencia como es el L293B que permite ser alimentado a una tensión de hasta 36V mientras que la lógica de control es de 5V. Este integrado es capaz de suministrar una corriente de 1A con picos de 2A. Consta de 4 canales de los cuales utilizaremos tres. Además de conectar las salidas del micro a sus correspondientes entradas hay que habilitar el dispositivo por los pines 1 y 9 conectándolos a VCC. El esquema de esta parte del sistema es el siguiente:
12
34
5
12
34
5
12
34
5
2.4.2.5. Multiplexor del Puerto Serie
Uno de los dos módulos de comunicación serie que dispone el micro es la USART (Universal Synchronous Asynchronous Receiver Transmitter). Este dispositivo esta indicado para las comunicaciones con elementos externos al micro y que cumplan con el protocolo RS-232. Esta USART es totalmente configurable en cuanto a la velocidad de transmisión, número de bits de datos, de stop… con lo cual se adapta perfectamente a las comunicaciones que nos son necesarias entre el micro – GPS y micro – GSM.
![Page 7: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/7.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 45
Los pines que se utilizan para este periférico son el RC6-TX y RC7-RX y debemos establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos dispositivos externos. A continuación vemos un diagrama de bloques donde explicamos esto.
Para realizar esta función se ha elegido el 74HC4066 que es un circuito CMOS que posee 4 interruptores analógicos. Uniremos en dos parejas las salidas y los enable de manera cruzada, y estos a una misma señal del micro y su invertida. Con lo cual si ponemos a “1” el pin del micro seleccionaremos sólo un par de interruptores y si está a “0” los dos contrarios. En el siguiente esquema se muestra la configuración completa.
1
2
3
RX Micro
TX
MUXRX1
TX1 RX TX
RX2 TX2
RX GPS TX
RX GSM TX
![Page 8: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/8.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 46
2.4.3. Organización de la Memoria
Cuando se comentaron brevemente las características del micro vimos que dispone de 368 bytes de memoria RAM. Al comenzar esta aplicación se ha tenido en cuenta mucho la disposición y la forma que tiene este micro para manejar esta memoria que además está dividida en 4 bancos diferentes. Esto es importante planteárselo ya que los mensajes NMEA y la recepción de SMS deben, en primer lugar, almacenarse en RAM para después ser tratados, no pudiendo exceder en ningún momento los límites de ésta. En primer lugar veamos el mapa de memoria del 16F877 y a continuación iremos distribuyendo en función de las necesidades de la aplicación.
Selección de bancoFSR,7 0 1 0 1
STATUS,IRP 0 0 1 1Banco 0 Banco 1 Banco 2 Banco 3
![Page 9: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/9.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 47
Banco 0: en este banco se encuentran los registros especiales del micro pero tenemos disponibles 96 bytes que usaremos para almacenar los registros que necesitaremos para la aplicación. En la siguiente tabla vemos todos los que se han definido a partir de la dirección 0x20 ;======================================== ;Registros desde 0x20 a 0x7F --> 96 bytes ;========================================
cblock 0x20 direccion_RAM_entrante direccion_RAM_saliente direccion_FLASH direccion_EEPROM direccion_FIN dato dato1 dato2 dato_ascii lon_sms mascara mascara_aux resto templcd templcd2 cuanto MS
temp temporizador TIMES TIMES2 ind1 ind2 muestra_pantalla ESTADO unidades decenas centenas umillar dmillar H_byte L_byte mula mulb num_llamadas cod_error
endc
Banco 1: este banco empieza en la dirección 0xA0 hasta la 0xFF y tiene 96 bytes disponibles para el usuario. En este banco vamos a almacenar el mensaje NMEA que nos manda el GPS que esta estimado para el caso del GPRMC sea de 72 bytes.
0xA0 0xEC 0xFF
72 bytes
Banco 2: este banco empieza en la dirección 0x110 hasta la 0x17F y tiene 112 bytes disponibles. En este banco almacenaremos el SMS entrante que proviene del móvil. Para un mensaje del tipo configuración del nuevo teléfono master tenemos una longitud de 28 bytes más las cabeceras y el número de envío que hace un total de 58 bytes.
0x110 0x14A 0x17F
58 bytes
![Page 10: PICbibing.us.es/proyectos/abreproy/50027/fichero/PFC+Ivan...establecer dos canales de comunicación, con lo cual montaremos un multiplexor para poder usar la misma USART para los dos](https://reader031.vdocuments.co/reader031/viewer/2022011821/5eb5447b43db7d5a0a28aee9/html5/thumbnails/10.jpg)
Localizador GPS-GSM Iván Rodríguez Carmona
2.4. Subsistema 16F877 - 48
Banco 3: este banco empieza en la dirección 0x190 hasta la 0x1FF y tiene también 112 bytes disponibles. En esta zona de memoria generaremos el SMS saliente con la posición capturada del GPS y el número de destino, todo ello en formato PDU. La longitud estimada de este mensaje es de unos 90 bytes
0x190 0x1EA 0x1FF
90 bytes
A groso modo este es el desglose del mapa de memoria y como se usa en el programa. Hay momentos en los que los bancos, además de su función principal, se usan para otras operaciones como la conversión de formatos de cadenas, la comparación de llamadas entrantes, almacenamiento temporal…