It’s based on an AT90S2313 and a Dallas DS1621 Digital Thermometer. The temperature is displayed on a dual 7-segment display, and two buttons are used for setting parameters. A high current relay switches the heating element.
I used an AVR 2313 as it just the right number of pins for this task. Also, it’s programmable in C, which makes things easier. An alternative would be the 1200, but I’ve got some bad experience with that.
A 4 MHz ceramic resonator is used for clocking the 2313.
The displays are common cathode displays. The segments of both displays are tied together and multiplexing is handled in software. Note that the decimal point segment also are used. More detail about this later.
The power supply is straight forward. A single or double tap 9 V transformer with a rectifier circuit and a 5V voltage regulator. The rectified input to the regulator is also supplied as a drive voltage to the relay.
The Dallas DS1621 chip interfaces to the 2313 using a I2C interface. This is a 2 wire bidirectional bus with a speed up to 400 kbps.
Up to 8 DS1621 devices can be connected on the same I2C bus, but in this case there’s only one device, so the address selector pins on the DS1621 is pulled low, giving it address 0 (well, 0x90 actually).
Actually, the DS1621 has a thermostat output, which can be programmed to a certain temperature, but it’s not used in this application.
created by Jesper.