Going down even more

Now that i have no more PIR sensors in stock, I had to find me an alternative. The requirements: low power of course, it should be able to fit in the PIR enclosure i already have in use and not too expensive, cause I’ll need a lot of them. The ELV PIR13 seems to be the right candidate for the job; this would bring down the PIR power usage from 170 µA to 40 µA. I don’t have to tell you what that will do to battery life 🙂

ELV PIR13: PCB 25 x 37 mm, 13 mm PIR

I’ve ordered a couple of these ELV PIR13’s and will build a 3rd motion sensor with one of these. In the meantime I also changed some things in the code to reduce the JeeNode power usage in power down mode even more: it went down from 20 µA to 6.5 µA. Calculations show a theoretical battery life of 200 weeks… well, i think the internal discharge will have screwed up the battery before that…

BTW, the 2 motion sensors that are currently being used, are still running fine on their first set of batteries.

Tagged , , . Bookmark the permalink.

4 Responses to Going down even more

  1. Jesper Jeansson says:

    Hi!
    Nice work.
    Do you have any plans to share the code or is it just me who have missed it somewhere?
    I am a great beliver in open source and hope that you will share all your hard work to the community. Not only the code but the schematics too. I don’t think I’m skilled enough to connect a jeenode with a xbee and start from scratch.

    Hoping you will build a door sensor soon or maybe a matt sensor.

    As I said, nice work!
    Greetings from Sweden

  2. Greg says:

    What specifically did you do to get the JeeNode power usage down to 6.5uA? I’m building my own domotica system and sensors as well and your blog has been a great help thus far. Thanks!

    • Hi Greg,

      In the top of the Sleep library i use i changed the original define to:

      #define set_sleep_mode_and_sleep(mode)
      do {
      byte prrSave = PRR, adcsraSave = ADCSRA;
      ADCSRA &= ~ bit(ADEN);
      PRR = 0xFF;
      set_sleep_mode(mode);
      cli();
      sleep_enable();
      MCUCR = MCUCR | bit(BODSE) | bit(BODS);
      MCUCR = MCUCR & ~ bit(BODSE) | bit(BODS);
      sei();
      sleep_cpu();
      sleep_disable();
      PRR = prrSave;
      ADCSRA = adcsraSave;
      }while(0);

      Now brown out detection is disabled too.
      Based upon recent weblog posts on Jean-Claude Wipplers weblog, a great source of information, you should visit that one too, really! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *