Cup Cooler

Introduction: Cup Cooler

About: geek with a business degree

This is my first Instructable, so please judge harshly so that I can learn :)
Its a simple project minimal skills needed.
Drawings are made using: Fritzing
Code Written using Codebender

The cold plate got to -20c
Watter in the cup measured @ 5.5c compared to icecube @2.5c

Step 1: Things to Find

list of items i have used:
Arduino uno
220ohm resistor (i have used 3 x750 in parallel as couldn't find anything smaller) anything from 100 to 220 will do.
12v dc fan 3 wire but 2wire will do the same job.
TEC1-12704 TEC Thermoelectric Cooler
12volt DC adaptor 2.5 amp
Optocoupler 4N33
jumper wires
LM355Z Temperature Sensor
Thermal Past 
Glue Gun

Step 2: Wiring Everything

Optocoupler 4N33
Pin1 -  Digital I/O 9 via 220Ohm resistor
Pin2 - Ground
Pin4 - DC fan Positive
Pin5 - 12V positive

DC Fan
Ground - to 12v Ground

LM335 Temp sensor
Vin - 5V arudino
Grn - Ground arduino
Vout - Analog 0

TEC1-12704 TEC
Positive to 12v DC positive
Negative to 12v DC negative

Better would to add a switch or another Optocoupler to turn ON/OFF

Step 3: Building

The cool side of Thermoelectric Cooler goes up, I have placed small heat-sink (used thermal paste for better cool transfer). Heat-sink needs to be bin enough to hold a cup.
The hot side is facing down another layer of thermal paste and a massive heat-sink to absorb all the heat (you don't want it to effect cooling).
Glue gun to glue Thermoelectric Cooler to the heat-sinks.
And a fan attached to the heat-sink which is activated when temp reaches 34 degrees Celsius, then runs for 20 seconds and start monitoring temperature again.
If heat-sink gets too hot it will kill the cooling power...
The code is

I have used LM335 Library which help with measuring temp: you can find it @
f you dont know how to install it here is great tutorial @

Step 4: The Code

#include <aLM335.h>

/*  Taken from

void setup() {

  pinMode(9, OUTPUT); //to control fan

void loop() {

  // We're using the two variable form of initialization, which defines both
  // the pin and the reference voltage.
aLM335 tempsensor (0, 5);
  Serial.println(tempsensor.getCelsius()); //geting temp reading just to make sure its working can be delleted latter

    if ( tempsensor.getCelsius() > 34 ){ // if temp is more than 34 start a fann for 20 seconds
      digitalWrite(9, HIGH) ;
  {digitalWrite(9, LOW) ;//if temp is lower than 34 turn off the fan, and keep measuring temp every 5 seconds

Be the First to Share


    • Pets Challenge

      Pets Challenge
    • Make It Modular: Student Design Challenge

      Make It Modular: Student Design Challenge
    • Fruits and Veggies Speed Challenge

      Fruits and Veggies Speed Challenge



    11 months ago

    its fake and doesnt work


    5 years ago

    hi, if possible that tec-12706 generated water? and how you supply power to heatsink with 12v 4 ampere?


    9 years ago on Introduction

    Thats true ATtiny85 would be cheaper and smaller. I'll buy on of them and make an update.
    The problem with the USB coolers/Heaters they do a poor job keeping drinks cool or hot, which makes them more of a gimmick rather than useful thing.My design keeps the drink Cold.
    I could use a smaller heatsink on the hot side, but the problem is it will require a fan to run constantly (noise issue).


    9 years ago on Introduction

    Neat. As small as your code and as few pins as you are using with your Arduino, have you looked to see if you could program an ATTiny chip to do the same thing in a much smaller package (would also free up your arduino for a different project)?

    Outside of that it looks pretty neat, possibly miniaturize your components a bit more and make a nice project box for it. Also, I assume the USB powered beverage coolers use a similar TEC but with less logic, have you tried hacking one of those to make it more efficient/programmable?