I have a microcontroller that is meant to read a voltage between 7.5-15 V range. The ADC for the microcontroller is 3.3 V max so I came up with the circuit shown below. It takes in 7.5-15 V input and turns into 0.25-1.75 V. I would like to get more resolution but cant find Zener diodes with specific voltages so I can’t do any better with this configuration. I need help with designing a circuit that will get better resolution.
-
\$\begingroup\$ How accurate is your 3.3V rail and how accurate do you need the measurement to be? \$\endgroup\$– Jonathan S.Commented May 20 at 21:11
-
\$\begingroup\$ If you need a specific zener voltage, the TL431/TLV431 is a great help--little three-pin IC that acts like a programmable zener with two resistors to set the "zener voltage". \$\endgroup\$– HearthCommented May 21 at 3:37
-
\$\begingroup\$ A better idea might be to oversample the ADC and take an average. Your fundamental issue with your approach is the hardware - you need wider voltage rails and ideally a negative rail to maximize the ADC dynamic range. That additional complexity my or may not be required for your app especially if you got uP clock cycles to burn. \$\endgroup\$– MOSFETCommented May 21 at 4:23
2 Answers
If you change R2 to 8kΩ and add a 12kΩ resistor from the inverting input to ground you'll get more like 0.75 to 3.1V out for 7.5V to 15V in. This is just an example, you should do a worst-case analysis.
The op-amp has to sink current to get near 0V and source current to get near the 3.3V supply (which has a tolerance) and the resistors won't be exact, so don't call it too close.
If your 3.3 V supply is stable enough to use as a reference, then this circuit will work
simulate this circuit – Schematic created using CircuitLab
If you 3.3 V supply is not suitable as a reference voltage, you can use a TL431 or other voltage reference, and I could calculate the resistor values you would need.