## Voice Coil Rail

Have questions about the equipment used for macro- or micro- photography? Post those questions in this forum.

Moderators: Pau, rjlittlefield, ChrisR, Chris S.

ray_parkhurst
Posts: 2770
Joined: Sat Nov 20, 2010 10:40 am
Location: Santa Clara, CA, USA
Contact:
mawyatt wrote:
Ray,

I think of 1st, 2nd and even higher order effects. BTW offset is not a source of non-linearity, it may help invoke some non-linear behavior like moving the voice coil away from the center zero point. Op-amps with a few mv or even uv of offset are available cheaply. Your circuit board layout will probably introduce more offset than the op-amp if your not very careful. Offset is easily corrected anyway, either a simple pot or even digitally with the DAC (assuming you have enough resolution).

If you look at your voltage source solution, you can have a built-in source of non-linearity in the source resistor. If you cause a resistor with 200ppm temperature-coefficient (fairly common resistor) to have a 25C temperature rise, it's resistance will change by 1/2%. That's over 1LSB in a simple 8 bit system, and over 20 LSBs in a 12 bit system and 327 LSBs at 16 bit systems!!

Cross over distortion is easily reduced to the point of almost elimination with feedback. In current mode operation the current is forced through the load by feedback. In my circuits at low values it will come directly from the op-amp up to about +0.8 ma, then the NPN bipolar Vbe will increase causing the transistor to supply more current as needed. If the direction changes the op-amp still supplies the -0.8ma until the Vbe of the PNP allows it to supply more current. In no case is the current disrupted as you goe thru zero, it simply is supplied by the op-amp and then assisted by the transistors.

Because of the op-amp tremendous open loop gain, the voltage at the - input which is the sense resistor to ground must equal the + input, V+. This produces V+/Rsense current that must flow through the load. This is not like your classical B output stage where you have a "dead zone" around zero due to the Vbe drops, current mode has no "dead zone".

Ray, as far as your challenge goes I've solved this problem over 40 years ago. You have it right in front of you!! I first used this in a generator controller in ~1975 at Beckwith Electric (maybe still in production, I was VP of Engineering), in 1982 in the XM-21 Remote Sensing Chemical agent detector (Principle Engineering Fellow at Honeywell), a couple applications at Northrup Grumman (Chief Scientist) and at ITT (Chief Scientist/Engineer). I've taught this (current mode) and similar techniques in the graduate level courses I created and taught at USF back in ~2000 & 2003.

Suggest you take some time to study analog electronics, many good references from National Semiconductor, Analog Devices, Burr Brown and a great Op-Amp book by Roberg from MIT.

Anyway, hope this helps.

Best,

Mike
Mike...thanks for the additional explanation. I am pretty well versed in analog as it is both a hobby and a profession, though 95% RF. I do see how the opamp itself supplies the current in the crossover region, but I'm still skeptical about linearity in this region, since Opamps are far from perfect and contain their own complementary output stage that must be biased and can cause errors. The question is whether the magnitude of the errors are enough to cause any concern given the smallest current step size being requested by the DAC, or if the errors are in the noise such that no nonlinearity is noticed.

I'm not very concerned about the nonlinearity of the resistor. The change in resistance happens slowly/incrementally, so shouldn't cause a "glitch" in the response curve. The speaker itself is far more nonlinear from my data, and the speaker+resistor can be considered a single unit from perspective of predistortion.

If a lot of thermal-induced nonlinearity is present in the speaker + resistor, then predistortion may have some issues due to thermal capacity of the system causing a time-varying response. I did not see any of this in the speaker I tested, and in fact turned the supply on/off to see how quickly it would reach steady-state, and at all levels I measured it happened on order of a hundred msec.

rjlittlefield
Posts: 21116
Joined: Tue Aug 01, 2006 8:34 am
Location: Richland, Washington State, USA
Contact:
Gentlemen, please check my possibly flawed understanding.

As I read Mike's circuit, it measures the current through the load and adjusts the drive until the measured current is what it's supposed to be. Whatever open-loop nonlinearities there otherwise would be in the various output drivers, they get diminished by a factor of whatever the gain is for that last op-amp.

Have I missed something?

--Rik

Ludvig Friberg
Posts: 25
Joined: Mon Jul 04, 2011 5:04 pm
Well I tried to follow your schematic on page 2. But as I said I am not even literate in electronics. I will order the parts and try on a real breadboard. Is there any risk of me frying the components? Perhaps I should order two of some of them?

Best Regards

Ludvig Friberg

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
rjlittlefield wrote:Gentlemen, please check my possibly flawed understanding.

As I read Mike's circuit, it measures the current through the load and adjusts the drive until the measured current is what it's supposed to be. Whatever open-loop nonlinearities there otherwise would be in the various output drivers, they get diminished by a factor of whatever the gain is for that last op-amp.

Have I missed something?

--Rik
Rik,

Pretty much you've got it!!

The op-amp forces the current thru the load (voice coil) and this current is imposed across the R sense resistor. The op-amp's high open loop gain makes the op-amp - input equal to the + input, thus the current thru Rsense and the load is simply V+/Rsense because both op-amp inputs must be equal.

All of this is based upon feedback theory, it's well known that negative feedback reduces distortion errors by the amount of negative feedback. Basically the distortion or non-linearity of any component is reduced by the ratio of open loop to closed loop gain if the component is within the negative feedback loop.

In our case the crossover distortion is within the feedback loop, and thus diminished to almost nil.

Hope this helps.

Best,

Mike

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
ray_parkhurst wrote:
mawyatt wrote:
Ray,

I think of 1st, 2nd and even higher order effects. BTW offset is not a source of non-linearity, it may help invoke some non-linear behavior like moving the voice coil away from the center zero point. Op-amps with a few mv or even uv of offset are available cheaply. Your circuit board layout will probably introduce more offset than the op-amp if your not very careful. Offset is easily corrected anyway, either a simple pot or even digitally with the DAC (assuming you have enough resolution).

If you look at your voltage source solution, you can have a built-in source of non-linearity in the source resistor. If you cause a resistor with 200ppm temperature-coefficient (fairly common resistor) to have a 25C temperature rise, it's resistance will change by 1/2%. That's over 1LSB in a simple 8 bit system, and over 20 LSBs in a 12 bit system and 327 LSBs at 16 bit systems!!

Cross over distortion is easily reduced to the point of almost elimination with feedback. In current mode operation the current is forced through the load by feedback. In my circuits at low values it will come directly from the op-amp up to about +0.8 ma, then the NPN bipolar Vbe will increase causing the transistor to supply more current as needed. If the direction changes the op-amp still supplies the -0.8ma until the Vbe of the PNP allows it to supply more current. In no case is the current disrupted as you goe thru zero, it simply is supplied by the op-amp and then assisted by the transistors.

Because of the op-amp tremendous open loop gain, the voltage at the - input which is the sense resistor to ground must equal the + input, V+. This produces V+/Rsense current that must flow through the load. This is not like your classical B output stage where you have a "dead zone" around zero due to the Vbe drops, current mode has no "dead zone".

Ray, as far as your challenge goes I've solved this problem over 40 years ago. You have it right in front of you!! I first used this in a generator controller in ~1975 at Beckwith Electric (maybe still in production, I was VP of Engineering), in 1982 in the XM-21 Remote Sensing Chemical agent detector (Principle Engineering Fellow at Honeywell), a couple applications at Northrup Grumman (Chief Scientist) and at ITT (Chief Scientist/Engineer). I've taught this (current mode) and similar techniques in the graduate level courses I created and taught at USF back in ~2000 & 2003.

Suggest you take some time to study analog electronics, many good references from National Semiconductor, Analog Devices, Burr Brown and a great Op-Amp book by Roberg from MIT.

Anyway, hope this helps.

Best,

Mike
Mike...thanks for the additional explanation. I am pretty well versed in analog as it is both a hobby and a profession, though 95% RF. I do see how the opamp itself supplies the current in the crossover region, but I'm still skeptical about linearity in this region, since Opamps are far from perfect and contain their own complementary output stage that must be biased and can cause errors. The question is whether the magnitude of the errors are enough to cause any concern given the smallest current step size being requested by the DAC, or if the errors are in the noise such that no nonlinearity is noticed.

I'm not very concerned about the nonlinearity of the resistor. The change in resistance happens slowly/incrementally, so shouldn't cause a "glitch" in the response curve. The speaker itself is far more nonlinear from my data, and the speaker+resistor can be considered a single unit from perspective of predistortion.

If a lot of thermal-induced nonlinearity is present in the speaker + resistor, then predistortion may have some issues due to thermal capacity of the system causing a time-varying response. I did not see any of this in the speaker I tested, and in fact turned the supply on/off to see how quickly it would reach steady-state, and at all levels I measured it happened on order of a hundred msec.
Ray,

