A thermoelectric cooler controller based on the LTC1923

Many components in a laser cavity such as the pump diode or the gain crystal require careful and stable temperature control. Where water cooling is not feasible, thermoelectric coolers or “Peltier Elements” are the method of choice.

For simple applications, one could drive the Peltier cooler using a MOSFET, whose gate is controlled by a PWM signal. When working with long time constants, e.g. in the order of seconds, this approach might work. But when higher switching frequencies are used, the pulsed signal will lead to a rapid decrease in cooling efficiency and could even damage the device.

Additionally, the required temperature stability demands a sophisticated control loop, often implemented using a PID controller. These kinds of circuits can easily become quite complicated, and therefore a solution in form of an Integrated Circuit can be very convenient.

After a bit of research, my decision fell on the LTC1923 by Linear Technologies. The main reason is that the thermoelectric coolers which I will be using require several amps at a fairly low voltage (2-4V), and other controllers have integrated MOSFETs which are only rated for some hundred milliamps of continuous current. Secondly, the documentation on LT’s website is exemplary, they even provide detailed schematics and board design guidelines.

In a first version, I designed the circuit to be capable of providing higher voltages, so that I can also drive the TEC1270X devices sold on various online marketplaces. Unfortunately, this requires the use of external high-speed gate drivers, as the LTC1923 can’t be powered with more than 5.5V.

I drew the board in EAGLE, closely following the recommended design outlines which can be found in the datasheet. (“Right Click” -> “Open image in new tab” for Hi-Res pictures)

This slideshow requires JavaScript.

As can be seen in the schematic, the circuit essentially consists of the following subunits (left to right):

  1. H-Bridge with gate drivers: The two dual N- and P-Channel MOSFETs (IRF7343) are driven by dual high-speed gate drivers (LTC1693) and control the current flow as well as its direction.
  2. LTC1923: This is the main integrated circuit which includes the error amplifier and controls the gate drivers.
  3. LTC2053: An additional Rail-to-Rail Instrumentation Amplifier is used to achieve a higher setpoint stability of up to a theoretical maximum of 0.01°C.
  4. MCP4725: An 12-bit I²C Digital-to-Analog Converter with nonvolatile memory allows us to easily set the temperature setpoint using e.g. a microcontroller.

The temperature feedback is provided by a thermistor which has to be in close thermal contact to the device that is to be cooled/heated. A jumper decides whether the temperature setpoint is controlled via an analog trimmer potentiometer on the board, or via the I²C DAC.

The prototype then went to iteadstudio, who manufactured the board for me. As I chose the cheapest manufacturing options and hadn’t ordered any custom PCBs before, I wasn’t sure how the final board would turn out. When it finally arrived, the result surpassed all my expectations: The green solder mask is applied uniformly, texts on the silkscreen can easily be read and the HASL finish is of high quality. For better solderability, I could as well have chosen an ENIG gold finish, but this option would have cost disproportionately more and soldering problems weren’t observed during assembly.

This slideshow requires JavaScript.

Assembly was pretty straightforward, as no excessively fine pitched packages were used. However, it still took about three hours of focused soldering to mount the many small capacitors and resistors.

This slideshow requires JavaScript.

A first test verified that the board is operative and no traces are shorted out. I am currently building a simple test stand to monitor the behavior in a real environment, as the component values critical to the feedback loop have to be determined experimentally. Afterwards, I can give a statement about the controller’s actual performance.


I am planning to design a new version which is intended to work with supply voltages of 2.7V to 5.5V and therefore without additional gate drivers. The layout will fit a 5x5cm area for decreased manufacturing costs.



[1]: Schematic (PDF)

[2]: Top Layer (PDF)

[3]: Bottom Layer (PDF)


12 thoughts on “A thermoelectric cooler controller based on the LTC1923

  1. Hi, Great job

    I’m working on something like this. May i have your schematics of your eagle libraries?

    Thanks a lot.


  2. I’m also playing around with something like this and the LTC1923 looks appropriate. I went to GitHub to get the Eagle files and apparently i need permission to upload. would it be possible to allow me to upload?



    • Hi, thanks for your comment. Do you really want to upload something or just download the eagle files? Because the latter should be possible without any permissions. Just go to the main repository and click on the green “Clone or download” button on the upper right of the folder tree and then on “Download ZIP”. If you want to however commit your own changes, just go ahead and open a pull request. -Alex


  3. What is the the maximum voltage input for input and H-Bridge? If the max input voltage for TEC is 7.7v..

    Do I need any change of cap and res values? to optimizer the performance.

    My problem: when the temperature set to 20 C for example.. The temperature of tec oscillating between 18 and 24C.


    • Thanks for your comment. In this case, the maximum vcc is limited by the voltage tolerance of the LTC1693 gate drivers, which are specified from 4.5V to 13.2V.
      The maximum TEC voltage does not matter, what is more important is that you set the maximum TEC current via the voltage divider at the LTC1923’s I_LIM pin to a value that is appropriate for your TEC module.

      The oscillation you mention is indeed very high. One thing you always have to remember is that temperature equilibration and transfer processes are very slow. That means if you want to get an accurate temperature feedback, you should place your thermistor and TEC as close as possible to each other and also limit the thermal mass of the object whose temperature you want to regulate.

      Additionally, you could try changing the gain of the LTC2053 instrumentation amplifier, which changes the loop response and limits overshooting, which is one possible cause for your problems.

      Liked by 1 person

      • Thank you for your help..

        = I_LIM connected to Vset.. Will this cause a problem?

        = I place the thermistor directly on the cooled side of TEC.. and the other side of TEC mounted of big block of heat heatsink.

        = the gain of feedback loop in ltc1923 is 100 and gain of ltc2053 is 10.. So, better to change the gain in ltc2053 or ltc1923?

        Thanks agin for you effort and time.


      • 1) Vset is a regulated reference voltage produced by the LTC1923 IC. If you connect I_LIM directly to Vset, the voltage will be 2.5V. As stated in the manual, any voltage above 1V on the I_LIM pin leads to the current limit comparator using the formula 150mV/R_sense as the current limit, where R_sense is the sense resistor placed at the MOSFET bridge.

        2) This is a good example and should give you accurate results.

        3) It’s hard to say which gain is better to change, I just remember that there is a section about the overall system gain (like the K_EA, K_IA, …) at the very end of the manual. One point to remember is that the system can only be as stable as the setpoint resistor / DAC that you’re using. If the resistor e.g. has a high temperature coefficient and isn’t thermally isolated well enough, it’s resistance will change and the TEC will follow this change.

        What could also be a nice way of investigating your problem would be to take an oscilloscope with a very slow timebase (i.e. 5s), and then plot simultaneously the setpoint and the actual temperature. If you then give a step function to the setpoint, the trace of the actual temperature could give you an indication of what’s going wrong.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.