Wireless Sensor

Summary

Introduction

The name „sensor” comes from the Latin word „sensus”, which means feeling. Before being adopted in the technical world, this word was used to define sensing organs of the living beings and the way that these organs measure and transfer information to the brain.

There are many to classify sensors. Perhaps the simplest and the most useful way is by the stimulus that generates the conversion process. This being said, the classes are: acoustic, electrical, magnetic, optical, thermal and mechanical.

Wireless sensors are standard measurement devices, equipped with a transmitter that converts the data from the measurement device and sends it via radio frequency. This signal is received and interpreted by a receptor that executes the inverted process. After this the data can be easily analyzed through a computer software. This solution has some substantial advantages: safety, convenience and costs reduction. When selecting a wireless sensor, several criteria has to be taken into consideration. The main ones are: measurement type, response time and accuracy, transmission distance and frequency used for transmission.

The wireless communication uses different standards to achieve a safe and efficient transmission. The standards used for this are: IEEE 802.11a/b/g, 802.15.1 PAN/Bluetooth, 802.15.3 Ultra-wideband, 802.15.4/ZigBee, 802.16 WiMax and IEEE 1451.5.

Theoretical basis

The theoretical part of the thesis is based on the block diagram (figure x) of the application. In this way, every part of the diagram is taken into consideration and is being examined. This part has a more of a general meaning, rather than a more specific approach.

A microcontroller is a small computer on a single integrated circuit containing a processor core, memory, and programmable input/output peripherals. Microcontrollers are designed for embedded applications, in contrast to the microprocessors used in personal computers or other general purpose applications. For this application, I chose the MSP430F2619S-HT. The MSP430F2619S ultralow-power microcontroller features different sets of peripherals targeted for various applications. The architecture, combined with five low power modes, is optimized to achieve extended battery life in portable measurement applications. The device features a powerful 16-bit RISC CPU, 16-bit registers, and constant generators that attribute to maximum code efficiency. The digitally controlled oscillator (DCO) allows wake-up from low-power modes to active mode in less than 1 μs. Typical applications include sensor systems that capture analog signals, convert them to digital values, and then process the data for display or for transmission to a host system. Stand-alone RF sensor front end is another area of application. The MSP430 CPU has a 16-bit RISC architecture that is highly transparent to the application. All operations, other than program-flow instructions, are performed as register operations in conjunction with seven addressing modes for source operand and four addressing modes for destination operand. The CPU is integrated with 16 registers that provide reduced instruction execution time. The register-to-register operation execution time is one cycle of the CPU clock. The DMA controller allows movement of data from one memory address to another without CPU intervention. For example, the DMA controller can be used to move data from the ADC12 conversion memory to RAM. Using the DMA controller can increase the throughput of peripheral modules. The DMA controller reduces system power consumption by allowing the CPU to remain in sleep mode without having to awaken to move data to or from a peripheral. The basic clock module supports low system cost and ultralow power consumption. Using three internal clock signals, the user can select the best balance of performance and low power consumption. The basic clock module can be configured to operate without any external components, with one external resistor, with one or two external crystals, or with resonators, under full software control. The ADC12 module supports fast 12-bit analog-to-digital conversions. The module implements a 12-bit SAR core, sample select control, reference generator, and a 16-word conversion-and-control buffer. The conversion-and-control buffer allows up to 16 independent ADC samples to be converted and stored without any CPU intervention. The DAC12 module is a 12-bit, R-ladder, voltage-output digital-to-analog converter (DAC). The DAC12 may be used in 8-bit or 12-bit mode and may be used in conjunction with the DMA controller. When multiple DAC12 modules are present, they may be grouped together for synchronous operation.

Flash memory is an electronic non-volatile computer storage medium that can be electrically erased and reprogrammed. Introduced by Toshiba in 1984, flash memory was developed from EEPROM (electrically erasable programmable read-only memory). There are two main types of flash memory, which are named after the NAND and NOR logic gates. Whereas EPROMs had to be completely erased before being rewritten, NAND type flash memory may be written and read in blocks (or pages) which are generally much smaller than the entire device. NOR type flash allows a single machine word (byte) to be written – to an erased location – or read independently. SST25VF010A memory features a four-wire, SPI-compatible interface that allows for a low pin-count package occupying less board space and ultimately lowering total system costs. SST25VF010A SPI serial flash memory is manufactured with SST proprietary, high performance CMOS Technology.

A sensor is a converter that measures a physical quantity and converts it into a signal which can be read by an observer or by an instrument. The temperature sensors can be split into two main categories: contact sensors – they measure temperature of the objects that they are in contact with, contactless sensors – they measure the thermal power of radiations from heat source. Both categories come with a great deal of both advantages and disadvantages. There are many types of temperature sensors of which I’ve chosen 4: Thermocouples, Resistance temperature detectors, Thermistors and Integrated Circuit sensors. These types of sensors have been described and studied here. The humidity sensor chapter describes the hygrometer concept which is split into two large categories: the ones that work based on the capacitive effect and the ones that work based on the resistive effect. Both of them have been thoroughly described and explained how they work. The SHT21 sensor contains a capacitive type humidity sensor, a band gap temperature sensor and specialized analog and digital integrated circuit – all on a single CMOS chip. This yields in an unmatched sensor performance in terms of accuracy and stability as well as minimal power consumption.

An RF module (radio frequency module) is a small electronic device used to transmit and/or receive radio signals between two devices. In an embedded system it is often desirable to communicate with another device wirelessly. This wireless communication may be accomplished through optical communication or through Radio Frequency (RF) communication. For many applications the medium of choice is RF since it does not require line of sight. RF communications incorporate a transmitter and/or receiver. RF modules are most often used in medium and low volume products for consumer applications such as garage door openers, wireless alarm systems, industrial remote controls, smart sensor applications, and wireless home automation systems. IEEE 802.15.4 is a standard which specifies the physical layer and media access control for low-rate wireless personal area networks (LR-WPANs). It is maintained by the IEEE 802.15 working group, which has defined it in 2003.

The concept of power management has been introduced, a way of reducing the power consumption drained from the supply. Here, different idleness and shutdown mechanisms have been described. Methods including smart low-power modes, but also some radical solutions which include disabling some of the blocks. The basic principle of a dynamic power manager is to detect inactivity of a unit and shut it down. A fundamental premise is that the idleness detection and power management circuit consumes a negligible fraction of the total power. We classify idleness as external or internal. The former is strongly tight to the concept of observability of a unit’s outputs, while the latter can be related to the notion of internal state, when the unit has one.

Solution implementation

In this chapter, a more particular point of view has been used. At first, block diagram has been presented once again, this time extracted from a CAD simulator called OrCAD. The signals used in connecting the blocks have been represented and the names of the blocks have been shown. Following this, the complete electrical scheme was brought into consideration. After this step, the blocks have been detailed and analyzed from a more specific perspective.

The MSP430F2619S-HT microcontroller was brought up. The MSP430 incorporates a 16-bit RISC CPU, peripherals, and a flexible clock system that interconnect using a von-Neumann common memory address bus (MAB) and memory data bus (MDB) The CPU and the way it moves data between registers was shown in table x. The memory’s electrical specifications were detailed in the next table, including the times needed for the basic operations. The clock signals were described, followed by the universal serial communication interface (USCI). The USCI interface supports 3 ways of communicating with peripherals devices: UART (RF module), SPI (Memory) and (Sensor). All these ways are detailed in this chapter together with the data transfer rates and adressing modes.

The SST25VF010A’s pin assignment is shown in figure x, and following the table y describes the pins functions. The pins used in the schematic are: SCK – Serial Clock, SI – Serial Data Input, SO – Serial Data Output, CE# – Chip Enable, WP# – Write Protect, Hold#, – Power Supply and – Ground. These pins are connected to the microcontroller from pins 42 through 47(figure x). Also, a table containing the main electrical characteristics (table x) is present here.

In the next sub-chapter, the SHT21 sensor was analyzed. The small footprint (3 x 3 mm) and the good resolution (12 bits for both temperature and relative humidity) together with a very good precision (±2% for relative humidity, ±0.3 ºC for temperature) make it an excellent choice for the sensor. The supply used for the microcontrolller and the memory(3.3V) can also be used to power up the sensor. It also has an extremely low power consumption in both sleeping mode (0.15 µA) and while measuring (300 µA). The IC has 6 pins: 1 – SDA (Serial Data), 2 – VSS (Ground), 3+4 – NC (Not connected – only used for proper placement), 5 – VDD (Supply), 6 – SCL (Serial Clock). Pins 1,2,5,6 are used of which 1 and 6 to connect with the microcontroller and the other 2 used to power the unit. To connect it with the uC, two pull-up resistors are also needed. The equations (x,y) used to calculate the temperature and relative humity are also shown.

The VN400 RF module is the first world based 802.15.4 device. It is certified for use in the US, Canada, Europe and Japan. Inside it there is a Kinetis microcontroller from Freescale and a MC12311 transceiver. The microcontroller unit power up from anywhere between 1.7 and 3.6 V. It has a memory build within that sums up a 512KB flash memory together with a 128KB RAM. It also has a DMA, clock crystals, DACs and ADCs. The MC12311 is a highly-integrated, cost-effective, system-in-package (SIP), sub-1GHz wireless node solution with an FSK, GFSK, MSK, or OOK modulation-capable transceiver and low-power HCS08 8-bit microcontroller. The highly integrated RF transceiver operates over a wide frequency range including 315 MHz, 433 MHz, 470 MHz, 868 MHz, 915 MHz, 928 MHz, and 955 MHz in the license-free Industrial, Scientific and Medical (ISM) frequency bands. This configuration allows users to minimize the use of external components. The MC12311 is targeted for the following low-power wireless applications: Automated Meter Reading, Wireless Sensor Networks, Home and Building Automation, etc. The RF transceiver features: High Sensitivity (-120 dBm), Low current, Programmable Pout (-18 to +17 dBm). Next, the J2 connector used to place the module is shown (figure x). Out of the 30 pins, it only needs 7 to work. Pin 1, used for the ground connection together with pin 2 used for the power supply. Pins 5 and 6 are used for the data transmission and reception from microcontroller. Pins 7 and 8 are used to send a request and a permission (7 – RTS: request to send, 8 – CTS: confirm to send). The last pin used is number 18, to wake up the RF module.

The power supply circuit is widely explained in 3.5. The circuit can be supplied from multiple external sources or from the battery. The 3.3V voltage is obtained from the LM1117 IC voltage regulator if an external power supply is used or straight from the battery. Table x loosely states the power consumption of the main modules. While all modules are up the current drawn from the supply can be as high as 150mA. In low-power modes it can go as low as 50mA. But this value can go even lower if the RF module supply is cut.

The next sub-chapter presents various ways of lowering the power consumption. First of all, if an external supply is used it mustn’t supply a power larger than 3W. This way the circuit remains highly efficient. Second, the MSP comes with 5 operating modes. Those are: Active, LPM0, LPM1, LPM2, LPM3 and LPM4. Table x describes all these power states. The memory needs to be kept asleep when not needed to reduce the consumption. The only time it need to be woken up, is right before a write or an erase. The sensor is also woken up right before a measurement is done. Because the RF module doesn’t have a built-in low power mode, a small shutdown mechanisms has been implemented. When needed, the signal from the microcontroller can disconnect the radio using the CPC1020 miniature relay. This way, energy is saved. All these ways add up to a low power consumption, so much needed in a portable device.

The microcontroller programming scheme is drawn in figure x. Here the ways of communicating between OSI layers is shown. Also, the communication between various devices is presented.

Results

This sections proves that the schematic and the connections presented earlier work. For the experiment to work, I’ve used two development boards and a test board. The MSP430 has been reproduces using a development board used for this type of devices which was powered up via USB. The sensor was mounted on a test board and connected as shown earlier. The supply came from the microcontroller’s development board. The radio module also came on a development board and was connected to the microcontroller using pin wires. For the results to be relevant, a calibrated thermo-hygrometer was used (Hanna Instruments, HI93640N). The measurements read from the gateway were compared to those shown on the commercial device. The differences were minor, mostly because of small placement difference. The temperature measured by SHT21 was 32.1 ºC while the HI93640N measured 32.2 ºC. Regarding the humidity, the SHT21 measured 34.2 %RH, while the HI93640N measured 34.1 %RH. These results show a positive measurement.

After the results were concluded, the problem of power management was still left to be dealt with. I’ve measure the current consumption that the MSP development board and the sensor draw. First, the sensor was measuring and the result was 10.55 mA. Second, the sensor was in sleep mode and the current measured was 8.26 mA. The case when the microcontroller is in low power mode cannot be measured by usual digital multimeters because of the extremely low value. The total power dissipation was 34mW while measuring and 27mW while sensor is in sleep mode. After this, the radio module power consumption was calculated. It draws 20 mA at 5V. This means it dissipates around 100 mW. The transceiver is set on an intermediate power range. When the supply was cut, the module does not dissipate any power. Those measurements add up to a total power consumption of around 137mW which can go as low as a couple of µW if needed.

Conclusions

This particular device was chosen because the demand in wireless and portable measurement devices is growing. This device can join a network and send data that is being received by a host and posted online.

First, the concepts of sensors and areas of measurement was introduced. Different wireless standards have been also enlisted.

Second, a block diagram with a general perspective has been approached. All blocks have been analyzed in a theoretical way, starting from meaning and use and finishing with the different functions they offer. Also the concept of power management has been studied.

Third, details concerning blocks implementation have been described. All 5 blocks contained information related to their real-world manufacturing specifications. A more specific way was used this time. Different features have been discussed together with pin configurations and connections between components.

Finally, the experimental results have been depicted, correlating the knowledge gathered earlier with the measurements obtained. A comparison device was used to verify the veracity of the values.

Future developments can include different software configurations that lower the power consumption even more.

Planificarea activitatii

Stadiul actual

Definirea senzorului

Denumirea de “senzor” provine din limba latina, unde “sensus” inseamna simt. Inainte de a fi preluat in domeniul tehnic, acest cuvant era folosit pentru a defini organele de simt ale fiintelor vii si modul in care acestea preiau si transmit informatia creierului.[1]