Note the reply to Rik above.

Any non-linearity within the closed loop negative feedback system gets the benefit of feedback reduction, wether it be from the external cross-over of the npn-pnp output transistors, or the op-amp internal class AB output stage, or the highly non-linear internal gain stages within the op-amp.

If you research the open-loop transfer function (Vout vs Vin differential) of most op-amps they look horrible. I recall the popular ua741 has an actual polarity reversal of the inputs at a few microvolts offset and the overall curve of Vout vs. Vin looks like some roadmap meandering all over. Without the benefits of negative feedback this op-amp and most others would be worthless for use in most applications where somewhat linear response is desired, yet op-amps are used everywhere....Why? Because of the benefits of negative feedback. Creating high open loop gain is easy in analog design, high linearity is not. However with negative feedback the easily achieved open loop gain is traded off for improved linearity, a highly beneficial trade off.

With the resistor non-linearity mentioned, the resistor will dissipate R*I^2 heating, thus as you increase the current the resistance value changes due to self heating, which in a voltage controlled system like you have will cause the current to change, thus changing the self heating again and the cycle continues. You correct for this non-linearity by adjusting the supply voltage to compensate, and intrinsically become a negative feedback system, thus achieving the desired current in spite of the resistor non-linearity. You do this at every current set point and monitor the current to be sure it stays put!! Thus the function of negative feedback control.

However, if you want to automate your setup as Peter desires, you probably don't want to "be in the loop" for every stack. This is where the DAC comes in and the loop-up table helps, it allows you to measure and correct (negative feedback) only once and then let the DAC and look up table do the repeated work. Their is one "gotcha" (Murphy's term) here, it assumes the complete system stays the same. With moderately non-linear effects and temperature controlled environments this is a reasonable assumption, not so with highly non-linear effects, or highly changing environments. These are areas where continuous negative feedback systems work and show their value, constantly monitoring and correcting the effects introduced by variations in environment, component aging, supply variations, load variations and so on.

Many extremely linear systems use both continuous negative feedback and look-up tables and even more concepts (coherent sampling), the control loop in the 1982 XM-21 Michelson Moving Mirror Interferometer (Voice Coil driven) was an example of all these linearization techniques. Maintaining sub-micron accuracy in all military environments (temperature and vibration for example), component variations and aging, and production tolerances were required. Even today this is not possible without the benefits of negative feedback current mode operation.

I see you are involved with RF. That'a an area I have been working for some time now. It all started back in 1989 with the invention (later patented 5603111 & 5909147) of the 1st silicon based single chip L band microwave receiver. I worked with the brilliant folks at Bell Labs with their advanced silicon CBIC-V2 complementary Bi-Polar process to implement this receiver architecture. It's the basis of our cell phones today, the direct-down conversion or zero IF receiver concept.

All this has led to the implementations of many of the older lower frequency concepts (negative feedback for example) into the RF and now Microwave (MW) and Millameterwave (MMW) areas, all because of much faster devices available today. Why not use these techniques at higher frequencies if possible, many advantages over conventional RF design are possible and improved Size Weight and Power (SWAP) and Cost are direct benefits.

Recently applying some of these techniques (closed loop negative feedback, and intrinsic non-linearity canceling) with an Indium Phosphide Hetro-Junction Bipolar process has yielded a RF, MW and MMW Broadband (DC-40GHz) Mixer with an 3rd Order Output Intercept Point (OIP) of +46dBm!! This Mixer consumes a few hundred milliwatts and requires a modest LO drive of -3dBm. A good example of what feedback systems can do at MMW frequencies, other functions like extremely linear, low noise broadband amplifiers and such are in the works!!

Best,

Mike

ray_parkhurst
Posts: 2770
Joined: Sat Nov 20, 2010 10:40 am
Location: Santa Clara, CA, USA
Contact:
mawyatt wrote:Ray,

Note the reply to Rik above.

Any non-linearity within the closed loop negative feedback system gets the benefit of feedback reduction, wether it be from the external cross-over of the npn-pnp output transistors, or the op-amp internal class AB output stage, or the highly non-linear internal gain stages within the op-amp.

