I want to use a DAC to control the current to a Peltier device. The Peltier will typically be running at about 0.25A, and this requires less than 100mV. I have tried this circuit, but it oscillates at about 100KHz. The Op amp is fed from a separate 3.3V power supply. The darlington has an Hfe of 2000. How can I stabilize it?

enter image description here

  • \$\begingroup\$ The DAC voltage ought to be scaled down instead of added gain to loop with a ground sensing OA. Any lag in Peltier incremental impedance can reduce phase margin, there is no need for such high BW or high gain. \$\endgroup\$ – Tony Stewart EE75 Aug 29 '20 at 14:02
  • \$\begingroup\$ Any hysteresis in Peltier incremental impedance will make it unstable without compensation. \$\endgroup\$ – Tony Stewart EE75 Aug 29 '20 at 14:06

Basic problem

You have too much gain within the feedback loop and it's pushing the phase margin to the point where it becomes an oscillator.

Longer answer

Get rid of IC1 and rewire as per the purple change below: -

enter image description here

IC1 is bringing nothing to the party other than woe. There is enough open-loop gain within a normal op-amp (IC2) for this to work very effectively. Adding more loop gain is asking for trouble (especially if you were using a MOSFET instead of the darlington transistors).

If you have to adjust the DAC output use a resistor potential divider to produce the "new" demand voltage.

Take care to choose an op-amp that doesn't introduce problematic errors due to input offset voltage. Also take great care in ensuring that the 0 volts net is not carrying load currents between the op-amp and the DAC. Load currents and poor 0 volt net impedances can also cause oscillation and will significantly make precision control much worse.

  • \$\begingroup\$ OP has no capacitors for loop compensation across the op-amp and load. I was thinking of 100 nF to start with. \$\endgroup\$ – user105652 Aug 29 '20 at 7:24
  • 1
    \$\begingroup\$ @DAS my answer is to remove the unwanted op-amp and not try and fiddle with compensation capacitors. Solve the basic design problem and don't bodge a solution. \$\endgroup\$ – Andy aka Aug 29 '20 at 7:30
  • 1
    \$\begingroup\$ I have never had this design work without a compensation capacitor. \$\endgroup\$ – user105652 Aug 29 '20 at 8:07
  • 3
    \$\begingroup\$ The purpose of the first op-amp is to wind up the very low voltage from the current sense resistor (25mV typically) to the right range for comparison with the DAC output. I guess I could divide the DAC voltage down using resistors instead... \$\endgroup\$ – JavaLatte Aug 29 '20 at 12:06
  • 2
    \$\begingroup\$ @JavaLatte that would make a lot more sense. \$\endgroup\$ – Andy aka Aug 29 '20 at 12:32

I have ran into this problem before, though it had to do with cooling fans, not a Peltier module. The problem is that you have created a constant current sink, not a constant voltage supply. It is not oscillation so much as it is gasping for current to run the module.

My fix was to put a large 4,700 uF capacitor across the load, which soaks up the rise and fall in voltage to make it more stable. Because these dynamic loads want more and more current as they start-up and run, they starve for current because the design tries to fix the current.

Another fix is to move the Peltier module to where the 100 ohm resistors is. At this point you do have constant voltage, as the op-amp will always try to keep the (-) and (+) inputs at the exact same voltage. You should think of this as a programmable voltage supply, not a current supply. If you like you can keep the 100 milliohm resistor up at the collectors to insure no over current is possible, until your sure your design is stable at all voltage settings.

Be sure the Peltier module has adequate heat-sink and fan cooling. You can add fuses if you like but I have found Peltier modules to be very predictable in terms of current consumed per given voltage.

EDIT: In looking at your schematic up close you need to make sure the emitter of the Darlington pair is fed back to an inverting input (-), else you have built an oscillator.

  • \$\begingroup\$ The 'hundred ohm resistor' is actually a R100 (ie 0.1 ohm) current sense resistor. A capacitor across the load might work with inductive loads like fans, but the resistance of the peltier is significantly lower than the ESR of a capacitor that big. \$\endgroup\$ – JavaLatte Aug 29 '20 at 6:49
  • \$\begingroup\$ @JavaLatte. I will correct the resistor value in my answer, but a device that changes current in a CC supply will starve for current. Please check you feedback loop to make sure it is inverting, else it will oscillate forever no matter what else you do. \$\endgroup\$ – user105652 Aug 29 '20 at 7:10
  • \$\begingroup\$ yes, it is. The first op-amp gives a non-inverting x20 gain, and it feeds into the inverting input of the second op-amp. \$\endgroup\$ – JavaLatte Aug 29 '20 at 7:14
  • \$\begingroup\$ @JavaLatte Even so you need to slow down the response time so it will not oscillate. A 100 nF capacitor from op-amp output to inverting input should work. It may need to be as large as 100 uF. \$\endgroup\$ – user105652 Aug 29 '20 at 7:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.