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