If you research the open-loop transfer function (Vout vs Vin differential) of most op-amps they look horrible. I recall the popular ua741 has an actual polarity reversal of the inputs at a few microvolts offset and the overall curve of Vout vs. Vin looks like some roadmap meandering all over. Without the benefits of negative feedback this op-amp and most others would be worthless for use in most applications where somewhat linear response is desired, yet op-amps are used everywhere....Why? Because of the benefits of negative feedback. Creating high open loop gain is easy in analog design, high linearity is not. However with negative feedback the easily achieved open loop gain is traded off for improved linearity, a highly beneficial trade off.

With the resistor non-linearity mentioned, the resistor will dissipate R*I^2 heating, thus as you increase the current the resistance value changes due to self heating, which in a voltage controlled system like you have will cause the current to change, thus changing the self heating again and the cycle continues. You correct for this non-linearity by adjusting the supply voltage to compensate, and intrinsically become a negative feedback system, thus achieving the desired current in spite of the resistor non-linearity. You do this at every current set point and monitor the current to be sure it stays put!! Thus the function of negative feedback control.

However, if you want to automate your setup as Peter desires, you probably don't want to "be in the loop" for every stack. This is where the DAC comes in and the loop-up table helps, it allows you to measure and correct (negative feedback) only once and then let the DAC and look up table do the repeated work. Their is one "gotcha" (Murphy's term) here, it assumes the complete system stays the same. With moderately non-linear effects and temperature controlled environments this is a reasonable assumption, not so with highly non-linear effects, or highly changing environments. These are areas where continuous negative feedback systems work and show their value, constantly monitoring and correcting the effects introduced by variations in environment, component aging, supply variations, load variations and so on.

Many extremely linear systems use both continuous negative feedback and look-up tables and even more concepts (coherent sampling), the control loop in the 1982 XM-21 Michelson Moving Mirror Interferometer (Voice Coil driven) was an example of all these linearization techniques. Maintaining sub-micron accuracy in all military environments (temperature and vibration for example), component variations and aging, and production tolerances were required. Even today this is not possible without the benefits of negative feedback current mode operation.

I see you are involved with RF. That'a an area I have been working for some time now. It all started back in 1989 with the invention (later patented 5603111 & 5909147) of the 1st silicon based single chip L band microwave receiver. I worked with the brilliant folks at Bell Labs with their advanced silicon CBIC-V2 complementary Bi-Polar process to implement this receiver architecture. It's the basis of our cell phones today, the direct-down conversion or zero IF receiver concept.

All this has led to the implementations of many of the older lower frequency concepts (negative feedback for example) into the RF and now Microwave (MW) and Millameterwave (MMW) areas, all because of much faster devices available today. Why not use these techniques at higher frequencies if possible, many advantages over conventional RF design are possible and improved Size Weight and Power (SWAP) and Cost are direct benefits.

Recently applying some of these techniques (closed loop negative feedback, and intrinsic non-linearity canceling) with an Indium Phosphide Hetro-Junction Bipolar process has yielded a RF, MW and MMW Broadband (DC-40GHz) Mixer with an 3rd Order Output Intercept Point (OIP) of +46dBm!! This Mixer consumes a few hundred milliwatts and requires a modest LO drive of -3dBm. A good example of what feedback systems can do at MMW frequencies, other functions like extremely linear, low noise broadband amplifiers and such are in the works!!

Best,

Mike
Mike,

I appreciate your assertions that op-amp circuits are essentially "perfect", but that is not my experience for bi-directional implementations. A lot happens inside the op-amp when polarity is switched, and one half of the circuitry is powered-off while the other half is powered-on. However, as I said before I'd love to be proved wrong and that the errors are neglibible as that would make a much better implementation for this speaker-based system.

Note that in my resistor/DC supply implementation, I did not monitor the current, nor the voltage on the speaker, only the voltage from the supply, so there was no manual NFB as you described. I measured the speaker voltage in first tests with 4" speaker but did not even do that with the 1.5" speaker since the voltage seemed sufficiently linear.

rockycarter
Posts: 80
Joined: Fri Jan 27, 2017 5:21 pm
mawyatt I was wondering how did you come up with these values. I would like to understand these. I like what the members are doing here. This speaker acts like a trip coil very interesting.
So for a case that uses a 8 bit DAC and would like current to stay within +-1LSB at say 250ma load current with a 4 ohm load. That would require a voltage source of 256 volts with series resistor of 1020 (1024-4) ohms that would dissipate 63.75 watts!! Well that's not very reasonable, so say we use just 32 volts instead and the resistor is 124 ohms (128-4) with a power of 7.75 watts, that's better! However suppose the load isn't 4 ohms but just 1 ohm higher, now the current is not 250ma but 248ma, or the load is 1 ohm lower, now the load current is 252ma
Rocky Carter

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
Rocky,

