Hello,
I have designed the coil driver circuit attached. My background is more digital and would appreciate very much some help and suggestions to make sure it works correctly.
The system receives an input signal from a phone or mp-player and drives different coils (inductance values in the schematic) which are just "simple coils" and not speakers. As shown in the schematic there is a single input bias network (R34, R35, R37, C63) but many op-amp current-controlling circuits connected to it (only one such op-amp circuit is shown in the schematic). Each one of such op-amp/mosfet circuit drives a different coil of one of two coil types (values also shown in the schematic) and with different current values (from 1mA to 50mA).
Ideally, if possible, the circuit should operate from 1Hz to ideally up to 100KHz.
These are my main questions:
(a) about the op-amp compensation components (R79, R80, C27) I copied the values from a coil-driving schematic online but don't know how to set their value correctly. How do I do that?
(b) because the input signal is common to all op-amps i.e. biased "only once", can I change the current of each coil driver by changing R88? Or should I do that only through R78? I put R88 to allow the op-amp output signal to go higher than it would otherwise go, which might be needed if the current sensing resistor.R78 is high perhaps(??)
(c) if it is good practice to use R88 to set the current differently for each coil, would that affect the value of the compensation circuit (R79, R80, C27)?
attempt to answer your three questions in order :-
(a) The compensation components required (for loop stability) are largely dependent on the load (type), and when a largely inductive load is involved the poles produced by that L in combination with Cgd are rather complex double poles with peaking (an LC pair), difficult to compensate against using the normal Opamp compensation scheme's and it's usually just easier to compensate with a series RC across that inductance, using that method we can then (above some required frequency ) make the load look resistive/capacitive (much easier to compensate for in a current source) to the error amplifier control loop rather than inductive, the draw back of doing this is that you sacrifice some input impedance (good current source = high impedance) seen by the load which instead now sees the lower impedance of RC pair you added across it.
The best and an efficient way to find what values you need is to learn to do a spice simulation and learn to make and interpret bode plot's of the feedback loop (warning it's not a light topic and takes a fair bit effort and study to learn to do it well, even after years of studying it I often still run into new situations that I have to learn how to best handle them) . Most people will only occasionally tinker in control loop design and aren't bothered about getting optimum performance so don't bother with the heavy study investment required to do loop gain analysis and get by by just disturbing the control loop (i.e. stepping the load value or the control voltage) and monitoring the output until they find values for compensation components that prevent to much ringing before the output returns to a new steady state, this can usually get you in the ballpark of where you need to be with simple control loops (i.e. known and fixed loads)
Attached is a screen shot of basic simulation and plot I just did with some good compensation for the driving the size coils you specified. The Opamp and MOSFET I used here are not to dissimilar (in the specs that are relevant to freq stability) to the ones you specified so that the compensation values used here should be fairly close and be good for your components choices.
when driving your 395u coil use Cdamp= 100n ,Rdamp ~ 50 - 100
when driving the 46u coil use Cdamp= 180n , Rdamp ~ 10
the other components should be ok left to what I set them here, although if you want to upload a ltspice sim with containing your specific components it's easy to do a quick check.
edit :- I was going to insert that screen shot here but for some reason the forum server software is corrupting the sharp gif format screen shot when I attach it to this post it only accepted a blurry jpeg format for some reason. Note the Vi and Ii in the feedback path of that spice sim are not part of the circuit but are the probe elements I use for doing loop gain plots see :- LTspiceXVII\examples\loogain(2).asc t.et.al()

(b) How high the Opamp output needs to go to allow a given max current is not determined by R88 but would be the value of the MOSFET Vgs required plus the voltage drop across Rsense (R78) at that current . So if you spec upto 50 mA, then if Rsense = 16 then Vsense = 800 mV also PMV450 MOSFET Vgs(th) max = 2.7 (we should use the worst case specs from data sheet unless you are screening/selecting them for atypical values) , and also from the MOSFET Vgs versus Id curves requires another ~ 100 mV for Id= 50mA . Vtotal = .8 + .1 + 2.7 = 3.6 V , i.e. 3.3 V supply insufficient for 50mA (unless screening MOSFET for a typical Vgs(th)). Best use a Lower value Rsense say 10R max.
(c) It would reduce the bandwidth of the feedback loop because you are reducing loop gain (dividing feedback by 10 for example shifts the entire feedback loop gain bode plot down by 20 dB) but also any roll off cap (if present) has less effect, the overall effect is to reduce BW by some smaller intermediate amount , it shouldn't have a big effect on stability here because you are using an RC across the Load as your primary stability components rather than your Opamp compensation elements which you would just adjust for max loop performance now that the load is decoupled by what I call 'direct load compensation' .
Good luck