Voltage sense multi range - how to switch with no voltage drop
measure precisely (&lt;0.05%) a voltage level which can be from 1V up to 500V


Ouch! Given these extreme requirements it's probably worth reconsidering mechanical relays. Replacing the PMOS's in your circuit with relays probably works out to be the easiest way to go. That's why you often hear lab equivalent with large dynamic ranges "click" their way through the range.

An alternative would be to hang two resistive dividers off each switch, change the resistance slightly in the second branch, and measure both. For example:







simulate this circuit &ndash; Schematic created using CircuitLab

Then you have:

$$
V_a = V_{sens}\frac{R_{2a}}{R_{2a}+R_{1a}+R_{ds}}
$$

and

$$
V_b = V_{sens}\frac{R_{2b}}{R_{2b}+R_{1b}+R_{ds}}
$$

Two equations, two unknowns (\$V_{sens}\$ and \$R_{ds}\$), so rearrange:

$$
R_{2a}V_{sens} - V_aR_{ds} = V_a(R_{2a}+R_{1a})
$$
$$
R_{2b}V_{sens} - V_bR_{ds} = V_b(R_{2b}+R_{1b})
$$

Solve simultaneously and you'll have \$V_{sens}\$ and can discard \$R_{ds}\$.

You'll need a lot of very high precision resistors, but at least your switch voltage drop can be neglected.