I designed and built the following circuit
which is an almost straight-from-the-book 4-20mA loop transmitter. The idea would be to take an accelerometer axis (more or less 0.1 to 3.2V) and send out on the loop.
And of course it doesn't work since it eats too much current and the PPTC trips.
The only theorically suspect thing is the voltage on the noninverting input. From the amp view the inverting input is at ground and in steady state the noninverting input is, too, since it balances the currents. However the R6-R7 junction (the loop return) is negative with respect to the input so I'd expect that during some transient (at turn on for example) the CM constraint will be violated (in fact that's what happens, from tests).
There is even a warning in the LM358 datasheet (I chose the LM358 because it's cheap and I had it in the lab, both good reasons:P)
8.3.3 Input Common Mode Range The valid common mode range is from device ground to VCC - 1.5 V (VCC - 2 V across temperature). Inputs may exceed VCC up to the maximum VCC without device damage. At least one input must be in the valid input common mode range for output to be correct phase. If both inputs exceed valid range then output phase is undefined. If either input is less than -0.3 V then input current should be limited to 1mA and output phase is undefined.
So I guess that my luck means that it drives the BJT in the wrong way and tries to self destruct.
I 'fixed' the issue pulling the supply of the amp to the return line. So that becomes the new ground and it balances on the local ground. It seems to work fine, now.
The question is: do you see any issue to moving the supply? The real fix would be of course using an amp with a defined phase behaviour. The only thing I can foresee is some slightly issue from the PSRR but it's not meant to be a precision circuit (the ADXL has 15% tolerance of its own) and the ground will move about 440mV top. Also it's really low frequency (the ADXL is limited to about 1kHz) so I don't expect slewing issues.
Am I forgetting something?