Interfacing battery to fpga

level-translationvoltage

Is there any way to interface a battery with voltage range 0-5V to a fpga with ADC range at 3.3V while maintaining full input voltage range i.e 0-5V mapping on 0-3.3V. I have gone through the following methods

  • Using Resistor divider
    cannot use this as there will be always a path for the battery to discharge through them
  • Using a transistor as a switch or a diode clamp circuit
    with these methods the range of input gets reduced
  • active opamp circuit
    the only other thing that remains is using an active opamp circuit :- this will require the use of external components . Are there any other methods to achieve the same ?

EDIT— Can a transistor operating in linear region be used to achieve this ?

Best Answer

You can use a high-side switch, which is just a complementary MOSFET pair, to switch the battery connection to the resistive divider. Then you can use lower-value resistors which will cause less ADC error, and you can have it only draw current when you're actually measuring the battery voltage.

High-side switches are available as a single component, or can be assembled from discrete parts (an N-ch MOSFET, a P-ch MOSFET and a few resistors).

schematic

simulate this circuit – Schematic created using CircuitLab