I am driving a peltier (thermoelectric heater/cooler) using a DAC (MCP4725), Arduino mega, quad-opamps to shift/invert the DAC voltage (LT1885) and 4xOPA549 (2 per peltier). I use PI control and thermistor to feed the current temperature back to the controller. The intended use of this system is to head up a liquid that will flow through silicon channels. Currently, I use 2 peltiers, so 4 of OPA549. I have some issues when the circuit is powered on (not happening everytime), they may be from the circuit or the control scheme itself. I wanted to be sure if the circuit part is okay.

I have (0-30V, 0-30A) voltage source. All opamps are powered by this, I don't have negative rails. Peltiers are specified at Imax: 3.9A, Vmax:14.4V, 3.9ohm module resistance, so my maximum allowable current & voltage that will not break them down are 3.9A & 14.4V.

I designed the circuit such that the maximum voltage swing between peltier terminals is +15V/-15V. To change the current direction, I basically change the voltage around peltiers. DAC is 12-bit, communicating with atmega through I2C. Quad opamps are used to shift and invert the DAC voltage (for 2 terminals of each peltier). These voltages are then fed to 2 of OPA549 buffers. Peltier is hooked to the outputs of power-opamp buffer.

The DC characteristics were verified with the real circuit (For VDAC=5V, I can get maximum 20V to 5V output for heating (ie +15V around peltier), and for VDAC=0V, I get 5V to 20V output for cooling (ie -15V around peltier). When VDAC=0, no voltage/negligible voltage around peltiers, so current flow is very close to zero. This is the point where I start my PI control. It increases or decreases the DAC voltage from 2.5, depending on the error term calculated inside the loop.

Below are the TINA diagram of the circuit, and simulation results for varying input voltage. ie. U1 delivers 3VDAC+5 voltage to one terminal of peltier, U2 delivers 25-(3VDAC+5) voltage to the other terminal of the peltier. The DC swing values were verified with the circuit itself, I am in a linear range for the operating voltages. 0 ohms after OPA549 do not exist in the real circuit, I put there for the simulation to run. Power supply capacitors 0.1uF and 100nF are added as the datasheet suggested.

Schematics Simulation

My questions:

1.When I power up the circuit (open-load, no peltiers connected, VDAC=2.5V), it sometimes draws 1.6A current and/or quad-opamp gets hot. It does not do the everytime, but it keeps doing this most of the time. Do you have a suggestion/explanation for this?

2.I suspect that the peltier resistance is not constant. When the PI runs, the current around peltier bounces up and down. I use a single thermistor on a peltier as temperature feedback, other thermistor is on other peltier to monitor its temperature. I expect the same amount of current to be delivered to both of the peltiers, for a VDAC voltage. However, it seems like it is not the case. I can see this from both the current drawn with 1 vs. 2 peltiers. Additionally sometimes one peltier is cooling down, other one doesn't change. Assuming their resistance is close to each other, what can be a solution for this?

3.What are your general comments/suggestions about the operation/circuit?

Thank you in advance.

  • \$\begingroup\$ The DAC and op-amps may be a little overkill. An H-bridge and PWM should get you there with much less complexity on the (analog) circuit side. The Peltiers will have a time constant in the seconds range, so even 100Hz PWM should give excellent results. \$\endgroup\$
    – JimmyB
    Aug 3, 2017 at 15:59
  • \$\begingroup\$ I tried PWM before. Peltier app notes don't suggest using PWM + using PWM + R-C LPF caused weird noises coming from peltier. I used Arduino's PWM. Do you have an H-Bridge part suggestion? \$\endgroup\$ Aug 4, 2017 at 8:19
  • 1
    \$\begingroup\$ ST's L298 can handle 46V and 4A max. \$\endgroup\$
    – JimmyB
    Aug 4, 2017 at 8:28
  • 3
    \$\begingroup\$ The recommendations against PWM seem to be partially valid though. At too low frequencies it causes repeated thermal stress on the Peltier; easily solved by using PWM with higher frequency (kHz). The other thing is that the Peltier's efficiency drops with higher current, so driving it at 50% DC current is more efficient than PWM'ing 100% current at 50% duty cycle. \$\endgroup\$
    – JimmyB
    Aug 4, 2017 at 8:34
  • 1
    \$\begingroup\$ Unless I am mistaken, if you use an OPA549 at 50% power, the OPA549 will dissipate the same amount of power as the Peltier. I use a PWM through an RC filter to provide a reference voltage to a comparator which controls a buck regulator. As the filtered PWM voltage increases, the buck regulator output increases. Regarding problems with resistance of peltier: you may find that it helps to provide current rather than voltage feedback to the comparator. \$\endgroup\$
    – JavaLatte
    Mar 5, 2019 at 14:11

1 Answer 1


Just a hope to answer as this seems to be a notable concern you have that could be a problem for anyone.

Swap the peltiers or do incorporate a lift switch or momentary switch to each buffer, preferably the circuit not fluctuating. Toggle intermittently to see if there is change to the variant conditions or states. Change the primary monitoring thermostat to the other or better get a matching set (or a separate dual module unit) to mount so that you can switch operate them to get your desired readings.

Make sure you do enough tests before hand to be sure the variables might respond the same way for the subsequent test. Be sure than that your new test monitoring works independant of the existing set up, to reduce further variants from possibly arrising.

Assuming both peltiers and control circuit, lead resistance/connections are equivalent for equivalent operation; If the seback/peltier effect is causing a difference in operation characteristics I can't help with any suggestion other than one TEC might take the lead while principally starve the other under these current operating conditions.

Alternately put a larger power stage on the buffers or run two buffers per peltier (pushpull if their architecture and your circuit design permits this). Perhaps run them as optocoupled for a wider range of projects at least until everything if fully debugged. The other possibility is one device could be using the other actually as a choke sometimes. No doubt you'd admit your system in this state is at risk if you intend to cascade them.

All the best then! ✌

I'm attempting to run mine triggered by a properly rated mosfet power module per channel. Then just use an adjustable relay switch module that incorporates a simple programable delay timer, relying all on all on approximated maximum and minimum thermostat values in a range for my ambient temperature conditions. I could also use an adjustable current regulator module as greater assurance with the right thermal cutoff level for current in an unexpected event. I do want my circuit to be able to cycle one peltier off condition, providing the regular operation levels are powerful enough.

  • \$\begingroup\$ This sounds like a homework question, and I do not understand what you are asking, why not post a proposed schematic. \$\endgroup\$
    – Gil
    Jun 2, 2021 at 17:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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