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 '17 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\$ – troubled_grad Aug 4 '17 at 8:19
  • \$\begingroup\$ ST's L298 can handle 46V and 4A max. \$\endgroup\$ – JimmyB Aug 4 '17 at 8:28
  • 2
    \$\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 '17 at 8:34
  • \$\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 at 14:11

Your Answer

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

Browse other questions tagged or ask your own question.