HeaterMeter Homebrew Controller


 

Bryan Mayland

TVWBB Hall of Fame
For information about the HeaterMeter-in-a-Linksys-Router project, check the LinkMeter thread.

This thread was created to sum up the information found in the other homebrew controller thread relating to the HeaterMeter PID controller that I built based on Bob Hruska's design. The thread was over 25 pages long despite the best efforts by some participants to keep it as to the point as possible.

What is HeaterMeter?
The History of HeaterMeter
HeaterMeter's main purpose was to make me as lazy as possible without disrupting the fantasy that I was still 100% involved in the long cooking process normally associated with great BBQ. More specifically, it is a controller box:
implementation-4.jpg


With a built-in web server that lets you see what is going on in the grill and adjust the temperature all without having to put down your beer:
mockup-v4.png


You can also do some fun things with it like this or just this if you're handy with some shell scripting.

In my case it was more designed to allow me to BBQ without leaving the comfort of the World of Beer drinking establishment down the street from my apartment. Through the tubes of the internet I was able to know exactly when it was time to pay the tab and stumble home with my friends for delicious pulled pork I had slaved all day drinking Dogfish Head over.

Hardware
The basic guts of the HeaterMeter is an Arduino development board. I used a Duemilanove, although the replacement Uno board works just as well. The WiFi was handled by an AsyncLabs WiShield board with a chunk of flash storage on it for holding a few web pages. The Arduino only has ~31k of storage and most of that is taken up by the web server code so having the flash helps a lot. Unfortunately, AsyncLabs has stopped production of the WiShield so hopefully someone will come up with a replacement.

The device uses standard Maverick probes, either the high-temp or standard versions which are terminated with 2.5mm mono headphone jacks. HeaterMeter supports up to 3 probes (1 pit, 2 food) so if you've already got these you can save a good bit of cost. Speaking of cost

What does it cost?
HeaterMeter can be economical to build if you can do without the extras (denoted with *)
Arduino $30
Blower $13
Enclosure $10
12V wall wart $5
* WiShield $55
* LCD $15
* Buttons $5
Electronic parts $10-20
You'll of course need tools like a soldering iron, breadboard, maybe some sheet metal to build a fan enclosure as well. You're ordering from at least 3 different places here too, so shipping will add a significant overhead.

Without the LCD and buttons, to change the temperature you need a USB cable and a computer, so they are highly recommended. If you have a WiFi router with a USB port an open source distribution on it, like DD-WRT, you can actually connect HeaterMeter to it and use that to serve the pages and control the device. This uses code from the LinkMeter project which is something else Ed Pinnell and I are working on.

Schematic
Schematic version 2011-05-03 is here.
Parts list is in the next post.

Hardware Photos
First version
Second implementation uses a second 5V power supply, the ArduinoPro from SparkFun can't supply the power needed to support the WiFi.

Software
The latest released version is r97. Download
This includes all the necessary libraries with fixes needed to work properly. If you're not doing the WiFi route, you can just ignore the WiShield and DataFlash libraries. Extract this to your Arduino folder (usually inside My Documents). If you don't have the Arduino development environment you'll need that too.

Or bleeding edge from GitHub

README.txt unironically holds information regarding all the configuration parameters for WiFi, changing temperature probes, etc.

If you're going the WiFi/DFlash route, you'll also need a tool to flash the web files into dflash. I've provided this buggy piece of junk.
-- Upload the Flash_SerialProg.pde sketch to your arduino
-- Launch the ArduinoSerialUpload application (requires .NET 3 iirc)
-- Select your COM port of the Arduino on the right and check the Open box. You should get a line in the textbox from the Arduino describing its flash
-- Change the directory next to the SendDir button to the location of the web files (Documents\Arduino\HeaterMeter\www\)
-- Press the SendDir button and hopefully you'll see a few lines of text going about files transferring and then it will spit out a C header file.
-- Check the C header file offsets to make sure they match those in HeaterMeter\flashfiles.h if not, adjust them. Note that "mockup.html" is called just "" in flashfiles.h because it is the default web page.

I'll be updating this post as needed to clarify things and post new version if developed.
 
=== Construction ===

Parts List
S1-LEFT, S2-DOWN, S3-UP, S4-RIGHT Tactile Switch (see below)
C1 Mouser 22uF/25V electrolytic capacitor
C2 Mouser 0.1uF ceramic or MLC capacitor
D1 Mouser Digi-Key 1N4001 diode
D2 Mouser 1N914 or 1N4148 switching diode
R1, R2, R10, R13 Mouser 10k ohm 1% 1/8W resistor
R3, R4, R5 Mouser 1k ohm 5% tolerance 1/8W resistor
R6 Mouser 10k ohm trim pot
R7 Mouser 390 ohm 5% 1/8W resistor
R8 Mouser 680 ohm 5% 1/8W resistor
R9 Mouser 2.2k ohm 5% 1/8W resistor
R11 Mouser 4.7k ohm 5% 1/8W resistor
R12 0ohm resistor (aka: a wire) change this if your LCD needs it
TR1 Mouser 10k ohm NTC thermistor (Note: datasheet incorrect at mouser)
IC1 Mouser Digi-Key 74LS164N serial-in parallel-out shift register
U$1 Mouser SparkFun Arduino Duemilanove/Uno
Q1 Mouser Digi-Key IRL510 MOSFET
LCD_16X2 Mouser 16x2 parallel LCD
JP3, JP4, JP5 Mouser Digi-Key 2.5mm mono jack
BLOW Digi-Key 12V DC Blower 60x60x25 3200RPM 6.7CFM 34dB
BOX Mouser Digi-Key Project Box
BLOW-C Something to connect the fan to the HeaterMeter, I used an old RCA cable and jack.
12V DC 500mA minimum power adapter

