I am trying to create an arduino system with radio-transmitters and radio-receivers. The system runs from a rechargable battery that is charged with a solar panel. I am using a 1.1W 6V solar panel.

My problem is that I don't know how to make such a connection and I don't know what batteries to choose to power the arduino, assuming that I need it to run for 5-7 days without solar power and that the solar panel is good enough to recharge the batteries while they power the arduino. We are also assuming that the solar panel has 8 hours of sunlight.

To the arduino are connected the following sensors:

  • Flame Sensor
  • Light Resistor x2
  • Smoke Sensor
  • Radio Transmitter
  • Radio Receiver
  • DHT11 Temperature & Humidity Sensor

I am also looking to see if I can power down most sensors and power them on later if an event occurs. So probably all the sensors could be sleeping except the DHT11 and the Radio Receiver. Preferably though, if at all possible, the rest of the sensors should be on, if we can handle 5-7 days without the solar panel. I don't know if more information is needed but I'd be pleased to help out in the comments, or provide more information by editing the question. :)

  • Why do you want the DHT11 to be always on? – Gerben Mar 3 at 10:45
  • Have a look at thecavepearlproject.org . It goes into great detail on how to run the Arduino and sensors at very low currents. – Gerben Mar 3 at 10:50
  • @Gerben the DHT11 needs to be one because it will be the one providing information when asked to and alert when the temperature rises. So it always needs to be on – Filip Mar 3 at 10:54
  • No. The Arduino needs to be "on". The Arduino polls the DHT11, say once per minute. You could remove the power from the DHT11 when it isn't used. Then re-apply power when you need a new temperature measurement. (Though you might need to add some delay between powering up, and getting a reading). – Gerben Mar 3 at 20:04
  • @Gerben Yeah that was the plan, although I measured the circuit without it and constantly reading from it and it was below 1mA, so I assumed that 1mA was the average draw just to be sure, before rewriting that part of the code, taking measurements every minute instead of taking every 2 seconds without powering off. – Filip Mar 3 at 20:16

You have far too many variables and unknowns there. Primarily you need to know what the average current draw for your circuit is. Secondly you need to decide how long the solar powers are allowed to take to recharge the battery. You have to think not only about runtime but also charge time. The charge time dictates the maximum capacity of the battery, and that then dictates the runtime of the Arduino. So here's some napkin maths to illustrate:

Assuming you want the battery to charge from almost flat to full within 8 hours, and with a 1.1W 6V solar cell, that gives you a peak of 183mA.

Assuming the Arduino circuit takes 83mA on average (let's give ourselves nice round numbers here) that leaves 100mA peak for charging the battery.

If you're charging at, say, 0.2C, that gives a full charge in 5 hours. 100mA / 0.2C = 500mAh capacity (at peak sunlight and current).

At 500mAh capacity and 83mA average current draw that would give you (0.5/0.083) 6 hours of runtime without the solar panels.

So that's just not going to work. It'll be dead by morning.

Now assume that you can turn off everything for 99% of the time. That effectively reduces our average current draw to 0.083*0.01 = 830µA. Let's plug that into the same reasoning as above.

  • Current draw = 0.00083A
  • Incoming peak current = 0.183
  • Available charge current = 0.183-0.00083 = 0.18217
  • Charge at 0.2C = 910mAh.
  • 1Ah battery would charge in about 5.5 hours of peak sunlight.
  • 1Ah would last about 1200 hours, or 100 days.

None of this takes into account varying light levels or light incidence angles. As a rule of thumb, take the light as averaging 50% over the course of the 8 hour period. You will only get 1.1W when the angle of incidence is 90° to the solar panel. At all other times it will be reduced. So if we reduce the current from 183mA to, say, 100mA, the charge capacity changes to:

  • Incoming peak current = 0.100
  • Available charge current = 0.100-0.00083 = 0.099
  • Charge at 0.2C = 496mAh
  • A 500mAh battery would charge in about 5 hours.
  • A 500mAh battery would run for about 50 days at 830µA average current.

So you see everything really hinges around the current consumption of the Arduino. How much current it consumes dictates how much is available to charge the battery, which in turn dictates the size of battery you can support, which dictates the amount of current you can draw for your desired runtime, which in turn dictates the amount of charge current available, which determines the size of battery you can support, which dictates ... etc. You get the idea.

You can support larger batteries, of course - I illustrated this at 0.2C charge rate (that's 20% charge per hour to give a 5 hour charge time). As long as the net charge over time increases (so during the periods between the 5-7 days of complete darkness you gain more charge than is expended during the dark period - something which has not been specified) then it should function fine.

Also note that your battery voltage should be below your solar panel voltage. A 6V solar cell would be able to charge a 4.5V lead acid battery (assuming low dropout schottky protection diodes). Also the capacity of the battery depends also on what you determine your "cut-off" voltage to be. That's how low the battery voltage is allowed to go before your system is determined to be unworkable. This could be at a point where the battery is in danger of being damaged by over-discharge, or at a point where your circuit no longer receives enough voltage to function (which could be linked to oscillator frequency on ATMega chips), etc. For this reason it is often better to choose a board that is designed to run at a lower voltage (3.3V) and use high efficiency switching regulation to get the most out of your battery. A 5V Arduino is seldom a great choice.

Finding that right balance is now entirely up to you.

And, in answer to your other question, yes there are ways to turn things on and off. You can "sleep" the Arduino. You can use high efficiency power circuits. You can add power switching circuits (P-MOSFETs) to switch power on and off to other modules. All things can (and mostly should) be done to save power when running on batteries.

| improve this answer | |
  • Thank you for your answer it was really helpful. I think I have some more questions. What would you suggest to do, if I needed the receiver and temperature module to be on always but other sensors off? What ways are there to do this and how would I connect the solar panel to the battery and the battery to the arduino? – Filip Mar 3 at 10:29
  • First: you would connect the solar panel to the charger, then the charger to the battery. The battery then connects (via the charger) to the power supply, which then connects to the Arduino. You can't just wire a solar panel to a battery and hope it will work - charging takes management. – Majenko Mar 3 at 10:31
  • Second: you choose an RF solution that has a low quiescent current in receive mode and has the ability to wake the Arduino from sleep when needed. – Majenko Mar 3 at 10:32
  • Ok I will look more into the charging part of the battery. I used the RadioHead library for the radio modules and looked into the docs and found a method that will sleep the receiver or transmitter, I believe. Would that be acceptable? Also how would I "Sleep" the rest of the sensors? digitalWrite(pin, LOW)? – Filip Mar 3 at 10:41
  • It depends on the sensors. Some you won't need to, some you will be able to instruct to "sleep", and some you will need to cut the power to. A P-channel MOSFET can be used for that, which you can control with a digital IO pin. – Majenko Mar 3 at 10:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.