In zilele de astazi, “senzorul” poate fi definit ca un convertor ce masoara marimi fizice, iar apoi le converteste in semnale electrice ce pot fi citite sau interpretate.[2]

Clasificarea senzorilor

Exista foarte multe criterii dupa care senzorii pot fi grupati. Insa probabil cea mai simpla si utila ar fi dupa stimulul care declanseaza procesul de conversie. Astfel, categoriile de stimuli sunt:

Acustici – unde sonore, spectru, frecventa undei etc.

Electrici – curent, tensiune, camp electric, conductivitate, permitivitate etc.

Magnetici – camp magnetic, flux magnetic, permeabilitate etc.

Optici – unda(amplitudine, faza, polarizare, spectru), frecventa undei, indexul de refractie, emisie, reflexie etc.

Termici –temperatura, flux, caldura specifica, conductivitate termica.

Mecanici – forta, acceleratie, presiune, masa, densitate, cuplu etc.[3]

Senzori wireless

Senzorii wireless sunt dispozitive de masura standard, echipate cu un transmitator care converteste semnalele de la instrumentele de masura si procesare si le transmite prin semnal de radiofrecventa. Acest semnal este primit si interpretat de un receptor care efectueaza procesul invers, el converteste semnalul wireless in date ce pot fi cu usurinta analizate si intepretate prin intermediul unui software pe calculator.

Avantaje

Printre principalele avantaje a acestui tip de tehnologie se enumera:

Siguranta

Aceste instrumente wireless pot fi utilizate in locuri greu accesibile sau in conditii extreme cum ar fi : temperaturi ridicate, presiuni ridicate, umiditate ridicata. Prin utilizarea unor dispozitive fara fir, zonele descrise pot fi mentinute sub supraveghere de la o distanta sigura fata de acestea

Comoditate

Senzorii wireless pot fi astfel grupati incat sa se obtina retele sau grupuri, care permit unui inginer sa monitorizeze mai multe zone de la un singur nod central. Pe deasupra, acesti senzori transmit informatii actualizate, care pot fi accesate din orice loc al lumii.

Reducerea costurilor

Prin utilizarea acestui tip de senzori, se poate reduce costul monitorizarii si functionarii dispozitivelor, eliminand nevoia de a utiliza fire

Criterii de selectie

Pentru selectia unui anumit senzor wireless trebuie luate in considerare mai multe aspecte. Cele mai importante dintre ele sunt:

Tipul masuratorii:

Este probabil cel mai important aspect, deoarece fenomenul masurat este principalul motiv pentru care senzorul exista. Spre deosebire de transmitatori, senzorii sunt foarte specifici. Astfel, trebuie avut in vedere tipul de senzor utilizat: temperatura, presiune, umiditate, etc.

Precizia si timpul de raspuns:

Pentru aceasta categorie trebuie adresate cateva intrebari. Cat de precisa trebuie sa fie masuratoarea, precum si cat de des trebuie actualizata informatia? Majoritatea senzorilor utilizati in aceste dispozitive wireless sunt la fel de precisi ca si cei din dispozitivele clasice. Diferenta este ca citirile sunt transmise la anumite intervale de timp, pentru a utiliza cat mai putin din puterea bateriei.

Distanta de transmisie:

Raza de transmisie a acestor categorie de senzori poate varia de la cativa metri, la cativa kilometri. Trebuie avuta in vedere pozitionarea transmitatorului si a receptorului, pentru a alege modulul radio potrivit.

Frecventa:

Ultimul criteriu demn de luat in considerare este frecventa pe care transmite radioul. Aceste frecvente sunt strict reglementate de organele legislative din domeniu. Anumite frecvente sunt preferate, datorita utilizarii lor fara utilizarea unor licente sau autorizatii. In Statele Unite sunt deseori folosite frecventele 915 MHz sau 2.4 GHz, iar in Europa 868 MHz si 2.4 GHz.[4]

Standarde de comunicatie

Deoarece transmisia datelor se face prin intermediul undelor radio, este necesara utilizarea unor standarde universal acceptate si recunoscute. Cele mai utilizate sunt:

IEEE 802.11a/b/g completate cu diferite protocoale de securitate (Wi-Fi)

802.15.1 PAN/Bluetooth – distante scurte (10m)

802.15.3 Ultra-wideband (UWB) – distante scurte, rate mari de transfer

802.15.4/ZigBee (IEEE 802.15.4 defineste straturile fizice, ZigBee defineste stratul retea si stratul aplicatie) – rate de transfer mici, durata de viata a bateriei mare, distante medii

802.16 WiMax – rate de transfer mari, distante mari, strict reglementate cu conscum de energie ridicat

IEEE 1451.5 – se utilizeaza pentru traductori smart, set de reguli bazate pe 802.11, 802.14.1 si 802.15.4 [5-8]

Analiza concurentei

Analiza concurentei se utilizeaza in domeniul marketingului si al managementului strategic, in vederea aprecierii punctelor forte si ale slabiciunilor competitorilor directi sau potentiali. Acest tip de analiza ofera strategii de tip defensiv sau ofensiv. [9]

Newport Corporation

Compania Newport Corporation este un furnizor de produse si solutii de inalta tehnologie in domeniul Cercetarii, Aerospatial, Panouri fotovoltaice, Semicoductoare si Microelectronice. A fost fondata in anul 1969. Principalele lor produse sunt cele din domeniul: Opto-mecanic, Lasere, Controlul si monitorizarea miscarii, Masuratori.

Newport ofera produse clientilor in peste 70 de tari si au sedii in tari cum ar fi : Statele Unite, China, Franta, Germania si Marea Britanie. [10]

In 2012, Newport Corporation au avut o cifra de afaceri de 600 milioane de dolari, cu un profit de 250 milioane de dolari, o crestere de 15% fata de anul 2011. [11]

Preturile practicate de companie sunt mari din perspectiva serviciilor si produselor oferite.

Omega Engineering

Compania Omega Engineering produce echipamente de masura si control al temperaturii, umiditatii, presiunii, fortei, pH-ului si conductivitatii. Ea a fost fondata in anul 1962 si are sediul in Connecticut, Statele Unite. Majoritatea produselor sunt fabricate in America. [12]

Oferta lor cuprinde peste 100,00 de produse de ultima generatie. Preturile practicate de companie sunt foarte agresive si sunt putin mai mici decat media acestor categorie de produse.

In 2012 au avut vanzari in valoare de 360 milioane de dolari cu un profit de 60 de milioane de dolari, o crestere cu 2% fata de anul precedent. Incepand cu anul 2011, compania este detinuta de Spectris plc. [13]

Dwyer Instruments International

Firma Dwyer Instruments a fost fondata in anul 1931 cu sediul in Indiana, Statele Unite, loc in care se regaseste si astazi sediul acestei companii. Principalul domeniu de activitate al firmei il reprezinta producerea si comertul de instrumente de masura si control industriale.

De-a lungul istoriei firmei au mai fost deschise sedii in Marea Britanie si Australia. [14]

In anul 2012 au avut vanzari de aproximativ 100 milioane de dolari. [15]

In continuare, se va face o analiza comparativa a produselor oferite de firmele enumerate mai sus si senzorul wireless bazat pe SHT21 de masurare a temperaturii si umiditatii:

Tabel x Analiza comparativa intre produsele principalilor concurenti

Fundamentare teoretica

Pentru a intelege modul in care aceasta aplicatie se poate realiza fizic si implementa, se vor studia componentele ce alcatuiesc sistemul pe blocuri, schema bloc fiind prezentata in figura x:

Fig.X Diagrama Bloc a aplicatiei

Microcontroler

Este un circuit integrat care contine un procesor, memorie si pini de intrare/iesire programabili. Scopul acestuia este de a receptiona, procesa si transmite semnale mixte celorlalte componente. [16]

Pentru aceasta aplicatie am ales sa utilizez microcontrolerul MSP430F2619S de la Texas Instruments. Specificatiile acestuia sunt potrivite pentru aplicatia urmarita:

Tensiune de alimentare cuprina intre 1.8 V – 3.6 V

Consum de putere foarte redus:

Mod activ : 365 µA la 1MHz, 2.2 V

Mod asteptare (iesire foarte joasa) : 0.5 µA

Mod decuplat (Memorie RAM in retentie) : 0.1 µA

Trezire din mod asteptare in mai putin de 1 µs

Unitate centrala de procesare (CPU) cu o arhitectura RISC (numar redus de instructiuni operationale) pe 16 biti

Convertor Analog-Digital (ADC) de 12 biti cu referinta interna si Sample-and-Hold

Convertor Digital-Analog (DAC) dual de 12 biti cu sincronizare

Memorie flash de 120 kB + 256 B si memorie RAM de 4 kB [17]

Aplicatiile tipice includ sisteme de senzori ce capteaza semnale analogice, convertirea lor in semnale digitale, pentru ca apoi datele procesate sa fie afisate sau transmise unei gazde.

Acest tip de dispozitiv prezinta avantaje atat tehnice cat si economice. Pretul unui astfel de dispozitiv este mai mic decat al dispozitivelor din care este compus cumparate separat, dar si suprafata ocupata este mai mica decat a componentelor sale.

Microcontrolerul MSP430F2619S are un consum foarte mic de energie si contine un set de periferice potrivite pentru diferite aplicatii. Arhitectura sa, impreuna cu cele cinci moduri de utilizare a puterii, sunt optimizate pentru a obtine o durata de viata cat mai mare a bateriei, ideala pentru aplicatii portabile. Dispozitivul contine un CPU (central processing unit) cu un design RISC (reduced instruction set computing) si registrii pe 16 biti. Oscilatorul controlat digital (DCO) permite trezirea din moduri de consum redus in mod activ in mai putin de 1 µs.

Integratul contine si 2 timeri pe 16 biti, un convertor analogic digital rapid de 12 biti, un comparator, doi convertori digital analogic de 12 biti si pana la 64 de pini de intrare/iesire. Printre aplicatiile tipice se includ sisteme cu senzori ce capteaza semnalele analogice, le convertesc in valori digitale, iar apoi proceseaza datele pentru a le afisa sau transmite unui sistem gazda.[18] In figura x se pot observa pinii microcontrolerului:

Fig. X Structura pinilor microcontrolerului MSP430F2619S [17]

Pentru o mai buna intelegere a functionarii acestuia, il vom analiza pe baza diagramei bloc(fig. x).

Fig. x Schema bloc a microcontrolerului [17]

Unitatea centrala de procesare

Microcontrolerul are un procesor cu o arhitectura RISC pe 16 biti, care este foarte necesar aplicatiei, care opereaza la o frecventa de tact de pana la 16 MHz. Toate operatiile sunt executate ca si operatii cu registrii combinate cu sapte moduri de adresare pentru pentru operandul sursa si patru moduri pentru operandul destinatie.

Procesorul contine 16 registrii care confera un timp redus de executie a instructiunii. Operatiunile de tip registru-registru necesita doar o perioada de tact a procesorului.

Memoria

Microcontrolerul contine atat memorie de tip flash cat si memorie de tip RAM. Memoria flash are dimensiunea de 120 kB, pe cand cea RAM 4kB. In tabelul de mai jos este detaliata organizarea memorie controlerului:

Tabel y Organizarea memoriei microcontrolerului[17]

Controler DMA

Controlerul cu acces direct la memorie (DMA) transfera date de la o adresa la alta, fara a fi necesara interventia procesorului. De exemplu, controlerul poate muta date de la convertorul analog-numeric pe 12 biti in memorie RAM.

Utilizand acest controler se reduce consumul permitand CPU sa ramana intr-o stare de consum redus fara a fi necesara trezirea lui pentru a muta date dinspre sau inspre periferice.[18]

Generator de semnale de tact

Generatorul de semnal de tact are un cost redus si un nivel foarte scazut de consum de energie. Acesta utilizeaza trei semnale de tact interne, astfel incat utilizatorul sa poata selecta cea mai buna metoda pentru a obtine performantele dorite la un consum redus de putere. Generatorul de baza poate fi configurat sa functioneze fara componente externe, cu un singur rezistor extern, cu unul sau doua cristale sau cu rezonatoare, toate sub control software.

Pini de intrare/iesire

Microcontrolerul are 6 porturi digitate de intrare/iesire implementate, de la P1 la P6. Fiecare port contine 8 pini de intrare/iesire, pentru un total de 48 pini. Fiecare dintre acesti pini poate fi configurat individual pentru intrare sau pentru iesirea semnalului. De asemenea, pe fiecare traseu de intrare sau de iesire se poate efectua o scriere sau o citire.

Porturile notate cu P1 si P2 au abilitatea de a efectua intreruperi. Orice intrerupere a porturilor P1 sau P2 poate fi configurata si activata pentru a oferi o astfel de intrerupere fie pe frontul ascendent al semnalului de intrare, fie pe frontul descendent.

Intrarile/iesirile digitale ofera:

Pini de intrare/iesire programabili individual

Orice combinatie de intrare sau iesire

Intreruperi configurabile pe porturile P1 si P2

Rezistente de pullup sau pulldown configurabile individual [18]

Convertor analogic numeric pe 12 biti

Convertorul analogic numeric realizeaza conversii analog numerice pe 12 biti foarte rapide. Acest modul confera un convertor de tip aproximari succesive, generator de referinta si un buffer de conversie si control. Acesta din urma permite stocare si conversia a pana la 16 esantioane fara interventia procesorului.

Printre caracteristicile convertorului se mai enumara:

O rata a conversiei mai mare de 200-kbps

Functie de sample-and-hold cu intervale de esantionare programabile si controlate prin software

Conversii intitiate din software prin intermediul Timerelor A sau B

Generator de tensiune de referinta selectabil prin intermediul software-ului ( 1.5 V sau 2.5 V)

Pot fi utilizate referinte atat interne cat si externe, ambele selectabile software

Sursa semnalului de tact poate fi selectata dupa nevoile utilizatorului

Spatiu de stocare in registrii pentru rezultatele a 16 conversii [17]

Convertor numeric analogic pe 12 biti

Modulul numeric analogic efectuaza conversii pe 12 biti generand la iesire o tensiune. Acesta poate fi configurat atat pe 8 biti cat si pe 12 biti si poate fi utilizat in concordanta cu controlerul DMA. Cand sunt prezente mai multe module de convertor numeric analogic, acestea pot fi grupate pentru operatii de actualizare sincronizate.

Caracteristicile convertorului:

Iesire monotona pe 12 biti

Rezolutie de 8 biti sau 12 biti a tensiunii de iesire

Timpul de stabilizare este programabil, pentru a imbunatati consumul de putere

Se poate selecta o referinta atat interna cat si externa

Optiune de auto-calibrare pentru corectia offsetului

Capacitate de actualizare sincronizata pentru modulele convertorului [17]

Memorie

Acest bloc are rolul de a depozita date sau programe (instructiuni sau secvente) temporar sau permanent.

Pentru aceasta aplicatie am ales memoria de tip Flash SST25VF010A de la Silicon Storage Technology. Specificatiile ei includ:

Operatii de Scriere si Citire la tensiuni de alimentare intre 2.7 si 3.6 V

Interfata cu arhitectura seriala

Frecventa maxima de tact 33 MHz

Fiabilitate ridicata

Durata de viata: 100,000 Cicluri (tipic)

Capacitate de retinere a datelor de peste 100 ani

Consum mic de putere

Curent consumat la Citire: 7 mA (tipic)

Curent consumat in modul asteptare: 8 µA (tipic)

Utilizare la temperaturi intre -40°C pana la +85°C

Motivele pentru care aceasta memorie este adecvata ar fi consumul redus, utilizarea indelungata la temperaturi extreme, suprafata mica a integratului, fapte ce justifica utilizarea intr-un dispozitiv portabil.

Memoria flash este un mediu de stocare al datelor non-volatile ce poate fi sters sau reprogramat, dupa bunul plac. A fost introdus pentru prima data in anul 1984 de catre compania Toshiba, fiind dezvoltat dupa memoria EEPROM. Spre deosebire de aceasta din urma, memoria flash nu trebuie stearsa complet pentru a putea fi rescrisa. Poate fi impartita in doua categorii: de tip NAND si de tip NOR. In vreme ce memoria flash de tip NAND poate fi scris si citita in blocuri de date, cea de tip NOR permite o scriere sau citire la nivel de cuvant (byte).

Acest tip de memorie se utilizeaza cu precadere in computere personale, Personal digital assistant (PDA), playere audio digitale, camere digitale, telefoane mobile, jocuri video, roboti industriali si multe altele. Memoria ofera timpi de acces foarte redusi, la fel de rapizi ca si memoria RAM. [19]

Memoria flash SST25VF010A de la Silicon Storage Technology oferta o interfata compatibila SPI, care permite utilizarea unui pachet cu un numar redus de pini, ocupand o suprafata mica pe placa. Aceasta memorie utilizeaza tehnologia CMOS si opereaza cu o singura tensiune de alimentare cuprina intre 2.7-3.6 V. De asemenea, capacitatea sa de stocare este de 1 Mbit. [20]

Senzor de temperatura si umiditate

Aceasta parte are rolul de a masura marimi fizice si de a le converti in semnale care pot fi citite si procesate de echipamente electronice. [21]

In cazul de fata am ales sa utilizez senzorul SHT21 de la Sensirion. Acesta vine cu specificatii ideale proiectului ales:

Acopera o gama larga de valori

-40°C – 120°C pentru temperatura

0-100% pentru umiditate

Tolerante mici

2% pentru umiditatea relavita (RH)

±0.3°C pentru temperatura

Se alimenteaza la tensiuni cuprinse intre 2.1V – 3.6V

Consum redus : intre 9µA – 15µA in mod asteptare [22]

Senzorul SHT21 contine atat un senzor de temperatura cat si unul pentru umiditate. Pentru a intelege mai bine modul in care senzorul preia informatia din mediu si o converteste pentru a fi procesata, va trebui sa explicam modul in care un senzor de temperatura functioneaza.

Senzorul de temperatura

Senzorii de temperatura pot fi impartiti in doua categorii:

Senzori de contact – Acestia masoara temperatura obiectelor cu care sunt in contact : Termocuple,detectori de temperatura bazati pe rezistenta, termometre bimetalice, termistoare

Avantaje: pred redus, o gama larga de aplicatii, destul de precise, usor de utilizat

Dezavantaje: este necesar un contact fizic, timp de raspuns mai ridicat decat senzorii fara contact, pot avea citiri gresite pentru obiecte mici

Senzori fara contact – Majoritatea senzorilor de acest tip masoara puterea termica radianta a radiatiilor Infrarosii sau Optice receptionate de la o arie din interiorul sau.

Avantaje: montaj indepartat de sursa de caldura, poate masura si pentru obiecte in miscare, raspuns mai rapid, nu absorb caldura

Dezavantaje: nu pot masura temperatura gazelor, variatii in functie de emisii, restrictii legate de temperatura ambianta, temperatura indicata este afectata de conditiile din mediu (praf, fum etc). [23]

Termocuple

Acest tip de senzor este compus din doua fire de metale sau aliaje sudate impreuna la unul din capete. Acest punct reprezinta jonctiunea de masurare, celelealte doua capete fiind denumite jonctiunea de referinta. Prin modificarea temperaturii jontiunii de masurare, la capetele libere se va regasi o tensiune termoelectromotoare datorita efectelor Seebeck, Peltier si Thomson. Aceasta tensiune este proportionala cu diferenta de temperatura intre cele doua jonctiuni si dependenta de materialul termoelectrozilor:

(X)

Avantaje:

Pot masura temperaturi de pana la 2600 ºC (aliaj Tungsten – Molibden)

Jonctiunea de masurare poate fi legata la masa si poate fi in contact direct cu obiectul masurat

Dezavantaje:

Masurarea temperaturii necesita doua masuratori, una la jonctiunea “calda” si o alta la jonctiunea “rece”

Operarea cu ajutorul termocuplelor are potentialul de a genera erori din cauza complexitatii acestora. Firele ce alcatuiesc termocuplele pot dezvolta diferite neliniaritati de-a lungul lor, acestea cauzand diferite erori de masurare

Termocupla necesita calibrari frecvente [24]

Traductoare integrate de temperatura

In cazul de fata, senzorul de temperatura este un circuit integrat, bazat pe o referinta de tensiune de tip bandgap. Principiul de functionare se bazeaza pe tensiunea baza-emitor a unui tranzistor bipolar, care este dependenta de temperatura. Ecuatia (x) descrie modul in care jonctiunea depinde de temperatura:

(x)

unde :T – temperatura in grade Kelvin, – temperatura de referinta, – tensiunea bandgap la zero absolut, – tensiunea bandgap la temperatura si curentul , K – constanta lui Bolzmann, q – sarcina electronului, n – o constanta dependenta de dispozitiv.

Circuitul (x) poate fi utilizat pentru a evidentia aceste relatii.

Fig. (X) Circuitul referinta de tensiune de tip banda interzisa.

Comparand tensiunea a doua jonctiuni la aceeasi temperatura, dar la curenti diferiti, Ic1 si Ic2, relatia devine:

(x)

Astfel, acest tip de circuit poate fi utilizat pentru a masura temperatura diodei pana la o valoare de aproximativ 200 ºC – 250 ºC, atata timp cat jonctiunea este mentinuta la temperatura ce se doreste a fi masurata. [29]

Avantaje:

iesiri analogice sau digitale disponibile

cost redus

iesire liniara

interfete de comunicare diverse

Dezavantaje:

domeniu de variate al temperaturii redus: -55 – 150~200 ºC

acuratetea difera mult in functie de modelul cumparat

din cauza dimensiunilor reduse costul poate avea de suferit

Deoarece senzorul SHT21 se bazeaza pe acest ultim principiu de functionare, el are anumite avantaje fata de ceilalti senzori, dar si anumite limitari.

Cipul SHT21 este testat si calibrat, astfel incat produsul este pregatit pentru a fi utilizat. Pentru masurarea temperaturii se poate utilizat o rezolutie de la 12-14 biti, in functie de canalul de comunicare ales. [30]

Senzorul de umiditate

Deoarece aplicatia urmareste masurarea umidatii din aer, acesta fiind un gaz, senzorul rezultat este denumit higrometru. Acest dispozitiv masoara concentratia de vapori de apa din aer. Datorita unor concentratii prea mai sau prea mici, anumite procese industriale sau confortul oamenilor pot fi afectate.

Senzorii electronici de umiditate masoara umiditatea relativa din aer in procente. Acestia pot fi impartiti in doua categorii:

Senzori bazati pe efectul capacitiv

Senzori bazati pe efectul rezistiv [31]

Senzori de umiditate bazati pe efectul capacitiv

Dispozitivele care se bazeaza pe acest principiu contin un dielectric higroscopic plasat intre doi electrozi ce formeaza o mica capacitate. Dielectricul este de obicei construit din plastic sau polimer. Constanta dielectricului are o valoare cuprina intre 2 si 15. In absenta umezelii, valoare capacitatii este determinata doar de constanta dielectricului si de geometria senzorului.

La temperatura camerei, constanta dielectricului vaporilor de apa are o valoare de 80, mult mai mare decat cea a senzorului. Atunci cand vaporii sunt absorbiti de senzor, valoarea capacitatii creste. In conditii de echilibru, cantitatea de umezeala prezenta in materialul higroscopic depinde atat de temperatura ambientala cat si de presiunea vaporilor de apa. Ecuatia umiditatii relative este o functie definita de temperatura ambientala si de presiunea vaporilor de apa. Astfel, se poate identifica o ecuatie care depinde atat de umiditatea relativa, de umiditatea prezenta in senzor cat si de capacitatea senzorului. Structura de baza a unui senzor de umiditate este prezentata in figura (X):

Fig. X Structura de baza a unui senzor de umiditate bazat pe efectul capacitiv

Pe subtratul de Alumina, electrodul inferior este suflat cu aur sau platina. Stratul de polimer compus din alcool polivinilic este depozitat pe electrod. Acest strat sesizeaza umiditatea. Deasupra acestul strat, este suprapus electrodul superior care este suflat cu aur, care permite vaporilor de apa sa ajunge pe stratul de dedesubt. Practic, acest tip de senzor este un condensator cu un strat de polimer ca si dielectric.

Senzori de umiditate bazati pe efectul rezistiv

Acesti senzori detecteaza schimbarile valorii rezistentei in raport cu umiditatea. Structura de baza a unui senzor cu efect rezistiv este prezentat in figura x:

Fig. X Structura de baza a unui senzor de umiditate bazat pe efectul rezistiv

Traseul care deserveste drept rezistenta este acoperit cu un metal pretios cum ar fi aurul.Acesta este construit sub forma unui pieptene pentru a forma un electrod. Un strat de polimer este aplicat peste electrod, acest strat actioneaza ca un senzor de umiditate, absorbind vaporii de apa. Modificarea impedantei are loc din cauza modificarii numarului de ioni, in acest fel sesizandu-se o modificare a concentratiei de umezeala din aer. [32]

Senzorul SHT21 contine un senzor de tip capacitiv, pe baza caruia obtine concentratia relativa a umiditatii din aer.

Modul radio

Deoarece proiectul descris va putea transmite informatia prin intermediul radiofrecventei, am ales sa utilizez ca si modul radio o solutie de la Nivis, sub denumirea de VN400. Dispozitivul VersaNode 400 este optim datorita caracteristicilor sale:

Se alimenteaza de la tensiuni cuprinse intre -0.3V pana la 3.8V

Nivel al semnalului RF maxim de +15dBm

Utilizare la temperaturi cuprinse intre -40 si +85°C si nivel al umiditatii relative intre 10% si 90% (conditii normale)

Consum de curent in stare de hibernare de sub 10µA

Poate fi alimentat de la baterie

Transmisii la distante de pana la 1.1km in raza vizuala

Transmisii la frecvente intre 863 – 870 MHz [33]

Un modul radio este un dispozitiv electronic ce asigurea o cale de comunicare intre doua dispozitive. Acesta are rolul de a receptiona si de a transmite semnale radio. De cele mai multe ori, acesta este de tipul sistem inglobat. Modulele pot functiona pe o frecventa cu o gama cuprinsa de la cativa zeci de kHz pana la cateva sute de GHz.

Aceste tipuri de aplicatii prezinta cateva avantaje fata de alte dispozitive:

Pot acoperi distante mari

Nu este necesar ca receptorul si transmitatorul sa fie in camp vizual

Pot trece prin obstacole (pereti, blocuri etc)

Modulele radio sunt deseori utilizate in sisteme de alarma, de paza, senzori wireless si alte sisteme automatice wireless. Anumite benzi de frecventa sunt des intalnite in modulele comerciale, datorita reglementarilor care dicteaza utilizarea frecventelor. Cele mai utilizate sunt : 433.92 MHz, 315 MHz, 868 MHz, 915 MHz 2400 MHz. In cazul de fata, modulul VN400 emite in banda de frecventa 868 MHz si utilizeaza standardul 802.15.4. [34]

Standardul 802.15.4

IEEE 802.15.4 este un standard care specifica anumite caracteristici ale stratului fizic si a controlului de acces la mediu pentru retele wireless cu rate de transfer scazute de tip personal area (LR-WPANs). Standardul a fost definit in anul 2003. Acesta sta la baza altor standarde cum ar fi ZigBee, ISA100.11a, WirelessHART, acestea extinzand standardul prin dezvoltarea straturilor superioare care nu sunt definite de 802.15.4.

Standardul doreste sa ofere straturile fundamentale ale unei retele de tipul personal area, concentrandu-se pe un cost redus, pe o viteza redusa de transfer intre dispozitive si pe un consum foarte mic de putere.

In contextul de baza, se prevede o comunicare pe o distanta de 10 metri cu o rata de transfer de 250 kbit/s. Prin realizarea unor compromisuri in schimb, se pot Fig. x Modelul OSI

obtine dispozitive de tip sistem inglobat cu un necesar

de consum chiar mai mic decat prevede standardul. Initial au fost prevazute rate de transfer in jurul valorii de 20-40 kbit/s.

