Sorry for being a little harsh. You know, they say good teaching should involve either jokes or harshiness, then things sink into head much better. I guess I'm out of jokes today. Sort of like "I have come here to chew bubblegum and kick ass. And I'm all out of bubblegum."
The whole conversation started with this is an issue due to the grounding of the 4 wire connection and Batt-, essentially being a 3 wire connection. Which I still don't understand
Take a look at picture 1. Battery, positive and negative wires with their own resistance and a load at the end. The reason you don't measure 10V at the load is because
both positive and negative wire have voltage drop (~100mV on each). So if you need accurate voltage measurement, that sucks.
You say alright, I will add independent sense wires right at the battery to avoid issue with power wires droping voltage under load. Picture 2. Works like a charm. Even though sense wires also have resistance, but the current is zero, so no voltage drop. It is litterally like measuring right at the battery terminals with a multimeter.
Now because of circuit implementation you
join ends of power negative wire and sense negative. Picture 3. Note that what you get is essentially power negative wire and sense negative wire
in parallel. Two wires in parallel is essentially
one wire! So load current now also flows through negative sense wire, it has voltage drop and you have measurement error.
I am trying to understand why Batt- needs to be grounded.
This comes from the fact that you use a directly driven mosfet for switching. Imagine for a moment that you use a relay instead. In a relay control coil and contacts are isolated. So you can drive the relay with your MCU and relay contacts are floating relative to MCU ground. Their are independent, not referenced to anything else. It would work very nice, just slow and contacts would burn with time.
So you use a mosfet. Mosfet is controlled by the votage between gate and source. So you connect source to ground (0V) and switch voltage at gate. Nice. But notice that mosfet source terminal is used both for control
and as one of it's "contacts" (continuing relay analogy, another "contact" is drain). So you have no isolation. So anything what mosfet is switching is inevitably referenced to the circuit which controls it.
There are isolated mosfet driving options. Those include using gate drive transformer, optocoupler, solid state isolated gate driver (last two require isolated power supply to power the isoltage side). If you implement something like that, you have floating mosfet switch. But don't do that, that's unjustified and too complicated for the task.