Need for Temperature Compensation of Current Mirror

The three main steps are

a) Use as much emitter degeneration as you can
b) Match the temperatures of Q1 and Q2
c) Match the dissipation of Q1 and Q2

For (b), at the very least, glue Q1 and Q2 together. Far better is to use a monolithic transistor array like the CA3046, which constains 5 transistors made on the same substrate. For a really hardcore thermally matched pair, the LM394 'SuperMatch' pair uses thousands of transistor die connected like a chess board.

Q5 not only increases the output impedance, but also controls the dissipation in Q4. Play with series drops on Q5 base or emitter to equalise the Q3/4 dissipation match.

A slightly more complicated solution with less bandwidth but much more precision is to do away with Q1, and use an op-amp to drive Q2 to equalise the voltage drops on Re1/2. Replacing Q2 with a FET eliminates any beta variation contribution to the output accuracy well. Then you only need to be concerned about amplifier Vos drift with temperature, and tempco or Re1/2 resistors.


If you want to keep both transistors at the same temperature, they should have the same dissipation (ie, same current and same voltage). This also smoothes out some of the other error sources (like Early voltage). Your second schematic doesn't exactly achieve this, as the Vce of one transistor is higher than the other. Here we go:

schematic

simulate this circuit – Schematic created using CircuitLab

This is a full Wilson mirror and Q3's role is to drop one Vbe to make Q1/Q2's Vce equal.

A cheap source of dual matched BJTs is DMMT3904 and other dual transistors. They are not monolithic, so the matching and temperature tracking isn't as good as the fancy ones, but they're cheap.

If you want ultimate precision though, you would have to use a low-offset opamp.


To achieve matched current sources, use transistor arrays such as the (original) RCA CA3046. Its now sold by Harris or Intersil. Matching is to 5milliVolts emitter-base, which is about 10%. For better than that, given you have no way to use multiple emitter stripes and inter-digitate them, you'll need emitter degeneration resistors.