Using a high side current shunt solution would eliminate the need for a -Vs supply. Also, it is simpler to fine-tune the output to full-scale in a separate voltage gain stage, taking its input from the current shunt stage.
For example, using the Texas Instruments INA193 current shunt monitor:
simulate this circuit – Schematic created using CircuitLab
The nice thing about the INA193 is, with its common mode range being -18 to +80 Volts, it can be used as a low-side current shunt monitor as well, by switching the sense pins around and changing the shunt location, and not touching the rest of the circuit. It allows its output to reach not just the ground rail, but 0.3 Volts below it, without a -Vs pull-down.
INA193 has a fixed gain of 20 V/V. Thus, a 0.01 Ohm shunt resistor will provide an output range of 0 to 2.0 Volts.
The preset Rtrim
shown in the schematic can be adjusted to give an output of precisely 3.3 Volts on full-scale (10 Amperes) reading.
Trimming the gain might be a good idea anyway, since a small imprecision in the shunt resistor would result in significant variation in full-scale output from the InAmp.
Note: 3.3 Volt output with operating voltage below 3.3 Volts is not feasible with this design: The maximum output will be limited by the Vcc supplied.
If a 3.3 Volt output at 2.7 Volt input is truly required, then an additional charge pump or boost solution would be required to raise the supply voltage of the TLV2372 to a minimum of 3.3 Volts.
As you've discovered, an electric motor is not well modeled as a resistor, and as such doesn't obey Ohm's law.
A better model for a DC electric motor is there is some resistance in series with a variable voltage source.
Additionally, a battery has some internal resistance, which can be modeled as a series resistor*. A PC power supply also can use this same model, but the series resistance is likely to be smaller. The system then looks like:
simulate this circuit – Schematic created using CircuitLab
We can explain why in the first case your measured voltage is less than the no-load battery voltage because we have a voltage divider. Doing some math,
\begin{align}
V_{emf} = V_+ - I R_m\\
R_s = \frac{V_{bat} - V_+}{I}
\end{align}
You measured \$R_m = 3.5 \Omega\$, \$I = 0.19 A\$, and \$V_+ = 2.9V\$, so \$V_{emf} = 2.24 V\$ and \$R_s = 1.47 \Omega\$.
In the second case, \$V_+ = 4.92V\$ and \$I = 0.28A\$. Thus: \$V_{emf} = 3.94 V\$ and \$R_s = 0.43 \Omega\$.
Notice that \$V_{emf}\$ is different between the two. This is because \$V_{emf}\$ is roughly linearly proportional to how fast the motor is spinning. You should have observed the motor spinning faster when hooked to the 5V supply.
Additionally, how multi-meters measure current is by introducing a series shunt resistance and measuring the voltage across this resistor. This further complicates the analysis, so the measured current and load voltage are not exactly correlated. It's more difficult to do this analysis, but is possible if you know the series shunt resistance. This is sometimes quoted as a "burden voltage" at a rated test current and you can use Ohm's law to recover the shunt resistance.
It is possible to reconstruct what the measured load voltage should be with just a single meter, but it requires more information on how \$V_{emf}\$ behaves which is beyond the scope of this answer.
If you set your meter to the largest current range this will use the smallest shunt resistance, you can minimize the impact of having the meter in series at the cost of losing a bit of accuracy.
*note: Batteries don't have a constant internal resistance, but this is a reasonable approximation. It depends on a ton of factors including but not limited to stored energy, temperature, and load.
Best Answer
In theory, the results should be exactly the same.
But there are a host of confounding issues, such as:-