[Fab] Laser water temperature monitor

Josh Myer josh at joshisanerd.com
Sun Mar 13 06:31:55 UTC 2011


I prepared an LM335A (analog temperature sensor) for use in the laser's
water bucket: it's soldered down to leads, then encased in a chunk of sugru.
 The slew is going to be a bit much (it'll probably be at least 15 seconds
behind real time, but that's a guess.  I have no idea what the thermal mass
of sugru is, and can't be arsed to run a proper test.)

Basically, it just updates the LCD with "LASER BATH TEMP\n31.4", no fancy
degrees C or anything.

I also have a 16x2 display and am willing to donate a Volksduino (and the
handful of other components), if someone else wants to do the actual circuit
board bits.  I actually got the code working with a circuit on a solderless
breadboard (it's dead simple), displaying the temperature in my garage.

We'll need a wall wart (oh, hey, Noisebridge has fucktonnes!), and an
enclosure.  I'm not sure how we'll manage to fabricate a custom enclosure
for an Arduino project, but I suspect someone will have ideas.

Is anybody available to do the tiny bit of design and soldering required to
do this properly?  I've got too much on my plate right now to spend the ~4
hours required to get everything soldered nicely, tension relief right, and
make sure that we can use the Volksduino for more than just temperature
sensing.  I'd like to tack on a "room temperature" sensor and find a way to
sense when the laser is on.  Dumping all this via serial to something that
feeds a webserver would be hi-larious.  Cacti/munin/${UGLY_RRD_TOOL} graphs
of all the laser state!  Woo!

Temp sensor datasheet: http://www.national.com/mpf/LM/LM335A.html#Overview
LCD instructions: http://www.ladyada.net/learn/lcd/charlcd.html

Schematic: do the LCD thing.

Temperature probe schematic:
  +5V ----[1k resistor]-----o---------(Probe red lead)
                            |         (Probe black lead)----GND
                        (Analog0)

That lead probably wants a filter cap and a ferrite bead, but it's good
enough for government work (Bacchus flies with more or less exactly this).

Code: read analog0, then, in floating point (yes, float):

float sensor_calibration = 0.00; // an offset, each sensor is a very
slightly beautiful and unique snowflake.
int adcval = analogRead(0);
float degC = adcval*5.0/1024*100 - 273.15 - sensor_calibration;

// Tack this into the LiquidCrystal hello_world example, replacing the
millis() print with degC.

Any takers?
-- 
Josh Myer 415.230.9791 <-- NOTE: New number!
 josh at joshisanerd.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.noisebridge.net/pipermail/fab/attachments/20110312/ee648b6b/attachment-0002.html>


More information about the Fab mailing list