Jump to content

Energy, Measurements and Calculation of different RF modules

Recommended Posts

Dear forum members,


As a X-Mas gift for my dad, I want to build a wireless thermometer with four transmitters. He allready has something cheap, but it doesn't work so well over the ~30m distance from the garden to the living room. Therefore I want to build something accurate, long distance, "endless battery life" (the transmitter will end in some rubber enclosure, so it can withstand the weather - therefore, ideally it shouldn't be nescessary to change batteries for the next 10 years or so) and rssi readout to determine if the wireless connection is good.

Ok, that's my goal.


This weekend I've started to evaluate some of the wireless modules I have at hand. Since I'm a big victim of tideals, I have the eZ430-RF2500-SEH solar energy harvesting kit with three eZ430-RF2500 modules. On the other hand, I have two Anaren AIR booster packs.

On the first try, with the stock firmware of these kits, I got way better range out of the anaren modules. These modules are quite cheap, so that's ok. But, as I want to have a very long battery life, power consumption must be checked.


First, I want to discuss the eZ430-RF2500T module:


Please have a look at page 13 in http://www.ti.com/lit/an/slaa378d/slaa378d.pdf

I did the same measurement with my DS1052E and a 30 Ohm resistor (didn't have anything else at hand).

My measurement looks like this:


On the right side there's more, until the transmission ends:



I calculate the current like follows:

measured voltage on the scope divided by 30 (Ohms of my resistor)


The capacity is beeing calculated by:

current times measured time


My measurement is as follows:

1. 1,6ms , 20mV -> 0,67mA --> 1,072


Link to post
Share on other sites



Ive been using the Anaren Air quite a lot and measured its currentusage at the beginning of my development. A transmitter/MCU combo (G2553 anarenAIR) indeed should only be using a few uA, 2mA looks like an odd readout, maybe an LED is still active or so ? I am using the Anaren_airs in a setup where they do more or less what you also plan to achieve, the difference is that I am using Lacrosse sensors (allready had those) to record data from outdoor (and some indoor) sensors by the Anaren Air.




Link to post
Share on other sites

Thanks. You have given an awful lot of data, and it's relevant to my side project (which involves an infrastructure supporting chipcon radios in wireless sensor network applications). I don't have time this week to confirm or even analyze it, but some comments based on my own experience:


You probably know, but the RF2500T has a CC2500 in it, which operates around 2.4GHz. The Anaren boards are based on the CC11xx line, which is sub-gigahertz (most are 900MHz, some are 433MHz). Other things being equal, lower frequency gives longer range but requires longer transmission time.


It would not surprise me that the Anaren factory firmware is not power-optimized and doesn't enter sleep mode, while the SEH is a power-aware use case so it probably would. The extraction below from one of my programs shows the command sequence for power-down of an external ChipCon radio; you might look for that in the Anaren firmware source. When you write your own, you also get to play with the encoding and data rate, which influence range.


My gut feeling is that if you went all-out the G2553+Anaren combo would use slightly less power than the RF2500T, but both would probably be around one uA in LPM3 with radio powered down. The F2274 is really around 800nA in LPM3 while the G2553 is closer to 400nA.


If I get enough chance to work on my RF infrastructure, I've seriously considered a set of 20 Launchpad+Anaren combos, each with a DS18B20 on it and maybe a few with a humidity sensor, to form a micro-climate monitoring network. That'd be better with purpose-built boards, but I don't do hardware, so it'd be a lashup from the ones I can buy.


  /* ChipCon radios consume 1.4mA when idle.  That goes down to
  * nominally 400 nA if the GDOs are configured to "HW to 0" and the
  * chip is told to power-down on loss of CSn.  On the EXP430F5438
  * the RF PWR header indicates that a CC1101 is using 40 nA in this
  * mode.*/
 rc = writeRegister(0x00, 0x2f);
 rc = writeRegister(0x01, 0x2f);
 rc = writeRegister(0x02, 0x2f);
 cprintf("Cleared IOCFG\n");
 cprintf("IOCFG2 read %#02x\n", readRegister(0x00));
 cprintf("IOCFG1 read %#02x\n", readRegister(0x01));
 cprintf("IOCFG0 read %#02x\n", readRegister(0x02));

 /* SPWD */
 rc = sendStrobe(0x39);
 cprintf("SPWD got %d\n", rc);

 /* Disable SPI before removing CSn otherwise the sequence isn't
  * right. */
 rc = iBSP430serialSetHold_ni(spi, 1);

 /* This gets the RF2500T power down to about 120 nA. */

Link to post
Share on other sites

Hi pabigot,


Its not difficult to setup a proper working network using the Anaren Air. I dont use the Anaren provided code but the TI SimpliciTI setup, that is very easy to make and setting up a network is easy. I am also using DS1820s on a few sensors, others receive data from Lacrosse at 433Mhz and relay that data at 868Mhz into my network.


The setup is very flexible as it uses a structure (see below) to send datapackages. All the routines directly work with these structures so if you want to send data in a different way or different parameters its a matter of changing the structure and nothing else.


The structures:


typedef struct PayloadFrame {    

 char addr; // payloads need to start with char addr as the receiver can check this !
 char msg; // messagetype 0x00 - 0xFF options
 char msgdata0; // var1 that belongs to the message
 char msgdata1; // var2 that belongs to the message
 StatusStruct Status;
 unsigned int data1;
 //unsigned int data2;
 char DataUnit;

} PayloadFrame;

typedef volatile struct StatusStruct{
 enum TxACKMessageType {                                                       //!< Flags to ACK transfer
   REQUEST_NO_ACK                       = 0,
   REQUEST_ACK                          = 1
 } TxACKMessageType;

  enum RxACKMessageType {                                                       //!< Flags to ACK transfer
   RECEIVED_NO_ACK                   = 0,
   RECEIVED_ACK                      = 1
 } RxACKMessageType;

 char channel;
 char power;
 char RSSI;
 unsigned int msgNodeId;
} StatusStruct;




Link to post
Share on other sites

thanks for the code, CorB


I'm still trying to understand it. I'll ask my questions when I'm able to :)

But, this code isn't simpliciTI, am right? As far as I can tell, it's based on mobilars' code. That code is again, based on the TI library "MSP430 Interface to CC1100/2500 Code Library" (slaa325a). And (you guessed it) that one is based on the old "Application Note N049" from chipcon.

In that list I don't see simpliciTI mentioned.


Maybe I'm completely wrong (still didn't have the time to read the simpliciTI docs).

