Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Announcements
  3. 💬 Battery Powered Sensors

💬 Battery Powered Sensors

Scheduled Pinned Locked Moved Announcements
battery
347 Posts 55 Posters 68.2k Views 53 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Nicklas Starkel

    @mfalkvidd that's what I thought! I see that I'm getting 3.4V in the multimeter but my pro mini nor nano will start up (I have not removed the LEDs so they should light up).
    If I use more V (6.8V) I put in via RAW on the PRO mini, and I can see teh voltage, but the same thing, it's not starting up, hmmm I wonder what rookie mistake I'm doing!

    mfalkviddM Offline
    mfalkviddM Offline
    mfalkvidd
    Mod
    wrote on last edited by mfalkvidd
    #7

    @Nicklas-Starkel sounds like you have the multimeter set to measure voltage instead of current. Which multimeter model are you using? Could you post a photo? There is usually a dial that can be turned to switch mode. Many multimeters also require moving one of the probes to a different connector (on the multimeter itself).

    N 1 Reply Last reply
    0
    • mfalkviddM mfalkvidd

      @Nicklas-Starkel sounds like you have the multimeter set to measure voltage instead of current. Which multimeter model are you using? Could you post a photo? There is usually a dial that can be turned to switch mode. Many multimeters also require moving one of the probes to a different connector (on the multimeter itself).

      N Offline
      N Offline
      Nicklas Starkel
      wrote on last edited by
      #8

      @mfalkvidd , it was too late at night for me.
      I had it at current but it didn't show anything. So without thinking I put it at voltage.
      And the problem with not showing anything when I had it at current was I had blown the internal multimeter fuse some days ago.
      Ehrmm.. yes. move along, nothing to see here :)

      mfalkviddM 1 Reply Last reply
      2
      • N Nicklas Starkel

        @mfalkvidd , it was too late at night for me.
        I had it at current but it didn't show anything. So without thinking I put it at voltage.
        And the problem with not showing anything when I had it at current was I had blown the internal multimeter fuse some days ago.
        Ehrmm.. yes. move along, nothing to see here :)

        mfalkviddM Offline
        mfalkviddM Offline
        mfalkvidd
        Mod
        wrote on last edited by
        #9

        @Nicklas-Starkel great that you figured out what was wrong

        1 Reply Last reply
        0
        • bjacobtB Offline
          bjacobtB Offline
          bjacobt
          wrote on last edited by
          #10

          Hi, I built this circuit and arduino reads 1.11 V or 33%. I've new batteries and multimeter reads 3.10 volts. Do you know what could be wrong? I'm using 1M and 470k resistors on pin A0.

          1 Reply Last reply
          0
          • tonnerre33T Offline
            tonnerre33T Offline
            tonnerre33
            Hardware Contributor
            wrote on last edited by
            #11

            Hello,

            Did you put this command in the setup sketch ?

            analogReference(INTERNAL);
            
            1 Reply Last reply
            0
            • bjacobtB Offline
              bjacobtB Offline
              bjacobt
              wrote on last edited by
              #12

              @tonnerre33, yes I've analogReference(INTERNAL); in setup()

              1 Reply Last reply
              0
              • tonnerre33T Offline
                tonnerre33T Offline
                tonnerre33
                Hardware Contributor
                wrote on last edited by tonnerre33
                #13

                It's normal to have 1.1V on A0 when you have 3.3V on your batteries.

                Where did you get the 1.11V value ? In the serial print or with your multimeter ?
                If you read the value with the serial print, which variable is it (sensorValue or batteryV) ?

                1 Reply Last reply
                0
                • bjacobtB Offline
                  bjacobtB Offline
                  bjacobt
                  wrote on last edited by
                  #14

                  @tonnerre33 in the serial print and MySensor MQTT gateway

                  1 Reply Last reply
                  0
                  • bjacobtB Offline
                    bjacobtB Offline
                    bjacobt
                    wrote on last edited by
                    #15

                    @tonnerre33, I'm trying to build arduio that can run on 2 AA batteries. I'm using MySensors for library and building arduino circuit based on this https://openhomeautomation.net/arduino-battery/

                    mfalkviddM 1 Reply Last reply
                    0
                    • tonnerre33T Offline
                      tonnerre33T Offline
                      tonnerre33
                      Hardware Contributor
                      wrote on last edited by tonnerre33
                      #16

                      Can you post the logs of your node and the skech used ?

                      bjacobtB 1 Reply Last reply
                      0
                      • bjacobtB bjacobt

                        @tonnerre33, I'm trying to build arduio that can run on 2 AA batteries. I'm using MySensors for library and building arduino circuit based on this https://openhomeautomation.net/arduino-battery/

                        mfalkviddM Offline
                        mfalkviddM Offline
                        mfalkvidd
                        Mod
                        wrote on last edited by
                        #17

                        @bjacobt https://www.mysensors.org/build/battery#measuring-and-reporting-battery-level describes how the battery voltage is calculated and the example sketch has code for doing the calculation. Looks like you've missed reading this part:

                           // 1M, 470K divider across battery and using internal ADC ref of 1.1V
                           // Sense point is bypassed with 0.1 uF cap to reduce noise at that point
                           // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
                           // 3.44/1023 = Volts per bit = 0.003363075
                        ...
                        float batteryV  = sensorValue * 0.003363075;
                        
                        bjacobtB 1 Reply Last reply
                        1
                        • tonnerre33T tonnerre33

                          Can you post the logs of your node and the skech used ?

                          bjacobtB Offline
                          bjacobtB Offline
                          bjacobt
                          wrote on last edited by
                          #18

                          @tonnerre33
                          Here are the logs from Arduino Serial console

                          Starting sensor (RNNNA-, 2.0.0)
                          TSM:INIT
                          TSM:RADIO:OK
                          TSP:ASSIGNID:OK (ID=101)
                          TSM:FPAR
                          TSP:MSG:SEND 101-101-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
                          TSP:MSG:READ 0-0-101 s=255,c=3,t=8,pt=1,l=1,sg=0:0
                          TSP:MSG:FPAR RES (ID=0, dist=0)
                          TSP:MSG:PAR OK (ID=0, dist=1)
                          TSM:FPAR:OK
                          TSM:ID
                          TSM:CHKID:OK (ID=101)
                          TSM:UPL
                          TSP:PING:SEND (dest=0)
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1
                          TSP:MSG:READ 0-0-101 s=255,c=3,t=25,pt=1,l=1,sg=0:1
                          TSP:MSG:PONG RECV (hops=1)
                          TSP:CHKUPL:OK
                          TSM:UPL:OK
                          TSM:READY
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100
                          !TSP:MSG:SEND 101-101-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=fail:2.0.0
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=ok:0
                          TSP:MSG:READ 0-0-101 s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=ok:Battery Meter
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:1.0
                          Request registration...
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2
                          TSP:MSG:READ 0-0-101 s=255,c=3,t=27,pt=1,l=1,sg=0:1
                          Node registration=1
                          Init complete, id=101, parent=0, distance=1, registration=1
                          330
                          Battery Voltage: 1.11 V
                          Battery percent: 33 %
                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=0,pt=1,l=1,sg=0,ft=0,st=ok:33
                          

                          The sketch used is this:

                          /**
                           * The MySensors Arduino library handles the wireless radio link and protocol
                           * between your home built sensors/actuators and HA controller of choice.
                           * The sensors forms a self healing radio network with optional repeaters. Each
                           * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                           * network topology allowing messages to be routed to nodes.
                           *
                           * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                           * Copyright (C) 2013-2015 Sensnology AB
                           * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                           *
                           * Documentation: http://www.mysensors.org
                           * Support Forum: http://forum.mysensors.org
                           *
                           * This program is free software; you can redistribute it and/or
                           * modify it under the terms of the GNU General Public License
                           * version 2 as published by the Free Software Foundation.
                           *
                           *******************************
                           *
                           * DESCRIPTION
                           *
                           * This is an example that demonstrates how to report the battery level for a sensor
                           * Instructions for measuring battery capacity on A0 are available here:
                           * http://www.mysensors.org/build/battery
                           * 
                           */
                          
                          
                          #define MY_NODE_ID  101
                          
                          // Enable debug prints to serial monitor
                          #define MY_DEBUG 
                          
                          // Enable and select radio type attached
                          #define MY_RADIO_NRF24
                          //#define MY_RADIO_RFM69
                          
                          #include <MySensors.h>
                          
                          
                          
                          int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
                          
                          unsigned long SLEEP_TIME = 100000;  // sleep time between reads (seconds * 1000 milliseconds)
                          int oldBatteryPcnt = 0;
                          
                          void setup()  
                          {
                             // use the 1.1 V internal reference
                          #if defined(__AVR_ATmega2560__)
                             analogReference(INTERNAL1V1);
                          #else
                             analogReference(INTERNAL);
                          #endif
                          }
                          
                          void presentation() {
                             // Send the sketch version information to the gateway and Controller
                             sendSketchInfo("Battery Meter", "1.0");
                          }
                          
                          void loop()
                          {
                             // get the battery Voltage
                             int sensorValue = analogRead(BATTERY_SENSE_PIN);
                             #ifdef MY_DEBUG
                             Serial.println(sensorValue);
                             #endif
                          
                             // 1M, 470K divider across battery and using internal ADC ref of 1.1V
                             // Sense point is bypassed with 0.1 uF cap to reduce noise at that point
                             // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
                             // 3.44/1023 = Volts per bit = 0.003363075
                          
                             int batteryPcnt = sensorValue / 10;
                          
                             #ifdef MY_DEBUG
                             float batteryV  = sensorValue * 0.003363075;
                             Serial.print("Battery Voltage: ");
                             Serial.print(batteryV);
                             Serial.println(" V");
                          
                             Serial.print("Battery percent: ");
                             Serial.print(batteryPcnt);
                             Serial.println(" %");
                             #endif
                          
                             if (oldBatteryPcnt != batteryPcnt) {
                               // Power up radio after sleep
                               sendBatteryLevel(batteryPcnt);
                               oldBatteryPcnt = batteryPcnt;
                             }
                             sleep(SLEEP_TIME);
                          }```
                          
                          What I see on the gateway is:
                          
                          

                          mysGateway: TSF:MSG:READ,101-101-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                          mysGateway: TSF:MSG:BC
                          mysGateway: TSF:MSG:FPAR REQ,ID=101
                          mysGateway: TSF:PNG:SEND,TO=0
                          mysGateway: TSF:CKU:OK
                          mysGateway: TSF:MSG:GWL OK
                          mysGateway: TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
                          mysGateway: TSF:MSG:PINGED,ID=101,HP=1
                          mysGateway: TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                          mysGateway: !TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
                          mysGateway: Sending message on topic: mysensors-out/101/255/3/0/6
                          mysGateway: TSF:MSG:READ,101-101-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
                          mysGateway: TSF:MSG:BC
                          mysGateway: TSF:MSG:FPAR REQ,ID=101
                          mysGateway: TSF:CKU:OK,FCTRL
                          mysGateway: TSF:MSG:GWL OK
                          mysGateway: TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
                          mysGateway: TSF:MSG:PINGED,ID=101,HP=1
                          mysGateway: TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                          mysGateway: !TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
                          mysGateway: Sending message on topic: mysensors-out/101/255/3/0/6
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=11,pt=0,l=13,sg=0:Battery Meter
                          mysGateway: Sending message on topic: mysensors-out/101/255/3/0/11
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=12,pt=0,l=3,sg=0:1.0
                          mysGateway: Sending message on topic: mysensors-out/101/255/3/0/12
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2
                          mysGateway: TSF:MSG:SEND,0-0-101-101,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1
                          mysGateway: TSF:MSG:READ,101-101-0,s=255,c=3,t=0,pt=1,l=1,sg=0:33
                          mysGateway: Sending message on topic: mysensors-out/101/255/3/0/0```

                          Thank for your help!
                          Jacob

                          1 Reply Last reply
                          0
                          • mfalkviddM mfalkvidd

                            @bjacobt https://www.mysensors.org/build/battery#measuring-and-reporting-battery-level describes how the battery voltage is calculated and the example sketch has code for doing the calculation. Looks like you've missed reading this part:

                               // 1M, 470K divider across battery and using internal ADC ref of 1.1V
                               // Sense point is bypassed with 0.1 uF cap to reduce noise at that point
                               // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
                               // 3.44/1023 = Volts per bit = 0.003363075
                            ...
                            float batteryV  = sensorValue * 0.003363075;
                            
                            bjacobtB Offline
                            bjacobtB Offline
                            bjacobt
                            wrote on last edited by
                            #19

                            hi @mfalkvidd,

                            Do you mind clarifying a bit, I've done sensorValue * 0.003363075

                            analogRead(BATTERY_SENSE_PIN);
                            

                            Gives me 330, so
                            330 * 0.003363075 = 1.10981475 volts

                            Thank You!
                            Jacob

                            mfalkviddM 1 Reply Last reply
                            0
                            • bjacobtB bjacobt

                              hi @mfalkvidd,

                              Do you mind clarifying a bit, I've done sensorValue * 0.003363075

                              analogRead(BATTERY_SENSE_PIN);
                              

                              Gives me 330, so
                              330 * 0.003363075 = 1.10981475 volts

                              Thank You!
                              Jacob

                              mfalkviddM Offline
                              mfalkviddM Offline
                              mfalkvidd
                              Mod
                              wrote on last edited by
                              #20

                              @bjacobt hmm. Yes, you are correct. The calculation seem a bit strange.
                              Using this calculator I entered
                              output 1.10981475 V
                              R1 1000000
                              R2 470000
                              Which gives a battery voltage of 3.471V
                              0_1478095026919_voltage.png

                              Looks like the calculations in the sketch are wrong? Or at least confusing :) I'm pretty lost.

                              1 Reply Last reply
                              0
                              • tonnerre33T Offline
                                tonnerre33T Offline
                                tonnerre33
                                Hardware Contributor
                                wrote on last edited by tonnerre33
                                #21
                                analogRead(BATTERY_SENSE_PIN);
                                

                                must give you 1023 and not 330.
                                For me it's a problem of value resistance or analogReference.

                                Try to add this

                                analogReference(INTERNAL);
                                sensorValue = analogRead(BATTERY_SENSE_PIN);
                                  #ifdef MY_DEBUG
                                 Serial.print("Value A0 before force reference: ");
                                 Serial.print(sensorValue);
                                #endif
                                delay(10000);
                                sensorValue = analogRead(BATTERY_SENSE_PIN);
                                  #ifdef MY_DEBUG
                                 Serial.print("Value A0 after force reference: ");
                                 Serial.print(sensorValue);
                                #endif
                                

                                Just after this existing code :

                                   #ifdef MY_DEBUG
                                   Serial.println(sensorValue);
                                   #endif
                                

                                And plz send me the logs of the node ;)

                                bjacobtB 1 Reply Last reply
                                0
                                • tonnerre33T tonnerre33
                                  analogRead(BATTERY_SENSE_PIN);
                                  

                                  must give you 1023 and not 330.
                                  For me it's a problem of value resistance or analogReference.

                                  Try to add this

                                  analogReference(INTERNAL);
                                  sensorValue = analogRead(BATTERY_SENSE_PIN);
                                    #ifdef MY_DEBUG
                                   Serial.print("Value A0 before force reference: ");
                                   Serial.print(sensorValue);
                                  #endif
                                  delay(10000);
                                  sensorValue = analogRead(BATTERY_SENSE_PIN);
                                    #ifdef MY_DEBUG
                                   Serial.print("Value A0 after force reference: ");
                                   Serial.print(sensorValue);
                                  #endif
                                  

                                  Just after this existing code :

                                     #ifdef MY_DEBUG
                                     Serial.println(sensorValue);
                                     #endif
                                  

                                  And plz send me the logs of the node ;)

                                  bjacobtB Offline
                                  bjacobtB Offline
                                  bjacobt
                                  wrote on last edited by
                                  #22

                                  @tonnerre33 Its still the same

                                  Starting sensor (RNNNA-, 2.0.0)
                                  TSM:INIT
                                  TSM:RADIO:OK
                                  TSP:ASSIGNID:OK (ID=101)
                                  TSM:FPAR
                                  TSP:MSG:SEND 101-101-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
                                  TSP:MSG:READ 0-0-101 s=255,c=3,t=8,pt=1,l=1,sg=0:0
                                  TSP:MSG:FPAR RES (ID=0, dist=0)
                                  TSP:MSG:PAR OK (ID=0, dist=1)
                                  TSM:FPAR:OK
                                  TSM:ID
                                  TSM:CHKID:OK (ID=101)
                                  TSM:UPL
                                  TSP:PING:SEND (dest=0)
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1
                                  TSP:MSG:READ 0-0-101 s=255,c=3,t=25,pt=1,l=1,sg=0:1
                                  TSP:MSG:PONG RECV (hops=1)
                                  TSP:CHKUPL:OK
                                  TSM:UPL:OK
                                  TSM:READY
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=ok:2.0.0
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=ok:0
                                  TSP:MSG:READ 0-0-101 s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=ok:Battery Meter
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:1.0
                                  Request registration...
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2
                                  TSP:MSG:READ 0-0-101 s=255,c=3,t=27,pt=1,l=1,sg=0:1
                                  Node registration=1
                                  Init complete, id=101, parent=0, distance=1, registration=1
                                  330
                                  Value A0 before force reference: 327
                                  Value A0 after force reference: 329
                                  Battery Voltage: 1.11 V
                                  Battery percent: 32 %
                                  TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=0,pt=1,l=1,sg=0,ft=0,st=ok:32

                                  /**
                                   * The MySensors Arduino library handles the wireless radio link and protocol
                                   * between your home built sensors/actuators and HA controller of choice.
                                   * The sensors forms a self healing radio network with optional repeaters. Each
                                   * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                                   * network topology allowing messages to be routed to nodes.
                                   *
                                   * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                                   * Copyright (C) 2013-2015 Sensnology AB
                                   * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                                   *
                                   * Documentation: http://www.mysensors.org
                                   * Support Forum: http://forum.mysensors.org
                                   *
                                   * This program is free software; you can redistribute it and/or
                                   * modify it under the terms of the GNU General Public License
                                   * version 2 as published by the Free Software Foundation.
                                   *
                                   *******************************
                                   *
                                   * DESCRIPTION
                                   *
                                   * This is an example that demonstrates how to report the battery level for a sensor
                                   * Instructions for measuring battery capacity on A0 are available here:
                                   * http://www.mysensors.org/build/battery
                                   * 
                                   */
                                  
                                  
                                  #define MY_NODE_ID  101
                                  
                                  // Enable debug prints to serial monitor
                                  #define MY_DEBUG 
                                  
                                  // Enable and select radio type attached
                                  #define MY_RADIO_NRF24
                                  //#define MY_RADIO_RFM69
                                  
                                  #include <MySensors.h>
                                  
                                  
                                  
                                  int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
                                  
                                  unsigned long SLEEP_TIME = 100000;  // sleep time between reads (seconds * 1000 milliseconds)
                                  int oldBatteryPcnt = 0;
                                  
                                  void setup()  
                                  {
                                     // use the 1.1 V internal reference
                                  #if defined(__AVR_ATmega2560__)
                                     analogReference(INTERNAL1V1);
                                  #else
                                     analogReference(INTERNAL);
                                  #endif
                                  }
                                  
                                  void presentation() {
                                     // Send the sketch version information to the gateway and Controller
                                     sendSketchInfo("Battery Meter", "1.0");
                                  }
                                  
                                  void loop()
                                  {
                                     // get the battery Voltage
                                     int sensorValue = analogRead(BATTERY_SENSE_PIN);
                                     #ifdef MY_DEBUG
                                     Serial.println(sensorValue);
                                     #endif
                                  
                                  analogReference(INTERNAL);
                                  sensorValue = analogRead(BATTERY_SENSE_PIN);
                                    #ifdef MY_DEBUG
                                   Serial.print("Value A0 before force reference: ");
                                   Serial.println(sensorValue);
                                  #endif
                                  delay(10000);
                                  sensorValue = analogRead(BATTERY_SENSE_PIN);
                                    #ifdef MY_DEBUG
                                   Serial.print("Value A0 after force reference: ");
                                   Serial.println(sensorValue);
                                  #endif
                                     
                                  
                                     // 1M, 470K divider across battery and using internal ADC ref of 1.1V
                                     // Sense point is bypassed with 0.1 uF cap to reduce noise at that point
                                     // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts
                                     // 3.44/1023 = Volts per bit = 0.003363075
                                  
                                     int batteryPcnt = sensorValue / 10;
                                  
                                     #ifdef MY_DEBUG
                                     float batteryV  = sensorValue * 0.003363075;
                                     Serial.print("Battery Voltage: ");
                                     Serial.print(batteryV);
                                     Serial.println(" V");
                                  
                                     Serial.print("Battery percent: ");
                                     Serial.print(batteryPcnt);
                                     Serial.println(" %");
                                     #endif
                                  
                                     if (oldBatteryPcnt != batteryPcnt) {
                                       // Power up radio after sleep
                                       sendBatteryLevel(batteryPcnt);
                                       oldBatteryPcnt = batteryPcnt;
                                     }
                                     sleep(SLEEP_TIME);
                                  }```
                                  1 Reply Last reply
                                  0
                                  • tonnerre33T Offline
                                    tonnerre33T Offline
                                    tonnerre33
                                    Hardware Contributor
                                    wrote on last edited by tonnerre33
                                    #23

                                    Ok it's not a problem with the analogReference, you can delete this part of code.
                                    Did you control your resistance value and did you do this schema ?
                                    alt text

                                    1 Reply Last reply
                                    0
                                    • bjacobtB Offline
                                      bjacobtB Offline
                                      bjacobt
                                      wrote on last edited by bjacobt
                                      #24

                                      Hi,
                                      I'm sorry what do you mean by "control your resistance value"

                                      this is my circuit,

                                      1M resistor to +V rail, 470K resistor to GND and middle point to A0.

                                      0_1478097209731_IMG_1543.JPG ,

                                      GertSandersG 1 Reply Last reply
                                      0
                                      • tonnerre33T Offline
                                        tonnerre33T Offline
                                        tonnerre33
                                        Hardware Contributor
                                        wrote on last edited by
                                        #25

                                        Ok try to remove the jumper between V+ and AREF

                                        bjacobtB 1 Reply Last reply
                                        1
                                        • tonnerre33T tonnerre33

                                          Ok try to remove the jumper between V+ and AREF

                                          bjacobtB Offline
                                          bjacobtB Offline
                                          bjacobt
                                          wrote on last edited by
                                          #26

                                          @tonnerre33 That was it!

                                          I'm getting Battery Voltage: 3.10 V
                                          Battery percent: 92 %

                                          Thank you so much :)

                                          Starting sensor (RNNNA-, 2.0.0)
                                          TSM:INIT
                                          TSM:RADIO:OK
                                          TSP:ASSIGNID:OK (ID=101)
                                          TSM:FPAR
                                          TSP:MSG:SEND 101-101-255-255 s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=bc:
                                          TSP:MSG:READ 0-0-101 s=255,c=3,t=8,pt=1,l=1,sg=0:0
                                          TSP:MSG:FPAR RES (ID=0, dist=0)
                                          TSP:MSG:PAR OK (ID=0, dist=1)
                                          TSM:FPAR:OK
                                          TSM:ID
                                          TSM:CHKID:OK (ID=101)
                                          TSM:UPL
                                          TSP:PING:SEND (dest=0)
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=ok:1
                                          TSP:MSG:READ 0-0-101 s=255,c=3,t=25,pt=1,l=1,sg=0:1
                                          TSP:MSG:PONG RECV (hops=1)
                                          TSP:CHKUPL:OK
                                          TSM:UPL:OK
                                          TSM:READY
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=ok:0100
                                          !TSP:MSG:SEND 101-101-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=fail:2.0.0
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,ft=1,st=ok:0
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=11,pt=0,l=13,sg=0,ft=0,st=ok:Battery Meter
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=ok:1.0
                                          Request registration...
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=ok:2
                                          TSP:MSG:READ 0-0-101 s=255,c=3,t=27,pt=1,l=1,sg=0:1
                                          Node registration=1
                                          Init complete, id=101, parent=0, distance=1, registration=1
                                          922
                                          Value A0 before force reference: 924
                                          Value A0 after force reference: 923
                                          Battery Voltage: 3.10 V
                                          Battery percent: 92 %
                                          TSP:MSG:SEND 101-101-0-0 s=255,c=3,t=0,pt=1,l=1,sg=0,ft=0,st=ok:92

                                          1 Reply Last reply
                                          1
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          22

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.1k

                                          Posts


                                          Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • MySensors
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular