Peltier temperature control

I know similar questions have been posted before, but I have yet to find exactly what I am looking for. Here's the deal, I am using peltier modules to cool copper plates to form condensation and need a way to control the current applied to them based on temperature. I am only cooling so I know I don't need a H-bridge. I currently have a simple relay setup that turns on above a certain temperature but this isn't efficient in my case. I am working with peltiers with current max of 12 amps, voltage max of 17 volts, and DeltaT max of 75 degrees Celsius. However, the temp difference i am trying to achieve is only 10-15C so I don't need many amps to get to the required temp. This is why the relay setup is inefficient for my use since every time the peltier is turned on it draws 7-8 amps and I need to stay under 12. My next step is to move to PWM control but this is where I get lost. I have a logic level FET ordered and know I will need to flatten the PWM signal, but im not sure how to go about building the circuit. What capacitors, resistors, and inductors do I need and how should they be configured? How should the feedback loop from the temp sensor be coded to adjust PWM signal? Also, I am currently using a LM35 temp sensor glued to my copper plate, is there a better temp sensor to use? Lastly, if PWM is not the best solution is there one better?

I currently have a simple relay setup that turns on above a certain temperature but this isn't efficient in my case. I am working with peltiers with current max of 12 amps, voltage max of 17 volts, and DeltaT max of 75 degrees Celsius. However, the temp difference i am trying to achieve is only 10-15C so I don't need many amps to get to the required temp.

It's not as simple as "temperature difference". It's a matter of how much energy you're trying to move. ... The filament in a 100W light bulb is more than 4000 degrees F but it's not going to warm-up a room.

This is why the relay setup is inefficient for my use since every time the peltier is turned on it draws 7-8 amps and I need to stay under 12.

Why is that inefficient? Virtually all heating/cooling systems switch on & off, and that works because temperature doesn't change instantly.

My next step is to move to PWM control but this is where I get lost. I have a logic level FET ordered and know I will need to flatten the PWM signal

No, you don't need to "flatten"/filter the signal. If you use PWM the heat (cooling) is determined by average amount of power/energy.

MOSFETs/transistors are inefficient when partially on and they get hot (hotter). The magic of PWM or a relay is that the device is either on with (theoretically) no voltage dropped across it, or off with no current through it. In either case it's not dissipating energy. In reality there is come voltage across a MOSFET/transistor when turned-on and you'll probably need a heatsink, but it will get super-hot if you turn it half-on.

[u]MOSFET driver circuit[/u].

I'm not a Peltier expert, but I believe they are non-linear an you might need some kind of constant-current-control rather than a regular constant voltage power supply.

The LM35 is accurate and easy to use.

I like the DS18B20 temperature sensor but it's not worth changing a working sensor to one that you don't know.

You don't need inductors and capacitors. The Peltier doesn't have a large inductance so you don't even need a diode. There is no "flattening" required.

I have a number of heater projects coded so that there's two temperatures: one temperature where the heater is fully off and one where it is fully on. Between those two temperatures the PWM is a linear slope. I don't care exactly what temperature I get between those two limits. You could maybe make those two temperatures 2 degrees apart and scale the PWM from 0 to 255 as the temperature changes over that range.

You could even limit the current by defining "fully on" as only 180 PWM units. (Or any other number that makes sense to you.)

DVDdoug:
It's not as simple as "temperature difference". It's a matter of how much energy you're trying to move. ... The filament in a 100W light bulb is more than 4000 degrees F but it's not going to warm-up a room.
Why is that inefficient? Virtually all heating/cooling systems switch on & off, and that works because temperature doesn't change instantly.

The reason I'm saying this is inefficient in my use is because I have found that I only need 2.5-3 amps to get to the lowest temp i will likely ever need and for my project I have a current limit of 12 amps. I am using up to 4 peltiers so having 4 of them jump from 0 to 8 amps each will be far over my limit. Also every time the peltier is off heat is leaking from the heatsink back to the plate I am cooling. This is why I want to go PWM

This statement is in error and may affect how you solve the problem: Also every time the peltier is off heat is leaking from the heatsink back to the plate I am cooling.

The heat is from the diodes in the Peltier device itself. When the current is off, the residual internal heat must go somewhere. Have you tried better cooling of the existing heat sink or a larger heat sink or a copper heat sink?

Paul

So? He said he doesn't need maximum performance. Just a little cooling down to a specific temperature. So a bigger heatsink is unnecessary.

MorganS:
So? He said he doesn't need maximum performance. Just a little cooling down to a specific temperature. So a bigger heatsink is unnecessary.

The problem only occurs when the Peltier power is off. MY thought was a more efficient heat sink would cool the internal heat faster.

Paul

Here is some interesting reading material. PWM (in a closed loop control with PID function) is probably the easiest way to go but in no way the most efficient setup according to the test.

Not sure if some kind of LC-filter would raise the efficiency much. Personally I prefer to use proper mosfet gate drivers which lets me choose mosfets with a very low Rdson but since your currents are very low I'm not sure that would help much. It might let you choose a very high PWM frequency. Mosfets are highly capacitive to switch so if high switching frequency is desired, a special gate driving circuit may be necessary.

Hi,

I am using up to 4 peltiers so having 4 of them jump from 0 to 8 amps each will be far over my limit.

If you are using 4 peltiers, how have you got them wired?
Parallel or Series or Series/Parallel?

Can you please post a copy of your existing circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Tom... :slight_smile:

Sorry, I've been working on my current circuit all week and haven't had time to check back in. I'll try to answer your questions.

The peltiers will be in parallel, each with their own mosfet and temp sensor on their relative plate to cool so that each one can be controlled individually. I have posted a drawing of a circuit with 2 peltiers. This dosent show the temp sensors but hopefully you will get the idea. I do have a couple of mosfets/drivers ordered. Also, I am finding the lm35 and tmp36 temp sensors to have poor accuracy in my application. Is there any other solution? A thermocouple? I need to measure the temperature of the surface that the peltier is cooling. Thank you for the replies.

SethC:
I am finding the lm35 and tmp36 temp sensors to have poor accuracy in my application.

Maybe you're using them wrong.
The LM35 only goes down to a few degreesC above 0C, the TMP36 should be ok to about -35C.
They must be read with 1.1volt Aref for stability and resolution. Default Aref won't do.
Accuracy depends on YOUR calibration.
The sensor is factory calibrated, but the Arduino is not.

The mosfets:
Q2 (p-channel) can't work that way, unless peltier VCC is the same as Arduino VCC.
See this page, third diagram for high-side switching a supply voltage that's higher than Arduino VCC.
Leo..

Wawa:
Maybe you're using them wrong.
The LM35 only goes down to a few degreesC above 0C, the TMP36 should be ok to about -35C.
They must be read with 1.1volt Aref for stability and resolution. Default Aref won't do.
Accuracy depends on YOUR calibration.
The sensor is factory calibrated, but the Arduino is not.

The mosfets:
Q2 (p-channel) can't work that way, unless peltier VCC is the same as Arduino VCC.
See this page, third diagram for high-side switching a supply voltage that's higher than Arduino VCC.
Leo..

I'm using 5 volts, not sure how to use the Aref. Do you have a link on how to program the sensors in this way? For the mosfets, I think you may be misunderstanding the diagram. I dont have the arduino power source shown, right now it has a separate supply but will eventually share the same power source (12v). All the arduino is doing is sending a signal to the mosfet to open or close.

Attached is a simple example of a TMP36 using the internal 1.1volt Aref.
Power the TMP36 from 3.3volt (potentially cleaner), and give the TMP its own ground wire to the Arduino (not shared).
Can calibrate in melting ice (zero C) if needed.

// connect TPM36 to 3.3volt A0 and ground
// calibrate temp by changing the last digit(s) of "0.1039"

float tempC; // Celcius

void setup() {
  analogReference(INTERNAL); // use internal 1.1volt Aref
  Serial.begin(9600);
}

void loop() {
  tempC = (analogRead(A0) * 0.1039) - 50.0;
  
  Serial.print("Temperature is  ");
  Serial.print(tempC, 1); // one decimal place
  Serial.print(" Celcius  ");

  delay(1000); // use a non-blocking delay when combined with other code
}

SethC:
For the mosfets, I think you may be misunderstanding the diagram. I dont have the arduino power source shown, right now it has a separate supply but will eventually share the same power source (12v). All the arduino is doing is sending a signal to the mosfet to open or close.

I' affraid you don't understand it.
The gate of a mosfet must be the same as it's source to turn the mosfet off.
If source of the p-channel fet Q2 is 12volt (VCC), then gate must be 12volt (or more) to turn the fet off.
An Arduino pin can't do that, so the mosfet will stay 'on' all the time.
Leo..

Hi,
Why are you using Pch and Nch MOSFETS when 4 Nch will do the job?
16f49f1aee7527c284ed8fb63372e055a425ed95.png

If you want to switch them one after the other in a cycle, then that circuit will not do it.

Q2 will be ON all the time because Vcc is 12V, the controller output will only go from 0V to 5V so Q2 Gate will be biased -12V or -7V with respect to its Source, so it will be ON all the time.

Also if you are using PWM to control, if that circuit did work, you would have the equivalent of ONE Peltier effect being ON all the time.

How many temp sensors do you have?
What model Arduino are you using?
Have you got the Arduino gnd connected to the Peltier Device Power Supply gnd?

Thanks… Tom… :slight_smile:

Sorry guys, that was a diagram from someone else with a similar project I stole and didnt pay much attention to. I am using N-channel mosfets and Q2 should be the same as Q1 with the mosfet after the peltier.

I will have a sensor for each plate when I get to building the full unit. I am currently working with just one peltier to figure out how to setup the control. I am using an Arduino Uno, and about to move to an Arduino Elagoo Mega. Right no thee arduino is running off of a separate power source so no it is not connected to the vcc ground.

SethC:
Right no thee arduino is running off of a separate power source so no it is not connected to the vcc ground.

Arduino ground must be connected to source of the n-channel fet to be able to control the gate.
And Peltier supply(-) must be connected to source of the n-channel fet to complete the peltier circuit.
So yes, grounds MUST be shared for this to work.
Leo..

Hi,
If you are controlling a MOSFET gate with the UNO or any controller, you must have the gnds of the controller connected to the gnd of the load supply, so that you apply the correct bias to the MOSFET gate.

Use you DMM and measure if there is any voltage between the UNO gnd and the MOSFET source pin, please.

Tom.. :slight_smile:

Wawa:
Arduino ground must be connected to source of the n-channel fet to be able to control the gate.
And Peltier supply(-) must be connected to source of the n-channel fet to complete the peltier circuit.
So yes, grounds MUST be shared for this to work.
Leo..

Ok thank you.