Version 2 of my homebrew controller


 
Originally posted by Ed Pinnell:
David, here's another low-cost DIY wireless option.

Not as cheap as the DCDW but perhaps easier to code.

Do you think we could get consistent resistance readings through a set of brushes running on the shaft to pickup the probe resistance? I'm sure that as the brushes wore, got dirty, and heated up, etc, the resistance would change but with some of the code we have to calibrate the probes, a once a cook calibration wouldn't be horrible. Do you think resistance would stay consistent enough to get valid temps for a single cook? There would also have to be some code added to get rid of data points where the brushes were not making good contact for some reason.
I don't know, I've never tried to measure resistance through a dynamic connection like that.
When I get home I'll unplug my trouble light on the retractable cord and see what happens to the resistance readings as I pull it out and retract it a few times.

Just another idea....
 
Or if you didn't have to go far you could just use an infrared LED and an photodiode, like a remote control sending commands except the commands would be temperatures.
 
Originally posted by Ed Pinnell:
EDIT: OH YEAH! NOW I remember what I wanted to say! The chart on the cook we did the other night...we darn near ran out of fuel,

FYI, I'm running pellet fed rigs, green mountain and soon hopefully Fast Eddy Cookshack with automatic temperature control, long cook times, and easy clean up. I'm really looking to this project for food monitoring. I respect the egg but love my conveniences.
 
Bryan / Ed,

I'm getting ready to re-attempt assembly of my controller (finally). This time I'm going directly to perfboard rather than deal with my flaky breadboard.

Before I begin I just want to confirm that things haven't changed from Bryan's original Eagle design as seen on his blog HERE.

Thanks,

John
 
Originally posted by Ed Pinnell:
The other change is a 0.1uf ceramic decoupling cap across Vcc of the shift reg. Bryan added a 330uf 6.3V electrolytic filter cap across his Vcc rail to prevent a voltage sag that caused his fan to twitch and garbled his LCD display when trying to start at low speed but there are other alternatives.

Bryan spec'd a new thermistor and posted the steinhart coeffs but the datasheet numbers are identical to the P/N you have on your list, so they are interchangeable. I think the new 1/T numbers he gave are better than the ones in his earlier code releases so be sure to change those and re-compile.
The 330uF 6.3V capacitor is probably not needed in a standard Arduino. I had to build my own power supply using an LM7805 for my Dad's project and used a 47uF 6.3V on the 5V line. The Arduino Uno/Duemilenove have 100uF buffering their 5V line which is probably enough. I would definitely suggest the 0.1uF ceramic capacitor as physically close as possible to the 74LC164 power line (pin 14) just to be safe though.

I spec'd out the replacement thermistor but didn't realize there was another one which had the same curve as the radio shack version I used. I'd recommend using the radio shack or the replacement for the radio shack if you can.
 
Hi guys I've got another silly question (thanks for the thoughts on the last one!)

I picked up an LCD from sparkfun - is there a way to attach the wires to this thing without soldering for the purpose of testing it out? I wanted to avoid re-soldering when I actually came up with the placement of everything in a project box. I guess I could just solder and make all the wires really long, but figured it would be better if there was a way to temporarily hookup wires to the LCD.
 
Originally posted by Ed Pinnell:
This project went from an IRF510 (actually, a IRF512) MOSFET at the beginning to an IRL510. The gate voltage (Vgs)on the IRF is +-20V and the Vgs on the IRL is +-10. Either one works. I am using the IRF510 myself with no problems, but the lower relative gate voltage causes the MOSFET to switch more slowly. I might run into problems when I try switching the gate @ 3.3v with the IRF510.
You will probably have a hard time running 3.3V to an IRF510. I'm not sure the gate will turn on fully and if it does you'll probably have a high resistance (Rds(on)). I'm wondering if the 5.6A/43W MOSFET is overkill for this application. I'm going to do some testing tonight using a standard 2N2222A transistor. That might be an easier part to find, cheaper, and smaller footprint to work with.
 
