Ejemplo Cargador

download Ejemplo Cargador

of 76

Transcript of Ejemplo Cargador

  • 8/13/2019 Ejemplo Cargador

    1/76

  • 8/13/2019 Ejemplo Cargador

    2/76

  • 8/13/2019 Ejemplo Cargador

    3/76

    Ttulo: Diseo e implementacin de un radiomdem energticamenteautosuficiente

    Autores: Omar Almerich Gonzlez y Jose Daniel Flores Rancao

    Director: Gabriel Montoro Lpez

    Fecha: 28 de setiembre de 2010

    Resumen

    El objetivo principal del proyecto es disear un sistema autnomo de bajoconsumo capaz de recoger los datos que nos interesen del exterior (ya seatemperatura, humedad, presin atmosfrica ,etc ..) y enviarlos de manerainalmbrica a un receptor donde estos se procesaran.

    El diseo del sistema se desglosa en dos partes, la parte de la alimentacindel sistema que convierte el conjunto en autosuficiente y la parte deadquisicin, tratamiento y transmisin de los datos.

    El abastecimiento de energa del sistema se realiza mediante dos pilas AAAlas cuales se recargan con una clula solar.

    La adquisicin de datos exteriores en nuestro caso se realiza mediante unsensor de temperatura analgico y el procesado y envo de la informacin serealiza mediante el kit eZ430-RF2500 el cual incorpora el microcontroladorMSP430F2274 en el cual introduciremos un algoritmo que se adapte anuestras necesidades.

    Tambin se realiza el diseo del circuito acondicionador de seales tanto parala recarga de las pilas mediante una clula solar, como para la adaptacin dela salida del sensor de temperatura a la entrada del conversor A/D del

    integrado.

  • 8/13/2019 Ejemplo Cargador

    4/76

    Title: Design and implementation of a self-energy radio modem.

    Authors: Omar Almerich Gonzlez and Jose Daniel Flores

    Director: Gabriel Montoro Lpez

    Date: September, 28th 2010

    Overview

    The main objective of the project is to design an autonomous system of lowconsumption capable of collecting the data we are interests in from outside(either temperature, humidity, atmospheric pressure, etc,.) and send themwirelessly to a receiver where these will be processed.

    The system design is divided into two parts, the part of the system power thatmakes the whole system self-sufficient and part of the acquisition, treatmentand transmission of data .

    The system energy supply is performed by two AAA batteries which arerecharged with a solar cell.

    The outside data acquisition in our case is done through a temperature sensoranalogue and the information is processed and sent by the kit eZ430-RF2500that incorporates the microcontroller MSP430F2274 in which introduce analgorithm adapted to our needs.

    The circuit conditioner of signals is designed as well. It is done in order torecharging the batteries through a solar cell, and for the adaptation of the outlettemperature sensor to the entrance to the converter A/D of integrated.

  • 8/13/2019 Ejemplo Cargador

    5/76

    NDICE

    INTRODUCCIN ............................................................................................... 1

    CAPTULO 1. KIT EZ430-RF2500-SE ............................................................... 5

    1.1. Descripcin kit eZ430-rf2500 ............................................................................................ 5 1.1.1. Transceptor CC2500 .............................................................................................. 9 1.1.2. Microcontrolador MSP430F2274 .......................................................................... 10

    1.2. Diseo de la red ............................................................................................................... 12 1.2.1. SimpliciTI Network Protocol .................................................................................. 12

    CAPTULO 2. ALIMENTACIN AUTNOMA DEL SISTEMA ....................... 16 2.1. Diseo circuito alimentacin .......................................................................................... 16

    2.1.1 Cargador de bateras ............................................................................................ 16 2.1.2 Circuito estabilizador de alimentacin: MCP1640 ................................................ 19 2.1.3 Diseo circuito cargador + estabilizador en Proteus ............................................ 22

    2.2. Sensor analgico de temperatura .................................................................................. 23 2.2.1 Diseo circuito sensor analgico de temperatura en Proteus .................................. 27 2.2.2 Cambio de sensor de temperatura ......................................................................... 28

    2.3. Sistema completo ............................................................................................................ 30

    2.4. Software para el microcontrolador MSP430F2274 ....................................................... 32

    CAPTULO 3. RESULTADOS EXPERIMENTALES ....................................... 38

    3.1 Pruebas de laboratorio ................................................................................................... 38 3.1.1 Clula Solar .......................................................................................................... 38 3.1.2 Estabilizador MCP1640 ........................................................................................ 39 3.1.3 Pruebas Sistema completo ................................................................................... 41

    CAPTULO 4. IMPACTO AMBIENTAL .......................................................... 46

    CAPTULO 5. CONCLUSIONES .................................................................... 47

    CAPTULO 6. PERSPECTIVAS FUTURAS ................................................... 49

    BIBLIOGRAFA ............................................................................................... 50

    ANEXOS .......................................................................................................... 52 Anexo I. Cdigo C IAR W orkbench ............................................................................. 52 I.1 Acces Point ................................................................................................................... 52 I.2 End Device ................................................................................................................... 59

    Anexo II. Datasheet MCP1640 ..................................................................................... 66 Anexo III. Datasheet LM19CIZ ...................................................................................... 67

  • 8/13/2019 Ejemplo Cargador

    6/76

    Anexo IV. Datasheet LM317 .......................................................................................... 68 Anexo V. ADC10 ........................................................................................................... 70

  • 8/13/2019 Ejemplo Cargador

    7/76

    1

    INTRODUCCIN

    Desde siempre se han intentado mejorar los mtodos para la recoleccin demedida externas, ya sea desde el punto de vista de su eficacia como de sucoste de construccin.

    Como objetivo de este trabajo intentamos disear e implementar un sistemacapaz de coger los datos que necesitemos del exterior (temperatura, humedad,presin atmosfrica, etc.) y enviarlos de manera inalmbrica a nuestro punto deacceso para que los datos puedan ser tratados y que realice todas estasfunciones de manera autnoma y con el mnimo impacto ambiental posible.

    Antes de explicar en concreto las bases de nuestro trabajo hemos realizado un

    pequeo estudio de mercado para ver que tipo de productos hay disponiblescon unas caractersticas parecidas a las del prototipo que deseamos construir yas saber si aportamos algo nuevo o no, y en que lugar nos encontramos delmercado.

    En el mercado hay muchos productos que recogen datos del exterior y losenvan a una estacin central donde se pueden ver los resultados, son lasconocidas estaciones meteorolgicas.

    Fig. 0.1 Estacin meteorolgica profesional.

    Con nuestro prototipo lo que intentamos hacer es una estacin personalizadapara cada cliente, es decir, que el cliente nos comunique los datos que necesitarecoger como temperatura, presin atmosfrica, humedad, y no exclusivamente

    datos meteorolgicos como podran ser tambin cantidad de nutrientes en elsustrato, nivel de radiacin solar, nivel de PH del agua, etc.., y le montaramos

  • 8/13/2019 Ejemplo Cargador

    8/76

    2

    a cada cliente la estacin personalizada que necesita, cosa que en el mercadono hemos encontrado ni en un precio parecido, ni en tamao, y ni en facilidadde instalacin.

    El prototipo que vamos a realizar dependiendo de los sensores que furamos a

    ponerle segn el cliente tendra un precio aproximado de entre 50 y 100.

    Entonces lo deberamos comparar con las estaciones meteorolgicas de unprecio aproximado ya que algunas como la de la figura 0.1 pasan de 12000 ylas que estaran sobre el precio de nuestro prototipo sera la de la figura 0.2.

    Fig. 0.2 Estacin meteorolgica para particulares.

    Estas estaciones meteorolgicas econmicas que tienen un precio parecido al

    de nuestro prototipo los datos que recogen son presin atmosfrica,temperatura y humedad y no existe la posibilidad de pedir la personalizacindel aparato o alguna modificacin del producto para adaptarlo a nuestrasnecesidades.

    Otra ventaja que tiene nuestro diseo es que los datos no son slo mostradospor pantalla sino que son enviados a un ordenador lo que nos permite tratar yalmacenar los datos cosa que con la estacin econmica no podemos hacer.

  • 8/13/2019 Ejemplo Cargador

    9/76

    3

    Lo que abre mucho el mercado de nuestro proyecto es la posibilidad de poderadaptar para cada cliente el producto final sin que ello suponga un incrementodesproporcionado del precio, cosa que no hemos encontrado en el mercadoactual a no ser que multipliques y por mucho, el precio final del producto.

    El proyecto se divide en dos partes claramente diferenciadas, la parteencargada de la alimentacin del sistema (kit eZ430-rf2500T) mediante dosbateras AAA las cuales sern recargadas gracias a la energa solar y lasegunda parte que es la encargada de recoger los datos que nos interesen delexterior, tratarlos y enviarlos donde sern almacenados y analizados. En lasiguiente figura vemos el esquema de esta parte del proyecto.

    Fig. 0.3 Kit eZ430-RF2500-se

    La memoria del proyecto la desglosamos en tres captulos:

    -El primero donde se detallan las diferentes partes que conforman el kit eZ430-rf2500, el cual incorpora como partes ms importantes el transceptor CC2500encargado del envo inalmbrico de los datos y el microcontroladorMSP430F2274 en cual programamos para que realiza las funciones quenecesitamos.

  • 8/13/2019 Ejemplo Cargador

    10/76

    4

    -El segundo captulo se basa en el diseo e implementacin de el sistemaautnomo de alimentacin, tanto del circuito que recarga las bateras como delcircuito que estabiliza la alimentacin del sistema a pesar de tener una fuentevariable como es la clula solar y la transforma en un voltaje constante.Tambin se detalla que sensor de temperatura utilizamos en particular y en

    funcin de su salida analgica el cdigo necesario para gestionar esainformacin y enviarla.

    -El tercer captulo se realizan las medidas experimentales, es decir, se valida elfuncionamiento del sistema completo realizando las pruebas pertinentes en ellaboratorio para comprobar su correcto funcionamiento y con esta informacinse extraen las lneas futuras y las conclusiones de nuestro proyecto.

  • 8/13/2019 Ejemplo Cargador

    11/76

    5

    CAPTULO 1. KIT EZ430-RF2500-SE

    1.1. Descripcin kit eZ430-rf2500

    En primer lugar detallaremos todo el material que viene con el kit eZ430-RF2500 que aparte de un CD con distintos programas como el IAR y ejemplosde cdigos para el microcontrolador MSP430 encontramos todos los elementosde hardware que podemos ver en la figura.

    Fig. 1.1 Kit eZ430-RF2500-se

    - 2 tarjetas eZ430-RF2500T.

    - Interface USB eZ430-RF.

    - Soporte para 2 bateras tipo AAA.

    - CD con documentacin, herramientas de desarrollo y software demonitorizacin.

    Este kit es una completa herramienta de desarrollo de software para proyectosinalmbricos ( wireless ). Utiliza una interface USB lo que facilita lainteractuacin a la hora de manipular el microcontrolador de ultra-bajo consumoMSP430F2274 a 16Mhz y el transceptor inalmbrico CC2500 a 2.4Ghz.

  • 8/13/2019 Ejemplo Cargador

    12/76

    6

    La tarjeta tiene accesibles los pines ms utilizados de una manera msaccesible que teniendo que soldarlo directamente en la placa como se puedever en la siguiente figura donde se describe con detalle la funcin de cada unode los pines disponibles.

    Fig. 1.2 Esquema de los pines accesibles de la tarjeta

    Fig. 1.3 Battery Board Pinouts

  • 8/13/2019 Ejemplo Cargador

    13/76

    7

    Fig. 1.4 eZ430-RF2500T Target Board Pinouts

    Para programar nuestras aplicaciones en el microcontrolador disponemos dedos herramientas:

    - IAR Embedded Workbench Integrated Development Environment(IDE).

    - Code Composer Essentials (CEE).

    Las tarjetas eZ430-RF2500T pueden realizar dos papeles diferentes en nuestrared inalmbrica dependiendo del tipo de programacin que se le haya instaladoen el microcontrolador, pueden actuar de punto de acceso (AP, Acces Point ) ocomo dispositivo final (ED, End Device ).

  • 8/13/2019 Ejemplo Cargador

    14/76

    8

    Fig. 1.5 Tarjeta eZ430-RF2500T

    Las tarjetas de eZ430-RF2500T (figura 1.5) incluyen los siguientescomponentes:

    - Microcontrolador MSP430F2274: 32kB de memoria Flash, 1kB deRAM, USCI (UART, 2xSPI, I2C, IrDA), 10-bit 200ksps ADC, 2amplificadores operacionales.

    -Transceiver CC2500: 2.4GHz, banda multicanal ISM de baja potencia.

    -Dos LEDs.

    - Un pulsador.

    Cada tarjeta puede ir conectada indistintamente o al soporte de las bateras (2pilas AAA) o a la interface USB para su alimentacin. La interface USB permiterecibir y enviar de forma remota informacin a nuestro ordenador utilizando laaplicacin UART del MSP430.

    El UART es la base del sistema de comunicacin, este chip controla los puertosy dispositivos serie y se encuentra integrado en la placa de la tarjeta. Susfunciones principales son manejar las interrupciones de los dispositivosconectados al puerto serie, convertir los datos en formato paralelo ytransmitirlos al bus del sistema en formato serie para que puedan sertransmitidos a los puertos y viceversa.

    Es un dispositivo programable donde se establecen las condiciones detransmisin (velocidad, paridad, longitud, bits de parada, etc.)

  • 8/13/2019 Ejemplo Cargador

    15/76

    9

    1.1.1. Transceptor CC2500

    El CC2500 es un transceptor diseado para aplicaciones de bajo consumo a2.4Ghz. Su circuitera trabaja dentro de la banda frecuencial ISM para usosindustriales, cientficos y mdicos (entre 2400MHz a 2483.5MHz).

    Soporta varios tipos de modulacin llegando hasta 500Kbaudios. Es capaz dealmacenar datos, trabajar con paquetes e indicar la calidad del canal de enlace.

    Los parmetros principales de las operaciones realizadas en el CC2500pueden ser controlados con una interface SPI. La gestin de cola de datos enel buffer del transceptor es gestionada mediante la poltica FIFO. Suele serusado junto con un microcontrolador y otros componentes pasivos.

    Fig. 1.6 Pinout Transceptor CC2500

  • 8/13/2019 Ejemplo Cargador

    16/76

    10

    El transceptor CC2500 tiene diferentes estados en los cuales realiza funcionesdiferentes:

    -Transmitir.

    -Recibir.

    -Idle: preparado para recibir, pero no lo hace (algunas funciones delHardware se desactivan y consume menos energa).

    -Sleep: Todas las partes del transceptor estn apagadas. Hay que teneren cuenta que en ocasiones despertar el sistema puede consumir msenerga que dejarlo en Idle.

    Las caractersticas principales relacionadas con nuestro tipo de envio deltransceptor CC2500 (Rendimiento RF) son:

    - Alta sensibilidad (-104 dBm a 2,4 baudios, 1 % de tasa de error).

    - Bajo consumo de corriente (13,3 mA en RX, 250 baudios, de entradamuy por encima de la sensibilidad lmite).

    - Potencia de salida programable hasta +1 dBm.

    - Datos programable desde 1,2 a 500 kBaudios.

    - Rango de frecuencia: 2400 a 2483,5 MHz.

    1.1.2. Microcontrolador MSP430F2274

    Este microcontrolador es de la familia de potencia ultra-baja MSP430 [16] deTexas Instruments. Estos pueden ser usados en una gran variedad deaplicaciones. La arquitectura, combinada con cinco modos de conservacin deenerga, optimiza la durabilidad de sus bateras, ayudando, de este modo, aque su utilizacin se extienda a una gran variedad de posibilidades.

  • 8/13/2019 Ejemplo Cargador

    17/76

    11

    En el dispositivo destaca una CPU de 16 bits RISC, registros de 16 bits ygeneradores constantes que contribuyen a maximizar la eficiencia del cdigo.

    El oscilador controlado digitalmente (DCO, Digitally Controlled Oscillator)permite cambiar el estado de los mdulos de bajo consumo al modo activo en

    menos de 1 s.

    La serie de MSP430x22x se basa en microcontroladores de seal mixada y deconsumo ultra-bajo, con dos temporizadores de 16 bits, un interface decomunicacin universal, un conversor analgico-digital de 10 bits queutilizaremos en nuestro caso para tratar la seal analgica procedente delsensor de temperatura, un controlador de datos de transferencia (DTC, DataTransfer Controller), dos amplificadores operacionales de uso general en losdispositivos de MSP430x22x4 y 32 pines I/O.

    Fig. 1.7 Pinout microcontrolador msp430f2274

  • 8/13/2019 Ejemplo Cargador

    18/76

    12

    Tpicamente, en las aplicaciones que se hace uso de estos microcontroladoresaparecen sensores que capturan seales de forma analgica, convirtiendoestas seales a formato digital y posteriormente procesar los datos paramostrarlos, o bien transmitirlos a otro equipo a travs de radiofrecuencias (RF).

    1.2. Diseo de la red

    1.2.1. SimpliciTI Network Protocol

    Los transceptores CC2500 utilizan para su comunicacin radio el protocoloSimpliTI, protocolo propiedad de Texas Instruments.

    Es un protocolo de radiofrecuencia que utiliza baja potencia y es capaz deintegrar redes que pueden llegar a los 30 nodos. Al poder permanecerdormidos durante largos intervalos de tiempo hace que SimpliciTI sea unprotocolo de baja potencia, tambin es de bajo coste al hacer uso de memoriasflash inferiores a los 4 kBytes y memorias RAM menores de 512 Bytes. Por lotanto, se puede decir que SimpliciTI rene las principales propiedades quecaracteriza ZigBee que son gran nmero de nodos y muy bajo consumo.

    SimpliciTI ha sido diseado para una fcil implementacin, usando los mnimosrecursos requeridos por parte de los microcontroladores. Por ello funcionaperfectamente en los microcontroladores y transceptores utilizados en esteproyecto.

    SimpliciTI soporta dispositivos finales denominados ED (End Device) que sonlos dispositivos que se comunican con el AP (Acces Point) encargado deidentificar a todos los EDs de la red asignndoles un identificador cuandoentran en comunicacin con l, de este modo cuando un ED se comuniquepara enviar paquetes sabr su precedencia segn el identificador que

    anteriormente le ha otorgado.

    Los mensajes sern almacenados por el AP. Una opcin que proporcionaSimpliciTI es extender la red mediante extensores de rango (RE) que permiteampliar la distancia con hasta cuatro saltos.

    El protocolo SimpliciTI viene completamente integrado al kit EZ430-RF2500 ycomo se ha comentado anteriormente viene con un ejemplo de una red quemide la temperatura del sensor interno del MSP430.

  • 8/13/2019 Ejemplo Cargador

    19/76

    13

    El tipo de comunicacin utilizada es la siguiente:

    Fig. 1.8 Red proporcionada por SimpliciTI

    En nuestro proyecto nicamente se ha implementado un ED o emisor demensajes donde est integrado el sensor de temperatura analgica, pero laconfiguracin est diseado para que el AP o receptor pueda recibir tantoscomo el protocolo permita.

    A continuacin se muestra un diagrama de bloques con los estados por los quepasa el microcontrolador desde el momento en que se pone en marcha hastasus actuaciones. Se describe la lgica de funcionamiento con la que acta amedida que pasan los diferentes eventos a los que est sujeto.

  • 8/13/2019 Ejemplo Cargador

    20/76

    14

    Fig. 1.9 Diagrama de bloques, lgica de funcionamiento microcontroladorEmisor

    Una vez en marcha el emisor busca al receptor para establecer un canal decomunicacin, en el caso de encontrarlo recibe un identificador el cual tendrque incluir cada vez que pretenda enviar un mensaje.

    Una vez haya establecido la comunicacin pasa a la espera de recibirinformacin por parte del resto del circuito conforme suceda o no unacontecimiento informativo. En el caso de recibir esta activacin prepara elmensaje con el identificador de emisor que le concedi el receptor y lo envava radio por el canal establecido.

  • 8/13/2019 Ejemplo Cargador

    21/76

    15

    Despus pasa nuevamente al punto de espera de nuevos acontecimientos porparte del resto de circuito. El bucle es infinito y siempre estar a la espera derecibir mensajes o nuevos emisores. Se desactivar interrumpiendo sualimentacin.

  • 8/13/2019 Ejemplo Cargador

    22/76

    16

    CAPTULO 2. ALIMENTACIN AUTNOMA DELSISTEMA

    2.1. Diseo circuito alimentacin

    2.1.1 Cargador de bateras

    Previamente al diseo de un circuito capaz de recargar pilas mediante un panelsolar, se comprob la tensin de alimentacin de cada unos de loscomponentes que integran el kit eZ430-RF2500 y verificamos que el rango detensin ptimo es de 3V a 3.9V debido a la limitacin de alguno de loscomponentes.

    Fig.2.1 eZ430-RF2500 Battery Board

    En el diseo tambin se ha tenido en cuenta la posible sobrecarga de las pilascon los posibles problemas que con ello puede ocasionar. Para evitarlo se haverificado que el circuito trabaje con la corriente de carga estndar de unadcima parte de la capacidad de la batera con un tiempo de carga mximo de10 a 14 horas sin que exista peligro de sobrecarga. El diseo del circuito esptimo tanto para pilas AA como AAA.

  • 8/13/2019 Ejemplo Cargador

    23/76

    17

    En la siguiente grfica se puede comprobar la curva de carga de las pilasescogidas.

    Fig. 2.2 Curva carga pilas AAA

    Se puede observar como la carga sigue una curva exponencial. Se podraafirmar que hasta el 80% de su carga sigue una funcin lineal y desde esepunto hasta su capacidad mxima el tiempo de carga es mucho mayor.

    La corriente de carga debe estar en el margen de 150 a 180 mA. En nuestrocaso utilizamos 2 pilas AAA conectadas en serie, porque la misma corriente decarga circular a travs de todas las pilas, lo que permite que se carguen deforma simultnea.

    Para obtener una corriente de 180 mA utilizamos un regulador de tensin tipoLM317 como regulador de corriente y protector contra sobrecargas que estdiseado para ajustar su resistencia interna entre los terminales IN y OUT paramantener una tensin constante de 1.25V entre los terminales OUT y ADJ(para ms informacin sobre el LM317 consultar anexos).

    Escogiendo un valor de R 1 como el del ejemplo, circular exactamente unacorriente de 180 mA.

    R1 = (1.25V / 0.180A) = 6.94 (valor real 6.8 )

  • 8/13/2019 Ejemplo Cargador

    24/76

    18

    Por conveniencia, se ha aadido un LED al cargador. Este LED se ilumina slocuando la corriente de carga est circulando, por lo que podemos verificar quelas bateras estn haciendo buen contacto.

    La mxima tensin en una pila durante la carga es de 1.5V por eso en nuestro

    caso utilizamos 2 pilas AAA eso significa 3V. Una tensin de alimentacingrande no sera ningn inconveniente porque el circuito asegura que la cargano excede de 180 mA.

    Lista de materiales

    R1 = 6.8

    R2 = 180

    C1 = 10 F 25 V electroltico

    T1 = BC547B

    IC1 = LM317T

    D1 = Diodo led de alta eficiencia (bajo consumo)

    BT 1 = Soporte de pilas adecuado

  • 8/13/2019 Ejemplo Cargador

    25/76

    19

    La siguiente figura muestra el diseo del circuito con los componentes antescitados.

    Fig. 2.3 Circuito cargador pilas

    2.1.2 Circuito estabilizador de alimentacin: MCP1640

    Debido a que la clula solar dependiendo del da (soleado, nublado, etc) puedevariar el margen de alimentacin generado, se ha optado por incluir unregulador de tensin para estabilizar la tensin de entrada. En este caso se hadecidido adaptar el regulador MCP1640 que se puede ajustar para un rango detensin de salida entre 2V y 5.5V.

    Segn las caractersticas de nuestro diseo, hemos considerado una tensinestable de salida del integrado de 3.3V la cual simultneamente tendr lafuncin de recargar las pilas como la de alimentar el sensor de temperaturaanalgico y la tarjeta eZ430-RF2500T..

  • 8/13/2019 Ejemplo Cargador

    26/76

    20

    Fig.2.4. Pinout MCP1640

    El MCP1640 es un regulador elevado sncrono que se caracteriza por unatensin de trabajo a partir de tan slo 0.35V, una tensin de arranque de0.65V, una corriente de reposo a partir de 19A y una corriente de apagadoinferior a 1A (para mas informacin sobre el MCP1640 consultar anexos).

    En la grfica se puede observar la relacin entrada/salida y comprobamostericamente la evolucin de la tensin de salida con una variacin de tensinde entrada.

    Fig. 2.5 Relacin entrada/salida

  • 8/13/2019 Ejemplo Cargador

    27/76

    21

    Como resultado de las especificaciones tcnicas y de los requisitos de nuestrocircuito, el diseo final del estabilizador es el siguiente:

    Fig. 2.6 Regulador de tensin con MCP1640

    El margen de salida se puede ajustar regulando las Resistencias R1 y R2segn la ecuacin:

    En nuestro caso se ha seleccionado R1 = 976 k y R2 = 562 k .

    El condensador de valor 4.7F permite suavizar y filtrar el impulso de corriente,mientras que el condensador de valor 10 F ayuda a estabilizar el voltaje desalida durante los transitorios de carga repentina y reduce el rizado.

    La principal funcin de la bobina incluida es de reducir lo mximo posible elruido generado por el sistema.

  • 8/13/2019 Ejemplo Cargador

    28/76

    22

    2.1.3 Diseo circuito cargador + estabilizador en Proteus

    Una vez llegado a este punto se paso a realizar el esquemtico del sistemacon el programa PROTEUS de cara a poder elaborar una placa PCB.

    Debido a las limitaciones del software nos surgieron algunos problemas con laelaboracin del diseo porque no exista ninguna librera con dichocomponente. Tras su bsqueda sin xito, tuvimos que crear manualmente lasmedidas fsicas para que se correspondieran con las medidas que aparecanen el datasheet.

    En la figura 2.7 vemos el esquemtico del circuito estabilizador dealimentacin del sistema:

    Fig. 2.7 Esquemtico cargador + estabilizador

  • 8/13/2019 Ejemplo Cargador

    29/76

    23

    Una vez concluido el esquemtico y verificado su correcta elaboracin, se pasoa la realizacin del layout a doble cara del circuito especificado que podemosver en la figura 2.8.

    Fig. 2.8 PCB cargador pilas AAA

    2.2. Sensor analgico de temperatura

    Otra de las partes fundamentales del proyecto era la de incluir un sensor detemperatura analgico el cual estuviera alimentado mediante el sistema

    anteriormente descrito y conectado directamente a uno de los pines ADC10disponibles del microcontrolador MSP430f2274 y esta informacin analgicoser transformada a formato digital, ser tratada y enviada posteriormentehacia el punto de acceso.

    Inicialmente escogimos como sensor de temperatura el LM35 de NationalSemiconductor.

  • 8/13/2019 Ejemplo Cargador

    30/76

    24

    Fig.2.9 LM35

    El LM35 tiene una precisin calibrada de 1C y un rango que abarca desde -55a +150C.

    El sensor est compuesto de 3 patas (VCC - VOUT GND) , dos de ellas paraalimentarlo y la tercera entrega un valor de tensin proporcional a latemperatura medida por el dispositivo.

    La salida es lineal y equivale a 10 mV/C por lo tanto:

    +1500mV = 150C

    +250mV = 25C

    -550mV = -55C

  • 8/13/2019 Ejemplo Cargador

    31/76

    25

    En la figura 2.10 se puede apreciar la relacin lineal que existe entre la tensinde alimentacin del sensor respecto a la lectura de temperatura.

    Fig. 2.10 Minimum Supply Voltage vs. Temperature

    Viendo la salida del LM35 se decidi aadir un amplificador operacional noinversor de ganancia G = 10 dB para adaptar la salida del sensor a lasensibilidad de la entrada del ADC10 del microcontrolador.

  • 8/13/2019 Ejemplo Cargador

    32/76

    26

    El amplificador escogido fue tlv2264 de Texas Instruments.

    Fig.2.11 Amplificador TLV2264

    Este modelo es un amplificador dual y de baja tensin (entre 3V y 5V) que tieneun funcionamiento de salida Rail-to-Rail, es decir, que tienen como tensiones

    de saturacin la tensin de alimentacin.La configuracin de nuestro amplificador es la siguiente:

    Fig.2.12 Amplificador no inversor

  • 8/13/2019 Ejemplo Cargador

    33/76

    27

    La ganancia se obtiene de la siguiente ecuacin:

    En el diseo se han escogido R1 y R2 iguales por lo cual se obtiene unaganancia de 10 dB.

    2.2.1 Diseo circuito sensor analgico de temperatura en Proteus

    En la siguiente figura se puede ver el esquemtico resultante de este diseorealizado en proteus:

    Fig.2.13 Esquemtico LM35 + tlv2264

  • 8/13/2019 Ejemplo Cargador

    34/76

    28

    Una vez verificado el correcto funcionamiento del diseo esquemtico pasamosa realizar el Layout de la placa completa donde se integra tanto la parte dealimentacin autnoma como la parte del sensor de temperatura resaltado enamarillo.

    :

    Fig. 2.14 PCB LM35 + tlv2264

    2.2.2 Cambio de sensor de temperatura

    El diseo inicial sufri una serie de cambios debido a la incorporacin de unnuevo sensor de temperatura la salida del cual se adaptaba a nuestroconversor A/D sin la necesidad de incluir en el diseo un amplificadoroperacional con la consecuente reduccin del consumo total del sistema. Elsensor incluido en este caso fue el modelo LM19CIZ de NationalSemiconductor.

    En temas de diseo no ha habido que hacer ninguna modificacin porque tantoeste sensor de temperatura como el que se escogi originalmente tiene lamisma estructura como se puede apreciar en la figura 2.15.

  • 8/13/2019 Ejemplo Cargador

    35/76

    29

    Fig.2.15 Sensor de temperatura analgico LM19CIZ

    Las principales diferencias respecto al LM35 sera que la alimentacin mnimapara su funcionamiento es inferior (+2.4V hasta +5.5V) y que su salida vienedada por la siguiente ecuacin (para ms informacin sobre el LM19CIZconsultar anexos):

    VO = 11.69 mV/C x T + 1.8663 V.

    En la siguiente tabla se puede ver la relacin entre la tensin de salida delsensor y la temperatura ideal segn su datasheet:

    Fig.2.16 VOUT vs Temperatura

  • 8/13/2019 Ejemplo Cargador

    36/76

    30

    En base a los valores recogidos en el laboratorio, esta tabla a medidasprcticas se convierte en la siguiente figura:

    Fig. 2.17 Salida sensor LM19CIZ respecto diferentes temperaturas

    Se puede comprobar cmo los valores obtenidos experimentalmente se

    corresponden a los valores tericos demostrando as el eficientefuncionamiento del sensor escogido.

    2.3. Sistema completo

    Llegados a este punto unificamos tanto el circuito diseado para cargar laspilas como el sensor de temperatura escogido que estar integrado en el EDdentro del mismo esquemtico.El resultado final fue el siguiente:

  • 8/13/2019 Ejemplo Cargador

    37/76

    31

    Fig.2.18 Esquemtico sistema completo

    Debido a que la alimentacin mnima del sensor de temperatura es de +2.4V,utilizamos la salida estable del MCP1640 que es de 3.3V para alimentar tanto aeste componente como para alimentar el eZ430-RF2500T.

    A continuacin se puede ver el Layout final integrando ambas partes:

    Fig.2.19 Layout sistema completo

  • 8/13/2019 Ejemplo Cargador

    38/76

    32

    Despus de este paso se procedi a la insolacin de la PCB y posteriorsoldado de todos los componentes utilizados en nuestro diseo junto con sucomprobacin y verificacin para descartar posibles errores de circuitera.

    La placa final obtenida y con todos los elementos integrados es la siguiente.

    Fig. 2.20 Placa final

    Para reducir el tamao de la placa todo el material utilizado en la placa comolas resistencias y condensadores son de encapsulado SMD lo que nos permiteconseguir un diseo final mas minimizado con todas las ventajas que conlleva.

    2.4. Software para el microcontrolador MSP430F2274

    Para la programacin del microcontrolador MSP430F2274 se ha utilizado elSoftware IAR Embedded Workbench, facilitado gratuitamente por TexasInstruments. Este programa est disponible tanto para la programacin en Ccomo en Ensamblador (cdigo mquina). En nuestro caso hemos utilizado ellenguaje en C porque es el que hemos utilizado ms y mejor nosdesenvolvemos.

  • 8/13/2019 Ejemplo Cargador

    39/76

    33

    Fig. 2.21 IAR Embedded Workbench KickStart Workspace

    Se puede ver como el entorno de trabajo es similar al de otras herramientas detrabajo en C. Est compuesto por el entorno de programacin, las carpetas queforman el proyecto completo, las libreras necesarias para su ejecucin y lapantalla donde aparecen los posibles errores de cdigo.

    Este programa permite compilar y ejecutar el cdigo grabado a su vez en elmicrocontrolador. Tambin tiene la posibilidad de ejecutar el cdigo paso apaso para as poder saber el valor de cada una de las variables utilizadas encada momento como se puede ver en la siguiente figura.

  • 8/13/2019 Ejemplo Cargador

    40/76

    34

    Fig. 2.22 Pantalla de compilacin y ejecucin de IAR system

    Con el kit eZ430-2500T nos vienen distintas aplicaciones de software paragrabar en el microcontrolador MSP430F2274 con varias funciones, entre ellasenviar la temperatura del sensor interno del kit, enviar el nivel de batera de laspilas o una aplicacin con el encendido y apagado de los Leds al recibir oenviar datos.

    Hemos cogido como base el cdigo del envo de la temperatura del sensorinterno del kit eZ430-2500T y lo hemos modificado para que cumpliera nuestrasnecesidades.

    En nuestro caso en concreto necesitamos convertir la salida analgica (Voltaje)del sensor de temperatura LM19CIZ en un valor digital mediante uno de losconversores A/D del MSP430F2274 y almacenarlo.

  • 8/13/2019 Ejemplo Cargador

    41/76

    35

    El cdigo que realiza esta funcin es:

    {

    P2DIR |= 0x01;ADC10AE0 = 0x01;ADC10CTL0 = SREF_0+ADC10SHT_3+ADC10SR+ADC10ON+ADC10IE;ADC10CTL1 = INCH_0 + ADC10DIV_4;for( degC = 240; degC > 0; degC-- );ADC10CTL0 |= ENC + ADC10SC;resultado = ADC10MEM;ADC10CTL0 &= ~ENC;

    }

    En l activamos uno de los conversores del microcontrolador, recogemos elvalor analgico que le est entrando y lo guardamos en formato digital en

    ADC10MEM y para finalizar desactivamos el conversor (para mayorinformacin del funcionamiento de la rutina del ADC10 del microcontroladorconsultar anexos).

    Una vez ya tenemos el valor en formato digital le aplicamos un factor deconversin para poder mostrar los datos en un formato entendible, por ejemplogrados Celsius (C).

    El cdigo que realiza esta funcin es:

    {temp = resultado;

    temp(C) = ((((((temp - 700) * 4230) / 1024))+635)/3);

    }

    Y por ltimo solo nos queda enviar el valor resultante para que pueda sermonitorizado. El cdigo que realiza esta funcin es:

    {volt = (temp*25)/512;msg[0] = degC&0xFF;

    msg[1] = temp(C);msg[2] = volt;

    transmitDataString(msg);}

  • 8/13/2019 Ejemplo Cargador

    42/76

    36

    Aqu colocamos en el vector msg nuestros datos relevantes que son latemperatura y el voltaje y los enviamos mediante el comandotransmitDataString a nuestro punto de acceso para que la informacinpueda ser tratada y almacenada.

    Ahora ya solo nos queda monitorizar la informacin y como hemos modificadoel software ya existente que nos viene con el kit llamado eZ430-RF2500 Sensor Monitor nos funciona tambin su entorno grfico tanto en modoconsola como en modo grfico.

    El Modo consola nos muestra en primer trmino nos muestra el identificadorque se asigna a cada End Device. Y posteriormente nos enva la temperatura yel estado de la batera.

    Fig.2.23 Modo consola

  • 8/13/2019 Ejemplo Cargador

    43/76

    37

    Y en la siguiente figura se muestra el modo grfico indicando tambin elnmero de End Device con el nmero de esferas que aparecen las cualescontienen tambin la temperatura y el estado de la batera.

    Fig.2.24 Modo grfico

  • 8/13/2019 Ejemplo Cargador

    44/76

    38

    CAPTULO 3. RESULTADOS EXPERIMENTALES

    3.1 Pruebas de laboratorio

    3.1.1 Clula Solar

    Todo el sistema antes descrito va alimentado mediante una clula solar capazde subministrar el suficiente voltaje y potencia para recargar las bateras,alimentar tanto el sensor como la tarjeta eZ430-RF2500T.

    Las caractersticas de nuestro circuito debido a los componentes que lo formanson ptimas para una alimentacin en un margen de 3V a 4V, una corrientemxima de 200 mA .

    De los modelos encontrados que cumplan estas especificaciones se escogiel panel solar modelo MSX-005F de Farnell de 0.5W de potencia, unaintensidad mxima de 180 mA y 4.5V de tensin mxima de salida.

    Fig. 3.1 Panel Solar

  • 8/13/2019 Ejemplo Cargador

    45/76

    39

    Se han comprobado estas medidas en el laboratorio obteniendo los siguientesresultados:

    Tensin mx.(a pleno sol) 4.65VCorriente mx.

    (panel solar cortocircuitado) 165.2mA

    Potencia mx.769 mW

    3.1.2 Estabilizador MCP1640

    Cabe recordar que en el sistema se ha instalado un regulador de voltaje(MCP1640) el cual nos estabiliza la variacin de alimentacin de la clula solara una tensin constante de 3.5V reales como se puede apreciar en la siguientefigura 3.2 y 3.3 con una tensin real de trabajo a partir de 0.39V y hasta 5.5V yuna tensin real de arranque de 0.632V. (Todos estos valores han sidotomados en el laboratorio).

    Fig. 3.2 Salida MCP1640 en laboratorio.

  • 8/13/2019 Ejemplo Cargador

    46/76

    40

    Fig. 3.3 Salida MCP1640 en osciloscopio

    Para verificar prcticamente la estabilidad respecto a las variaciones de tensinde entrada se ha realizado la medicin en todo el margen de alimentacin

    obteniendo la siguiente grfica:

    Fig. 3.4 Salida MCP1640 en relacin alimentacin variable de la placa solar

  • 8/13/2019 Ejemplo Cargador

    47/76

    41

    Los valores tomados prcticamente en esta grfica reflejan la estabilidad queproporciona esta pieza a nuestro circuito respecto a la variacin dealimentacin de entrada generada por la placa solar cumpliendo as con lasespecificaciones tericas de este circuito.

    3.1.3 Pruebas Sistema completo

    El sistema completo ha sido diseado bajo el requisito de mnimo consumoposible ya que nuestro principal objetivo es conseguir un sistema totalmenteautnomo.

    Para determinar experimentalmente la duracin de las bateras se hanrealizado una serie de pruebas para comprobar la descarga de estas mientrasel dispositivo est realizando transmisiones continuamente.

    Se midi en primer lugar el consumo del sistema completo (Acces Point + EndDevice) pero en el caso en que las bateras no se estaban recargando como semuestra en la figura 3.5 obteniendo 0,398 mA de consumo del kit.

    Fig. 3.5 Sistema completo sin re-cargador de bateras

  • 8/13/2019 Ejemplo Cargador

    48/76

    42

    A continuacin se conect toda la circuitera diseada para la recargaautnoma de las bateras como se observa en la figura 3.6 y el consumoaument hasta 0,78 mA llegando hasta una carga mxima en las pilasaproximada de 2,9 V.

    Fig. 3.6 Sistema completo con cargador de bateras

    Todas las pruebas de consumo se han realizado con una frecuencia de envopor segundo de 0,787 Hz pensando en lneas futuras donde se necesite unaactualizacin rpida de los datos, prcticamente en tiempo real.

    Se realiz tambin una medicin de la distancia mxima a la cual el kit permiteoperar y comprobamos que para asegurar que el 100% de los paquetesenviados se reciban correctamente se poda alcanzar una distancia de 72metros en campo abierto. A partir de ella el servicio queda degradado y sepierden paquetes de datos.

    La ltima prueba realizada fue de carga y descarga de las bateras. En cuantoa la carga de las pilas AAA, como ya hemos comentado anteriormente, sigueuna curva exponencial.

  • 8/13/2019 Ejemplo Cargador

    49/76

    43

    En la siguiente figura se muestra la evolucin de la carga respecto el tiempo yas afirmar que los resultados experimentales son fieles a los tericos.

    Fig. 3.7 Curva de carga real bateras

    Para comprobar el tiempo de descarga de las pilas se realiz la pruebamientras se realizaban transmisiones continuas entre el ED y el AP a lafrecuencia antes mencionada ( 0,787 envos / seg ) obteniendo as un tiempode descarga de 2,5 semanas (420 horas) llegando en este tiempo a efectuaraproximadamente 2 millones de transmisiones.

    Para colocar el dispositivo en el medio que queremos analizar hemos escogido

    un receptculo rgido para protegerlo de posibles impactos y para protegerlocontra la erosin siendo transparente para no interferir en la captacin de laradiacin solar y impermeable para evitar que entre el agua como podemos veren las figuras 3.8 y 3.9. Como se puede apreciar las dimensiones son mayoresde las necesarias pensando si en un futuro se incorporan nuevos componentesal sistema no tener que cambiar la caja protectora por una de mayor tamao.

  • 8/13/2019 Ejemplo Cargador

    50/76

    44

    Fig. 3.8 Sistema completo dentro de receptculo protector

    Fig. 3.9 Sistema completo dentro de receptculo abierto

  • 8/13/2019 Ejemplo Cargador

    51/76

    45

    Con estos resultados podemos llegar a la conclusin de que no habra ningnproblema de implantar un mayor nmero de sensores u otro tipo decomponentes de bajo consumo al prototipo diseado sin tener problemas dealimentacin ya que en condiciones normales las bateras estn cargadascompletamente incluso cuando no hace sol.

  • 8/13/2019 Ejemplo Cargador

    52/76

    46

    CAPTULO 4. IMPACTO AMBIENTAL

    Nuestro proyecto est muy sensibilizado con el medio ambiente ya que algunasde sus caractersticas principales benefician y mucho el ahorro de recursosnecesarios para implantar y utilizar esta tecnologa.

    En primer lugar la tecnologa inalmbrica a parte de abaratar mucho los costesde instalacin y implantacin de esta tecnologa tambin desde el punto devista ambiental, nos proporciona un ahorro de recursos tanto de cable (plsticoy cobre) como la reduccin de la agresin que se produce en el medio dondese instala al no requerir conexiones externas ni instalacin de lneas, solo senecesita fijar el dispositivo donde queramos que tome las muestras.

    Otra de las caractersticas de nuestro sistema es su bajo consumo. La energaes un recurso caro y limitado y optimizando su gasto conseguimos dispositivosautosuficientes gracias a la energa solar y que no solo alargan la duracin delas bateras sino que tambin alargan su vida til con la consecuentedisminucin de los desechos producidos.

    Tambin es necesaria mencionar que las bateras AAA recargables utilizadasno contienen mercurio y son totalmente reciclables.

    Con toda esta informacin deducimos que este tipo de tecnologa es muchoms respetuoso con el medio ambiente que la mayora de tecnologas ms

    antiguas tanto en el gasto de recursos, que es mucho menor en nuestro casocomo en el impacto sobre el medio donde se instala ya que es mucho menosinvasiva.

  • 8/13/2019 Ejemplo Cargador

    53/76

    47

    CAPTULO 5. CONCLUSIONES

    Tras la finalizacin del proyecto se realiza un balance del cumplimiento del

    objetivos marcados inicialmente, si se han logrado alcanzar y las dificultadesque han aparecido durante el transcurso de su realizacin.

    El principal objetivo del proyecto era disear un sistema de bajo consumo yenergticamente autosuficiente que permita recargar unas bateras medianteuna clula solar y alimentar la circuitera necesaria para recoger los datos delexterior con los sensores necesarios.

    Se ha conseguido crear un sistema que cumple con este objetivoproporcionando la suficiente energa para alimentar a ste durante todas lashoras del da, independientemente sea durante el da a pleno sol cuando la

    clula solar proporciona mximo voltaje o por la noche donde el voltaje dealimentacin es mnimo.

    Durante su desarrollo nos hemos encontrado con algunas dificultades dediseo como la implementacin de alguna de las piezas que formaban eldiseo o tambin se han tenido que modificar algunos componentes porque sequera conseguir el mnimo consumo posible escogiendo as un sensor detemperatura que no necesitaba amplificador operacional con el consecuenteahorro de energa que esto supone.

    Recordando que este ahorro de energa es el principal objetivo de nuestrodiseo ya que como mayor sea ste ms se abre el abanico de posibilidadesde incorporar nuevos sensores o componentes al sistema y que esto no sea unproblema para el sistema autnomo de alimentacin.

    Otro objetivo fue la adquisicin de los datos emitidos analgicamente por unsensor de temperatura, transformarlos a formato digital, tratarlos con elmicrocontrolador msp430f2274, transmitirlos mediante el transceptor CC2500 yposteriormente recibirlos en el punto de acceso y ah, almacenarlos y medianteuna aplicacin grfica monitorizarlos en un PC.

    Despus de haber realizado el proyecto entre otras cosas destacamos losbuenos resultados obtenidos respecto al ahorro de energa del sistemallegando a tener una autonoma sin alimentacin de 2,5 semanas con unafrecuencia de envo de 0,787 envos por segundo, casi tiempo real, y queaunque el da sea nublado las bateras estn al mximo de su capacidad lo quenos da una idea del bajo consumo del dispositivo.

    Tambin otro aspecto a destacar es la rpida carga de las pilas con una clulasolar relativamente pequea ya que partiendo de la descarga total y hasta lacarga completa de las dos bateras AAA solo son necesarias unas 15 horas loque tambin nos da una idea de las grandes posibilidades que tiene la energa

    solar en el rpido almacenaje de energa.

  • 8/13/2019 Ejemplo Cargador

    54/76

  • 8/13/2019 Ejemplo Cargador

    55/76

    49

    CAPTULO 6. PERSPECTIVAS FUTURAS

    Las posibilidades de este tipo de tecnologa son muy extensas y variadas.

    En primer lugar y centrndonos en el mundo agrcola podemos incorporar todotipo de sensores (de humedad, presin, oxigeno, CO 2, etc...) que nos seannecesarios y que nos ayuden a gestionar mejor el agua, para la extincin deincendios, a tener informacin del tiempo que hace en cada zona de nuestrocultivo, etc...

    Y con los dispositivos de bajo consumo no tendramos problemas en implantarms sensores al diseo ya que tanto los niveles de alimentacin y baterascomo la actualizacin de los datos casi en tiempo real nos permite recogercualquier tipo de informacin del exterior sin problemas de ningn tipo.

    Ahora centrndonos en la arquitectura del proyecto que consta de un punto deacceso y un dispositivo final, esta tecnologa permite que un punto de accesogestione varios dispositivos finales lo que nos permite abrir y mucho el abanicode posibilidades, desde un control de poblaciones de animales instalndolescollares y registrando sus movimientos cada vez que pasen cerca de un puntode acceso, hasta su implantacin en aviones no tripulados para la investigacinde las condiciones en zonas de difcil acceso y prcticamente hasta dondenuestra imaginacin pueda llegar.

    Y ahora centrndonos en la alimentacin del sistema y visto que para lossensores que utilizamos en nuestro caso en concreto no necesitamos tantovoltaje se podra intentar modificar los componentes y intentar redisear elsistema para que fuera alimentado con dos pilas de botn y una clula solar demenor tamao lo que reducira el tamao final del conjunto y tambin su costede fabricacin.

  • 8/13/2019 Ejemplo Cargador

    56/76

    50

    BIBLIOGRAFA

    [1] Datasheet MSP430f2274

    http://focus.ti.com/docs/prod/folders/print/msp430f2274.html

    [2] Datasheet LM317

    http://www.datasheetcatalog.net/es/datasheets_pdf/L/M/3/1/LM317.shtml

    [3] Datasheet LM19CIZhttp://www.alldatasheet.com/datasheet-pdf/pdf/82467/NSC/LM19CIZ.html

    [4] Datasheet TLV2264

    http://www.datasheetcatalog.com/datasheets_pdf/T/L/V/2/TLV2264.shtml

    [5] Datasheet MCP1640

    http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en547128

    [6] Datasheet LM35

    http://www.national.com/ds/LM/LM35.pdf

    [7] Datasheet CC2500

    http://focus.ti.com/docs/prod/folders/print/cc2500.html

    [8] Diseo amplificadores

    http://www.unicrom.com/Tut_OpAmpNoInversor.asp

  • 8/13/2019 Ejemplo Cargador

    57/76

    51

    [9] Web oficial SimpliciTi

    http://focus.ti.com/docs/toolsw/folders/print/simpliciti.html

    [10] eZ340-RF2500 development tools

    http://focus.ti.com/docs/toolsw/folders/print/ez430-rf2500-seh.html

    [11] Manual Proteus

    http://www.abcdatos.com/tutoriales/tutorial/z8365.html

  • 8/13/2019 Ejemplo Cargador

    58/76

    52

    ANEXOS

    Anexo I. Cdigo C IAR Workbench

    A continuacin se va a incluir el cdigo de los nodos sensores. Este cdigoest basado en el programa de ejemplo del kit eZ430-RF2500 Wireless SensorMonitor.

    I.1 Acces Point

    *****************************************************************************

    #include #include "bsp.h"#include "mrfi.h"#include "bsp_leds.h"#include "bsp_buttons.h"#include "nwk_types.h"#include "nwk_api.h"#include "nwk_frame.h"#include "nwk.h"#include "virtual_com_cmds.h"#ifndef APP_AUTO_ACK#error ERROR: Must define the macro APP_AUTO_ACK for this application.#endif

    void toggleLED(uint8_t);/* reserve space for the maximum possible peer Link IDs */static linkID_t sLID[NUM_CONNECTIONS] = {0};static uint8_t sNumCurrentPeers = 0;

    /* callback handler */static uint8_t sCB(linkID_t);

    /* received message handler */static void processMessage(linkID_t, uint8_t *, uint8_t);

    /* Frequency Agility helper functions */static void checkChangeChannel(void);static void changeChannel(void);

    /* work loop semaphores */static volatile uint8_t sPeerFrameSem = 0;static volatile uint8_t sJoinSem = 0;

    static volatile uint8_t sSelfMeasureSem = 0;

  • 8/13/2019 Ejemplo Cargador

    59/76

    53

    #ifdef FREQUENCY_AGILITY/* ************** BEGIN interference detection support */

    #define INTERFERNCE_THRESHOLD_DBM (-70)#define SSIZE 25

    #define IN_A_ROW 3static int8_t sSample[SSIZE];static uint8_t sChannel = 0;#endif /* FREQUENCY_AGILITY */

    /* blink LEDs when channel changes... */static volatile uint8_t sBlinky = 0;

    //data for terminal outputconst char splash[] = {"\r\n--------------------------------------------------\r\n ****\r\n**** eZ430-RF2500\r\n ******o**** Temperature SensorNetwork\r\n********_///_**** Copyright 2009\r\n ******/_//_/***** TexasInstruments Incorporated\r\n ** ***(__/***** All rights reserved.\r\n *********SimpliciTI1.1.0\r\n *****\r\n ***\r\n--------------------------------------------------\r\n"};volatile int * tempOffset = (int *)0x10F4;

    __interrupt void ADC10_ISR(void); __interrupt void Timer_A (void);

    /* ************** END interference detection support */

    #define SPIN_ABOUT_A_QUARTER_SECOND NWK_DELAY(250)void main (void){bspIState_t intState;

    memset(sSample, 0x0, sizeof(sSample));BSP_Init();BCSCTL3 |= LFXT1S_2; // LFXT1 = VLOTACCTL0 = CCIE; // TACCR0 interrupt enabledTACCR0 = 12000; // ~1 secondTACTL = TASSEL_1 + MC_1; // ACLK, upmode

    COM_Init();//Transmit splash screen and network init notificationTXString( (char*)splash, sizeof splash);TXString( "\r\nInitializing Network....", 26 );

    SMPL_Init(sCB);

    // network initializedTXString( "Done\r\n", 6);

    /* green and red LEDs on solid to indicate waiting for a Join. */if (!BSP_LED2_IS_ON())

  • 8/13/2019 Ejemplo Cargador

    60/76

    54

    {toggleLED(2);

    }if (!BSP_LED1_IS_ON()){

    toggleLED(1);}

    /* main work loop */while (1){

    /* Wait for the Join semaphore to be set by the receipt of a Join frame from a* device that supports an End Device.** An external method could be used as well. A button press could be

    connected* to an ISR and the ISR could set a semaphore that is checked by a function* call here, or a command shell running in support of a serial connection* could set a semaphore that is checked by a function call.*/

    if (sJoinSem && (sNumCurrentPeers < NUM_CONNECTIONS)){

    /* listen for a new connection */while (1){

    if (SMPL_SUCCESS == SMPL_LinkListen(&sLID[sNumCurrentPeers])){

    break;}/* Implement fail-to-link policy here. otherwise, listen again. */

    }

    sNumCurrentPeers++;

    BSP_ENTER_CRITICAL_SECTION(intState);sJoinSem--;BSP_EXIT_CRITICAL_SECTION(intState);

    }

    // if it is time to measure our own temperature...if(sSelfMeasureSem){

    char msg [6];char addr[] = {"HUB0"};char rssi[] = {"000"};int degC, volt;volatile long temp;

    int results[2];

  • 8/13/2019 Ejemplo Cargador

    61/76

    55

    ADC10CTL1 = INCH_10 + ADC10DIV_4; // Temp Sensor ADC10CLK/5 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON +

    ADC10IE + ADC10SR;for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle

    ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start

    __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabledresults[0] = ADC10MEM;

    ADC10CTL0 &= ~ENC;

    ADC10CTL1 = INCH_11; // AVcc/2 ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON +

    ADC10IE + REF2_5V;for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle

    ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabledresults[1] = ADC10MEM;

    ADC10CTL0 &= ~ENC; ADC10CTL0 &= ~(REFON + ADC10ON); // turn off A/D to save power

    // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278// the temperature is transmitted as an integer where 32.1 = 321// hence 4230 instead of 423temp = results[0];degC = ((((((temp - 700) * 4230) / 1024))+635)/3);//(-(((float)temp)-635)*3);if( (*tempOffset) != 0xFFFF ){

    degC += (*tempOffset);}

    temp = results[1];volt = (temp*25)/512;

    msg[0] = degC&0xFF;msg[1] = (degC>>8)&0xFF;msg[2] = volt;

    transmitDataString(1, addr, rssi, msg);BSP_TOGGLE_LED1();sSelfMeasureSem = 0;

    }

    /* Have we received a frame on one of the ED connections?* No critical section -- it doesn't really matter much if we miss a poll*/

    if (sPeerFrameSem){

    uint8_t msg[MAX_APP_PAYLOAD], len, i;

  • 8/13/2019 Ejemplo Cargador

    62/76

    56

    /* process all frames waiting */for (i=0; i= 0xF)

    {sBlinky = 1;toggleLED(1);toggleLED(2);

    }}BSP_EXIT_CRITICAL_SECTION(intState);

    }

    }

    void toggleLED(uint8_t which){

  • 8/13/2019 Ejemplo Cargador

    63/76

    57

    if (1 == which){

    BSP_TOGGLE_LED1();}else if (2 == which)

    {BSP_TOGGLE_LED2();

    }

    return;}

    /* Runs in ISR context. Reading the frame should be done in the *//* application thread not in the ISR thread. */static uint8_t sCB(linkID_t lid){

    if (lid){

    sPeerFrameSem++;sBlinky = 0;

    }else{

    sJoinSem++;}

    /* leave frame to be read by application. */return 0;

    }

    static void processMessage(linkID_t lid, uint8_t *msg, uint8_t len){

    /* do something useful */if (len){

    toggleLED(*msg);}

    return;}

    static void changeChannel(void){#ifdef FREQUENCY_AGILITY

    freqEntry_t freq;

    if (++sChannel >= NWK_FREQ_TBL_SIZE){

    sChannel = 0;

    }freq.logicalChan = sChannel;

  • 8/13/2019 Ejemplo Cargador

    64/76

    58

    SMPL_Ioctl(IOCTL_OBJ_FREQ, IOCTL_ACT_SET, &freq);BSP_TURN_OFF_LED1();BSP_TURN_OFF_LED2();sBlinky = 1;

    #endif

    return;}

    /* implement auto-channel-change policy here... */static void checkChangeChannel(void){#ifdef FREQUENCY_AGILITY

    int8_t dbm, inARow = 0;

    uint8_t i;

    memset(sSample, 0x0, SSIZE);for (i=0; i INTERFERNCE_THRESHOLD_DBM){

    if (++inARow == IN_A_ROW){

    changeChannel();break;

    }}

    else{inARow = 0;

    }}

    #endifreturn;

    }

    /*------------------------------------------------------------------------------* ADC10 interrupt service routine

    ------------------------------------------------------------------------------*/#pragma vector=ADC10_VECTOR

  • 8/13/2019 Ejemplo Cargador

    65/76

    59

    __interrupt void ADC10_ISR(void){ __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)

    }

    /*------------------------------------------------------------------------------* Timer A0 interrupt service routine------------------------------------------------------------------------------*/#pragma vector=TIMERA0_VECTOR

    __interrupt void Timer_A (void){

    sSelfMeasureSem = 1;}

    I.2 End Device

    //******************************************************************************#define I_WANT_TO_CHANGE_DEFAULT_ROM_DEVICE_ADDRESS_PSEUDO_CODE#include "bsp.h"#include "mrfi.h"#include "nwk_types.h"#include "nwk_api.h"#include "bsp_leds.h"

    #include "bsp_buttons.h"#include "vlo_rand.h"

    #ifndef APP_AUTO_ACK#error ERROR: Must define the macro APP_AUTO_ACK for this application.#endif

    void toggleLED(uint8_t);

    static void linkTo(void);

    static linkID_t sLinkID1 = 0;

    #define SPIN_ABOUT_A_SECOND NWK_DELAY(1000)#define SPIN_ABOUT_A_QUARTER_SECOND NWK_DELAY(250)

    /* How many times to try a Tx and miss an acknowledge before doing a scan */#define MISSES_IN_A_ROW 2

    void createRandomAddress(void);

    volatile int * tempOffset = (int *)0x10F4; // Temperature offset set at production

    char * Flash_Addr = (char *)0x10F0; // Initialize radio address location

  • 8/13/2019 Ejemplo Cargador

    66/76

    60

    __interrupt void ADC10_ISR(void); __interrupt void Timer_A (void);

    /* work loop semaphores */static volatile uint8_t sSelfMeasureSem = 0;

    void main (void){

    addr_t lAddr;

    BSP_Init();

    if(Flash_Addr[0] == 0xFF && Flash_Addr[1] == 0xFF &&Flash_Addr[2] == 0xFF && Flash_Addr[3] == 0xFF )

    {createRandomAddress(); // set Random device address at initial startup

    }lAddr.addr[0] = Flash_Addr[0];lAddr.addr[1] = Flash_Addr[1];lAddr.addr[2] = Flash_Addr[2];lAddr.addr[3] = Flash_Addr[3];SMPL_Ioctl(IOCTL_OBJ_ADDR, IOCTL_ACT_SET, &lAddr);

    /* Keep trying to join (a side effect of successful initialization) until* successful. Toggle LEDS to indicate that joining has not occurred.*/

    while (SMPL_SUCCESS != SMPL_Init(0)){

    toggleLED(1);toggleLED(2);SPIN_ABOUT_A_SECOND;

    }

    /* LEDs on solid to indicate successful join. */if (!BSP_LED2_IS_ON()){

    toggleLED(2);

    }if (!BSP_LED1_IS_ON()){

    toggleLED(1);}

    BCSCTL3 |= LFXT1S_2; // LFXT1 = VLOTACCTL0 = CCIE; // TACCR0 interrupt enabledTACCR0 = 12000; // ~ 1 secTACTL = TASSEL_1 + MC_1; // ACLK, upmode

    /* Unconditional link to AP which is listening due to successful join. */linkTo();

  • 8/13/2019 Ejemplo Cargador

    67/76

  • 8/13/2019 Ejemplo Cargador

    68/76

    62

    __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled

    results[0] = ADC10MEM; ADC10CTL0 &= ~ENC; ADC10CTL1 = INCH_11; // AVcc/2

    ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE + REF2_5V;

    for( degC = 240; degC > 0; degC-- ); // delay to allow reference to settle ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabledresults[1] = ADC10MEM;

    ADC10CTL0 &= ~ENC;

    ///////////////////////////CODIGO SENSOR TEMPERATURA ANALOGICO////////////////////////////////////PIN 3 //// P2.0 / ACLK / A0 / OA0I0///////////

    P2DIR |= 0x01; ADC10AE0 = 0x01; ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10SR + ADC10ON +

    ADC10IE; ADC10CTL1 = INCH_0 + ADC10DIV_4;for( degC = 240; degC > 0; degC-- );

    ADC10CTL0 |= ENC + ADC10SC; __bis_SR_register(CPUOFF + GIE);results[2] = ADC10MEM;

    ADC10CTL0 &= ~ENC;

    ///////////////////////////////////////////////////////////////////////

    ADC10CTL0 &= ~(REFON + ADC10ON); // turn off A/D to save power

    // oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278// the temperature is transmitted as an integer where 32.1 = 321// hence 4230 instead of 423temp = results[0];

    temp2 = results[2];/*if( (*tempOffset) != 0xFFFF ){

    degC += (*tempOffset);}/* message format, UB = upper Byte, LB = lower Byte-------------------------------|degC LB | degC UB | volt LB |-------------------------------

    0 1 2*/

    degC = temp2;//temp2 = results[2];

  • 8/13/2019 Ejemplo Cargador

    69/76

    63

    //degC = (426/temp2)*426

    //degC=results[2];temp = results[1];volt = (temp*25)/512;

    msg[0] = degC&0xFF;msg[1] = (degC>>8)&0xFF;msg[2] = volt;

    done = 0;while (!done){

    noAck = 0;

    /* Try sending message MISSES_IN_A_ROW times looking for ack */for (misses=0; misses < MISSES_IN_A_ROW; ++misses){

    if (SMPL_SUCCESS == (rc=SMPL_SendOpt(sLinkID1, msg,sizeof(msg), SMPL_TXOPTION_ACKREQ)))

    {/* Message acked. We're done. Toggle LED 1 to indicate ack received.

    */toggleLED(1); // Toggle On LED1

    __delay_cycles(2000);toggleLED(1);break;

    }if (SMPL_NO_ACK == rc){

    /* Count ack failures. Could also fail becuase of CCA and* we don't want to scan in this case.*/

    noAck++;}

    }if (MISSES_IN_A_ROW == noAck)

    { /* Message not acked. Toggle LED 2. */toggleLED(2); // Turn On LED2

    __delay_cycles(2000);toggleLED(2);

    #ifdef FREQUENCY_AGILITY/* Assume we're on the wrong channel so look for channel by* using the Ping to initiate a scan when it gets no reply. With* a successful ping try sending the message again. Otherwise,* for any error we get we will wait until the next button* press to try again.

    */if (SMPL_SUCCESS != SMPL_Ping(sLinkID1))

  • 8/13/2019 Ejemplo Cargador

    70/76

    64

    {done = 1;

    }#else

    done = 1;

    #endif /* FREQUENCY_AGILITY */}else{

    /* Got the ack or we don't care. We're done. */done = 1;

    }}

    /* radio back to sleep */SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, 0);

    }}

    }

    void toggleLED(uint8_t which){

    if (1 == which){

    BSP_TOGGLE_LED1();}else if (2 == which){

    BSP_TOGGLE_LED2();}return;

    }

    void createRandomAddress(){

    unsigned int rand, rand2;

    do{rand = TI_getRandomIntegerFromVLO(); // first byte can not be 0x00 of

    0xFF}while( (rand & 0xFF00)==0xFF00 || (rand & 0xFF00)==0x0000 );rand2 = TI_getRandomIntegerFromVLO();

    BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1MHzDCOCTL = CALDCO_1MHZ;FCTL2 = FWKEY + FSSEL0 + FN1; // MCLK/3 for Flash Timing

    GeneratorFCTL3 = FWKEY + LOCKA; // Clear LOCK & LOCKA bits

  • 8/13/2019 Ejemplo Cargador

    71/76

    65

    FCTL1 = FWKEY + WRT; // Set WRT bit for write operation

    Flash_Addr[0]=(rand>>8) & 0xFF;Flash_Addr[1]=rand & 0xFF;Flash_Addr[2]=(rand2>>8) & 0xFF;

    Flash_Addr[3]=rand2 & 0xFF;

    FCTL1 = FWKEY; // Clear WRT bitFCTL3 = FWKEY + LOCKA + LOCK; // Set LOCK & LOCKA bit

    }

    /*------------------------------------------------------------------------------* ADC10 interrupt service routine------------------------------------------------------------------------------*/#pragma vector=ADC10_VECTOR

    __interrupt void ADC10_ISR(void){ __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)

    }

    /*------------------------------------------------------------------------------* Timer A0 interrupt service routine------------------------------------------------------------------------------*/#pragma vector=TIMERA0_VECTOR

    __interrupt void Timer_A (void){

    sSelfMeasureSem = 1; __bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bit from 0(SR)

    }

  • 8/13/2019 Ejemplo Cargador

    72/76

    66

    Anexo II. Datasheet MCP1640

  • 8/13/2019 Ejemplo Cargador

    73/76

    67

    Anexo III. Datasheet LM19CIZ

  • 8/13/2019 Ejemplo Cargador

    74/76

    68

    Anexo IV. Datasheet LM317

  • 8/13/2019 Ejemplo Cargador

    75/76

  • 8/13/2019 Ejemplo Cargador

    76/76

    70

    Anexo V. ADC10