Dispozitivele au fost concepute sa interactioneze intre ele printr-un concept simplu de retea wireless. Definirea straturilor retelei este bazat pe modelul OSI. Desi sunt definite doar straturile inferioare, interactiunea cu straturile superioare este dorita, prin posibila utilizare a substratului logical link control IEEE 802.2. Prin acest substrat se poate accesa controlul de acces la mediu (MAC) prin substratul de convergenta. [35]

Topologia retelei

Retelele pot fi construite fie de tipul peer-to-peer fie de tip stea. Totusi, fiecare retea are nevoie de macar un dispozitiv complet functional (FFD) care serveste drept coordonatorul retelei. Astfel, retelele sunt formate din grupuri de dispozitive separate intre ele prin distante rezonabile. Fiecare dispozitiv are un identificator unic de 64 biti, sau de 16 biti daca anumite conditii sunt potrivite.

Retelele peer-to-peer pot forma modele de conectiuni aleatoare si extinderea lor este delimitata doar de distanta dintre perechile de noduri. Ele servesc drept bazele unor retele ad-hoc, capabile de auto-organizare si auto-management.

Retelele de tip stea sunt de asemenea suportate, unde coordonatorul retelei este si nodul central. Acest tip de retea isi are originea in decizia unui dispozitiv complet funtional de a-si crea o retea PAN si se declara coordonator, dupa ce isi alege un identificator unic PAN. Dupa aceasta, celelalte dispozitive se pot conecta la retea, care devine independent functionala de celelalte retele stea. [36]

Modelul de analiza „Cele cinci forte ale lui Porter”

Acest model de analiza este un cadru pentru analizarea industrei si dezvoltarea strategiei de afaceri. A fost dezvoltat ca o alternativa la clasica analiza SWOT.

Aceste cinci forte determina intesitatea competitiei si astfel, astractivitatea unui mediu de marketing. In cazul de fata, atractivitatea se refera la profitabilitatea industriei per total.

Cele cinci forte:

Amenintarea noilor competitori

Domeniile profitabile ce returneaza castiguri impresionante atrag noi firme. Acest fapt poate rezulta intr-o multitudine de noi intrati, care in timp, vor scadea profitabilitatea industriei. Daca acesti noi competitori nu pot fi inlaturati, rata profitului va scadea la zero.

In analizarea noilor intrati si amenintarea pe care acestia o aduc trebuie avute in vedere:

existenta barierelor la intrare

politica guvernului

necesarul de capital

costurile absolute

loialitatea clientilor

accesibilitatea la distribuitori

profitabilitatea industriei

Amenintarea produselor sau serviciilor surogate

Daca exista produse care au cateva caracteristici in plus fata de cele existente, consumatorii schimba produsele pe care le folosesc in mod obisnuit cu acele produse.

In aceasta analiza trebuie tinut cont de:

inclinatia cumparatorilor de a schimba produsele

raportul pret-performante ale produsului inlocuitor

costul pe care cumparatorul il suporta cand inlocuieste produsul

numarul de produse inlocuitoare existent pe piata

usurinta inlocuirii

deprecierea calitatii

Puterea de negociere a clientilor

Reprezinta abilitatea acestora de a pune compania sub presiune. In acest mod, ei se sensibilizeaza la schimbarile de pret. Clientii au o putere mare daca exista multe alternative ale produsului. Factori potentiali :

raportul dintre numarul de cumparatori si numarul firmelor

gradul de dependenta fata de canalele de distribuitori

influenta negocierilor, in special in cazul industriilor care au costuri fixe destul de ridicate

disponibilitatea informatiilor pentru clienti

sensibilitatea cumparatorilor fata de pret

avantajele diferentierii produselor

Puterea de negociere a furnizorilor

Furnizorii de materii prime, de componente sau de servicii pot pune presiune pe companie daca nu exista sau sunt putine alternative la produsele sau serviciile lor. Acestia pot creste pretul excesiv pentru resurse pretioase. Factori potentiali:

gradul de diferentiere al elementelor de intrare

prezenta altor produse inlocuitoare

puterea canalului de distributie

raportul dintre numarul firmelor si numarul furnizorilor

loialitatea angajatilor

Intensitatea concurentei

In majoritatea industriilor, concurenta este data de intensitatea rivalitatii dintre firme. Trebuie avute in vedere:

avantajul obtinut prin inovare

competitia intre concurentii directi si cei indirecti

costul ridicat de publicitate

rata de concentrare a firmelor

gradul de transparenta al competitorilor [37]

Managementul consumului de putere

Managementul energiei se refera in sens larg la tensiunile generate si controlate necesare unui sistem electronic pentru a functiona. Aceasta ramura cuprinde mult mai mult decat simpla proiectare a sursei. Sistemele din zilele noastre necesita ca proiectarea sursei sa fie integrata in conceptia sistemului, pentru a mentine o eficienta inalta. In plus, sunt necesare amplasarea unor regulatoare montate pe circuitul integrat. Astfel, cunostintele unui inginer trebuie sa includa atat sursele/regulatoarele liniare ca si cele care functioneaza in comutatie. Printre dispozitivele cele mai utilizate in obtinerea unui management al energiei se enumera: regulatoare in comutatie, regulatoare liniare si tensiuni de referinta Principalele motive pentru care se utilizeaza sisteme cu sistem de management al energiei este :

Reducerea energiei consumate

Prelungirea duratei de viata a bateriei in sistemele portabile

Se reduce nevoia de a raci sistemul

Reducerea zgomotului

Se reduc costurile de operare cu energia si racirea

Exemple de procesoare cu sistem de management al energiei aplicat: Cool’n’Quiet (AMD), PowerNow! (AMD), EnergyScale (IBM), SpeedStep (Intel). [38]

Interesul pentru construirea circuitelor integrate si a sistemelor cu un consum redus de energie este in continua crestere. Cercetarea in acest domeniu este sustinuta de doua mari categorii de piete: cea a electronicelor portabile si cea a sistemelor de inalta performanta.

In ultima perioada, reducerea consumul de energie are loc in mod dinamic, dand nastere asa-numitului management al energiei dinamic. Aceasta zona de studiu cuprinde metodologii si tehnici de control a performantelor si de consum al energiei care exploateaza perioadele de inactivitate in circuite si componente.

Mecanisme pentru perioade de inactivitate si oprirea functionarii

Principiul care sta la baza managementului energiei in mod dinamic este detectia inactivitatii unui element si oprirea functionarii acestuia. Premisa fundamentala a acestui principiu este ca detectia inactivitatii si circuitul de management sa consuma doar o fractiune din totalul puterii.

Inactivitatea poate fi clasificata ca externa sau interna. Cea externa este legata de conceptul de observatie a marimii de iesire in timp ce inactivitatea interna este strict legata de notiunea de stare interna a unei componente. Un circuit este inactiv extern daca iesirile sale nu au fost observate o perioada de timp. Pe durata acestei perioade, unitatea functioneaza redundant si poate fi oprita pentru a reduce consumul de energie. Pe de alta parte, un circuit este inactiv intern cand produce la iesire acelasi stimul de-a lungul unei perioade de timp. Iesirea poate fi blocata in starea actuala si componenta oprita.

Existe multe mecanisme de oprire a unui element. Importanta lor este masurata in cantitatea de energie salvata in timpul opririi functionarii si timpul necesar opririi si repornirii unitatii.

Una dintre cele mai simple metode, utilizata in circuitele digitale, este de a dezactiva registrii, micsorand variabila de intrare. Astfel, informatia salvata in registrii este blocata temporar, propagarea datelor prin circuitele logice este stopata, salvand o parte din energia ce ar fi fost consumata. Aceasta metoda este importanta pentru circuitele CMOS, unde puterea este in principal consumata in timpul tranzitiei dintre stari.

O metoda mai radicala este aceea de opri complet o unitate. Desi acest concept este destul de simplu si usor de aplicat, de obicei necesita un timp deloc neglijabil de repunere in functiune a dispozitivului. Aceasta metoda se utilizeaza cu precadere pentru componente mai mari (memorii, discuri, afisaje). Componentele pot fi oprite la diferite nivele, fiecare avand ca si corespondent un anumit nivel de consum si o intarziere pentru repunerea in functiune a sistemului. De exemplu, un disc poate avea mai multe stari: activ, inactiv, inactiv cu consum redus, asteptare, hibernare. In modul inactiv, discul se invarte si doar anumite componente ale unitatii sunt oprite. Tranzitia din modul inactiv in modul activ este foarte scurta, dar numai 50-70% din consum este salvat. In modul asteptare sau hibernare, discul este oprit complet, reducand consumul de energie cu pana la 95%. Pe de alta parte, tranzitia catre modul activ este si lenta si necesita consum suplimentar de energie. [39]

Implementarea solutiei adoptate

Pentru a putea intelege mai bine cum functioneaza toate aceste blocuri intre ele, este prezentata schema bloc(x) cu principalele semnale ce interconecteaza blocurile, dupa care se va descrie schema eletrica(x), in detaliu:

Fig. X Schema bloc reprezentata in OrCAD

In continuare, fiecare bloc va fi analizat prin rolul pe care il are el in circuit precum si motivul pentru care este utilizat in configuratia prezentata.

Microcontrolerul MSP430F2619S-HT

Unitatea centrala de procesare

Perifericele sunt conectate la procesor folosind date, adrese si magistrale de control si pot fi prelucrate cu toate tipurile de instructiuni.

Tabelul y contine descrierea modurilor de adresare posibile:

S= Sursa

D=Destinatie

Tabel Y Modurile de adresare ale CPU [18]

Memoria

Memoria flash poate fi programata prin intermediul portului JTAG sau prin intermediul CPU. Procesorul poate efectua scrieri de un singur byte sau cuvant in memoria flash.

Caracteristicile electrice ale memoriei Flash:

Tabel y Principalele caracteristici ale memoriei Flash [17]

Generator de semnale de tact

De la generatorul de semnal de tact sunt disponibile trei semnale:

ACLK: Semnal auxiliar. ACLK poate fi selectat prin intermediul software-ului ca si semnal LFXT1CLK sau VLOCLK. Acesta poate fi divizat cu 1, 2, 4 sau 8. De asemenea, mai poate fi selectat pentru diferite module periferice.

MCLK: Semnal de referinta. MCLK poate fi selectat ca si LFXT1CLK, VLOCLK, XT2CLK sau DCOCLK. Acesta poate fi divizat cu 1,2,4 sau 8. Semnalul MCLK este utilizat de catre CPU si de catre sistem.

SMCLK: Semnal secundar de referinta. SMCLK poate fi selectat ca si LFXT1CLK, VLOCLK, XT2CLK sau DCOCLK. Acesta poate fi divizat cu 1,2,4 sau 8. SMCLK poate fi utilizat pentru diferite module periferice prin intermediul unui software. [18]

Interfata universala de comunicare seriala (USCI)

Interfata universala de comunicare seriala (USCI) suporta mai multe moduri de comunicare seriala. Diferite module USCI suporta moduri diferite. Modulele sunt denumite diferit, de exemplu USCI_A este diferit de USCI_B.

Modulele USCI_Ax suporta:

mod de comunicare UART

detectia automata a baudrate pentru comunicarea LIN

mod de comunicare SPI

Modulele USCI_Bx suporta:

mod de comunicare

mode de comunicare SPI [18]

Modul UART

In modul asincron, modulele USCI_Ax conecteaza microcontrolerul la un sistem extern prin intermediul a doi pini externi, UCAxRXD si UCAxTXD.

Modul UART include:

date de 7 sau de 8 biti cu paritate, imparitate sau non-paritate

registrii independenti de receptie si transmisie

se pot seta care dintre biti (primul sau ultimul) sa fie transmisi sau receptionati primii

baudrate programabil

capacitate de intrerupere independenta pentru transmisie sau pentru receptie [18]

In acest mod, modulul radio este conectat la microcontroler.

Modul SPI

In modul sincron, interfata universala de comunicare seriala conecteaza MSP-ul la un sistem extern prin intermediul a 3 sau 4 pini: UCxSIMO, UCxSOMI, UCxCLK si UCxSTE.

Modul SPI include:

date de 7 sau de 8 biti

date pentru care se pot seta care dintre biti (LSB sau MSB) sa fie transmisi sau receptionati primii

operatii SPI pe 3 pini sau pe 4 pini

moduri master sau slave

registrii separati pentru transmisie si receptie

operatiune de transmisie/receptie continua

frecventa semnalului ce ceas programabila in modul master

capacitate de intrerupere independenta pentru transmisie sau pentru receptie [18]

Prin intermediul SPI, putem conecta memoria SST25VF010A la microcontroler.

Modul

In modul , modulul USCI ofera o interfata intre MSP430 si dispozitive compatibile . Conexiunea se realizeaza prin intermediul a doua fire. Aceste dispozitive externe transmit si receptioneaza date prin intermediul acestor doua fire.

Printre trasaturile modului se enumera:

mod de adresare pe 7 sau 10 biti

functie de start/restart/stop

modul standard de transmisie a datelor are un debit de pana la 100 kbps in timp ce modul rapid de transmitere a datelor are un debit de pana la 400 kbps

frecventa semnalului de tact UCxCLK este programabila in modul master

conceput pentru consum scazut [18]

In acest fel, putem conecta senzorul SHT21 la microcontroler.

Memoria SST25VF010A

Dispozitivul este continut intr-un integrat cu 8 pini de tip SOIC. Pentru detalii legate de contur si functionalitatea pinilor se poate studia figura x si tabelul y:

Figura x Asignarea pinilor memoriei SST25VF010A [20]

Tabel y Descrierea pinilor memoriei [20]

