Temperature controlled chamber (tec/peltiers and current control)

Tags: #<Tag:0x00007fa359ee35a0> #<Tag:0x00007fa359ee3438>

Has anyone tried to control a TEC with a Raspberry Pi or Arduino? How did you control the temperature?

Long form:
I have a project to build a temperature controlled chamber for homebrewing. It’s a relatively small chamber and it won’t need a huge temperature differential so Peltiers are a nice and simple way to go without losing too much due to the lower efficiency.

I’ve looked for inspiration online (primarily this video). That project seems to use a PID controller, as far as I can tell but I wanted to add remote logging and control (and, well, just fiddle with the electronics more). Looking further, it seems to me that there are a lot of DIY Peltier projects where the electronic control aspect hasn’t been given much thought, and seem to be mostly one and done projects; so I am wary of trying to replicate them for something that is meant to be running several months continuously. I’ve also seen plenty of places saying relays and PWM are inefficient and reduce the Peltier’s life.

With that in mind I was hoping to use a digitally controlled current regulator. Taking this article’s suggestion of using a voltage regulator with a potentiometer, I was considering an LM338 voltage regulator with a digital potentiometer to run a TEC1-12706 controlled by a raspberry pi. Has anyone tried something similar? If so, can you share your circuit or thoughts on the merit of the approach?

Somewhat related, has anyone used PWM or relays with TEC’s? If so, did they perform well enough/not breakdown after 3 days?

1 Like

So you’re using a Peltier in order to have a “coefficient of performance” greater than one, by harvesting ambient heat, to gain efficiency?

You don’t want to drive it from a linear regulator, because that is inherently inefficient. And you don’t want to drive it using PWM because that’s apparently not good for it. However, you can use a switch-mode regulator which produces a steady DC output, giving you the best of both worlds. There may be chips that allow you to do this directly, or you could perhaps generate an analogue voltage from the microprocessor (filtered PWM?) and use that as the reference voltage for the feedback loop in the regulator.

1 Like

Not exactly. I am using it as heat pump to remove heat from inside the chamber, or to use it as both a pump and heater whenever I need to heat the chamber.

I see, linear regulators are inherently inefficient because of the heat they generate, I suppose?

Ah I see - well if you need to cool, then it’s the obvious choice!

Linear regulators simply reduce voltage. Switch-mode regulators convert voltage to current. So if you have 10V on the input of a linear regulator and you want 5V out at 1A, then it draws 10V at 1A and you waste 5*1 = 5W - the system is only 50% efficient. The law of conservation of energy dictates that that 5W is given off as heat by the regulator. A 100% efficient switch mode regulator would draw 0.5A at 10V. Of course in practice they’re more like 80% efficient but still the logical choice.

1 Like

And with a peltier you’d still advise voltage control versus current control? My understanding is that there is a direct relationship between current and heat removed with peltiers which is why I was thinking of current control. However in the end it’ll be controlled by PID so it might not matter; my wariness is whether the voltage response is a bit non-linear which might make the PID not great.

However, for the model I am looking at it is close-ish to linear so it might not matter!

Cheers for the advise so far by the way.

I don’t have any direct experience with these things, but they may well behave like diodes/LEDs, with a very non-linear voltage/current curve, so current control, as with LEDs, may be preferable. While I can imagine the thermal stresses of switching them on and off with long intervals might be considerable, I am confused as to why PWM control is harmful - where did you read that?

Well… spread around and I could be falling for internet lore. It makes sense though. The Peltier is overall inefficient so it heats up one side considerably (let’s say 10C above ambient from my fiddling with heatsinks) whereas the cold side can be 5 to 10 C below ambient (for my use case). That’s a 20C differential across the device that would be constantly applied on and off to the Peltier. You can imagine that might stress the materials considerably over time. I guess the frequency of the PWM and the response of the materials are both something to consider but Peltiers are known to be prone to failure and people ascribe those failures to this.

I would suggest that it would be changes in temperature, causing expansion and contraction of the materials, that would be the failure mode. You’re right that due to the thermal mass the PWM waveform in the 100Hz range is going to have minimal effect, and that the kindest way to drive it would be to monitor both sides of it with two temperature sensors and to ramp the duty cycle slowly enough that the temperatures change slowly. But that is conjecture!

1 Like


After a long while, I have a working prototype. @Matthew in case you are curious, PWM didn’t work actually because the Peltiers have too much hysteresis and are too inefficient. However, I made a little thermostat loop using a raspberry pi and that worked a treat!

In the end, I started out using a terrible dead-bug style circuit and using a half-bridge IC designed for car windows. That failed twice so I ended getting deep into making my own electronic prototype boards!
Google Photos

This basically just allows the IC to be mounted and the power to be distributed around to the peltiers. I started on this path after I had already cut the cables on the fans; if I’d start again I’d include power distribution for the fans as well.
Google Photos

Here it is, running and with a raspberry pi controlling the whole thing.

It’s working really well just with the thermostat logic. The red line is the temperature inside and the blue line is the room temperature. Normal brewing fridges can have ±1 to 2C variations, so I am quite pleased with it!

I haven’t tried driving it at full blast, but have gotten it to maintain 12C when it was 20-22C outside, which is about the lowest I’ll need!


One thing that was implied in the previous post was that I abandoned the idea of having precise control of the current to have a continous pumping to match the required temperature differential; the main reason is that the actual required current is dependent on too many variables: how good is your heatsink, how well your fans are coupled to the heatsink, fan speed, peltier quality, room temperature variation, etc, etc… The thermostat logic doesn’t need to know any of this and the box responds quickly enough (i. e. lowish hysteresis) that it works well enough.

Looking good! Nice work!

1 Like