Popper Based Coffee Roaster

Probably the most commonly used method for roasting coffee at home is to use a hot air popcorn popper. At its simplest, you simply take an off-the-shelf popcorn popper, switch it on, chuck in green beans and hoik them out when they are roasted. However, that's really too easy to be much fun, so this is how I complicated it.

But first, a digression about electrical appliances...

Them and Us

In america, they only have 110 volts. This seems to translate to lower-heat poppers (though there's no technical reason why it should). In good old blighty, where we have the full 240V (well, other than the pesky continentals downgrading us to 230), insufficient heat in your popper does not seem to be a problem. Indeed, with an unmodified popper I can go straight through first and second crack and be into the charred stage within 3 minutes of switch-on. [As an aside, appliances in general seem lower power in America - kettles and coffee machines are routinely lower power. Even the trusty Rancilio Silvia coffee machine is lower power in its 110V version that the 230V.]

This means that while some american sites might talk about recirculating warm air, and restricting air flow to get the temperature up, with a UK popper on a UK supply, you're more likely to want to slow everything down.

The main mod, therefore, is a way to run the fan and the heater element separately, so you can have the fan flat-out blowing air, but reign back the heater element. There are easy ways to do this (separate the supplies, flick the heater switch on-and-off manually while leaving the fan on), and complex ways. Obviously, I went complex.

I wouldn't actually advocate building this if you just want to roast coffee. If you buy the parts new, it'll probably cost you twice what just buying a domestic coffee roaster would cost (even before adding the cost of buying a PIC programmer, and the time cost of doing it all). Of course, if you want to do it for entertainment, I hope what I've put here is useful.

Poppers

The popper of choice is the Prima PCM001, though it seems to be discontinued. Don't try this with the duck (you'll know it if you see it), and I doubt any of the kid-safe low-voltage ones are up to it either. You need more power on tap for coffee than for popcorn, I think.

In addition to the PCM001, there's a PCM001S and a PCM002. I believe the PCM001S is just a PCM001 with a shiny aluminium sheet wrapped round it. If that's the case, I think it will work just as well as a PCM001. The PCM002 is internally identical to a PCM001, and will work as well. There are minor reasons for favouring an '001, given the choice, but nothing serious. I have a side-by-side comparison if you want the full story. (Incidently, for making popcorn, I prefer the '002). That page also explains an easy way to get past the anti-tamper screws in the poppers.

There's lots of poppers on ebay. At the time of writing, the going rate seems to be 2 or 3 quid, but with postage you'll end up at the 8 to 10 mark. Poppers other than Prima will presumably work, but I've never tried. It's a good idea to have plenty of power (the Primas are 1200W) and some people reckon it essential to have the sort that blow air tangentially in from the sides, rather than up through holes at the bottom. I have no comment - the Primas I've used blow it in tangentially.

Controller Hardware

The controller innards are discussed on another page. Basically, it's a Microchip 16F877A PIC with some external i2c eeprom, a couple of MOSFETs and an SSR controlling the fan and the heater element in a re-wired popper. Both fan and element are controlled by a pulse width modulated signal, the fan at 16.7kHz, the heat at about 1-ish Hz (note that because the SSR is zero switching, if it's driven any faster you don't get very proportional control - even at 1Hz there will only be about 100 steps between off and on, though the controller drives it with 250 steps of control).

Mark 1 didn't have any sensors, so it was simply a case of trial-and-error to develop a programme that gave the desired beam temperatures profiles. The current version (mark 2) has thermocouples to measure the air temperature being fed into the beans, and the temperature in amongst the beans themselves.

The popper is dismantled and rewired so that the motor and heater element can be separately controlled. I kept the switch on the side of the popper in the circuit with the heater element, so I can always cut the heat, regardless of what the controller thinks it is doing. This is also useful because leakage through the SSR tends to let the heater coil warm up a bit even when it's supposedly off, so I can cool slightly faster by physically switching off the coil.

I actually feed switched DC to the motor, but the bridge rectifier is still in place just 'cos it was easier to leave it than take it out. The voltage I supply is higher than it ran on before modification (even with the bridge in place), so it's not a problem (and might even be beneficial for motor life).

The 'before' to accompany this 'after' schematic is on the popper comparison page.

I found a 7-core cable that fitted the popper's existing mains cable strain-relief grommet, so there was no need for any butchery of the popper casing, and it all remains nice and tidy. Mains voltage to the heater element is supplied on cores 1 and 2, with 24V for the fan motor on cores 3 and 4.

Roaster in use


Front and back views.

On the front, the lights at the left show power to the unit, power to the popper heater element below that, and the power of the two fan controls to the right of that. The fans switch at a high enough frequency that their lights just look like they dim or brighten according to fan speed. At the moment, I only have one fan, but the PIC had two PWM modules, so I set up both.