Pentru a realiza conectarea memoriei la microcontroler se va folosi urmatoarea configuratie: Pinul 45 (UCB1SIMO) al MSP-ului este conectat la pinul 5 (SI – Serial Input) al memoriei. Pinul 46 (UCB1SOMI) al controlerului este conectat la pinul 2 (SO – Serial Output) al memoriei. Pinul 47 (UCB1CLK) este conectat la pinul 6 (SCK – Serial Clock) al memoriei pentru sincronizarea semnalului de tact. Ultima conexiune, pinul 44 (UCB1STE) este conectat la pinul 1 (CE# – Chip Enable), utilizata la activarea memoriei pentru citire/scriere.

Fig. x Conectarea memoriei la microcontroler

Pentru a studia felul in care se alimenteaza si opereaza memoria cu ajutorul microcontrolerului, este necesara o studiere a specificatiilor electrice ale integratului:

Tabel x Principalele specificatii electrice ale memoriei [20]

Senzorul de temperatura si umiditate SHT21

Integratul are o dimensiune de 3 x 3 mm si o inaltime de 1.1 mm. Pe langa senzorul de umiditate si temperatura, cipul mai contine si un amplificator, un convertor analog-digital, o memorie EPROM si un DPU (Digital Processing Unit).

In tabelul x si y se regasesc principalele caracteristici ale senzorului:

Tabel x Caracteristicile senzorului de umiditate [22]

Tabel y Caracteristicile senzorului de temperatura [22]

Principalele specificatii electrice ale senzorului sunt :

Tabel x Principalele specificatii electrice [22]

Schema senzorului si diagrama pinilor poate fi observata in imaginea x si tabelul y:

Tabel x Asignarea pinilor

Figura x Numerotarea pinilor

Pinii 2 si 5 corespund alimentarii corespunzatoare a integratului. Pinul 5 trebuie alimentat la o tensiune cuprina intre 2.1 si 3.6 V. Pinii 2 si 5 trebuie decuplati cu o capacitate de 100nF, montata cat mai aproape de senzor.

Pinul Serial Clock este utilizat pentru a sincroniza comunicarea intre microcontroler si senzor.

Pinul SDA este utilizat pentru a transporta date dinspre si inspre senzor. Pentru a trimite o comanda senzorului, pinul trebuie validat pe frontul ascendent al SCL si trebuie sa ramana stabil atata timp cat SCL este „high”. Dupa ce SCL a scazut, valoare poate fi modificata. De asemeana, mai sunt necesare rezistente de pull-up la iesirea microcontrolerului pentru a trage semnalul sus.

Pentru a calcula umiditatea relativa, se foloseste de ecuatia x (%RH) :

(x)

unde – semnalul de iesire al umiditatii relative

RH – umiditate relativa

Pentru a calcula temperatura, se utilizeaza formula x, inserand semnalul de iesire in formula, obtinandu-se o valoare in ºC [22]:

(x)

Senzorul se conecteaza la microcontroler prin . Pinul 2 se leaga la masa, pinul 5 se leaga la o sursa de 3.3V. Ceilalti doi pini necesari, 1 si 6 se utilizeaza pentru conectarea cu microcontrolerul astfel: pinul 1 al senzorului (SDA – Serial Data) se conecteaza la pinul 29 la microcontrolerului (UCB0SDA), iar pinul 6 (SCL – Serial Clock) se conecteaza la pinul 28 al MSP-ului (UCA0CLK). Modul de conectare poate fi studia in figura x:

Fig. x Modul de conectare al SHT21 la microcontroler

Modulul radio VN400

Modulul VN400 este primul dispozitiv din lume ce se bazeaza pe standardul 802.15.4g. El este certificat in Statele Unite, Canada, Europa si Japonia. El utilizeaza platforma de microcontrolere Kinetis de la Freescale in combinatie cu un transceiver MC12311 tot de la Freescale. Acest pachet ofera o solutie ce poate fi incorporata intr-o gama larga de dispozitive de control si de masura. Acesta a fost special conceput pentru a putea fi alimentat si de la baterie.

Schema bloc a modulului este prezentata in figura x:

Fig. x Schema bloc a modului radio VN400

Microcontrolerul K60DN512ZVMC

Seria K de microcontrolere Kinetis de la Freescale include peste 600 de controlere cu consum redus de energie pe 32 biti. Ele au fost concepute pentru performante accesibile, o buna integrare si conectivitate. Ele contine mai multe convertoare analogic-numeric (ADC), mai multe convertoare numeric-analogic (DAC), precum si amplificatoare cu castig programbil (PGA). Ele doresc un consum cat mai redus si un pret mic datorita spatiului mic ocupat pe cip. [40]

Microcontrolerul din cipul VN400 prezinta mai multe caracteristici importante, printre care:

Caracteristici de operare:

Tensiune de alimentare cuprinsa intre 1.71 si 3.6 V

Tensiune necesara pentru scrierea in memoria Flash intre 1.71 si 3.6 V

Poate functiona la temperaturi cuprinse intre -40 pana la 105 ºC

Caracteristicile memoriei:

Pana la 512 KB de memorie flash programabila

Pana la 128 KB de memoria RAM

Interfata programabila serial

Caracteristicile generatoarelor de semnal de tact:

Oscilatoare de cristal cu frecventa de la 3 la 32 MHz

Oscilatoare de cristal cu frecventa de 32 KHz

Generatoare de ceas pentru diferite scopuri

Caracteristicile perifericelor:

Gestionarea modurilor de consum redus pentru a oferi un consum de energie optimizat

Controler de acces direct la memorie (DMA) pe 16 canale ce suporta pana la 63 de surse de cereri

Curent de scurgere mic la revenirea din starea de consum redus

Caracteristicile modulelor analogice:

Doua convertoare analogic-numeric pe 16 biti

Pana la 64 de amplificatoare programabile digital incorporate in fiecare convertor analogic-numeric

Doua convertoare numeri-analogic pe 12 biti

Tensiune de referinta [41]

Transceiverul MC12311CHNR

Transceiverul din seria MC12311 de la Freescale Semiconductor este un integrat de tipul SIP (System in package) care emite la frecvente de sub 1 GHz, capabil de utilizarea mai multor tipuri de modulatii (FSK, GFSK, MSK, OOK) si care mai contine si un microcontroler de consum redus pe 8 biti. El opereaza pe o gama larga de frecvente, printre care : 315 MHz, 433 MHz, 470 MHz, 868 MHz, 915 MHz, 928 MHz si 955 MHz. Aceasta configuratie permite utilizatorului sa minimizeze utilizarea componentelor externe.

MC12311 a fost conceput pentru aplicatii de tip low-power printre care :

Masuratori efectuate automat

Retele de senzori wireless

Automatizarea caselor si a cladirilor

Alarme si sisteme de securitate wireless

Printre trasaturile principale ale transceiverului se enumera:

Senzitivitate ridicata: pana la -120 dBm cu o rata de 1.2 kbps

Selectivitate ridicata: 16 canale de filtrare cu raspuns finit (FIR)

Curent scazut: 16 mA la receptie, 100nA pentru retentie in registrii

Putere de emisie programabila: de la -18 la +17 dBm cu pas de 1 dB

Codare FSK cu rate de transfer de pana la 300 kbps

Modulatii FSK, GFSK, MSK, GMSK, OOK

Senzor de temperatura si de nivel scazut al bateriei inclus

Oscilator de cristal cu frecventa de oscilatie de 32 MHz

Utilizarea la temperaturi cuprinse intre -40 si +85 ºC [42]

Conectorul J2, precum si pinii modului radio sunt prezentati in figura x:

Fig. x Conectorul J2 si pinii modulului radio [33]

Pentru a conecta modulul radio la microcontrolerul MSP430, ne vor fi necesari 5 pini, precum si o conexiune la o tensiune de 3.3V pentru alimentare si o conexiune la masa. Pinii prin care se realizeaza conexiunea sunt :1,3,27,28 – Masa; 2,4 – 3V3; 5 – UART1_TXT; 6 – UART1_RXD; 7 – nUART1_RTS; 8 – nUART1_CTS; 18 – LLWU_P13.

Respectiv, pinul 34 (UCA1TXD) de la controler se conecteaza la pinul 6 de la modulul radio (UART1_RXD). Astfel transmisia de la microcontroler este receptionata de VN400. Pe de alta parte, transmisia radioului , pe pinul 5 (UART1_TXD) este receptionata pe pinul 35 (UCA1RXD) al microcontrolerului.

Schema din OrCAD este prezentata in figura x:

Fig. X Modul in care se conecteaza VN400 cu microcontrolerul

In tabelul y sunt descrisi pinii utilizati in constructie:

Tabel y Descrierea pinilor utilizati in montaj [33]

Caracteristicile electrice determina conditiile care trebuie indeplinite pentru buna functionare a modulului. Ele pot fi studiate in tabelul y:

Tabel y Principalele caracteristici electrice ale VN400

Sursa de alimentare

Toate dispozitivele din schema electrica trebuie alimentate la anumite tensiuni. Deoarece majoritatea se pot alimenta de la tensiune de 3.3V am ales aceasta valoare ele.

In figura x este circuitul care alimenteaza celelalte componente:

Fig. x Alimentarea circuitului

Dupa cum am specificat si anterior, acest circuit poate fi alimentat atat de la o sursa de tensiune externa cat si de la bateria cu care este prevazut.

Prima parte a circuitului este formata din portul USB si un integrat LM1117-ADJ.

Integratul LM1117 este un regulator de tensiune, astfel incat el va genera o tensiune de 3.6V constanta, atata timp cat tensiunea de la intrarea sa depaseste 4.7V, avand in vedere tensiune de drop-out de 1.1V. Integratul poate genera pana la 800mA de curent, care este suficient pentru consumul placii [43], avand in vedere tabelul x:

Tabel x Consumul componentelor

Considerand tabelul descris mai sus, bateria se va alege tot in functie de curentul debitat, care va trebui sa fie de minim 200-300 mA.

Cele doua rezistente de 124, respectiv 237 Ω sunt utilizate pentru a obtine un raport de ajustare a tensiunii de la iesirea regulatorului(x):

Fig. x Schema pentru ajustarea tensiunii de iesire [43]

Utilizand relatia(x) se poate obtine o teniune de iesire de 3.6V inlocuind necunoscutele cu valori pentru rezistente[43]:

(X)

In continuare, datorita caderii de tensiune de pe diode (0.2-0.3) se va obtine tensiunea dorita de 3.3 V. Sursa sa si bateria sunt astfel configurate, astfel incat doar una dintre ele sa conduca in acelasi timp. Tensiunea de pe baterie se masoara pe rezistenta R73, pentru a putea avertiza utilizatorul in caz de baterie descarcata(x).

Fig. x Configuratia sursei si a bateriei

Nu in ultimul rand, finalul partii de alimentare a placii este date de un mini releu CPC1020, care poate taia sau cupla alimentarea radioului, pentru a scadea consumul cand emisia sau receptia nu este necesara.

Reducerea consumului de energie

In circuitul prezentat[x], reducerea consumului prin managementul energiei se realizeaza prin diferite setari si/sau componente existente pe montaj.

Circuitul de alimentare

Alimentarea componentelor se realizeaza fie de la baterie, fie de la o sursa externa. Aceasta sursa externa poate fi conectata fie prin modulul USB, fie legata direct la intrarea regulatorului de tensiunea LM1117.

In cazul alimentarii de la o sursa externa, trebuie tinut cont de specificatiile integratului LM1117. In montajul prezentat, acesta genereaza o tensiune stabilizata de 3.6V si un curent la iesire de 800mA. Astfel, puterea maxima debitata de acesta este de 2.88W. Sursa externa trebuie sa aiba o putere apropiata de cea a integratului, pentru ca acesta sa nu disipe puterea introdusa in circuit. Avand in vedere consumul celorlalte componente si functionarea la temperaturi inalte, o sursa de 2W poate acoperi consumul de curent din circuit si de asemenea poate oferi o eficacitate inalta a regulatorului fara a disipa prea multa energie.

Microcontrolerul

Microcontrolerul este cea mai complexa componenta din schema electrica. Cu toate acestea, consumul acestuia este relativ mic, comparandu-l cu celelalte componente. Desi el are un consum mic, nu pot fi oprit complet aproape niciodata, de el depinzand buna functionare a celorlalte componente. Astfel, MSP-ul vine cu sase moduri de operare selectabile si configurabile prin intermediul software-ului. Un mod este activ, iar celelalte cinci sunt moduri de consum redus. Prin intermediul unei intreruperi dispozitivul poate fi repus in functiune din orice mod si apoi pus in mod de consum redus la incheierea intreruperii.

Pentru a putea face o legatura intre modurile de functionare si necesarul de energie trebuie prezentat tabelul x si figura y:

Tabel x Modurile de consum redus ale microcontrolerului [17]

Figura x Modurile de operare ale microcontrolerului raportate la consumul de curent [18]

Memoria

Aceasta parte a schemei are un consum destul de ridicat prin comparatie cu celelalte componente. Din acest motiv, trebuie prevazute mecanisme de reducere a consumului atunci cand activitatea memoriei nu este cruciala.

Memoria este utilizata doar atunci cand se scriu date sau se citesc date dinspre/inspre aceasta. Consumul in mod activ este de 7 mA, astfel ca aceasta va fi mentinuta in stadiu activ doar pentru durata scrierii/citirii acesteia. Durata de stergere/scriere a memoriei este de 70 ms. Doar pe durata celor 70 ms memoria trebuie mentinuta activa, dupa care trebuie trecuta in modul asteptare, unde consumul scade pana la 8 µA, care este neglijabil. [20]

Senzorul

Senzorul SHT21 este un integrat cu un consum aproape nesemnificativ in modul inactiv, dar cu unul destul de insemnat atunci cand masoara marimile fizice pentru care a fost creat. Principalii parametrii care influenteaza curentul consumat de senzor sunt tensiunea de alimentare si temperatura. Formele de unda care descriu comportamentul de consum sunt prezentate in figurile x si y.

Figura x Dependenta curentului de alimentare (in mod inactiv) de temperatura [22]

Figura x Dependenta curentului de alimentare (in mod inactiv) de tensiunea de alimentare [22]

Tinand cont de aceste caracteristici, senzorul poate fi setat sa masoare si sa transmita date legate de temperatura si umiditate doar la cateva secunde. De asemenea, temperatura integratului poate fi mentinuta la o valoare mai scazuta atunci cand situatia o permite. Consumul cand senzorul masoara poate creste pana la 330 µA, de aceea aceasta situatie trebuie intalnita doar cand este absolut necesara. In restul timpului, microcontrolerul poate fi setat sa intrerupa comunicatia cu senzorul.

Modulul radio

Aceasta componenta are consumul cel mai mare din tot cablajul. Din acest motiv, el prezinta o importanta aparte in identificarea unor solutii de reducere a consumul de energie. Modulul radio VN400 nu are moduri de functionare de tip consum redus, astfel ca trebuie implementate modalitati ingenioase pentru deconectarea sa.

In mod normal, aceasta componenta consuma aproximativ 140 mA cand este in emisie si 50 mA cand este in receptie. Din cauza lipsei unui sistem de management al energiei, radio-ul va fi mereu in receptie, ascultand posibile transmisii atunci cand el nu este in emisie. De aici se deduce faptul ca el va consuma un minim de 50mA, fapt ce este intolerabil. O posibila solutie implementata este oprirea fortata a acestui modul, cand functionarea sa nu este obligatorie (x):

Fig. x Schema de deconectare a modulului radio

Prin intermediul mini releului CPC1020NTR si al switch-ului IXD602SIA alimentarea modului VN400 poate fi intrerupta, el fiind oprit. Aceasta operatiune are loc printr-o comanda de la microcontroler. In felul acesta, energia care se pierde in mod normal prin simplul fapt ca radio-ul asculta eventuale transmisii este salvata. Printr-o comanda de reconectare, radio-ul poate fi din nou pornit si toata activitatea reinceputa.

O alta metode de economie a energiei este de a micsora puterea cu care se emite. In anumite locuri in care dispozitivul este apropiat de sursa care receptioneaza emisia, nivelul de putere poate fi scazut. Transceiverul poate fi setat sa emita cu o putere cuprinsa in intervalul -18 pana la +17 dBm cu pas de 1 dB. In acest fel se pot obtine multe configuratii ale modulului, in functie de nevoile utilizatorilor. [33]

In cele din urma, o ultima posibila metoda de economisire a energiei este de a dezactiva modulul radio pe durate mai lungi de timp (30min, 1 ora) si de a-l reporni doar inainte sa intre in emisie/receptie. Astfel, se pot transmite masuratori la intervale fixate de timp, utilizarea radio-ului (cel mai mare consumator) sa fie minimizata. Aceste setari trebuie dublate de cele ale gazdei pentru a asigura buna functionare a schimbului de date.

Programarea microcontrolerului

Deoarece functiile blocurilor descrise pot fi utilizate dor cu ajutorul microcontrolerului, am inclus in implementarea solutiei si schema si cursul codului care este in spatele acestor functii.In figura x este diagrama bloc a componentelor si modurile in care acestea comunica intre ele:

Fig.x Modurile de comunicare intre componente

Pe langa aceasta schema, este necesara si o schema a cursului ce il urmeaza codul in evolutia sa. Pentru aceasta, in figura x din Anexe este prezentat code flow-ul aplicatiei.

Rezultate experimentale

Pentru a simula circuitul prezentat anterior si a verifica rezultate obtinute am folosit un modul de dezvoltare atat pentru microcontroler cat si pentru modulul radio. Senzorul a fost montat pe o placa de test dupa modelul prezentat anterior. Realizarea conectiunilor, precum si modulele de dezvoltare sunt prezentat in figura 4.1:

Figura 4.1. Montajul experimental utilizat

In urma experimentelor realizate, s-au obtinut rezultate concludente si pozitive in ceea ce priveste masurarea atat a temperaturii cat si a umiditatii relative. Pentru a putea compara rezultatele obtinute, am utilizat ca si comparator un dispozitiv portabil de la Hanna Instruments HI93640N. Acesta este un termo-higrometru capabil sa masoare temperatura cu o rezolutie de 0.1 ºC si umiditatea cu o rezlutie de 0.1%. Masuratorile efectuate de senzor au fost intepretate de microcontroler si trimise prin radiofrecventa unei gazde si apoi afisate pe un site web. Rezultatele sunt prezentate in figurile x,y:

Figura 4.x Masuratorile obtinute de senzorul SHT21

Figura y. Temperatura si umiditatea relativa masura de HI93640N

Se observa in figura 4.x ca senzorul SHT21 a inregistrat o temperatura de 32.08 ºC. In acelasi timp, termo-higrometrul a inregistrat o temperatura de 32.2 ºC. Aceasta diferenta este una foarte mica si nu prezinta motive de ingrijorare. In partea a doua masuratorilor s-a inregistrat de catre senzorul SHT21 o umiditate relativa de 34.24%, in timp ce dispozitivul de la Hanna Instruments a apreciat umiditatea la valoare de 34.1%. Din nou, aceasta diferenta nu este ingrijoratoare, tinand cont ca masuratorile au un decalaj in timp de ordinul secundelor.

In continuare, s-a efectuat o analiza a consumului componentelor pentru a se evidentia modurile in care se poate economisi energie. Figura x prezinta consumul microcontrolerului si al senzorului atunci cand senzorul efectueaza o masuratoare, iar figura y consumul atunci cand senzorul este in mod asteptare.

Figura x Consumul microncontrolerului si al senzorului cand se efectueaza o masuratoare

Figura y Consumul microcontrolerului cand senzorul este in mod asteptare

Se poate observa ca acul care indica masuratoarea efectuata este in dreptul simbolului de curent continuu, pe scara 20m. Astfel, in figura x consumul indicat de multimetru este de 10.55 mA, atunci cand senzorul efectueaza o masuratoare. Acest consum este dat atat de cel al microcontrolerului cat si de cel al senzorului. In figura y, consumul indicat este de 8.26 mA, o diferenta de 2.3 mA atunci cand senzorul este in mod asteptare. Situatia in care microcontrolerul este in mod de consum redus nu a putut fi masurata, deoarece scara multimetrului nu permite efectuarea de masuratori de ordinul catorva µA. Puterea consumata de ansamblul microcontroler si senzor este de : 34mW cand se efectueaza o masuratoare si de 27mW cand nu se efectueaza. Atunci cand microcontrolerul este in mod de consum redus, puterea ar scadea sub 0.01 mW.

Un alt modul care prezinta un potential de reducere al consumului este cel al radioului. Pentru a inregistra consumul am alimentat modulul de dezvoltare de la o sursa de tensiune stabilizata. Consumul inregistrat atunci cand radioul este in emisie/receptie este aratat in figura x, iar atunci cand el este oprit in figura y:

Figura x Consumul inregistrat de catre modulul radio in emisie/receptie

Figura y Consumul inregistrat de catre modulul radio cand este oprit

Se observa in figura x ca modulul radio consuma 20 mA in emisie/receptie, fiind alimentat la 5V. Aceasta configuratie are un consum total de 100 mW(puterea emisiei este setata la o valoare intermediara intre minimul si maximul cu care poate sa emita modulul). Atunci cand radioul este oprit, figura y, acesta nu are consum, deci nu se disipa putere pe el.

Astfel, de la un consum de maxim 137 mW, atunci cand toate componentele sunt in moduri active de functionare, se poate ajunge chiar si la un consum de ordinul catorva zeci de µW, atunci cand toate componentele sunt in moduri de consum redus sau oprite.

Prin implementarea unor moduri inteligente de gestionare a consumului de energie, se poate ajunge la un compromis intre oprirea si pornirea diferitelor module pentru a prelungi cat mai mult durata de viata a bateriei.

TABEL

Concluzii

In lucrarea de fata s-a dorit obtinerea unui dispozitiv wireless de masurare a temperaturii si umiditatii relative, care obtine rezultatele masuratorilor si este capabil sa le transfere unei gazde via radiofrecventa.

Am ales aceasta tema tinand cont de evolutia sistemelor wireless, care a cunoscut o dezvoltare pronuntata in ultimele decenii. Aceste dispozitive maresc mobilitatea si asigura accesul in zone greu accesibile. Utilizand tehnologia wireless, oamenii pot controla mai bine accesul la informatie si pot obtine statistici privind datele mult mai facil. Nu in ultimul rand, expansiunea retelei de senzori este foarte simpla, fara a fi nevoia de legaturi suplimentare.

Pentru a putea intelege mai bine conceptul de senzor fara fir si interactiunea acestuia cu mediul, s-au prezentat informatii despre cele mai importante principii de functionare, precum si componente utilizate. S-a abordat o perspectiva de la general la particular.

In primul capitol, „Stadiul actual”, s-a facut o introducere in domeniul vast al senzorilor, pozitionand aceasta categorie a senzorilor in lumea inconjuratoare. In continuare, s-au prezentat avantajele unui senzor de tip wireless si anumite criterii de selectie. Intrucat transferul datelor prin radiofrecventa se poate face in foarte multe moduri, s-au prezentat principalele standarde utilizate in comunicatiile dintre senzorii wireless si gazda. Tot aici, am analizat si principalii concurenti ai produsului, prin prisma datelor financiare ale companiilor si a specificatiilor tehnice.

In urmatoare parte, „Fundamentare teoretica”, a fost introdusa schema bloc, pe care se bazeaza buna functionare a dispozitivului, dupa care blocurile componente au fost analizate la modul teoretic. Pentru inceput s-a studiat conceptul de microcontroler, caracteristicile regasite la acest tip de dispozitiv(frecventa, dimensiune memorie, consum de energie), precum si partile din care el este alcatuit. Trecand la memorie, s-a facut referire la proprietatile memoriei de tip Flash si felul in care aceasta a evoluat din cea de tip EEPROM. In continuare, senzorii au fost analizati, prin modul in care acestia reusesc sa extraga informatia din mediu si sa o reproduca analogic/digital. S-a prezentat principiile de functionare ale senzorilor de temperatura bazati pe termocuple, cei care folosesc termorezistoare, termistoare si traductoare integrate. Nu a fost uitat nici senzorul de umiditate, cu cele doua principii fundamentale: efectul capacitiv si cel rezistiv. In cele din urma, blocul intitulat „Modul radio” a fost prezentat cu caracteristicile sale, urmat de protocolul 802.15.4, pe care se bazeaza functionarea echipamentului utilizat in experiment, VN400. Pe partea de management al consumul de energie, s-au introdus notiuni legate de mecanisme fundamentale de control al consumului. In ceea ce priveste analiza concurentilor efectuata anterior, s-au justificat alegerile si descrierile facute pe baza modelului de analiza „Cele cinci forte ale lui Porter”.

Capitolul „Implementarea solutiei adoptate” a insemnat transformarea viziunii teoretice in una de tip pragmatic. Blocurile mentionate anterior au fost reluate, de aceasta data ele fiind analizate prin modul in care sunt conectate pe schema electrica(in OrCAD) si felul in care conlucreaza pentru obtinerea rezultatelor. In ceea ce priveste microcontrolerul, s-au prezentat modurile in care informatia migreaza inspre/dinspre registrii procesorului, s-a aratat modul in care memoria flash a acestuia stocheaza datele, precum si interfetele (UART, SPI, ) prin intermediul carora MSP-ul transfera date cu celelalte componente. Memoria SST25VF010A a fost analizata, prin numarul si utilizarea pinilor, dar si modul in care aceasta reuseste sa faca un schimb de date cu microcontrolerul. Conectarea memoriei prin diferitii pini si principalele caracteristici electrice au fost si ele mentionate si descrise. Senzorul SHT21 a beneficiat de o analiza apropiata cu cea a memoriei, doar ca acestuia i s-au mai adaugat si ecuatiile prin care acesta isi calculeaza temperatura si umiditatea, precum si diferitele rezolutii la care el genereaza date. Deoarece modulul radio este un sistem in sine, acestuia i-au fost dezvaluite caracteristicile privitoare la microcontrolerul si transmitatorul de la Freescale. Desigur, toate acestea componente nu ar putea functiona fara o sursa de tensiune, astfel ca bucata de circuit ce se ocupa cu furnizarea de tensiune stabilizata la 3,3V a fost descrisa integral, au fost mentionate ambele surse potentiale (usb/alimentare externa si baterie) si s-a intocmit un tabel al consumului pentru a explica nevoia utilizarii anumitor componente. Fireste, acest consum analizat trebuie micsorat cat mai mult cu putinta, pentru a obtine un circuit de inalta eficienta si pentru a prelungi durata de viata a bateriei. In ultimul sub-capitol, am prezentat doua scheme legate de programarea microcontrolerului.

In ultimul capitol, „Rezultate experimentale”, s-au prezentat rezultatele masuratorilor obtinute utilizand senzorul SHT21 conectat la o placa de dezvoltare a microcontrolerului si o placa de dezvoltare pentru radioul VN400. Pentru veridicitatea rezultatelor, s-a folosit si un senzor comercial calibrat si testat, HI93640N. Rezultatele au fost pozitive, senzorul inregistrand valori foarte apropiate de cele ale senzorului comercial. Ultima parte a capitolului a reprezentat masurarea consumului inregistrat de componente utilizand metode rudimentare de reducere a consumului de energie.

In acest proiect s-a utilizat un cod de programare al microcontrolerului putin personalizat pentru a obtine un consum redus al montajului. In continuare, se pot studia diferiti algoritimi implementati pentru a reduce si mai mult consumul schemei si a imbunatatii durata de viata a bateriei.

Bibliografie

[1] [2014] http://webbut.unitbv.ro/Carti%20on-line/BSM/BSM/capitol4.pdf

[2] [2014] http://en.wikipedia.org/wiki/Sensor

[3] [2014] http://www.mfg.mtu.edu/cyberman/machtool/machtool/sensors/intro.html

[4] [2014] http://www.omega.com/prodinfo/wirelesssensors.html

[5] Kazem Sohraby, Daniel Minoli, Taieb Znati, Wireless Sensor Networks: Technology, Protocols, and Applications, 2007

[6] [2014] http://searchmobilecomputing.techtarget.com/definition/IEEE-802-Wireless-Standards-Fast-Reference

[7] [2014] http://en.wikipedia.org/wiki/IEEE_802.15

[8] [2014] http://www.hindawi.com/journals/ijdsn/2012/467124/

[9] [2014] http://en.wikipedia.org/wiki/Competitor_analysis

[10] [2014] http://www.newport.com/cms/company/company-overview]

[11] [2014] http://investor.newport.com/phoenix.zhtml?c=70217&p=irol-reportsAnnual

[12] [2014] http://www.omega.com/info.html ]

[13] [2014] http://www.spectris.com/system/files/uploads/financialdocs/spectrisplcannualreport2013.pdf

[14] [2014] http://www.dwyer-inst.com/AboutUs.cfm

[15] [2014] http://www.insideview.com/directory/dwyer-instruments-inc

[16] [2014] http://en.wikipedia.org/wiki/Microcontroller

[17] „MSP430F2619S-HT datasheet”, Texas Instruments, Texas, United States

[18] „MSP430F2619S-HT User’s guide”, Texas Instruments, Texas, United States

[19] [2014] http://en.wikipedia.org/wiki/Flash_memory

[20] „SST25VF010A datasheet”, Microchip Technology, Arizona, United States

[21] [2014] http://en.wikipedia.org/wiki/Sensor

[22] „SHT21 datasheet”, Sensirion, Staefa, Switzerland

[23] [2014] http://www.engineeringtoolbox.com/thermocouples-d_496.html

[24] Viorel Nica, Laurentiu Dimitriu, Liliana Vornicu, Daniela N. Nica, Senzori si traductoare electronice, Iasi 2001

[25] [2014] http://en.wikipedia.org/wiki/Resistance_thermometer ]

[26] [2014] http://www.azom.com/article.aspx?ArticleID=2339

[27] [2014] http://en.wikipedia.org/wiki/Thermistor

[28] [2014] http://automationwiki.com/index.php?title=Thermistors

[29] [2014] http://en.wikipedia.org/wiki/Silicon_bandgap_temperature_sensor

[30] [2014] https://controls.engin.umich.edu/wiki/index.php/TemperatureSensors#Temperature_Sensors ]

[31] [2014] http://en.wikipedia.org/wiki/Hygrometer

[32] [2014] http://www.engineersgarage.com/articles/humidity-sensor

[33] „VN400 datasheet”, Nivis, Atlanta, United States

[34] [2014] http://en.wikipedia.org/wiki/RF_module

[35] [2014] http://en.wikipedia.org/wiki/IEEE_802.15.4

[36] IEEE Standard for Local and metropolitan area networks—Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs), IEEE Std. 802.15.4, 2011

