Overview
The TEC1-12706 is a thermoelectric (Peltier) module: pass DC current through it and one face gets cold while the other gets hot. No refrigerant, no compressor, no moving parts — just 127 semiconductor couples sandwiched between two 40 x 40 mm ceramic plates. Reverse the polarity and the hot and cold sides swap, which makes it equally useful for cooling and precision heating.
Makers use it for mini fridges, drink coolers, dehumidifiers, camera and laser cooling, temperature-controlled enclosures, and thermal experiments with Arduino, ESP32, or Raspberry Pi control. It is a simple two-wire device electrically — the engineering is all thermal: the hot side must have a real heatsink and fan, or the module will cook itself within a minute at full power.
At a Glance
Specifications
| Parameter | Value |
| Model | TEC1-12706 (127 couples, 6 A class) |
| Rated Voltage | 12V DC (Vmax ~15V) |
| Max Current (Imax) | ~6 A |
| Max Cooling Power (Qmax) | ~50-60 W |
| Max Temperature Differential (ΔTmax) | ~66-68 °C (at zero heat load) |
| Operating Range | -30 °C to +70 °C ambient (solder limit ~138 °C) |
| Dimensions | 40 x 40 x 3.8 mm, sealed edges |
| Leads | Red (+) and black (−), ~30 cm |
| Typical Draw at 12V | 4-5 A (supply should provide 6 A headroom) |
| Polarity Behavior | Reversing swaps hot and cold faces |
Wiring & Power Guide
Electrically this is the simplest part you will ever wire: red to +12V, black to ground. Everything that matters is about how much current flows and where the heat goes:
| Module Lead | Connects To |
|---|---|
| Red (+) | +12V from a supply rated 6 A or more (via switch, relay, or MOSFET) |
| Black (−) | Power supply ground (shared with your microcontroller's GND if switched electronically) |
To control it from an Arduino, ESP32, Pico, or Raspberry Pi, switch the 12V line with a logic-level power MOSFET (e.g. IRLZ44N, IRLB8721) or a relay. The GPIO drives only the MOSFET gate — the Peltier's current never touches your microcontroller.
Code Examples
Arduino: thermostat-style control via MOSFET
// TEC1-12706 bang-bang control with hysteresis.
// Wiring: MOSFET gate -> D9 (through ~220R), Peltier red -> +12V,
// Peltier black -> MOSFET drain, MOSFET source -> GND (shared with Arduino).
// Replace readTempC() with your sensor (DS18B20, thermistor, etc.).
const int MOSFET_PIN = 9;
const float TARGET_C = 10.0; // desired cold-plate temperature
const float HYSTERESIS = 2.0; // degrees of swing allowed
float readTempC() {
// TODO: replace with a real sensor read
return analogRead(A0) * 0.1; // placeholder
}
void setup() {
pinMode(MOSFET_PIN, OUTPUT);
digitalWrite(MOSFET_PIN, LOW);
Serial.begin(9600);
}
void loop() {
float t = readTempC();
if (t > TARGET_C + HYSTERESIS) {
digitalWrite(MOSFET_PIN, HIGH); // cool
} else if (t < TARGET_C - HYSTERESIS) {
digitalWrite(MOSFET_PIN, LOW); // rest
}
Serial.print("Temp: ");
Serial.println(t);
delay(1000); // slow loop = gentle cycling
}
Pico / ESP32 (MicroPython): high-frequency PWM power limiting
# TEC1-12706 proportional power via logic-level MOSFET
# Gate -> GP15 (Pico) or GPIO 15 (ESP32); grounds shared.
# 5 kHz PWM avoids audible whine and slow thermal cycling.
from machine import Pin, PWM
import time
tec = PWM(Pin(15))
tec.freq(5000)
def set_power(percent):
"""0-100% of full cooling power."""
duty = int(65535 * percent / 100)
tec.duty_u16(duty)
# Ramp up gently, hold, then off
set_power(30)
time.sleep(10)
set_power(60)
time.sleep(10)
set_power(0)