What battery and solar panel voltage for Arduino Uno weather station

arduino

I'm trying to design a weather station with an Arduino Uno using rechargeable batteries and a solar panel. I'm unsure about the specifications of the batteries and solar panel: do I need a 9V battery and a 9V solar panel or 2 x 4.5V batteries, etc? What would be the most efficient setup so that the unit is self sustainable?

In the country I live in there isn't a whole lot of sun each day, does this change the kind of panels I need?

Best Answer

I also ended up with the solar/supercap combo; here are a few more details.

Basically it is the classic arduino breadboard design, because the UNO board wastes a LOT of energy for the regulator. Any sleep library will allow very low current usage while waiting.

Supercaps + solar cell is a great way to power this, since :

  • Charge control is very simple for supercaps (just check voltage),
  • They have an almost infinite number of charge/discharge cycles,
  • Unlike batteries, they work fine in cold weather

but this only works if you don't need a lot of power for something else. I used much smaller supercaps than Aedazan: two 10F (2.7V max) supercaps in series are more than enough for a long winter night (or even a few days). The solar cell is 6V, 6x6cm.

Now you should make sure that you don't overvoltage the capacitors. Since they are in series, you should make sure that both the middle voltage and the total voltage are where they shoud be.

For the middle voltage, the control is done with a single pin like this :

schematic

simulate this circuit – Schematic created using CircuitLab

You use that pin both as input to measure the middle voltage, and as output to discharge the capacitors if necessary. Just allow some time for the caps to recover before measuring again :

boolean discharging = false;
loop() {
  // The caps should get some time to recover after some discharging 
  //   before voltage can be read reliably.
  if (discharging) {             
    pinMode(A1, INPUT) ;
    discharging = true ;
  }
  else {
    int mid = analogRead(A1) ;   // Read voltage between caps
    if (mid<492){                // If C1 is too charged
      pinMode(A1, OUTPUT) ;      //   Set the pin as output
      digitalWrite(A1, HIGH) ;   //   Connect it to VCC to discharge C1 through R1
      discharging = true ;
    }
    if (mid>522){                // If C2 is too charged
      pinMode(A1, OUTPUT) ;      //   Set the pin as output
      digitalWrite(A1, LOW) ;    //   Connect it to Gnd to discharge C2 through R1
      discharging = true ;
    }
  }
  // Sleep some time...
}

For the total voltage, you have 2 options :

  1. Cheap option (basically free) : use the pin above to discharge alternatively the capacitors when they are full. That works fine if the solar panel max current at the max voltage (about 5V) is less than what the pin can handle (20mA) divided by four (since the pin is in input mode half the time, and discharges only one cap at a time).
  2. Reliable option (still cheap) : use a simple 431 shunt regulator and two resistors (sorry I didn't find the correct symbol for 431) :

schematic

simulate this circuit

The 431 starts swallowing lots of current when the control voltage (taken between resistors) is about 2.5V, ie when the digital pin is above 5V. You could directly connect the above resistor to vcc, but then the 431 would draw some leakage current even when Vcc is only 4V : this would deplete capacitors at night. If you connect it to a digital pin, you can enable the 431 only when Vcc (measured by arduino, no pin needed, google for details) is above, say, 4.8V. In other words, the 431 eats lots of current (up to 100mA) when the pin is HIGH and Vcc is above 5V, a little current (100-400µA) when the pin is HIGH and Vcc is below 5V, and almost no current (about 0.1µA) whenever the pin is LOW.

This may all seem complicated, but it really isn't unless you try to improve the design. The main limitation is the size of available supercaps if you need to power something heavy ; above a few tens of F they get awfully big and expensive...