[37] [2014] http://en.wikipedia.org/wiki/Porter_five_forces_analysis

[38] [2014] http://en.wikipedia.org/wiki/Power_management

[39] Luca Benini, Giovanni De Micheli, Dynamic Power Management of Electronic Circuits and Systems, Stanford, 1999

[40] [2014] http://www.freescale.com/webapp/sps/site/overview.jsp?code=KINETIS_K_SERIES

[41] „MK60DN512ZVMD10 datasheet”, Freescale Semiconductor, Arizona, United States

[42] „MC12311 datasheet”, Freescale Semiconductor, Arizona, United States

[43] „LM1117 datasheet”, Texas Instruments, Texas, United States

Anexe

/** @file main.c

* @brief Contains all the initializations and the last-forever loop.

*/

#include "Hardware/HW_Specific.h"

#include "Hardware/UART.h"

#include "Hardware/UCS.h"

#include "Hardware/SPI.h"

#include "Hardware/I2C.h"

#include "API/Full_API.h"

#include "ISA100/Contracts.h"

#include "ISA100/UAPMO.h"

#include "ISA100/CO.h"

#include "ISA100/DAQO.h"

#include "Hardware/Timers.h"

#include "log.h"

#ifdef DEBUG_TEMP

fp32 value;

uint8 ucValue;

