user77964: Currently trying to read off values from a photodiode through analogread. It's constantly so noisy and I thought it might be something wrong with my low-pass filter, but I decided to just connect a 1.5V battery to an analog pin and had just as much noise (upwards of 10mV oscillations). Is there a way around all of this noise? Because this makes the collected data unusable for my project.

Code to read off analog values:
int diodePin = A0;
int sensorValue = 0;
int sensorVoltage = 0;

void setup() {
  
  Serial.begin(57600);

}

void loop() {
 
sensorValue = analogRead(diodePin);
sensorVoltage = sensorValue*(5000/1024);
Serial.println(sensorVoltage);
delay(10);

}


user78001: I always do two things for when "reading" analog data with an Arduino.

Measuring the voltage supply of the arduino board through its internal reference and calibrating with another 'good" voltmeter ("4 1/2" digits-20000 points or "3 3/4" digits-6000 points). ( Usefull link  https://www.instructables.com/Secret-Arduino-Voltmeter/ )

Sampling more analog datas to calculate a "mean" ... This can remove some "noise" and add "some bits". 16 samples would add "4" bits at your "readings". Of course, the global sample rate will be lower.


Don't forget, ground star of wires !!!

77964: <p>Currently trying to read off values from a photodiode through analogread. It's constantly so noisy and I thought it might be something wrong with my low-pass filter, but I decided to just connect a 1.5V battery to an analog pin and had just as much noise (upwards of 10mV oscillations). Is there a way around all of this noise? Because this makes the collected data unusable for my project.</p>
<p><a href="https://i.stack.imgur.com/zcYFY.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zcYFY.png" alt="this is how I connected the battery to read of analog values that were still noisy" /></a></p>
<p>Code to read off analog values:</p>
<pre><code>int diodePin = A0;
int sensorValue = 0;
int sensorVoltage = 0;

void setup() {
  
  Serial.begin(57600);

}

void loop() {
 
sensorValue = analogRead(diodePin);
sensorVoltage = sensorValue*(5000/1024);
Serial.println(sensorVoltage);
delay(10);

}
</code></pre>
 78001: <p>I always do two things for when &quot;reading&quot; analog data with an Arduino.</p>
<ol>
<li><p>Measuring the voltage supply of the arduino board through its internal reference and calibrating with another 'good&quot; voltmeter (&quot;4 1/2&quot; digits-20000 points or &quot;3 3/4&quot; digits-6000 points). ( Usefull link  <a href="https://www.instructables.com/Secret-Arduino-Voltmeter/" rel="nofollow noreferrer">https://www.instructables.com/Secret-Arduino-Voltmeter/</a> )</p>
</li>
<li><p>Sampling more analog datas to calculate a &quot;mean&quot; ... This can remove some &quot;noise&quot; and add &quot;some bits&quot;. 16 samples would add &quot;4&quot; bits at your &quot;readings&quot;. Of course, the global sample rate will be lower.</p>
</li>
</ol>
<p><strong>Don't forget, ground star of wires !!!</strong></p>
