I'm using one of the analog inputs on an Arduino Uno to read the output voltage from a photodiode. I understand the inputs are 10 bit, which is not enough for my application in detecting small changes in the photodiode voltage. I'm aware that the External Reference function allows the bits to be allocated over a range smaller than the default 0-5V, such as 0-1.3V, however I'm unsure whether this is a true allocation which achieves 10 bit resolution over the 0-1.3V range, or if it simply outputs a maximum 2^10 value when the voltage reaches 1.3V.

Any advice on the underlying mechanism would be greatly appreciated. If the External Reference can't be used to optimise the resolution, it looks like it will have to be an external ADC solution!

Keep in mind that there is an optional INTERNAL reference voltage available for selection that spans the ADC counts of 0-1023 for a 0-1.1vdc (nominal value but constant). If selected any voltage present on the pin higher then 1.1vdc will just return a 1023. Electrical safety limit for the pin will remain +5.5vdc.

Here is the reference page for the various internal and external ADC ranges: