Most micro-controllers with ADC's have an internal bandgap reference with a voltage of ~1V (see datasheet for more precise values and tolerances; ex.: the STM32F415xx series has a bandgap reference of 1.21V). This effectively increases your resolution to 1253 steps full scale by flipping a software switch.
If you want to do even better, you have a few options:
- Use an op-amp to amplify the output of your current sensor
- Use a higher resolution external ADC
- Use a lower voltage external reference (for example, something like this). Note that a simple voltage divider directly into the vref pin is almost never a good idea.
In none of these cases do you need to change the voltage supply to your microcontroller.
As a side note, I don't understand your aversion to using a shunt resistor. For moderately low currents (few amps) it is the most accurate way to measure currents.
For example, the ACS712 chip you've listed has an accuracy of 1%. That means you get an accuracy of 6.64 bits (~100 steps). It is very easy to get shunt resistors with 0.5% accuracy, giving an accuracy of 7.64 bits (~200 steps). Using a 0.1% accurate shunt gives you 9.97 bits of accuracy (~1000 steps).
If you use a very small shunt resistor with an instrumentation amplifier the burden voltage will be negligible.
For example, say you have an in-amp with a gain of 100x (very do-able). An appropriate shunt resistor to get 0-1.21V
full scale needs a shunt resistor of 6.05mOhms
, and will have a burden voltage of 12.1mV
. For all intensive purposes this is negligible. You can reduce this even more by using a 1000x in-amp circuit (also very do-able).