This powerful temperature monitor can theoretically analyze an unlimited number of temperature
probes, although the current firmware only supports approxiately 250 devices due to limited SRAM. Accuracy is
better than +/- 0.5C over a range of about -10C to +85C with a resolution of ~0.01C. Data is returned via a serial
port to a host PC at 19200 bps; the software writes data directly to a MySQL database for further analysis and display.
I began this project in mid-January 2004 after we purchased a pair of fish tanks; my wife let
me purchase a heap of electronic bits and a new AVR ISP programmer as my birthday present. I decided that it would
be a fun project to re-familiarize myself with the AVR chips since I had taken a bit of a break from electronics
and specifically the AVR devices for over a year.
My original design was for me to have six temperature probes - one in each fish tank, one each for the
air temperature indoors and outdoors, as well as for two in our mini bathroom greenhouse where I start chilies during
the winter to give them a head start on the growing season. Since then, I've expanded that figure to eight, adding one internal
sensor to the unit as well as an external sensor to monitor the home server's temperature. The unit sports three 1/8" stereo
jacks on the back for connecting sensor chains, each bus being able to handle dozens of sensors. On the front there is a serial port,
power connector and a status LED. Since the sensor search function is invoked only once at startup, sensors that are added after power-up
are not recognized until the unit is reset. The reason for this is that I don't expect that I will be adding any additional sensors,
and also because that on some very rare occasions the sensor search function fails to detect some units correctly. It's not a huge design
issue, and could easily be modified to suit any particular needs.
The sensors I am using on this project are the Dallas/Maxim DS18B20 devices which can sense temperatures
between -55C and +125C with an accuracy of +/-0.5C in the range of -10C to +85C. Further processing of the data expands
this accuracy somewhat. Since the controller communicates with these devices over a 1-wire bus, other devices can
also be controlled, such as a DS2450 quad ADC which can also be used to drive relays. Although I am currently driving
only temperature sensors, I have made various extensions to the design to allow various other devices to be supported
with ease, which is reflected in the design choice to add a +5v bus to the sensor network instead of powering the sensors
via parasite power.
|