Low Power Digital Thermometer

Sure you can buy these for a few bucks online or at a local store. But I found the cheap ones were inaccurate and were often out by anything up to a few degrees. What's the point of having a temperature reading that's wrong! I wanted a temperature readout that was big, fairly accurate and had low power consumption. I wanted it to run on batteries and have them last a long time. I wanted to build it myself and learn stuff I could maybe use on other projects. The following is what I ended up with. All components are readily available from most suppliers like Digi-Key, Jameco, Mouser, your local electronics store etc..

I'm not sure what the term "low power" officially means, but I figure that having the batteries last for most of their shelf life must be close. The whole circuit draws an average of 106uA and the batteries have already lasted over 2 years.

Circuit Description

The LCD display is the same as those used in fuel pumps. It's easily readable in different lighting (except pitch dark), and combined with the LCD driver IC (that big 40pin one below the LCD), draws less than 10uA! The LCD driver IC is a Motorola MC145453, which I think is now obsolete. I just happened to have a few of these around. An available equivalent is the Microchip AY0438. There may be others. If you use a different chip, you just need to adjust the pin connections and software accordingly. This LCD driver chip has a serial interface to the micro. The chip latches the data and drives the seven-segment LCD. It takes care of back-plane / front-plane phase differences etc.. which are needed for a "direct drive" LCD, such as the one used here. The microcontroller is a small 8 pin PIC12F683. The temperature sensor is a Dallas DS18B20 digital sensor. The spec sheet says it's accurate to within 1 degree Celsius. It has 3 pins and uses the 1-Wire protocol to communicate with the micro. The power pin (Vdd) is connected to a port pin on the PIC, so the PIC can control power to it - i.e turn it off between reads. This helps to reduce overall power consumption so the batteries last longer.

To simplify the schematic and keep it readable, I have omitted the individual segment connections between the LCD and the driver chip. These are in the following table. You could wire them differently, and then modify the software to match the new connections. Similarly, you could use a different seven-segment LCD and modify the connections and software accordingly. I used this particular LCD because I have a few already in my workshop.

LCD segment connections to the driver IC

Software and Operation

The software is written in PIC assembler and is fairly straightforward. On power up the micro initialises everything, then goes into a loop that:-

  • Powers up the temperature sensor and waits a bit for it to settle.

  • Reads the temperature sensor using 1-wire commands.

  • Powers off the temperature sensor (to reduce overall power draw)

  • Does some maths on the data, then updates the LCD.

  • Resets the watchdog timer to wait 15 seconds, then goes to sleep (again to reduce power draw).

After the sleep time (15 secs), the watchdog timer interrupts the micro which wakes it up. It then repeats the steps above.

Reducing Power Consumption

I wanted the batteries to last a long time. I found there are a number of ways of reducing overall power draw. The strategy of cycling between everything being asleep and occassionally powering up to do stuff, has worked out well. The circuit draws around 12uA when asleep, and a maximum of 1.13mA with all parts fully operating. Averaged out over time, it is equivalent to a continuous draw of about 107uA. This means that if it's powered from AA alkaline batteries, which have a capacity of approx 2300mAh, they should last about 2.5 years.

Every bit counts when you're on a strict power budget. The following are some ways I found to reduce power draw:-

  • BOD: Disable the PICs Brown Out Detector during initialisation. This saves ~50uA during sleep.

  • Sensor Power Control: Connect the temperature sensor power to a port pin and use the micro to control power to it. Power it off when not in use.

  • Sleep: Put the micro to sleep and use an interrupt to wake it up periodically to do its' work (e.g Watchdog timer). The more time it spends sleeping, the less power it uses.

  • Voltage Regulators: Don't use linear voltage regulators (if you can get away with it, I could in this case), or use regulators that have very low quiescent current. A common linear regulator like the 78L05 can draw 1.2mA just for its' own use! I recently discovered regulators that draw only 2uA for themselves! (the Microchip MCP1702/3 series - awesome, thanks to Microchip!).

  • Other Component Choices: Some components comparatively draw a lot of power. For example, graphic LCD's might look good and be able to display more things, but they draw several milliamps, compared to seven-segment LCD's that draw less than 10 microamps, including the driver chip! Some micros draw a lot of power, and don't have really low power sleep modes like the PIC.

  • Unused Port Pins: Connecting unused port pins on the PIC to a power line (either Vss or Vdd) saves a few more microamps. Remember, every bit counts when you're on a strict power budget.

  • Cycle Time: Another option is to increase the cycle time so the micro spends more time sleeping with the peripherals powered down. This is a trade off between how often you want the display updated vs. how long you want the batteries to last. I'm happy with every 15 seconds and about 3 years of battery life.

I hope you enjoyed reading about this project or found this useful. Happy tinkering!

If you found this useful and would like to know more, you can email me at: greg dot newton dot oz at gmail dot com.