Instructables

A fully automatic coffee bean roaster (Arduino)

FeaturedContest Winner
I got introduced into the world of Arduino when two friends informed me about this little device independently from each other. I read about it and was sold immediately. What if I had this so many years ago, how much would I have invented already, what would I have made? What would my house have looked like?

I ordered one directly and there I was playing with lights, sensors, etc. But then? ..... it has the potential to control everything, but what? What should I make?

I think this is where more people get stuck. What should I do with it?

Coincidently I just finished constructing a coffee roaster, made from an ordinary popcorn machine. In basic it works by a fan blowing air past a heating element through the green coffee beans. By controlling the fan speed, I was able to control the temperature of the air roasting the beans. But, the roasting process turned out to be quite hands on, as the temperature needed to be kept constant following a profile, which was done by measuring the temperature the whole time and adjusting the fan speed with a pot meter.

That, I thought, should be automated....


Step 1: Materials used

Picture of Materials used
For this project I used:

-1x  Arduino Duemilanove
-1x  Arduino protoshield v2 (sparkfun) with breadboard
-1x 12x2 LCD screen (use a parallel one, would recommend a serial LCD)

-1x  electric popcorn machine
-4x  1KOhm resistors
-1x  small push button
-2x  1KOhm potmeter variable resistor
-1x  IRF540N
-1x  temperature sensor ZTK 33 V/7 mA
-1x  solid state relais S216S02 (sharp)

-19V adapter (used the one of my laptop)
-plugs, wires, etc


 
Remove these adsRemove these ads by Signing Up
ben clarke7 months ago

Why did you run the fan off of 19 volts not 240 from the wall?

robzimpulse8 months ago
what program do you used in step 5 to make some pid graph? I'm in progress to make some incubator and need to plot the response. Roby
nightlife31 (author)  robzimpulse8 months ago
Hi Roby,
That is the PID Front-End that was developed by the guy that made the PID library. It is written in processing and works very nicely. You should be able to find it here: http://playground.arduino.cc/Code/PIDLibrary

regards,
rutger

p.s. let me know if you document your works somewhere, Ill be interested to have a look :)
dkelly19664 years ago

A microphone could not only tell if the beans were moving but could also tell when they crack :)

nightlife31 (author)  dkelly19664 years ago
Nice idea. But the fan would make too much noice to hear the difference between moving and non-moving beans. I thought about an infrared sensor to measure bean movement, but you would be blowing hot air against the sensor and I dont think that will be succesfull either
Piezoelectric sensor will be enough to pick up cracks and bean movements.
Just JB Weld it to the outer cup,or to the case of popcorn popper.
It is used to detect knocks on some security systems(such as window break sensor),and it's fairly cheap(on RadioShack,search for piezoelectric speaker,and buy some of them and pry open the case. You can reverse it to make speaker,or the contact microphone.).
Hope this helps.

"tilas75" said this first,but it was too short to give some solutions.
ah just read lower comment about max temp not being achieved with fan on full. Makes sense. Guess other approach could be set fan at speed that would allow adequate top temp and then adjust heat source.
would a better way to do this be to always run the fan at full and use PWM + solid state relay to adjust power input to the heating element? Seems to me like this would offer more direct temperature control and could overcome minimum fan speed problem.
If the beans lift up a bit, you could set up what is known as a 'reed switch'. Two thin strips of metal, say Stainless steel, 1/16th apart. As the beans lift up they close the switch. That would make the logic easy. Or even bump it over and over, as long as it is closing and opening the controller would know that they were moving.

To add function, mount it on a threaded rod so you can tune the level easily.

This is the method used in polyethylene plants to measure the level in holding tanks. Poly is made as small pellets, shaped like a coffee bean but smaller. Of course they don't move around, just fill or drain.
varocketry3 years ago
Nightlife - noticed you temperature were in Celsuius so your 300dC resistor would be able to measure 572dF - plenty!

Again, great job.
varocketry3 years ago
Some coffees require temperatures of 420-440 deg F for a successful second crack. The temperature sensor needs to read at least 450 deg or 500 degrees.

Is there a recommended substitute that will read this higher temperature?
Thanks. I'm definitely going to study this -- I haven;t even experience with Arduino.
Adam Manick3 years ago
Maybe use a sensitive vibration detector. you can even make one.
tilas754 years ago
How about a piezoelectric sensor?
a_pyles4 years ago
How does the temperature sensor work? 
Where do you put the probe?
Whats the maximum temperature that this sensor can read?

I was thinking of building something similar. But using the 
max6675 thermocouple amplifier. Is there any advantage to your approach over the max 6675? The 6675 is about $12.00 ( from sparkfun.) 
nightlife31 (author)  a_pyles4 years ago
Hi,
Sorry for the late reply. The temperature sensor is a T sensitive resistor which can measure up to 300C if I am not mistaken. I got it from a local electronics supplier and choose this one as it was the only one this width measuring range. The sensor is located in the metal tin inwhich the popcorn or beans are roasted, just above the air sleaves.
Recently I have been unsatisfied with the temp readings. When I roast beans and measure the temp externally during the process with the thermometer I also used to calibrate the sensor, I get a deviation of about 10C, which is way too much. Therefore I am now also considering a thermocouple and already got myself the MAX6675. The pins on this chip are however soo short that you need a small breakboard to attach it to and extend its pins (also orderable from sparkfun I think). I dont have any experience with thermocouples, but as they are used widely in industry, I assume they are more reliable to the thermistor I now use. Due to limited time at this moment, I am not sure when I will start with it.
Let me know what your progress is