I should have picked some easier numbers to show the advantage of current mode operation. Doing all this very quickly because I have lots of other stuff on my plate (that helps pay my bills:>).

Let the max current be 256ma in 8 bit system, then each bit is 1ma. With a 4 ohm load the max voltage across the load is 1.024 volts. With a reasonable 32 volt max supply you'll need a resistance of 32/256ma or 125 ohms with the resistor being 125-4 or 121 ohms of the total 125 ohms. If the load (and/or resistor) changes by 1 ohm upwards then the current will be 32/(121+4+1) or ~254ma (2 LSBs below 256ma) and if the load (and/or resistor) changes downward by 1 ohm then the current will be 32/(121+4-1) or ~258ma (2 LSBs higher than 256ma).

The equation I posted earlier is

So for Iload=256ma and deltaR=+-1 ohm,

deltaIload = -256ma(+-1/(121 + 4)) = -+2.048ma

So the error is -+ 2LSBs

Hope this helps,

Best,

Mike

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
Guys,

Looking for something else and came across this high current dual op amp from Analog Devices, the AD8397.

You can replace the output op-amp with 1/2 the dual AD8397 and this op-amp can supply well over +-100ma directly, so you don't even need the npn and pnp output transistors! Just remove them and change the 1k base resistor to something like ~10 ohms and your done!! Watch your power dissipation (800mw at room temp) and be sure to decouple the supply lines properly.

Also, do not emit the feedback capacitor around the voice coil, otherwise you may end up with an oscillator!!

For you electronic types that are familiar and know how to work with fast electronics, fast analog op amps and other components can be tricky and don't tend to like plug in breadboards!

Now back to real work!!

Best,

Mike
Last edited by mawyatt on Fri Apr 28, 2017 1:51 pm, edited 1 time in total.

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
Ludvig Friberg wrote:Well I tried to follow your schematic on page 2. But as I said I am not even literate in electronics. I will order the parts and try on a real breadboard. Is there any risk of me frying the components? Perhaps I should order two of some of them?

Best Regards

Ludvig Friberg
Ludvig,

You should try and enlist someone that is familiar with electronics in your area to help you trace out the schematic I drew up and your layout. You certainly could damage components by not wiring things up correctly.

Best,

Mike

Ludvig Friberg
Posts: 25
Joined: Mon Jul 04, 2011 5:04 pm
Thanks!

I will do that.

rockycarter
Posts: 80
Joined: Fri Jan 27, 2017 5:21 pm
mawyatt thank you. now your math is correct now i understand. again thank you
Rocky Carter

mjkzz
Posts: 1237
Joined: Wed Jul 01, 2015 3:38 pm
Location: California/Shenzhen
Contact:
oh wow . . . I was about to reply yesterday but got pulled into doing some house work :-)
I just need to put my time towards something of better use also. You have your priorities as well and must service them, we all do. If something works for you, then why change.
Yes, that was on my mind :-)

I just want to elaborate a bit more. In terms of cross over distortion, here is what I think. First of all, when calibrating the circuit on Page 7 to zero (ie, zero current flowing through load), the output of last op-amp (thereafter, the op-amp) can be anywhere between -0.7V and 0.7V (0.7 being typical turn on voltage for BJT). So here is a scenario, say we are at +1 bit (in case 8-bit DAC, it is 0b10000001), the output of the op-amp is just a little over 0.7V, then we move to 0 (ie, 0b10000000), here in order to turn both transistors off, the output of the op-amp can be anywhere between -0.7V and 0.7V and since we came from +1 bit, it is mostly be a little less than 0.7V, say 0.699, now we move to -1 bit (0b01111111), the output of the op-amp MUST swing to a little less than -0.7V (say -0.701V) to make PNP conductive.

