Is there a way to measure the current power output of solar panels?

I know how to measure voltage and current with an Arduino. What I don't know is how to measure the "unused potential power" of a solar panel at the moment. Let me explain using an example:

I have a 120 W 12 V photovoltaic array which is connected to a 12 W LED (1 A). If I measure the current, it will show 1 A. What I want to know what is the current maximum output of the solar panel, which at 100% direct sunlight could be as much as 10 A (120 W) or less.

Is it possible?

  • \$\begingroup\$ That value you will get from the datasheet. \$\endgroup\$
    – winny
    Mar 25, 2022 at 8:12
  • \$\begingroup\$ You can apply different loads in parallel with the LEDs until you find which load extracts the most power. \$\endgroup\$
    – user16324
    Mar 25, 2022 at 21:10

2 Answers 2


First things first: the current power output of solar pannels IS the one currently "consumed" (I include heat losses and storage in battery if existant.)

So if you connect a 12 W LED that consumes 1 A at 12 V, and if your solar pannel's voltage-curent curve passes exactly at (12 V, 1 A) for the current amount of light, then your solar pannel will produce only 12 W.

If (in the same conditions) you decide to plug in a second (identical) LED, you will know have twice the load. If the solar panel were an ideal voltage source, you would now draw 2 A at 12 V (=24 V.) In practice, however, the voltage will be slightly lower (maybe 11.8 V), and at a lower voltage, the LEDs will also draw less current (maybe 0.9 A each), so you harvest 11.8*0.9=21.24 W.

If you continue adding load, you will reach the maximum power point (that is, have the load that gives the "best" trade-off between current and voltage, harwesting maximum power.) If you add yet more load, you will continue to increase the current, but the voltage will now decrease "too fast," making the output power decrease. Good solar battery chargers will make sure to always work at the maximum power point.

Measuring the current power output is simple (measure current and voltage at time t.) This is useful if you want to know what you are currently producing (for example if you store or sell the produced electricity.)

Measuring the "potential" power (i.e. the power at the maximal power point) is not possible directly (you cannot "just" add a sensor and know it.) There are however a few indirect solutions:

  1. Add a variable load commanded by the Arduino, and from time to time, make it "sweep" through the range of possible values, while measuring voltage and current: the maximum voltage you measure is a good approximation of the maximal possible power (it is equal if you vary your load continuously.) In practice, you might use a few power-resistors switched on/off by relays commanded by the Arduino. If you choose the values of the resistors wisely, you can get many values by activating several values at once. If you already know approximatively the resistance you need to reach the maximum power-point in a low light condition, you can have one resistor for this value, and others to add to fill the "range" of possible values.

  2. Add a battery and a MPPT (maximum power-point tracking) charger: as long as the battery is not full, you will always get the maximum power (so current current = maximal power), so you can just measure current power.

  3. Measure maximum power "by hand" and calibrate. NB: this works only if your load is constant. So for example, on a bright day, with your LED connected, you have 12.2 V. When you measure "by hand" the maximal power, you get 120 W. On an average day, you get 12.0 V, and a maximal power of 80 W. On a slightly cloudy day, you get 11.8 V and 40 W. So you might approximate max power as 120 - 40*(12.2-voltage)/0.2. Of course, in reality, it will probably not be linear, so you will need some more points

  • \$\begingroup\$ Hello, the point #2 is the one I wanted to know. So the only way how to measure potential power output is to actually use that power. No way around it I guess. What i want to do is to "know" how much is currently solar panel's potential output and based on that I would switch on different relays to switch on appliances so they can be safely turned on that there is enough power for them. Any tips how to do it ? \$\endgroup\$
    – Frodik
    Mar 26, 2022 at 17:01
  • \$\begingroup\$ The "best" (but more expansive) solution would be to add a battery and a MPPT charger : that way, you always get the maximum power (excepted when the battery is full), so you never waist energy. It also allows you to measure the available power (that is now the same as the measured one). And having a battery, you gain storage, and you can be even smarter by taking decisions based on the charge of the battery (if it is full, you can allow some extra devices even if the production is a little bit bellow what's needed) \$\endgroup\$
    – Sandro
    Mar 26, 2022 at 18:44
  • 2
    \$\begingroup\$ Or if you want it cheap, just buy a light sensor to measure the amount of light, and for a few different values of the sensor, measure the maximum power available. Then, based on this curve (sensor value vs maximum potential power), you can interpolate to get an approximated potential power for any amount of light \$\endgroup\$
    – Sandro
    Mar 26, 2022 at 18:46

To determine the maximum potential power of a solar panel with the currently received level of sunlight, you need to measure the level of sunlight and compare that measurement with the maximum power vs. sunlight level characteristic curve for the panel. That curve may be available from the manufacturer of the solar panel. If it is not available it can be determined by testing the panel at various measured levels of sunlight using with a number of test loads. The solar panel curves should look something like those shown below.

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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