Arduino Voltage reading with PV Panels


I am trying to measure solar radiation using a PV panel. The panel is small and is rated at 0.5V and 100mA. I have the following connection for my circuit (photo below) where the positive PV line goes to the 1 ohm resistor the Vout is following and then a 4 ohm resistor connected to the ground with the PV also connected to the ground. When I measure Vout with a voltmeter I get 0.2-0.3V which based on my research the arduino shouldn’t be able to read as it’s too small but the arduino is reporting voltage values of around 3V which shouldn’d be possible, anyone know whats going on??

int analogPin = A2;     // potentiometer wiper (middle terminal) connected to analog pin 3
int analogPin2 = A3;
                       // outside leads to ground and +5V

int val = 0;           // variable to store the value read
int val2 = 0;

void setup()


  Serial.begin(9600);          //  setup serial


void loop()

  val = analogRead(A2);    // read the input pin
  Serial.println(val);             // debug value
  float voltage= val * (5.0 / 1023.0);
 // Vin = voltage/(0.333333);
  Serial.println(voltage);             // debug value

  val2 = analogRead(A3);    // read the input pin
  Serial.println(val2);             // debug value
  float voltage2= val2 * (5.0 / 1023.0);
  Serial.println(voltage2);             // debug value


Can't see where the wires go when they leave the picture, can't see where the yellow wire is connected BEHIND the white block, can't pick the picture off the screen and tilt it. Can you post a drawing?

Image from Original Post so we don’t have to download it. See this Image Guide



Make a pencil drawing of the complete circuit and post a photo of the drawing. Photos of hardware are not a reliable alternative.

What Arduino board are you using? Many of the Atmega MCUs (but not the Atmega 328 in the Uno) have amplifiers included which could be used to boost low voltage signals.


I'm using an arduino Uno, below is the photo of the full circuit going back to the arduino and a circuit diagram of what I am trying to do.

Your program is printing the val from analogRead() and also the calculated voltage. Have you checked the calculation with your calculator?

For low voltages you should use the internal 1.1v voltage reference

You drawing does not say which pin the voltage is measured on and your program seems to be reading two different pins. What is each pin connected to?


Fixed! My arduino is now reporting 0 (what I was expecting with such a low voltage), one faulty wire connecting the ground on the breadboard was the issue! Will add some amplifiers so that I can get voltage readings from the arduino

Glad you found a solution and thanks for the update.