This swing, say from 0.699V to -0.701V would probably take a little longer than 1 bit stepping, though it is transient, the term of cross over distortion is dynamic anyways. Of course this MIGHT be so insignificant, it probably would not affect us even when shooting a video (as Rik's suggested), but it is there to think about.

Another thing I would like to touch on is that the design has the load on the emitter side of transistor. This means the output voltage of the op-amp must be 0.7+(Rsense+Rload)*set current. For large (Rsense+Rload), this could be challenging in actual implemention with practical constraints.

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
Peter,

This is where you and Ray have a flawed thinking about the operation, Rik got it right the first iteration!!

You are in current mode operation and still thinking in voltage mode. As Rik discovered, the current is "FORCED" thru the load at whatever value is necessary to supply the proper voltage across Rsense (Iload*Rsense). In voltage mode the load resistance dictates the current thru the load, and requires a very high value series resistor and supply voltage as Ray has done to reduce the load current dependancy. In current mode the op-amp synthesizes an extremely high effective series resistance, without the need for a high supply, nor the power dissipation of such.

There is no cross-over distortion and never will be with this mode of operation (within the confines of the op-amp open loop gain). You can remove the transistors and the circuit will still work!! Why, because they are only utilized as an "AID" for the op-amp, to help supply higher currents than the op-amp is capable of. If you can get the Analog Devices op-amp I mentioned you don't need the transistors at all, because it can supply the load current directly beyond +-100ma!!

The 1K resistor sets the point to where the transistor begins to AID the op-amp in supplying additional load current, in this case ~0.7ma ( 0.7v/1K). As the current demand increase the voltage will slightly rise to supply this additional current (at 25C the bipolar transistor Vbe will increase only 19mv for collector current doubling, or 59mv for a decade change). If you change this resistor to 100 ohms the this AID point moves to about 7ma, if you use a CMOS op-amp which usually have much lower output current change this to 5k or 140ua for the transistor AIDed current to begin.

One thing to note is that all the current from the op-amp and the transistors flow thru the load, they are forced to by the op-amp open loop gain and configuration.

If you have access to a SPICE type simulator, you can easily simulate this behavior and discover for yourself the advantages of current mode operation. I think AD offers SPICE models for some of their op-amps. If you can't get a good op-amp SPICE model, then just use a Voltage Controlled Voltage Source (VCVS) and set the gain to say 100,000 or 1,000,000 which is typical for most lower frequency general purpose op-amp. Put in a generic transistor model for each transistor and you are good to go.

You are correct about the voltage output of the op-amp, but it's not intrusive if the design is proper. For example, say your max load current is +-100ma, and your 12 bit DAC output is 5 volts max (all bits "1"), and your load is 4 ohms. Then Rsense will be 5/0.1, or 50 ohms. The maximum output of the op amp will be (5v + 4*0.1 + Vbe @ ~100ma), or about 6.3 volts. Allowing an extra 2 volts for the op-amp output would place the Vcc and Vee rails around +-8 volts respectively. Note that this is highly dependent on the DAC max output, much more so than the load voltage drop, or transistor characteristics.

Anyway, hope this helps.

BTW, sorry I haven't had time to setup my stitching system, I really want to try and get this up and running soon but other things seem to always get in the way!!

Best,

Mike

mawyatt
Posts: 2479
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater
mjkzz wrote:oh wow . . . I was about to reply yesterday but got pulled into doing some house work :-)
I just need to put my time towards something of better use also. You have your priorities as well and must service them, we all do. If something works for you, then why change.
Yes, that was on my mind :-)

I just want to elaborate a bit more. In terms of cross over distortion, here is what I think. First of all, when calibrating the circuit on Page 7 to zero (ie, zero current flowing through load), the output of last op-amp (thereafter, the op-amp) can be anywhere between -0.7V and 0.7V (0.7 being typical turn on voltage for BJT). So here is a scenario, say we are at +1 bit (in case 8-bit DAC, it is 0b10000001), the output of the op-amp is just a little over 0.7V, then we move to 0 (ie, 0b10000000), here in order to turn both transistors off, the output of the op-amp can be anywhere between -0.7V and 0.7V and since we came from +1 bit, it is mostly be a little less than 0.7V, say 0.699, now we move to -1 bit (0b01111111), the output of the op-amp MUST swing to a little less than -0.7V (say -0.701V) to make PNP conductive.

This swing, say from 0.699V to -0.701V would probably take a little longer than 1 bit stepping, though it is transient, the term of cross over distortion is dynamic anyways. Of course this MIGHT be so insignificant, it probably would not affect us even when shooting a video (as Rik's suggested), but it is there to think about.

Another thing I would like to touch on is that the design has the load on the emitter side of transistor. This means the output voltage of the op-amp must be 0.7+(Rsense+Rload)*set current. For large (Rsense+Rload), this could be challenging in actual implemention with practical constraints.
Peter,