Link to post
Share on other sites

Ir you put the radio into idle or even shut it down completely, it should not use that much current. Could it be that it is in receive mode? I am assuming yiu don't need it to be in constant receive mode. I am mobilars. My code might default you onto rx after tx, which is not what you want to preserve power. You would need to change a config setting or manually power down (sleep) or set to idle. (see edit below) I am going on a one week holiday, so can't help until after that. If you don't sort it out by then, send me a pm and I will both help you and test the current draw myself. Sub ghz is the best for this app, so you should stick to the anaren modules.


Edit: sorry about the typos. Struggling to write properly on my ipad. Btw, on the anaren modules with an external antenna and slower bit rate, I got about 500 meter range. The external antenna was a short thread antenna that anaren sell for the module with external antenna. With the anaren rf booster pack I got about 60 meters.


Edit2: For minimum battery usage, the optimum is high bitrate and go to sleep. It seems idle actually uses 1.7 mA, which is close to what tou measured. Ref page 27 in the cc1101 data sheet. So I should rephrase my question to whether you put it in sleep mode after tx.

Link to post
Share on other sites

Up until now I didn't put anything in sleep. I did the measurement with the original supplied firmware on the MSP430G2553 that came with the anaren booster pack. Since I didn't have any success in getting the supplied code from anaren to work, I even don't know what they are doing in their firmware. That's why I asked in my initial post: "Did Anaren really miss the low power (sleep) modes of the components?"


This weekend I'll be trying to understand the code CorB attached. If it meets my requirements, I'll stick to it. If not, my next step will be simpliciTI.


@larsie: To make things clear, I didn't do the measurement with your code.

I think I'll buy anaren modules with U-FL connector for the final "product". What I'm not shure about is the antenna. Which antenna do you mean with "thread antenna"?

Link to post
Share on other sites

OK, then I get it. I would guess it doesn't sleep then, as you have said and I missed. Misunderstood one of the posts.


I found the antenna on Mouser. Search for 'anaren antennas'. No picture, but it's a short piece of wire with a connector on it. Very cheap (1-2 USD). They have for different frequencies. I use one which is for 900, but I use it for 868. But if you're looking at less than 50 meters, you would probably be ok with the rf boosterpack.


If you're making your own PCB using the Anaren module, you may find their Eagle library useful. You find it in this post: http://lars.roland.bz/anaren-air-module/

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...