Next across is a press-switch and knob (except it's just a shaft at the moment). This is the mode switch and general input knob. In the mode it's at in the picture turning the knob will change to a different program to run, pressing the switch will set the one currently displayed (number 3, 'Roast 1') running, and pressing the switch and holding it down for more than a second will switch to program mode where you define the steps making up the programs.

Next there's a display to tell you what's going on. It's back-lit under control of the processor, so it can flash to alert the user to important messages.

This is a typical 'running' display. The top line is reporting that the current run was started 1 minute 5 seconds ago, the heater element is at 900 (out of 1000, so 90% power), and the primary fan is at 15 (out of 15). The second line says that this is step number 4, it is named "Roast 2", and that there is 85 seconds remaining in this step. (Steps have up to 8 character names, but if you use all 8, there's only space to report up to 999 seconds remaining, so it uses +++ to indicate 'many'!)

The buttons underneath the display are mainly used in program mode, but in standby mode they jump you forward and back in big steps through the defined programs.

Finally there's a column of indicator lights. They're all under control of the processor, and are mainly used at the moment for debugging. The bottom one toggles every time the internal clock rolls over (once per second), the next one up lights when the unit is transmitting to an attached terminal or PC, the others are currently unused. In future I might think of something more useful for them to do.

On the back there's a red reset switch (resets the processor just like the reset switch on a PC). The main power switch is beside that, and the mains inlet below them. The grey cable supplies power to the popper. The SSR switching the heater element is bolted onto the back panel (aluminium) and the panel is supplemented by an extra heatsink on the outside. I think it's good for about 10 amps like this, which is lots more than the popper needs.

Ready to run (or it would be if I put something in place to catch the chaff). This was the first mark 1, when I monitored temperatures with a thermometer stuck through the lid, but it was never very satisfactory. Mark 2 has internal thermocouples and probes, which is much better. The thermometer is gone and there's a couple of green wires from the roaster to the control unit.

Results - Mark 1

Well, the real results are as shown at the top of the page, which is beans from the first and second runs. However, that's not really geeky enough, so there's a page of temperature graphs for the first half-dozen roasting runs of the mark 1.

This was the sixth trial-and-error roast, and gave me beans pretty much how I wanted - a fairly dark (but not immediately oily) roast.

Results - Mark 2

Mark 2 added thermocouples that could detect bean temperature, so the roasting profile can be programmed in terms of temperatures. I also wrote the software so that you can have ramps and soaks for the temperatures.

This isn't actually a roast, it's the unit running with an empty chamber, but it shows the sort of profile that can be programmed. This graph is generated from commentary data fed from the roaster to an attached PC via a serial port I built in. There's one data point per second (which is also the calculation interval for temperature control).

The program was 10 seconds just running the fan, with zero heat, then a ramp to 150C at 2 minutes, a ramp to 250C at 10 minutes, a one minute soak at 250C then a cool. The lines on the graph are:

At this stage, the unit is simply running with proportional control to the heater element, hence the steady offset between desired and achieved temperature that increases at higher temperatures. However, I'm pleased with how well it works on this graph. I might implement PI or PID in future.

This is the same program, but with beans in the chamber. There's a very slight change in that I limited the heat input to 80% during the first (warm-up) phase. That was mainly to check it did what it was supposed to, rather than for any good bean-roasting reason.

I think it's interesting to note how much more variable the inlet temperature is to maintain a similarly accurate bean temperature in this graph. I assume the fluctuations are to do with pockets of beans at higher or lower than the average temperature moving around in the chamber. That's pure speculation though. Also note that putting beans in means less power to achieve the same temperature - which is the converse of the well known phenomenon that if you want an unmodified popper to run hotter, use a bigger batch of beans.

And finally, this is an actual roast that I'm now using to make coffee with. Basically, compared to my earliest attempts at a roast program above, I've just accelerated the early stages slightly and slowed the later stage quite a bit. First crack is happening around 6 minutes, at the point where it slows everything down, and second crack happens just before the temperature stops ramping. This gives me a dark roast that starts to show oil after about 12 hours. It's a much better roast than that at the top of the page, but I've not got round to photographing the beans...

For a darker or lighter roast I keep the same profile to the 6 minutes / 215C point, then adjust the ramp to get to a different temperature (250C for very dark, 230C for rather lighter) at 10 minutes for the soak.

It's interesting to note the difference between this graph and the one above - in the first two minutes they are both heating 80g of the same beans (from the same 2kg batch of green) to the same temperature profile, running in basically the same ambient conditions, yet the heat input and air inlet temperatures to achieve the same profile are quite different.

I've experimented with slowing it even further - doubling the time for every step, so it gets to 240C at 20 minutes (at which point the beans are as dark as I want, so I took off the soak). I didn't taste much difference between the 12-minute and the 20-minute roast, so I've gone back to 12 just because it's about 8 minutes more convenient.


back to the top roaster page
back to Ian's contents page
back to www.astounding.org.uk top contents page

To comment on anything (please do) email ian@astounding.org.uk