Regards, Rutger
According to the datasheet for the temperature sensor, it can only work up to 150 C.

A T/C will be a lot better.

Steve
rnr4 years ago
Hi
I am 3/4 of the way through building your system.
Do you have an alternative for the sharp relay as it is proving difficult to source in Australia and there are some issues about importing them into the country due to local sharp licensing issues.
Thanks

nightlife31 (author)  rnr4 years ago
Hi,
It isn't important which brand of relay you use. I prefer to use a solid state one , but see no reason why anormal one wouldn't work. The most important is that it is able to switch the high current of the coil. You can calculate the amperage you need. You can find many types on ebay, although some are quite bulky.

Recently I made some modifications to the roaster, but I have been to busy to finish it and put them online. In the program currently in this instructable I start the roasting by directly turning on the heat control. Because the T is below the setpoint of 150C, the fan speed is automatically turned low and you need to fiddle with the min fax speed settings to keep the beans moving. I adjusted this by heating up the beans till 150C degrees while having the fan at max speed. This works without a problem, it just takes some seconds longer to reach 150C, but the whole min fan speed issue is solved. The reason for this is that once the beans reach 150, a lot of water has evaporated and their density is much lower.

I still want to change the temp sensor for a thermocouple, as I am in doubt about the accuracy of the one I use now.

Hope this is of any help to you. I would be very interested in the final result, so keep it posted.
Rutger
Maybe a webcam, and some optical recognition software.  That sounds really complicated, but probably the best bet.
gmuller4 years ago
Why did you elect to modify the fan speed and not the temperature in your design? I would think you would control the temperature up and down rather than the fan, that way you can leave the fan running at a constant speed (and cool the beans afterwards), and adjust the heat as needed...
nightlife31 (author)  gmuller4 years ago
Hi, need to correct my previous remark. I have been working on this for a while and forget that I actually thought of controlling the heat in the beginning. Problem is that my popcorn machine isn't able to reach high enough temperature with the fan at max speed and that is why the fan speed was controlled and not the heating coil.

It would be possible to solve the minimal fan speed settings when combining both heating and fan speed control, as the coil is able to heat the beans enough for the water to evaporate and them to get lighter. So first controlling the heat with the coil untill the temperature cannot get higher and then switch to fanspeed control. Although this only requires software changes, it is a bit more complicated. I'll think about it :)
Is this just because the popcorn roaster speed is "regulated" by a temp sensor? I built a roaster from a convection oven and had to disable this temperature governor by disabling this sensor. Of course you run into the safety issue of not having ANY temp control other than your arduino, but s long as you're being reasonable with it, I don't suppose you could damage anything.

Anyway, I'd be curious to see this done...I'd like to mod mine to do something similar...
nightlife31 (author)  gmuller4 years ago
The popcorn machine isn't really high quality. I wasn't even able to make popcorn with is. I bypassed the build-in bimetal temp control (which switches the heating coil on and off), but still the temperature could not reach high enough with the fan at max.

I surely wouldn't leave it running unattended, but with some common sense you will not burn down the house.
nightlife31 (author)  gmuller4 years ago
Good point, as I come to think of it.
Since I came from an already working system (see the other instructable), this was the more logical way to go for me. But your solution would solve the minimal fan speed problem.

Controlling the heating coil with the Arduino would be easiest to connect the solid state relais with a PWM port. I am not sure if the solid state relais and the heating coil (1200W) could handly very frequent on/off switching. (My electronic knowledge is rather limited).
Good application but this technology is making consumers lazy and more lazy.
I disagree. If that were true 4000 years ago we'd be saying the same thing about domesticating plants. Access to leisure time is what creates the technological insights that we've enjoyed since the dawn of civilization.
nightlife31 (author)  naumanalikhan014 years ago
Why would that be? Instead of making yourself lazy Senseo coffee substitute or buying overhyped starbucks coffee, with this (and a good coffee machine and grinder) you can discover what coffee is about and develop your own taste.
WyoJustin4 years ago
What a project. What a feat.  What an instructable!

Wowed.
Justin
Bartboy4 years ago
I'm too lazy to read all of this... :P
Does/how hard would it be to make it do this every morning at 7, make the coffee, pour it, and add cream?
You wouldn't want to do this every morning.  After roasting, the beans need to rest for a few hours.  Usually, I wait 4-6 hours, or over night.  I've got a different home-brewed roaster setup, which does about a pound of coffee.  I use a stopwatch and listen to the popping and crackling, and sort of guess at when they are done enough.
But could this be set up so it roasts the beans, Grinds them, and makes the coffee overnight?
Might be a start, but you should probably read up some on the roasting process.  Just how lazy are you anyway?  I roast at around 428 F, wouldn't leave it unattended, something goes wrong, potential fire hazard.  Green coffee comes with a thin membrane on each bean, which splits, and blows off.  It's best to roast outdoors, didn't mention the smoke and steam, or strong aroma.  Roast enough to last a week or two, grind before you brew.
nightlife31 (author)  HarveyH444 years ago
You can find some info on the roasting process with links on my other instructable. This one is just about making the manual coffee roaster in an automated one, that is able to follow a temperature profile instead of just up to x degrees.
joren4 years ago
 Great (proof of) concept!  I would be curious how you think you could scale it up to do batches in the 1+ KG range, which would be much more practical? 
kelseymh4 years ago
COFFEE!!!  What a most excellent application, and well written, too.