Anyway, the ignitor must change resistance or do something magic in the presence of a flame, because as soon as it ignites, the sparking stops. There is no thermocouple or flame sensor and to be honest I don't know what happens if it doesn't light because it always lights instantly unless I forgot to turn on the gas valve. I might be missing a flame sensor, but there is no jack for it on the valve or module so I'd have no idea where it goes. The ignitor itself may be the flame sensor.
The spark source is also the sensor. It uses a technique called flame rectification. The flame is actually conductive, but acts like a diode. With a small alternating current placed across the 'circuit', you can sense when the flame makes the connection.
I had a boiler converted to spark ignition a few years back and did a bunch of silly research...
I've been looking at using an Arduino for tons of automation tasks. I'm hoping to build a controller out of one for when I jump to all-grain, and another to control under-construction fermentation chambers and kegerator.
Temperature probe readings with the LM34 is trivial - it reads 10mV per degree F. So a reading of 800mV would equal 80 degrees F. Of course, there's a theoretical maximum for a temperature reading we might be interested in, so we can stick an op-amp between the sensor and the ADC pin on the Arduino to act as a voltage multiplier and up our effective resolution. Sample a bunch in the code and average the results to help tamp down noise. The sensor is accurate from the factory to about a degree - you can calibrate this with an adjustment factor in software.
I've not actually used an Arduino, but I've spent a good amount of time investigating it over the past week, and I'm impressed. I've an BS in EE (computer hardware specialization), and I was originally planning on building custom PIC based systems, but the Arduino is so easy, has so much useful stuff already hung off the processor, and has GNU tools available, that it seems a no-brainer to use the Arduino. Otherwise, I'd be designing entirely custom hardware and writing most of my code in assembly. I'd rather use C, thanks. Assembly is fun, and we did a ton of fancy stuff in our senior design project (many moons ago) on a PIC in assembly, but C is just faster to develop in.
Didn't slnies (damn if I can get the name right!) post up the code for a temp controller for the Arduino?
I almost went with the Arduino - but unfortunately there aren't any temperature tables out in the open that I found, and I didn't want to have to spend lots of money and time trying to figure out the temp probe values. I went with a PID from Auberins, but someday I'd like to automate my brew system even more.
-keith
I posted the code for this over on BrewCommune.com but I can email it to you or post it here if you like. But like Fooshino pointed out, reading the LM34 is the easiest part, you don't need a temp table. This is all it takes to read 6 temperatures, convert them to *F and store them as a variable to compare against or record.
Code:
for ( i = 0; i < 6; i++) { // Read all sensors
tempReading [i] = (analogRead(sensorPin [i]) * LM34); // Reads each analog pin, converts the reading to *F and stores it in the TempReading array
}
LM34 is defined as 0.48828125 and the variables are declared earlier.
When I first started this, I was going to use thermistors (Super cheap). I even created a table and formula to read the thermistors I bought (surplus, no spec sheets) I glued the thermistor to a DS18B20 (like a LM34 but digital and one really cool chip) put them in an oven and logged data up and down with temperature swings in the oven. Once I discovered the LM34, I bailed out on that idea. LM34's are only $2.50 each and can be read and converted to *F in one line of code.
Using the rotary encoder was the trickiest part.
BTW: The last code I'd written was in a PASCAL class about 20 years ago. That's one of the things that's so cool about the Arduino. There is so much support that if you just understand the basic concept of a computer program you can code for this thing (Which is also explained on the Arduino site!) If you are serious about having always wanted to build something like this, spend the $25-35 on an Arduino or a clone and just try it. It's remarkably easy and that desire to do it will get you through it.
The spark source is also the sensor. It uses a technique called flame rectification. The flame is actually conductive, but acts like a diode. With a small alternating current placed across the 'circuit', you can sense when the flame makes the connection.
I had a boiler converted to spark ignition a few years back and did a bunch of silly research...
BTW, cool Arduino setup!
Ah ha! I knew it was magic! That makes perfect sense and is good to hear because I need a second ignitor and looks like I could just make one.
LM34's are only $2.50 each and can be read and converted to *F in one line of code.
BTW, if somebody wants accurate Celsius readings, get an LM35 instead. Same principle, with the voltages calibrated to C instead of F.
Quote:
Originally Posted by Derrin
Using the rotary encoder was the trickiest part.
So that's what that is. I assumed it was a manual setting for your boil kettle; my thought was to read a potentiometer setting and turn around and put that back out on a PWM port, unless the volume sensor on the kettle dictates an emergency shutoff to avoid burning out the heating element. Without a direct human-in-the-loop, it's unclear to me how to maintain a boil while simultaneously avoiding a boilover. Did you automate your boil kettle?
I think my plan will use a computer connected via USB (running a Java app, similar to Yuri Rage) as the I/O component. I could conceivably have realtime data logging, temperature charts, and other stuff I absolutely don't need but would be really cool. The Arduino would then be relegated to actually maintaining the hardware status such that the temperatures requested by the PC are maintained and that I don't do anything stupid like turn on a heating element that isn't submerged, or if I do a RIMS setup fire up the heater while the pump is off.
If I wanted to get really crazy, I could use electric solenoids to control water/wort flow, and not have to worry about manually reconfiguring the plumbing when switching operating modes.
Anyway, thanks for sharing. I love to see this stuff, and how other people attack these challenges. Gives me lots of good ideas. And if not for this board, I never would have discovered the Arduino and all of the inherent awesomeness (which I could bring to bear on other non-brewing projects).
Derrin, I just saw a few threads of yours on another forum (not a member there) about some of the problems you were having with the LM34 and noise. How did you eventually solve this? How far away are your sensors from your Arduino?
Derrin, I just saw a few threads of yours on another forum (not a member there) about some of the problems you were having with the LM34 and noise. How did you eventually solve this? How far away are your sensors from your Arduino?
On the breadboard they worked flawlessly, once at the end of a 6'ish shielded cable they were useless. After turning to the spec sheet I should have read initially, I added a 1uF cap and 82ohm resistor in series from signal to ground which stabalized the output perfectly.
I don't control the boil. It's not interfaced with the stand yet as I just finished welding that up, but I only intend to control HLT temp and MLT temp with it, the other 4 temp sensors are just monitoring. I plan to store temp data in the EEPROM, although there is extrmeley limited space there, the ascii codes fit in the range of temps we use, so I can store temps as single bytes.
On the breadboard they worked flawlessly, once at the end of a 6'ish shielded cable they were useless. After turning to the spec sheet I should have read initially, I added a 1uF cap and 82ohm resistor in series from signal to ground which stabalized the output perfectly.
That's what I figured. Thanks.
Quote:
Originally Posted by Derrin
I don't control the boil. It's not interfaced with the stand yet as I just finished welding that up, but I only intend to control HLT temp and MLT temp with it, the other 4 temp sensors are just monitoring.
Yeah - I can't seem to envision a control scheme for the kettle that would work. I'm probably going to leave control manual, but allow the Arduino to keep me from doing something really stupid (like expose the electric element to air).
Quote:
Originally Posted by Derrin
I plan to store temp data in the EEPROM, although there is extrmeley limited space there, the ascii codes fit in the range of temps we use, so I can store temps as single bytes.
As I mentioned, my plan for the brewing setup involves an attached PC, so I'll probably dump data there via USB as it is collected, and let the PC app handle logging.
However, my fermentation controller probably won't be connected to a PC all the time. I also don't think I'm going to splash out for an ethernet shield (I could tweak temperature setpoints over the web - that'd be pretty cool - but little else, and that doesn't seem worth it). I'll have to see once I get a prototype built how much stuff I can keep in a logfile in memory before I run out of space. I figure I can offload that log file when I want it by hooking a laptop up to the controller via USB and having a little Java app that grabs the logfile off of the Arduino's memory. If I can't store enough to be useful, I might have to see about adding an off-board RAM chip or something along those lines to my custom shield. I haven't done any memory calculations about how much I can keep of a certain variable size and a certain sample rate yet. Just kinda spitballing.
If I can't store enough to be useful, I might have to see about adding an off-board RAM chip or something along those lines to my custom shield. I haven't done any memory calculations about how much I can keep of a certain variable size and a certain sample rate yet. Just kinda spitballing.
I'd like to save to a SD Ram card. There are a few threads on the Arduino forum for doing this, but I'm out of pins. I might build a new shield and take advantage of a couple multiplexers to free up pins and also get a serial LCD which would free up more than enough pins to implement an SD ram reader/writer. Of course, being attached to a PC solves all that, but I'm still pushing for stand alone.
I'd like to save to a SD Ram card. There are a few threads on the Arduino forum for doing this, but I'm out of pins. I might build a new shield and take advantage of a couple multiplexers to free up pins and also get a serial LCD which would free up more than enough pins to implement an SD ram reader/writer.
Good call. I'm looking at similar pin limitations in my proposed design. If you do work out an SD card setup, I wouldn't mind seeing how you accomplished it.