Originally posted by JD Siegrist:
I picked up an LCD from sparkfun - is there a way to attach the wires to this thing without soldering for the purpose of testing it out? I wanted to avoid re-soldering when I actually came up with the placement of everything in a project box. I guess I could just solder and make all the wires really long, but figured it would be better if there was a way to temporarily hookup wires to the LCD.
I asked myself the same question when hooking up my LCD for the test system. Before I built the original HeaterMeter I just soldered long (~4") wires to it then cut them as needed to fit on the box at the end. For my test system I didn't want to mess with it so I just soldered a 16 pin header onto it and was done with it.

You might be able to get away with just resting the LCD in a 16 pin header that you've pressed into the breadboard. I believe the pin holes on the PCB are actually vias (carrying the signal from one side to the other) so they should provide a good enough electrical connection just resting on a pin header. If it wobbles at all you'll have to reboot the Arduino to get it to come back on because the it won't have been initialized properly, but it could be worth a try if you don't want to solder anything temporarily.
 
Originally posted by Ed Pinnell:
If it weren't for the 12VDC needed for the blower motor, this whole project could be run off 3.3v (3xAA batteries) for portability.
Haha yeah I was thinking that earlier today. With the Arduino, LCD, MOSFET, ambient sensor, I measured 60mA before the the LM7805 which is probably only about 75% efficient at that low output. You could probably run the whole thing on 2xAA batteries with a boost converter for a few days if it weren't for the fan requirements.
 
Turns out of the whole giant "grab bag" of transistors I have, not a single one is a 2N2222 so I wasn't about to test it out. I did have a ton of completely unlabeled transistors so I figured what the **** and tried a few out. What I did see is that where an IRL510 pulls 0.2mA at the gate to run the fan at maximum, and an IRF510 pulls 0.5mA for the same scenario, these generic NPN transistors would pull about 4.1mA. This would drop the voltage to the point that the gate would shut off. The fan output at max was 150mA or a hfe around 36. So whatever those were, they're not a good enough replacement!

In other news I modified the startup code so the LCD initializes a second faster. Even if there's no data to display for the first second, it looks nicer to see something immediately. Also I don't know if you've noticed that if you insert/remove a probe while the HeaterMeter is running, the next temperature measurement is wrong due to the averaging. I've fixed that too so it discards the whole period.
 
First of all let me compliment you on two things. Everything you build comes out looking so professional. Now I can see it isn't just limited to your electronics builds, you're a professional pizza maker too! Mine usually come out... not quite as round and evenly browned as that. Excellent work.

Actually I had at one point considered using an adjustable voltage regulator but when I saw it could only be controlled by a resistor I assumed a digital pot would be too expensive. Here's one at mouser 2 channel, 1.2V-5V controllable, 256 tap, volatile wiper for under a dollar. Making a define to use this versus the standard PWM is actually childsplay. I already use the shiftOut function so basically we'd replace the analogWrite(PIN_FAN, x); with <pre class="ip-ubbcode-code-pre">digitalWrite(PIN_FAN, LOW);
shiftOut(0, SPI_DATA, MSB_FIRST); // set channel
shiftOut(x, SPI_DATA, MSB_FIRST);
digitalWrite(PIN_FAN, HIGH);</pre>

That is pseudocode because I can't remember the prototype for shift out, but that's the actual line count right there.

I've got lighttpd, rrdtool, gnuplot and all installed on my router and have been playing with various logging methods. The computation time of generating a graph with one point for every 10 seconds of a 14 hour cool takes a realllllly long time on a 264MHz Broadcom. I've experimented with decimating the log file down to 425 points (one every 2 minutes) and the graph is remarkably indistinguishable
Original
425 point, DD-WRT generated

Aside from the line sizes and some margins, I think the second looks close enough considering it was generated in 5.75 seconds versus 70 seconds. What I'd ideally like to do is use rrdtool to store the last 600 seconds of data then quantize into average buckets for 10s, 30s, 1min, 2min. If everything went my way you could build the graph on the client using a javascript or flash chart that would pull the appropriate dataset for what you want to see: 10m, 1.6h, 5h, 10h, or 20h. I'd love to use the gnuplot but I think 6s is too long if you want it to update every 30s and there would still be the issue of getting the data from the rrd into gnuplot.

Well that's where I am right now, just thought I'd keep you up on what I'm working on too. But yeah I think the LM317 with a digital pot would work but because it is a linear regulator (right?) it might get hot if you're trying to run a fan at low speed. 12V in down to say 5V out, pulling up to 100mA would mean it would have to dissipate 700mW into heat.

EDIT: Also the dropout voltage of a TO-220 500mA LM317 is about 1.8V at 25C and 100mA so that means you'll only be getting about a maximum of 9.5V after the regulator and reverse-voltage protection diode.
 
Originally posted by Ed Pinnell:
Ok, Bryan, I think I have a very interesting idea for controlling the brushless DC motor. I thought I'd toss it into the air and see if you (or anyone else) can shoot holes in it before I proceed.

So we tie that to the center leg of an LM317 adjustable voltage regulator and, with the proper biasing resistors, we can vary the voltage from 1.2v up to 12v to the blower using SPI. The LM317 is good for 1.5A and cheap.
many of the newer pc fans/blowers have control circuitry built-in. variable voltage, pwm or signal from a thermistor applied to the input lead will vary the fan speed.

http://www.nmbtc.com/dc-fans/e...g/speed-control.html
 
Yeah I would have preferred to use a 4 wire blower that is controlled via PWM but I couldn't find one with the right specs. Most are fan-style which may not work as well pushing against the high static pressure of a mostly-sealed grill.

If you're interested in looking for even *more* options, Ed, you may want to look at a buck converter. I considered it but because the Arduino PWM is about 500Hz, the inductor and capacitor needed to regulate the voltage are just huge. If you could find some circuit to multiply the PWM frequency on the order of 50x or so, it would be viable.
 
interesting find... i have a NMB blower i picked up at goodwill a while back. took a look at the board where the wires connect and noticed a 4th pad. hmm... soldered a wire to the pad and connected it to a pot (0-5v) and sure enough it varied the output! bad thing is that 0V doesn't shutdown the fan =/ i might try hooking it up to a variable power supply to see how much things change at lower voltages.

ed,
have you considered the ULN2003? Link it will handle a 3V gate input and lots of current. its cheap and VERY easy to work with.
-sj
 
Lookin' good, Ed. I'll tell ya, I do not understand transistors at all beyond the basic idea that they amplify stuff. When I read things that say that the NP junction becomes reverse-biased as the Base becomes more negative with respect to the Emitter as long as the emitter is common to the something something, I just have a stack overflow.

Have you worked out what sort of equipment you're going to have in your remote thermometers yet?

All I bring to the table today is this graph the Dome vs 2 Points on the Grill. I don't know where my egg is getting all the air it needs to run the fire, my fan barely runs at all.
 
Ah yeah that's what I was asking. I knew you were going to do the RFM12B but wasn't sure what sort of microcontrolling/powering you were going to do on the remote end. FYI, I've changed the serial output of the HeaterMeter code to also output the average temperature for each probe as well, because the JSON on the web server needed it. I might consider adding the date/time to the JSON as well. I've got the setting of the SetPoint working through the web -> serial -> heatermeter as well as the probe names but that still needs a little bit of extra code. I've also had the HTML cleaned up to use jQuery to be a little cleaner.

The graph was generated on the router but it takes like 10 seconds to generate from a log file and the log file has to be reset manually. I still am really optimistic about being able to use the RRD as the datasource or pushing the dataset to the client. Let's just say there are still a lot of options I am playing with. What's great is lighttpd with a little CGI, that works like a charm.
 
I've published an updated version of the HeaterMeter main web page. This adds the ability to adjust the setpoint and probe names by clicking on them. Also it adds the last successful update time which appears in red if the last call failed. It is also smaller, pulling its libraries from the google jQuery CDN and the edit controls from my web site. I'm not entirely pleased about that last one so I might add the parts needed directly into the html at some point.

Get it here if you want to update your dataflash:
http://capnbry.net/~bmayland/fi/bbq/mockup.html
 
So i'm a new WSM owner, and i've done a few cooks, and i really like it, but i'd like to not have to worry about it, and be ready to leave for an extended period of time, or over night, without having to worry.. so i'm interested in some sort of temperature control.

As a tinkerer and programmer, this homebrew controller looks interesting to me.. I tried to read through this forum, but i'm trying to understand what is the state of the project? What are the features? parts list? etc?

i'd rather not go spend a bunch of money on something like a stoker or bbq guru, i'd rather work on it myself.

i have some basic soldering experience, but not a ton, and not a ton reading schematics... so is this project too "complicated" for me? or??

I am not quite ready to get started on this.. i have to convince my wife to let me spend another $200 or whatever it is on the next part of my toy...

but i'd like to get an understanding of what it would take.
 
No problem at all.. It just took me a while to digest all of the topics going on in the one thread.

So i found the parts list:
https://spreadsheets.google.co...=en&authkey=CPmSiPQF

and the schematic that goes with it:
http://www.vtfood.com/bbq/hm_diagram.png

and i also read through
http://capnbry.net/blog/

and i think i have a much better understanding on how this thing works.

I get how the push buttons work using the different resisters via the analog input.

(just to make sure i understand all VCC connect to the 5V? i thought i read somewhere that some people where using a dedicated voltage regulator that isn't in the list or the drawings? is this a good idea? required?)

Also, all the GND's connect to either GND1 or GND2 on the arduino? (what about if i wire in a standalone voltage regulator?)

then i was looking at the diagram for the blower, and it started to make sense after i read the product sheet for the transitor to control the 12v via digital output pin.. (does it matter what GND i need to connect this to?) (Also, where can i pull the 12v+ from? Do i pull it from the VIN pin? but isn't that a lot through the board? so do i need to pull it from the input jack on the board? (if so which pad is it)).

the kinda understand the need for the diode there (because the fan will want voltage to continue even though you stop applying voltage)....

I also sort of understood the fact that the fan really just expects a variable voltage, and not PWM.. so your using the charging/discharging of the capacity to smooth the voltage line out.

I read and some people where going to try PWM controllable fans? did this ever go anywhere? or is the original approach still the current approach?

Also, since i have a 22inch weber smokey mountain instead of a little egg, i was thinking i need something with more airflow..

the one in the spreadsheet is:
Static Pressure 0.428 in H2O (106.6 Pa)
Air Flow 6.7 CFM (0.190m³/min)
Power (Watts) 2.16W
Current Rating 180mA
Voltage Range 5.0 ~ 13.8VDC

the rest of the sites that recommend a blower say things in the 10CFM range.. so i was thinking that i might need to go to something like digikey part P13440-ND


Static Pressure 0.614 in H2O (153.0 Pa)
Air Flow 9.5 CFM (0.269m³/min)
Power (Watts) 3.00W
Current Rating 250mA
Voltage Range 6.0 ~ 13.8VDC

one thing i wasn't sure about is the digikey page said it was 3 wire... but shouldn't all i need is power in and out?

but the spec sheet doesn't say anything?

http://www.eminebea.com/conten...MP00124/I/bg0702.pdf

but if i change the blower to something like this.. my guess is that i'll have to play with different capacitors to figure out what works best to smooth the voltage out? any suggestions if thats the route i take? or do you think the existing fan is good enough?

i think i understand the part of the drawing with the 8bit shift IC and the LCD panel, when i looked at the spec sheet of the IC, and i look at both the logic symbol and the pin out diagram, i think i can just translate the drawing from the logical to the physical pin out?

i couldn't find a pin out that explains the LCD (will i solder to it? or is the what the JP1 Pin -LCD Pin explains? is the JP1 just a logical diagram of the pins? and the real connectiosn are the LCD pin that matches it? what about JP1Pin 10 that say 1/16 (GND) is that 1 connection or two? (is that a pin or do i connect it to both pin 1 and pin 16 of the lcd)

Thanks in advance.
 
Cole:
VCC Everywhere goes to the 5V pin on the Arduino Uno/Duemilanove. There is no need to use a dedicated voltage regulator if you use one of these two boards. The regulator on those boards is good up to 500mA I believe. I had to add a second regulator in one of my projects because I used SparkFun's Arduino Pro which only supports 150mA and is not enough to run all the components.

GND Goes to either GND1 or GND2. I don't know why they have 2 pins for it especially considering if you look at the PCB they are directly connected so it isn't like they come from two different places. The blower transistor ground connection (from the Emitter pin) goes right to here too, or to any other "ground bus" you lay on your breadboard. It doesn't really matter in this case.

12V for the blower you can either pull from Vin on the Arduino (which doesn't seem to be a problem pulling 200mA through the board) or connect it directly to the pin on the DC barrel jack (the pad that comes out the back I believe). The advantage of using Vin is that it has a diode on it to prevent it from being hooked up backwards, but the disadvantage is it is only 11.3V there. I went to Vin but it doesn't make too much difference either way.

I don't think we ever found a PWM controllable blower of the right size so it never went anywhere.

Blower size is up to you, but I'll say that with my 6.7CFM fan only getting 11.3V, the only time the fan is running more than 20% continuously is on startup or if the fire has run out of fuel and is going out. In that case, even a 100CFM fan wouldn't solve the problem. If you do get a bigger fan you may want to use a 47uF capacitor instead. If you're buying parts might as well get both caps and see which one has an acceptable amount of fan control vs noise.

The shift register schematic vs physical pin out are completely different, just the way it is. The schematic also doesn't show the ground connection (pin 7) and the +5V connection (pin 14). There also should be a 0.1uF ceramic or mlc capacitor between these pins that is not on my schematic.

JP1 goes to the LCD but if you want you can just wire it directly from the components to the LCD. The pins on JP1 are chosen arbitrarily just as a way to label what goes to what. The right side is which pin on the LCD to connect to. I soldered them right to the pads there. 1 and 16 both go to ground but you only need one wire going to the LCD. Just run a wire to 1 then a wire from 1 to 16. Pin 5 (R/W) also needs to be grounded but that was omitted on the schematic by mistake.
 

 

Back
Top