I'm doing my first project on my Raspberry pi with analogue signals, using the PCF8591 ADC.

I managed very easily to measure 0 - 5 V with the chip, connecting the Reference Voltage (VREF, pin 14) to VDD (5V).

How can I change the range to some mV? Can I just apply, let's say, 20mV to VREF, and 20mV on my analogue input will be digitised as 256 (8 bit)?


In theory, you can set a VREF of 20mV. To get this, you can use a voltage divider:


simulate this circuit – Schematic created using CircuitLab

However, from the datasheet you gave us, page 16, you can find that the minimum VREF is VSS+1.6. Since 2.5 < VDD < 6.0, and the maximum VREF is VDD, this gives you a range for VREF of 1.6 to 6.0 volts. With this chip, you're not going to measure 0 to 20mV with the significance you want.

You can add other elements, like an op-amp, to amplify the input signal. You would get a higher input voltage, so that the actual 20mV gets into the range you can use.

  • 2
    \$\begingroup\$ An op-amp would be more appropriate than a (single) transistor. \$\endgroup\$ – Wouter van Ooijen Apr 4 '13 at 18:41
  • \$\begingroup\$ Thanks! ok, so no 20 mV, but at least I can use the full 8-bit range for 1.6 V or so. This is already very good. Thanks for your help! \$\endgroup\$ – otmezger Apr 4 '13 at 18:41
  • \$\begingroup\$ @WoutervanOoijen thanks, I was in doubt already. Edited the post. \$\endgroup\$ – user17592 Apr 4 '13 at 18:42
  • \$\begingroup\$ @otmezger that's good to hear, but please do not rush in accepting the answer. That discourages others from answering, while there might be some very good information available amongst others. Just wait one or two days to see what comes up. \$\endgroup\$ – user17592 Apr 4 '13 at 18:42

Your Answer