Buttons - 4x (S1, S2, S3, S4)
SparkFun has these 12mm tactile switches which are pretty good 7mm diameter, 8mm overall height. $0.50 each
Mouser has these which I like a bit more because they use snap-on caps. The caps bring the size to 9.5mm diameter 11.5mm overall height. The caps also come in colors: gray, black, orange, and yellow. Combined cost of button and cap is $0.68 each
Mouser button caps for above (black).
Mouser a single 4-way switch works too. A square cap feels best on this (you'll have to cut the center post in the cap). Cost is $1.05 total. Use a 4-6mm standoff. pics

Component Mounting Hardware
To mount the LCD to the box, you can just drill holes through the box and run screws through it and attach a nut. Additional nuts can be used as standoffs to make the LCD flush mounted, or you can cut up an old plastic pen barrel to the right standoff length as well.
Alternatively to mount the LCD, you can use standoffs. The enclosure is 2.5mm thick, the LCD sticks out 8.5mm from the board so that is a 6mm standoff for a flush mount (Mouser). These take M3x0.5 screws, the kind that holds a motherboard to a computer case. Just glue them to the project box.
Button board mounts, same thing. If you use the buttons w/ caps above, that's 11.5mm minus 2.5mm box minus you want them to stick out 2-3mm so 6mm total to play it safe. Mouser

Mount the blower fan. More to come here.
Here is the original cardboard mockup that I actually still use.
Here is a picture of one I made for my Dad
 
This is just an amazing collaboration. I'm glad I found it.

I have a small shop and plenty of ability to fabricate things, and even have a soldering gun for such a task. However all I can do is follow simple instructions. I have no ability to even moderately design or program.

Am I out of luck here? Am I destined for an off the shelf Stoker or Guru?

I would LOVE to build a unit. I like to use heavier duty rated components, etc.

Thanks for taking the enormous amount of time to document all of this.
 
Originally posted by Ed Pinnell:
Yes, all the resistors should be 1/4w or better (I hope I don't have to defend myself on this. From experience, that's all I ever use. You can do as you like.)
I only use 1/4W resistors as well but in this instance 1/8W should be fine. At 22k ohms, the current is limited to 0.23mA which at 5V is 1.15mW which is well below even 1/8W. An important thing to remember is that you generally can't measure resistance accurately in circuit. It might be why your resistance is off by so much.

Now I'm starting to wonder if my HeaterMeter matches up with the Maverick values at higher temperatures. I haven't tried a parallel comparison since back in the breadboard days. I'll do that when I get home tonight because it might not just be your build. I just blindly copied the values from Bob's build. I wonder if they've been off all along?

Ted, there shouldn't be any programming necessary but you will have to figure out how to lay out all the components in the schematic. It is hard to provide that because the finished size of the device needs to fit in whatever enclosure you're working with. The lack of the WiShield puts me off from recommending doing a build though. There isn't a replacement part yet that I've seen.
 
It's MY Tupperwear dang it!
icon_biggrin.gif


In truth, if the unit simply controlled the heat, had one pit probe with very high temp range and two food probes, I'd be happy.

I have a Maverick 732 that does a good job keeping me posted remotely, and they have a new pit probe coming out with a higher temp rating. So remote monitoring isn't mission critical for me
 
from me earlier...
I have a Maverick 732 that does a good job keeping me posted remotely... So remote monitoring isn't mission critical for me

Having said that it would be sweet to monitor things from my droid
 
Originally posted by Ted W:
Having said that it would be sweet to monitor things from my droid
Yeah see that's the spirit! I also have an Android phone and tablet so compatibility with that platform is guaranteed. I also use chinese food containers for tupperware. Recycle!

Ed: Is my math wrong? It often is. I started with V=IR to figure out the max current the resistor would allow 5V = I x 22000 or 0.23mA. A 1/8W resistor at 5V is 25mA as you say though.

I love this project it is so much fun. That said, the majority of my effort is working on LinkMeter now for its obvious advantages but I'll be trying to keep feature parity where applicable in the HeaterMeter code as well.
 
Originally posted by Bryan Mayland:
Ted, there shouldn't be any programming necessary but you will have to figure out how to lay out all the components in the schematic. The lack of the WiShield puts me off from recommending doing a build though. There isn't a replacement part yet that I've seen.

This is what I was commenting on. I think I'll have to check back over the summer and see what's happening with this. I can follow a recipe ( I built a sound procesor once) but I followed a manual. There's no recipe for this that's simple enough for a newb like me yet.
 
Originally posted by Bryan Mayland:
Now I'm starting to wonder if my HeaterMeter matches up with the Maverick values at higher temperatures. I haven't tried a parallel comparison since back in the breadboard days. I'll do that when I get home tonight because it might not just be your build. I just blindly copied the values from Bob's build. I wonder if they've been off all along?
I tested this this morning by twist-tying all the probes together and put them in a pot of cold water on the stove. HeaterMeter tracks within 2 degrees of the Maverick device all the way up to 212F where they all settled on the same temperature. Looks like the code still works right at least up to there.
 
We are smoking now!!! finally put my heatermeter in an enclosure and was so happy until I shorted out the leads going to the fan and fried the arduino, MOFSET and who knows else, new arduino on the way. some day Ill smoke meat with this thing.
 
I'll say I did something similar to mine. I shorted 12V to something and it made the Arduino reboot. When it came back up, the blower didn't work any more. Turns out my pin 3 was just dead. If I moved the fan to another pin with a PWM, it worked fine. I think I used pin 5.
 
Considering the lack of availability of a WiShield (and the fact that my wife is a week away from her due date - it's our first baby), I'm looking at the money saving "lite" version of the Heatermeter - no button, no LCD, no wireless. I can always add these later if I want them. My question is: how much modification to Bryan's code needs to happen to get it to run with my "lite" version? Anyone willing to post a "lite" version of the code?

Thanks a lot to everyone! This has such incredible support!
 
Thanks, Ed. We cannot wait!

Since I'm new to this whole electronics thing, I downloaded Fritzing and tried to virtually breadboard the "lite" version that I want to make. Would someone mind looking at this below and tell me if it looks correct?

Heatermeter_bb.jpg
 
Thanks so much, Ed! I was more or less concerned with the wiring. I'll get the right resistors based of the scheme posted by Bryan. And I just picked the capacitor from one I found on the Fritzing program. I'll pick up an electorlytic for the real deal.

Not sure what you mean by floating sensor pins, sorry. Unless you are talking about the ambient temp sensor which I'll ground out or go ahead and hook up since it's cheap.

How does the actual fan hookup wiring look? I'm mostly worried about how it looks from digital 3 on.

Lastly, I think the Fritzing model for the probe jacks have 3 pins, but the 2 grounds (chassis and barrel ring) and interconnected on the little circuit board underneath the model. Thanks for the heads up, though. I'll be sure to take care of that.
 
Thanks again, Ed! I just pulled the trigger on the parts. Can't wait to start tinkering with this!

Again, I REALLY appreciate how much everyone has put into this!
 
Originally posted by Ed Pinnell:
Gerry, I am a firm believer in "If it can be broked, it can be fixed."

If you throw it in the trash, I will wait until you leave to dig it out and see if I can revive it, or, if not, use it for parts. My wife accuses me of being a hoarder...I just have a hard time letting go of stuff, that's all...

Let's do a post-mortem on the Arduino and see what we can learn...what exactly fried? The MOSFET should have isolated the Arduino, unless you pulled the 12v through the Arduino, in which case you might have a fried trace on the PC board...not a big deal at all. And MOSFETs are pretty rugged devices...the one we are using is rated 100v and 5.6A...it's hard to imagine it being fried by a 12v power supply, unless it sat there for awhile and couldn't dissipate the heat.

First off, though, if you want to troubleshoot it, what, exactly, fried on the Arduino? I'm looking at the schematic for the Duemilanove and if you got your 12v from the Vin the only thing there to fry is the trace or the blocking diode. We can easily fix that.


Thanks Ed here my opinion after the initial Triage.

I was impatient after I got it all in the box and didn't insulate the leads going to the fan. They shorted out to each other. I saw seeing smoke billowing out of the enclosure I pulled the power. By the time I was able to get the cover off the the enclosure I saw that the Mofset was still smoking and blistered.
I replaced the mofset. It would work fine with a 9V power supply but with the 12V power supply it would turn on for about 20 seconds then the display would blank out. arduino voltage regulator and resettable fuse appear to have overheated.

the ambient temp was reading 166 deg, so I figured I would reload the sketch. I got no communication via the USB. screwing around with a 7805 and uninsulated leads bypassing the arduinos power circuit I think a zapped it again with a full power supply voltage which is closer to 15 than 12. now I have no display and no communication.
Hence the new arduino.

I think I will be modifying the 12V power circuit and installing a fuse for the fan. There is no reason to feed the arduino more than 7-8V unregulated or 5v regulated and it doesn't made sense to me to run all the fan amperage through the PCB circuit. I have room on my main board to put a 7805 and a fuse in the side of the enclosure.





"BTW The trash part really cracked me up."
 

 

Back
Top