Wednesday, June 2, 2010

Making a USB Temperature Sensor, Journal (with the Arduino and LM335)

Post Moved to:

15 June 2010- New improved circuit, better readings
>> new files (code/fritzing)

Hooking up the original board above and running tests (10 degrees c to 25 degrees c with house heater) show the circuit is NOT accurately determining temperature. Need to investigate further. Calibrated to 25 degrees c- however a cold morning the next day (house ~10degrees c) showed a reading of -11 degrees c from the sensor. That's not right!
One problem seemed to be my calculations using the assumption of Arduino's board voltage of 5v. This is true when using the external power, however powering an Arduino Mega with the USB only resulted in a board voltage of 4.79 v. (AREF and 5V out)

Tried to recalculate the initial design-- 2000 Ohm resistor was chosen to reflect a 2.5mA operating current. Also, the designs for a 15v circuit show a 6k resistor (15v/6k = 5v/2k).
So what is the problem? I am planning on rebuilding the circuit tonight (basic temperature sensor, uncalibrated).

The sensor is hooked up backwards!

28 November 2008 - USB Temperature Sensor with Arduino and LM335
  • Updated Jun 5 ,2010- SerLCD 2.5 and Arduino 0018 Sketches and Video
  • Repost from Nov. 28, 2008 on (transferring for archival purposes)

--> Processing sketch for (standard firmata arduino 0018)
--> Arduino 0018 sketch
--> SerLCD 2.5 with LM335A Arduino 0018 Sketch (do not upload with SerLCD hooked up to TX pin! It may corrupt the module memory.)

Here is a recent experiment I've done with making a cheap temperature sensor connected to my MAC. The sensor itself is quite cheap to make (the orange board), the sensor IC is about 3 dollars, and the rest are some wire jumpers, a 2k trim potentiometer and a resistor. Total cost about $8-10 and some free time.

What you see the temperature board hooked up to is an Arduino, a cheap USB i/o controller available from Sparkfun electronics. I can control about 10 analog inputs (one is being used to monitor the voltage of the temperature sensor) and 10 or so 5V outputs that I monitor/switch from the computer. The neat thing about getting this interfaced to an i/o board is I can use the temperature data to switch devices, sound alarms, etc.

Here is a screenshot of the software. Basically, the temperature sensor takes an input of 5v, and will output a voltage at +10 mV/ Kelvin, which can be easily converted to Celcius as seen in the software. The sensor turns out to be quite accurate and highly responsive -- I can breath on the sensor lightly and detect a minute temperature change. Right now it is obviously not waterproof, but that is easily solvable with some heat shrink tubing (this is actually recommended in the IC datasheet by the manufacturer for making waterproof temp. sensors!)

A diagram of the board, and all the parts used. I'm happy to explain how the Arduino board works to any interested, and code examples are available for the brave hearted.

Postby TheChemist » Fri Nov 28, 2008 1:30 pm


Could you post the actual schematic, just so it is more clear, how the connections on the test board were made.

Also, how cheap is Arduino? Do you know if it is available worldwide?
Is there something similar for digital input/output? I see so much potential use for this gizmo it is mind boggling. :)
Also, do you know, how accurate are the readouts from Arduino?


Postby SirLeech » Fri Nov 28, 2008 2:47 pm

Andy, the Arduino boards are about $30 USD, I have one I brought from the US from Sparkfun electronics, and I've also purchased another one here in Australia (thats why you see two, my temp sensor actually only uses one, but I was playing with getting the two to talk when I took the pictures). They are fairly popular among the physical computing community so you should be able to find them quite easily; if you don't have any in your country I'm sure you could find an international shipper.

The Arduino board has 13 digital in/out pins that can be used either way, and 6 analog inputs. Each digital pin can also be used for serial TX or RX, and two digital pins are also available for hardware serial TX/RX. Lots more information on these boards is available on the website. Great little boards and I love them to death.

Your question about accuracy-- the accuracy would be as good as your sensor. The temperature sensor I've build here depends on the trim pot to make a calibration, which is only as good as the thermometer I'm calibrating to. What I read from my analog input is an integer value from 1-1024, which I'm assuming 1 = 0v and 1024 = 5v in my calculations. I then convert the number to volts, then to kelvin, then to celcius. You can see the original 1-1024 reading as "raw" in my software.

Here is the schematic I used from the LM335Z Temperature Sensor PDF. The trim pot used is actually 5k (10k works, but I found 5k is actually better for the 5V load you get from the Arduino), and the R1 resistor is 2k. Find the LM335z from Mouser or some other electronics supply. I can buy them from my local electronics shop they are that common.

No comments: