There’s a lot of mysticism around coffee roasting, but in the end it couldn’t be simpler. Take a bunch of beans, heat them up evenly, and stop before they get burned. The rest is details.
And the same goes for coffee roasters. The most primitive roasting technique involves stirring the beans in a pan or wok to keep them from scorching on the bottom. This works great, but it doesn’t scale. Industrial drum roasters heat a rotating drum with ridges on the inside like a cement mixer to keep the beans in constant motion while they pass over a gas fire. Fluidized-bed roasters use a strong stream of heated air to whirl the beans around while roasting them evenly. But the bottom line is that a coffee roaster needs to agitate the beans over a controllable heat source so that they roast as evenly as possible.
My DIY coffee roaster gave up the ghost a few days ago and I immediately ordered the essential replacement part, a hot air popcorn popper, to avert a true crisis: no coffee! While I was rebuilding, I thought I’d take some pictures and share what I know about the subject. So if you’re interested in roasting coffee, making a popcorn popper into a roaster, or even just taking an inside look at a thoroughly value-engineered kitchen machine, read on!
A hot-air popcorn popper is, according to the rough definition above, a fluidized-bed (popcorn) roaster. Indeed, with very minor modification to defeat the temperature-limiting thermostat, a stock popcorn popper makes a good home roaster. And once you’ve made this simple modification, described below, the protocol can be very easy: go outside with the roaster and some green beans and turn it on. Add beans until they just stop swirling around in the bottom, and then pull a few out so that they’re swirling slowly again. Sit back, watch, and smell, but above all, listen.
As the beans heat up past the boiling point of water, they’ll start to turn cinnamony-brown and make a sound like popping popcorn, for exactly the same reason: the steam is cracking the beans open. This stage is called “first crack” in roasting jargon, and depending on how many beans you’ve got, this can be loud. The beans will also start throwing off their skin, the chaff, into the air and the steam will start to smell good rather than just beany. You’ll know when you’ve hit first crack. (You’ll also realize why you’re doing this outdoors.)
Afterwards, there’s a quiet spell as the beans continue to heat up and darken in color as they caramelize. At just about the end of the roast, they’ll start to make a significantly quieter snapping noise, called “second crack”. This is the fiber matrix in the beans breaking down, and you’ll see tiny little round chips flying off the beans, and maybe even start to see some smoke. Around here, the beans have a glossy coating from the oil that’s come out to the surface. I tend to stop just at the first sign of second crack, for espresso, but there are those who like it darker. Turn off the popper and throw the beans into a colander to cool down.
Your first home-roasted coffee experiences will be revolutionary, and the minor details of how dark to roast, how quickly, and even what coffees to blend together pale in comparison with the difference that a fresh roast makes. A friend convinced me to try this out around the end of the last century, and I’ve roasted my own beans ever since. Indeed, I roasted with a $3.99 thrift-store machine for a few years before I finally got the urge to take further control and refine the roast.
From Popper to Roaster
There are only two variables to control with a popcorn popper fluidized bed roaster: agitation and heat input. That means controlling the fan motor and the heater coils, both of which are very amenable to PWM via solid-state relays and beefy MOSFETs, respectively. If you’re going to automate the roast, you’ll also want a temperature probe dipped deep into the swirling mass of beans to use for feedback. As you can see, even going whole-hog isn’t that hard.
The fan motor is a 20-24 V DC motor, and the heater coil is actually two coils run in series that are meant to run off of mains voltage. One of the cleverest bits of value engineering is to use the coils, which are just resistors after all, as a voltage divider before rectifying the AC into DC for the motor.
All poppers I’ve seen have also had a thermostat that turns off the heater coil at a suitable temperature for popping corn, which is sadly just a little bit too cool for roasting coffee. The thermostat will need to be bypassed or removed. The thermostat will be a simple bi-metallic strip, either attached to the heater or the roasting cylinder. In the latter case, just snip the wires and throw the thermostat away. If it’s attached to the heater element, you can defeat the bi-metallic strip by bending it hard enough so that it always makes contact regardless of the temperature.
There is also a thermal fuse that prevents the device from catching the beans on fire in case the motor fails to push air over the hot coils. In my experience, this fuse will blow sometime, so you might as well short it out now with a beefy strip of copper wire. If you choose to defeat the thermal fuse, I think my dirty hack, visible here, is enough explanation. That wire needs to be crimped or simply tightly wrapped. Do not use solder — it gets hot in here. If you don’t want to automate your roaster, you’re done and you can screw it back together.
Note that this means that you’re now responsible for ensuring that the fan is on whenever the heater is on. If you’re installing a temperature probe, as I have, this isn’t a big deal. But if you’re running the popper without feedback, you might want to do it on a fireproof surface under strict supervision — we are defeating a fire safety mechanism after all.
If you do want to automate things, you’ve got some wire cutting and a little desoldering to do. You don’t need the voltage divider if you’re going to control the motor externally, so you can simply cut off one of the three wires that lead to the heater elements. I tend to use just the main coil, which means connecting to the wires just before the thermal fuse and just after the thermostat. Here in Europe, one coil reads 40 ohms while the other reads 10 ohms; use the one with larger resistance.
The motor is soldered to a rectifier board that you can desolder entirely. DC motors tend to be electrically noisy, arcing as the brushes make and break contacts, so I’ll often toss a couple capacitors from the terminals to the motor casing to damp this down. And since I’m going to be controlling the speed with PWM, it’s a good idea to add a freewheeling diode across the terminals.
At this point, you’ve got a pair of wires leading directly to the heater coil, and a pair of wires leading directly to the DC motor. Connect a MOSFET on the low side of the motor and an SSR for the heater. I added in a thermocouple and a (since discontinued) SPI-speaking MAX6675 thermocouple amplifier and reference. You’ll need a thermocouple because the top roast temperature can be in the 250 °C neighborhood, which is too hot for other temperature sensors. From here, the rest of the build is an exercise in microcontrollering.
Physical Build and Creature Comforts
The roaster that I’ve used for nearly a decade is based on a development board that I built for a class in AVR programming that I gave. Why? Because it has four user buttons, some LEDs, and a serial port with a handy pinout. You could use an Arduino or whatever else you like. Buttons are a must for controlling the machine, though. I also connected a potentiometer to an ADC pin that was useful during development. As you’re fine-tuning your roast, you’ll be glad to have as much real-time input as possible.
To make the 24 V DC for the motor, I bought a transformer from the surplus store, whipped up a full-wave rectifier from four diodes and buffered the DC voltage with a very big capacitor (3300 μF) because this DC both runs the motor and is stepped down with a simple LM7805 to the 5 V that the microcontroller needs. I got brownouts and odd resets with less smoothing.
In the pictured embodiment, everything is simply attached to a piece of wood. I re-used the base of the roaster as a support for the motor and heater by just sawing it off and screwing it down. It was easier than building my own bracket to exactly those specifications, but yeah, it could look better. You may also find that the beans fly out as they lose weight. I countered this by extended the roasting chamber with a soup can. I vent the whole shebang out the window with an aluminum dryer exhaust hose, because I like to roast coffee in the winter too.
Data about the roast progress are echoed out the serial line as well as reflected in the LEDs. The microcontroller also responds to simple commands sent in over serial in addition to the buttons. I used this for debugging ages ago, but it also turns out to be trivial to make a serial-to-MQTT bridge out of an ESP8266 module. Now control and logging take place over WiFi — no more standing around in the bathroom with a laptop to log a roast. I guess if I sent the data to “the cloud” this would be a buzzword-compliant IoT roaster, but I’d rather keep my data to myself. As it stands, I load up some beans, put the exhaust out the window, walk over to my laptop and type “roast”. The machine does the rest, and code on the laptop logs and plots the results.
Roast Profiles Are Like Solder Profiles
With full control over the roaster, you can start to really geek out over the finer points of roasting. For instance, my routine ramps up with both motor and heater on full until a measured 120 °C and then holds there by cycling the heater for two minutes. Different beans will have different moisture contents and this gives them a chance to roughly equalize, similar to the pre-soak phase of a reflow oven.
After these two minutes of soak, the beans are brought through first crack at full heat, and then throttled down to a 10 °C / minute ramp until the desired end temperature. With my old popper/roaster, I needed to reduce the air speed (in green) to even achieve such a ramp, but the new popper has a stronger heater and it appears that I will need to PWM the heater in order to not exceed the target rate. Expect variability depending on your popper, but you can’t go too far wrong with the simple soak-and-ramp profile here.
At the end of roast, the heater is shut off, the fan is set on full, and the beans are cooled down. The exact temperature that signals the end of roast determines how dark the coffee is, and is determined through trial and error and depends on your taste anyway. I roast darker or lighter depending on what beans are in the blend, and even whether they’re destined for cappuccino or espresso — the extra bitterness and lower sourness of a darker roast is nice with milk. You’re going to play around with different roasts anyway to get your coffee like you like it, so all you care about here is reproducibility.
The absolute temperature also depends a lot on the location of the thermocouple in the roaster. If it’s fully submerged in the beans, it will read a little bit hotter than the beans’ internal temperature, but it will read differently depending on where it is. You’ll want to supervise a few roasts, noting at what temperature first and second crack occur, and use these as a guide to automating your roast. With my new popper, and corresponding new temperature probe geometry, I’m going to have to re-jigger my temperatures again, which means drinking cup after cup of increasingly delicious coffee. A hacker’s life is hard.
Anyway, that’s my setup and its rationale. With the ESP8266 module, a new $20 roaster, and misc electronic parts, I’d estimate the build cost to be just under $40 for a WiFi connected, logging coffee roaster that can hit almost any roast profile within reason. But as I said earlier, in the past I’ve made do with a $3.99 used popper from the thrift store. The price of admission into the world of coffee roasting is minimal, and the result is more than worth it. And if you can turn it into an overkill weekend project, so much the better! I certainly hope you do.
Drop a line in the comments if you have any questions, or links to your roasters that you want to share with us.