I'm building a portable measurement device, that internally uses a CMOS sensor hooked up to an ADC converter. It's normally powered from battery, but I also allow it to run when hooked up to USB port (for both charging and debug data output). This is realized by MCP73871 chip that does power path control.
The device itself needs a bunch of different voltages, so the voltage from the above chip is first boosted to ~7.7V with a boost regulator (MCP1665) and then dropped to 5.0V by an LDO (LM1117). These five volts drive the sensor itself and the ADC converter plus a bunch of op-amps for buffering the analog signal etc.
The problem is that the voltage coming out of the 5V LDO is actually slightly different when powered from battery vs USB.
The voltage coming of the switching regulator does change slightly depending on the source and that's something that I get - it's a switching regulator, the line regulation guarantees certain precision of the feedback voltage, which can result in slightly different output from the regulator - since the switch has different on/off periods etc. The difference I'm seeing here is 7.722V (RMS 2mV) when on battery vs 7.737V (RMS 26mV) when on USB.
There's a bit of unevenness in that signal, but it goes into that LDO, which smooths it nicely out, however when on battery, that LDO generates 5.024V (RMS 1mV) and 5.005v (RMS 1mV) when hooked up to USB. It's still totally within the tolerances, but doesn't really match the "line regulation" characteristics from the datasheet of LM1117.
While that difference is small, less than half percent, it actually gets propagated to the sensor, which boosts it up a bit (because of the gain settings on the sensor) and in the end I'm seeing 1% of a difference in the measurement. It's not a disaster, I can correct for it in the software, but is there anything that could be done about it in the design itself? What's causing this difference? Is there any point in using a different voltage regulator to drop the voltage to 5V? Maybe some high precision one or with a different architecture (like the LT3080 with the constant current reference)?