uint8 ucBuffer[1];

#endif

uint8 g_ucSSTID;

uint8 g_aucRxBuffer[256];

/** @brief Initializes the ISA100.11a objects.

*/

void InitDevice()

{

InitUAPMO();

InitCO();

}

/** @brief The main function.

*/

int main(void) {

WDTCTL = WDTPW + WDTHOLD; // Disable WDT for now

InitUCS(); // Init Unified Clock Source

UART_Init(); // Init UART

InitDataStructures();

InitDevice();

InitQueues();

InitTimerA();

InitTimerB();

InitLEDs();

Log_Init();

__enable_interrupt(); // Enable Interrupts

Log("The Wireless Sensor has started successfully.\n");

while(1)

{

ApiTask();

DelayMs(1);

#ifdef ESA_TEMP

ContractsTask();

#endif

#ifdef DEBUG

ContractsTask();

#endif

LEDTask();

DAQ_Task();

#ifdef DEBUG

DAQ_Task();

#endif

}

}

//==============================================================================

// S E N S I R I O N AG, Laubisruetistr. 50, CH-8712 Staefa, Switzerland

//==============================================================================

// Project : SHT2x Sample Code (V1.2)

// File : SHT2x.c

// Author : MST

// Controller: NEC V850/SG3 (uPD70F3740)

// Compiler : IAR compiler for V850 (3.50A)

// Brief : Sensor layer. Functions for sensor access

//–––- Includes –––––––––––––––––––-

#include "SHT2x.h"

uint8 SHT2x_CheckCrc(uint8 data[], uint8 nbrOfBytes, uint8 checksum)

{

uint8 crc = 0;

uint8 byteCtr;

//calculates 8-Bit checksum with given polynomial

for (byteCtr = 0; byteCtr < nbrOfBytes; ++byteCtr)

{ crc ^= (data[byteCtr]);

for (uint8 bit = 8; bit > 0; –bit)

{ if (crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;

else crc = (crc << 1);

}

}

if (crc != checksum) return CHECKSUM_ERROR;

else return 0;

}

//===========================================================================

uint8 SHT2x_ReadUserRegister(uint8 *pRegisterValue)

//===========================================================================

{

uint8 checksum; //variable for checksum byte

uint8 error=0; //variable for error code

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W);

error |= I2c_WriteByte (USER_REG_R);

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R);

*pRegisterValue = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

error |= SHT2x_CheckCrc (pRegisterValue,1,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_WriteUserRegister(uint8 *pRegisterValue)

//===========================================================================

{

uint8 error=0; //variable for error code

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W);

error |= I2c_WriteByte (USER_REG_W);

error |= I2c_WriteByte (*pRegisterValue);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_MeasureHM(etSHT2xMeasureType eSHT2xMeasureType, int16 *pMeasurand)

//===========================================================================

{

uint8 checksum; //checksum

uint8 data[2]; //data array for checksum verification

uint8 error=0; //error variable

uint16 i; //counting variable

//– write I2C sensor address and command –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

switch(eSHT2xMeasureType)

{ case HUMIDITY: error |= I2c_WriteByte (TRIG_RH_MEASUREMENT_HM); break;

case TEMP : error |= I2c_WriteByte (TRIG_T_MEASUREMENT_HM); break;

default: assert(0);

}

//– wait until hold master is released –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R);

SCL=HIGH; // set SCL I/O port as input

for(i=0; i<1000; i++) // wait until master hold is released or

{ DelayMicroSeconds(1000); // a timeout (~1s) is reached

if (SCL_CONF==1) break;

}

//– check for timeout –

if(SCL_CONF==0) error |= TIME_OUT_ERROR;

//– read two data bytes and one checksum byte –

pMeasurand->s16.u8H = data[0] = I2c_ReadByte(ACK);

pMeasurand->s16.u8L = data[1] = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

//– verify checksum –

error |= SHT2x_CheckCrc (data,2,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_MeasurePoll(etSHT2xMeasureType eSHT2xMeasureType, int16 *pMeasurand)

//===========================================================================

{

uint8 checksum; //checksum

uint8 data[2]; //data array for checksum verification

uint8 error=0; //error variable

uint16 i=0; //counting variable

//– write I2C sensor address and command –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

switch(eSHT2xMeasureType)

{ case HUMIDITY: error |= I2c_WriteByte (TRIG_RH_MEASUREMENT_POLL); break;

case TEMP : error |= I2c_WriteByte (TRIG_T_MEASUREMENT_POLL); break;

default: assert(0);

}

//– poll every 10ms for measurement ready. Timeout after 20 retries (200ms)–

do

{ I2c_StartCondition();

DelayMicroSeconds(10000); //delay 10ms

if(i++ >= 20) break;

} while(I2c_WriteByte (I2C_ADR_R) == ACK_ERROR);

if (i>=20) error |= TIME_OUT_ERROR;

//– read two data bytes and one checksum byte –

pMeasurand->s16.u8H = data[0] = I2c_ReadByte(ACK);

pMeasurand->s16.u8L = data[1] = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

//– verify checksum –

error |= SHT2x_CheckCrc (data,2,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_SoftReset()

//===========================================================================

{

uint8 error=0; //error variable

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

error |= I2c_WriteByte (SOFT_RESET); // Command

I2c_StopCondition();

DelayMicroSeconds(15000); // wait till sensor has restarted

return error;

}

//==============================================================================

float SHT2x_CalcRH(uint16 u16sRH)

//==============================================================================

{

ft humidityRH; // variable for result

u16sRH &= ~0x0003; // clear bits [1..0] (status bits)

//– calculate relative humidity [%RH] –

humidityRH = -6.0 + 125.0/65536 * (ft)u16sRH; // RH= -6 + 125 * SRH/2^16

return humidityRH;

}

//==============================================================================

float SHT2x_CalcTemperatureC(uint16 u16sT)

//==============================================================================

{

ft temperatureC; // variable for result

u16sT &= ~0x0003; // clear bits [1..0] (status bits)

//– calculate temperature [°C] –

temperatureC= -46.85 + 175.72/65536 *(ft)u16sT; //T= -46.85 + 175.72 * ST/2^16

return temperatureC;

}

//==============================================================================

uint8 SHT2x_GetSerialNumber(uint8 u8SerialNumber[])

//==============================================================================

{

uint8 error=0; //error variable

//Read from memory location 1

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); //I2C address

error |= I2c_WriteByte (0xFA); //Command for readout on-chip memory

error |= I2c_WriteByte (0x0F); //on-chip memory address

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R); //I2C address

u8SerialNumber[5] = I2c_ReadByte(ACK); //Read SNB_3

I2c_ReadByte(ACK); //Read CRC SNB_3 (CRC is not analyzed)

u8SerialNumber[4] = I2c_ReadByte(ACK); //Read SNB_2

I2c_ReadByte(ACK); //Read CRC SNB_2 (CRC is not analyzed)

u8SerialNumber[3] = I2c_ReadByte(ACK); //Read SNB_1

I2c_ReadByte(ACK); //Read CRC SNB_1 (CRC is not analyzed)

u8SerialNumber[2] = I2c_ReadByte(ACK); //Read SNB_0

I2c_ReadByte(NO_ACK); //Read CRC SNB_0 (CRC is not analyzed)

I2c_StopCondition();

//Read from memory location 2

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); //I2C address

error |= I2c_WriteByte (0xFC); //Command for readout on-chip memory

error |= I2c_WriteByte (0xC9); //on-chip memory address

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R); //I2C address

u8SerialNumber[1] = I2c_ReadByte(ACK); //Read SNC_1

u8SerialNumber[0] = I2c_ReadByte(ACK); //Read SNC_0

I2c_ReadByte(ACK); //Read CRC SNC0/1 (CRC is not analyzed)

u8SerialNumber[7] = I2c_ReadByte(ACK); //Read SNA_1

u8SerialNumber[6] = I2c_ReadByte(ACK); //Read SNA_0

I2c_ReadByte(NO_ACK); //Read CRC SNA0/1 (CRC is not analyzed)

I2c_StopCondition();

return error;

}

Fig. y Code flow al aplicatiei

Bibliografie

[1] [2014] http://webbut.unitbv.ro/Carti%20on-line/BSM/BSM/capitol4.pdf

[2] [2014] http://en.wikipedia.org/wiki/Sensor

[3] [2014] http://www.mfg.mtu.edu/cyberman/machtool/machtool/sensors/intro.html

[4] [2014] http://www.omega.com/prodinfo/wirelesssensors.html

[5] Kazem Sohraby, Daniel Minoli, Taieb Znati, Wireless Sensor Networks: Technology, Protocols, and Applications, 2007

[6] [2014] http://searchmobilecomputing.techtarget.com/definition/IEEE-802-Wireless-Standards-Fast-Reference

[7] [2014] http://en.wikipedia.org/wiki/IEEE_802.15

[8] [2014] http://www.hindawi.com/journals/ijdsn/2012/467124/

[9] [2014] http://en.wikipedia.org/wiki/Competitor_analysis

[10] [2014] http://www.newport.com/cms/company/company-overview]

[11] [2014] http://investor.newport.com/phoenix.zhtml?c=70217&p=irol-reportsAnnual

[12] [2014] http://www.omega.com/info.html ]

[13] [2014] http://www.spectris.com/system/files/uploads/financialdocs/spectrisplcannualreport2013.pdf

[14] [2014] http://www.dwyer-inst.com/AboutUs.cfm

[15] [2014] http://www.insideview.com/directory/dwyer-instruments-inc

[16] [2014] http://en.wikipedia.org/wiki/Microcontroller

[17] „MSP430F2619S-HT datasheet”, Texas Instruments, Texas, United States

[18] „MSP430F2619S-HT User’s guide”, Texas Instruments, Texas, United States

[19] [2014] http://en.wikipedia.org/wiki/Flash_memory

[20] „SST25VF010A datasheet”, Microchip Technology, Arizona, United States

[21] [2014] http://en.wikipedia.org/wiki/Sensor

[22] „SHT21 datasheet”, Sensirion, Staefa, Switzerland

[23] [2014] http://www.engineeringtoolbox.com/thermocouples-d_496.html

[24] Viorel Nica, Laurentiu Dimitriu, Liliana Vornicu, Daniela N. Nica, Senzori si traductoare electronice, Iasi 2001

[25] [2014] http://en.wikipedia.org/wiki/Resistance_thermometer ]

[26] [2014] http://www.azom.com/article.aspx?ArticleID=2339

[27] [2014] http://en.wikipedia.org/wiki/Thermistor

[28] [2014] http://automationwiki.com/index.php?title=Thermistors

[29] [2014] http://en.wikipedia.org/wiki/Silicon_bandgap_temperature_sensor

[30] [2014] https://controls.engin.umich.edu/wiki/index.php/TemperatureSensors#Temperature_Sensors ]

[31] [2014] http://en.wikipedia.org/wiki/Hygrometer

[32] [2014] http://www.engineersgarage.com/articles/humidity-sensor

[33] „VN400 datasheet”, Nivis, Atlanta, United States

[34] [2014] http://en.wikipedia.org/wiki/RF_module

[35] [2014] http://en.wikipedia.org/wiki/IEEE_802.15.4

[36] IEEE Standard for Local and metropolitan area networks—Part 15.4: Low-Rate Wireless Personal Area Networks (LR-WPANs), IEEE Std. 802.15.4, 2011

[37] [2014] http://en.wikipedia.org/wiki/Porter_five_forces_analysis

[38] [2014] http://en.wikipedia.org/wiki/Power_management

[39] Luca Benini, Giovanni De Micheli, Dynamic Power Management of Electronic Circuits and Systems, Stanford, 1999

[40] [2014] http://www.freescale.com/webapp/sps/site/overview.jsp?code=KINETIS_K_SERIES

[41] „MK60DN512ZVMD10 datasheet”, Freescale Semiconductor, Arizona, United States

[42] „MC12311 datasheet”, Freescale Semiconductor, Arizona, United States

[43] „LM1117 datasheet”, Texas Instruments, Texas, United States

Anexe

/** @file main.c

* @brief Contains all the initializations and the last-forever loop.

*/

#include "Hardware/HW_Specific.h"

#include "Hardware/UART.h"

#include "Hardware/UCS.h"

#include "Hardware/SPI.h"

#include "Hardware/I2C.h"

#include "API/Full_API.h"

#include "ISA100/Contracts.h"

#include "ISA100/UAPMO.h"

#include "ISA100/CO.h"

#include "ISA100/DAQO.h"

#include "Hardware/Timers.h"

#include "log.h"

#ifdef DEBUG_TEMP

fp32 value;

uint8 ucValue;

uint8 ucBuffer[1];

#endif

uint8 g_ucSSTID;

uint8 g_aucRxBuffer[256];

/** @brief Initializes the ISA100.11a objects.

*/

void InitDevice()

{

InitUAPMO();

InitCO();

}

/** @brief The main function.

*/

int main(void) {

WDTCTL = WDTPW + WDTHOLD; // Disable WDT for now

InitUCS(); // Init Unified Clock Source

UART_Init(); // Init UART

InitDataStructures();

InitDevice();

InitQueues();

InitTimerA();

InitTimerB();

InitLEDs();

Log_Init();

__enable_interrupt(); // Enable Interrupts

Log("The Wireless Sensor has started successfully.\n");

while(1)

{

ApiTask();

DelayMs(1);

#ifdef ESA_TEMP

ContractsTask();

#endif

#ifdef DEBUG

ContractsTask();

#endif

LEDTask();

DAQ_Task();

#ifdef DEBUG

DAQ_Task();

#endif

}

}

//==============================================================================

// S E N S I R I O N AG, Laubisruetistr. 50, CH-8712 Staefa, Switzerland

//==============================================================================

// Project : SHT2x Sample Code (V1.2)

// File : SHT2x.c

// Author : MST

// Controller: NEC V850/SG3 (uPD70F3740)

// Compiler : IAR compiler for V850 (3.50A)

// Brief : Sensor layer. Functions for sensor access

//–––- Includes –––––––––––––––––––-

#include "SHT2x.h"

uint8 SHT2x_CheckCrc(uint8 data[], uint8 nbrOfBytes, uint8 checksum)

{

uint8 crc = 0;

uint8 byteCtr;

//calculates 8-Bit checksum with given polynomial

for (byteCtr = 0; byteCtr < nbrOfBytes; ++byteCtr)

{ crc ^= (data[byteCtr]);

for (uint8 bit = 8; bit > 0; –bit)

{ if (crc & 0x80) crc = (crc << 1) ^ POLYNOMIAL;

else crc = (crc << 1);

}

}

if (crc != checksum) return CHECKSUM_ERROR;

else return 0;

}

//===========================================================================

uint8 SHT2x_ReadUserRegister(uint8 *pRegisterValue)

//===========================================================================

{

uint8 checksum; //variable for checksum byte

uint8 error=0; //variable for error code

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W);

error |= I2c_WriteByte (USER_REG_R);

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R);

