Temperature and Humidity Meter
This project is a combined temperature and humidity meter. It is an improvement on my PIC-based humidity meter and my PIC and AVR thermometers. I use an ATmega164, which as lots of I/O and memory.
Update: An HDC1080 I2C sensor version of this project can be found here, and a SHT30 version here.

The humidity sensor is a HS1101, made by Parallax (p/n
27920) and available from Digikey (27920-ND) for around US$10. The
circuit for the humidity meter sensor is identical to
the earlier project. I had made a mistake in construction, which
resulted in erratic operation. The problem is that the HS1101 must be
physically as close to the LMC555 as possible. I had run a 4-inch
wire to the circuit board, and the unit became sensitive to noise
picked up from the surroundings. In this version, I placed the sensor
board at the top of the case, where the HS1101 can plug right in to the
circuit.


At the top of the unit you can see the TC1046 temperature sensor
(Digikey TC1046VNBTRCT-ND) and the HS1101 humidity sensor. The board at the top contains the
LMC555 circuit and the power supply regulator. A 6 conductor cable goes
the the lower board, which contains the CPU. The middle board has the
LCD display and 2 switches. The switches hold the board in place. There
is a 26 conductor ribbon cable to the CPU board just below. Since the
LCD uses little power, the unit is battery operated (with provision for
an external power supply), another big improvement over the older
projects. The battery and holder are at the bottom of the case. The
power leads go to the on/off switch (SW1) and then to the sensor board
regulator, and regulated power goes to the CPU board.
The LCD display is a Lumex LCD-S301C31TR 3 digit unit (DigiKey 67-1788-ND) with
no controller or backlight. I must
admit that this LCD display is a pain to use. You need 24 connections
to the CPU (hence the large ribbon cable in the photo), and the program
must drive each segment to make up the
display. However it is cheap (~C$3.50), and as
mentioned, uses little power. I just wish there was provision for a
backlight. I also want to note that this display is a static LCD, and
normally requires an AC signal to drive the segments. A very good
write-up on the subject can be found here.
However I did not implement this, as I find that the Lumex display
maintains its contrast for some time after power-up. I never leave the
unit on for more than a few seconds at a time, so this is not a problem
for me.
When you switch the unit on, the battery voltage is
sampled via R5 and R6 and ADC0. For 2 or 3 seconds, the battery voltage
is displayed. Then the display changes to temperature or humidity,
depending on the setting of SW2. Other improvements are the choice of
Celsius or Fahrenheit (JP1), and the ability to display negative
temperatures. The temperature sensor is connected to ADC7 and uses the
internal 1.1V Vref. A digital median filter is used to smooth out the
temperature display. The humidity circuit generates a squarewave which
is connected to T1. Timer0 is programmed to give 1 second intervals,
where the T1 count is read and reset. An interpolating routine is used
to get humidity from the measured frequency.
Download C
source code for the project
Back
to VE3LNY's AVR Project Page