*pRegisterValue = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

error |= SHT2x_CheckCrc (pRegisterValue,1,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_WriteUserRegister(uint8 *pRegisterValue)

//===========================================================================

{

uint8 error=0; //variable for error code

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W);

error |= I2c_WriteByte (USER_REG_W);

error |= I2c_WriteByte (*pRegisterValue);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_MeasureHM(etSHT2xMeasureType eSHT2xMeasureType, int16 *pMeasurand)

//===========================================================================

{

uint8 checksum; //checksum

uint8 data[2]; //data array for checksum verification

uint8 error=0; //error variable

uint16 i; //counting variable

//– write I2C sensor address and command –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

switch(eSHT2xMeasureType)

{ case HUMIDITY: error |= I2c_WriteByte (TRIG_RH_MEASUREMENT_HM); break;

case TEMP : error |= I2c_WriteByte (TRIG_T_MEASUREMENT_HM); break;

default: assert(0);

}

//– wait until hold master is released –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R);

SCL=HIGH; // set SCL I/O port as input

for(i=0; i<1000; i++) // wait until master hold is released or

{ DelayMicroSeconds(1000); // a timeout (~1s) is reached

if (SCL_CONF==1) break;

}

//– check for timeout –

if(SCL_CONF==0) error |= TIME_OUT_ERROR;

//– read two data bytes and one checksum byte –

pMeasurand->s16.u8H = data[0] = I2c_ReadByte(ACK);

pMeasurand->s16.u8L = data[1] = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

//– verify checksum –

error |= SHT2x_CheckCrc (data,2,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_MeasurePoll(etSHT2xMeasureType eSHT2xMeasureType, int16 *pMeasurand)

//===========================================================================

{

uint8 checksum; //checksum

uint8 data[2]; //data array for checksum verification

uint8 error=0; //error variable

uint16 i=0; //counting variable

//– write I2C sensor address and command –

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

switch(eSHT2xMeasureType)

{ case HUMIDITY: error |= I2c_WriteByte (TRIG_RH_MEASUREMENT_POLL); break;

case TEMP : error |= I2c_WriteByte (TRIG_T_MEASUREMENT_POLL); break;

default: assert(0);

}

//– poll every 10ms for measurement ready. Timeout after 20 retries (200ms)–

do

{ I2c_StartCondition();

DelayMicroSeconds(10000); //delay 10ms

if(i++ >= 20) break;

} while(I2c_WriteByte (I2C_ADR_R) == ACK_ERROR);

if (i>=20) error |= TIME_OUT_ERROR;

//– read two data bytes and one checksum byte –

pMeasurand->s16.u8H = data[0] = I2c_ReadByte(ACK);

pMeasurand->s16.u8L = data[1] = I2c_ReadByte(ACK);

checksum=I2c_ReadByte(NO_ACK);

//– verify checksum –

error |= SHT2x_CheckCrc (data,2,checksum);

I2c_StopCondition();

return error;

}

//===========================================================================

uint8 SHT2x_SoftReset()

//===========================================================================

{

uint8 error=0; //error variable

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); // I2C Adr

error |= I2c_WriteByte (SOFT_RESET); // Command

I2c_StopCondition();

DelayMicroSeconds(15000); // wait till sensor has restarted

return error;

}

//==============================================================================

float SHT2x_CalcRH(uint16 u16sRH)

//==============================================================================

{

ft humidityRH; // variable for result

u16sRH &= ~0x0003; // clear bits [1..0] (status bits)

//– calculate relative humidity [%RH] –

humidityRH = -6.0 + 125.0/65536 * (ft)u16sRH; // RH= -6 + 125 * SRH/2^16

return humidityRH;

}

//==============================================================================

float SHT2x_CalcTemperatureC(uint16 u16sT)

//==============================================================================

{

ft temperatureC; // variable for result

u16sT &= ~0x0003; // clear bits [1..0] (status bits)

//– calculate temperature [°C] –

temperatureC= -46.85 + 175.72/65536 *(ft)u16sT; //T= -46.85 + 175.72 * ST/2^16

return temperatureC;

}

//==============================================================================

uint8 SHT2x_GetSerialNumber(uint8 u8SerialNumber[])

//==============================================================================

{

uint8 error=0; //error variable

//Read from memory location 1

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); //I2C address

error |= I2c_WriteByte (0xFA); //Command for readout on-chip memory

error |= I2c_WriteByte (0x0F); //on-chip memory address

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R); //I2C address

u8SerialNumber[5] = I2c_ReadByte(ACK); //Read SNB_3

I2c_ReadByte(ACK); //Read CRC SNB_3 (CRC is not analyzed)

u8SerialNumber[4] = I2c_ReadByte(ACK); //Read SNB_2

I2c_ReadByte(ACK); //Read CRC SNB_2 (CRC is not analyzed)

u8SerialNumber[3] = I2c_ReadByte(ACK); //Read SNB_1

I2c_ReadByte(ACK); //Read CRC SNB_1 (CRC is not analyzed)

u8SerialNumber[2] = I2c_ReadByte(ACK); //Read SNB_0

I2c_ReadByte(NO_ACK); //Read CRC SNB_0 (CRC is not analyzed)

I2c_StopCondition();

//Read from memory location 2

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_W); //I2C address

error |= I2c_WriteByte (0xFC); //Command for readout on-chip memory

error |= I2c_WriteByte (0xC9); //on-chip memory address

I2c_StartCondition();

error |= I2c_WriteByte (I2C_ADR_R); //I2C address

u8SerialNumber[1] = I2c_ReadByte(ACK); //Read SNC_1

u8SerialNumber[0] = I2c_ReadByte(ACK); //Read SNC_0

I2c_ReadByte(ACK); //Read CRC SNC0/1 (CRC is not analyzed)

u8SerialNumber[7] = I2c_ReadByte(ACK); //Read SNA_1

u8SerialNumber[6] = I2c_ReadByte(ACK); //Read SNA_0

I2c_ReadByte(NO_ACK); //Read CRC SNA0/1 (CRC is not analyzed)

I2c_StopCondition();

return error;

}

Fig. y Code flow al aplicatiei

Similar Posts

  • Segmentare a Imaginilor Multispectrale

    Cuprins 1. Descrierea proiectului 2. Considerații teoretice 2.1. Introducere în teledetecție și prelucrarea imaginii 2.2. Definiție 2.3. Considerații fundamentale 2.3.1. Surse de energie 2.3.2. Lungime de undă 2.3.3. Mecanistemele de interacțiune 2.3.4. Model de răspuns spectral 2.3.5. Teledetecție multispectrală 2.3.6. Teledetecție hiperspectrală 2.4. Senzor / Platformă de sistem 2.4.1. Fotografie aeriană 2.4.2. Fotografie cu format…

  • . Motor de Cautare pe Web

    Introducere Pana in 1990 Internetul a fost folosit cu precadere de catre cercetatori din domeniul academic, guvernamental si industrial. Cateva aplicatii (de exemplu e-mail*, telnet, ftp) erau intr-adevar de interes mai larg. Dar ceea ce a facut ca popularitatea sa sa creasca fara precedent, in randul a milioane de utilizatori din toate domeniile, a fost…

  • Comunicarea de Marketing In Mediul Online

    CUPRINS INTERNETUL – INSTRUMENT AL MEDIULUI DE AFACERI ÎN SECOLUL XXI Internetul, calea către ciber-lume, este captivant, nou, revoluționar. Cuvântul “Internet” este prescurtarea termenului englezesc “internetworked” și s-a încetățenit în multe limbi sub denumirea de Internet, Net sau, pur și simplu, “rețea”. El desemnează faptul că multe rețele eterogene din întreaga lume sunt interconectate, cuprinzând…

  • Conectivitatea la Internet sau Ethernet

    Cuprins Introducere……………………………………………………………………………………… Cap.1 Aplicabilitate………………………………………………………………………… 1.1 Sistem pentru interogare util studenților………………………………… 1.2 Alte aplicații………………………………………………………………………. Cap.2 Realizarea conectivitãtii Ethernet…………………………………………….. 2.1 Ethernet-ul…………………………………………………………………………. 2.2 Modelul TCP/IP…………………………………………………………………. 2.3 Modulul NM7010A……………………………………………………………. 2.3.1 Realizarea conectivitatii Ethernet prin UDP……………………… 2.3.1.1 Inițializare modul…………………………………………………………. 2.3.1.2 Verificarea prin ARP și ICMP……………………………………. 2.3.1.3 Transmisia datelor ……………………………………………………. 2.3.1.4 Recepția datelor Cap.3 Comunicația serialã 3.1 Comunicatia seriala asincrona (UART)…

  • Extruder Filament Pentru Imprimanta 3d

    Extruder filament pentru imprimantă 3D CUPRINSUL Contents 1 Introducere 1.1 Scopul 1.2 Motivația 1.3 Componentele folosite. Prezentare generală 2 Extruder filament pentru imprimantă 3d 2.1 Informații utile despre ABS și PLA 2.1.1 ABS-ul 2.1.2 PLA-ul 2.2 Componente. Prezentare detaliată 3 Schemă electrică.asamblare. testare 3.1.1 Parametri folosiți pentru regulator 3.1.2 Schema Electrică 3.1.3 Asamblare 3.2 Testare…

  • Construirea Unui Joc de Memorie

    Capitolul 1 Introducere 1.1. Rezumat Lucrarea este structurată în 4 capitole cu următorul conținut: Capitolul 1 prezintă propunerea și structura aplicației din această lucrare. Capitolul 2 descrie limbajele și mediile de programare în care a fost realizată aplicația, conceptele generale, le este explicată funcționalitatea și tipurile de date utilizate, de asemenea tot în acest capitol…