Coffee Roasting Drum Lab (3D)

A rotating roasting drum with burner, airflow, bean probe and rate-of-rise gauge: watch beans dry, brown, crack and develop.

Switch to 2D

Presets

Playback

Roaster

Beans and room

Time

Camera

Layers

Quality

Model check

The science

What is modelled

A batch of green coffee beans is charged into a hot rotating drum. The page integrates one lumped bean (temperature, water content, browning extent) together with the drum gas, which is heated by the burner and cooled by the beans and the exhaust air. The bean colour, the gauges, the steam and smoke, the flames and the first-crack pops all follow these numbers. Beans are drawn about 3 times larger than real ones so that a small charge still fills the view.

Equations

  • Bean energy balance: m cp dTb/dt = h A (Tg − Tb) − Lv mdry |dW/dt| + mdry ΔH(a) da/dt, with cp = cdry + cwater W per kg of dry matter.
  • Effective heat-transfer coefficient (bed convection plus contact with the drum): h = 8 + 0.09 · airflow% + 0.08 · rpm W/m2/K, an empirical illustration; area A = 4 π r2 of a sphere of the same mass (ρ = 1150 kg/m3).
  • Lumped-capacity validity: Biot number Bi = h r / (3 k) must stay well below 0.1 (k about 0.25 W/m/K); the page prints its value.
  • Moisture loss: dW/dt = −k100 exp(0.045 (Tb − 100)) (W − Weq) with latent heat 2.5 MJ/kg (evaporation plus desorption).
  • Browning (Maillard and pyrolysis) extent a in [0, 1]: da/dt = (1 − a) kp exp[−(Ea/R)(1/T − 1/Tref)], Ea = 100 kJ/mol, Tref = 190 C. First crack is declared at a = 0.38, second crack at a = 0.85. Pyrolysis is endothermic (−120 kJ/kg dry) before first crack and exothermic (+260 kJ/kg dry) after it, switched smoothly.
  • Drum gas and hardware: Cg dTg/dt = Pburner − (G0 + Gair airflow)(Tg − Tamb) − N h A (Tg − Tb), N = number of beans in the charge.
  • Rate of rise (ROR): slope of the bean temperature over the last 30 s, in C per minute. Development time ratio: (t − tFC) / t.

Checks run in the page

  • Heating in 220 C gas with evaporation and reaction switched off: the RK4 result equals the exact exponential Tg + (T0 − Tg) exp(−t/τ), τ = m cp/(h A).
  • Isothermal browning at 200 C: step integration equals 1 − exp(−k t).
  • Energy closure over 12 minutes: burner energy = exhaust and wall losses + gas heating + heat delivered to the beans, and the heat delivered to the beans = sensible + latent − reaction heat.

Honest simplifications

  • All beans share one temperature and one browning extent (colour spread between beans is only drawn). There is no bean-to-bean contact model, no gas-flow field and no radiation from the drum. Coefficients (h, k100, kp, reaction heats) are plausible round numbers tuned to give a roast of about 8-12 minutes, not measured constants of a particular machine or bean. Drum gas temperature is one lumped value. The cascade of beans is a kinematic animation, not a discrete-element simulation. Real roasting also involves chaff, pressure build-up inside the bean and sample-to-sample variation.

What to try

  • Start with "Balanced medium" and watch the turning of the rate of rise: it falls, then flattens as the bean dries.
  • Drop the beans a minute after first crack, then at the very end, and compare the development time ratio and the roast level.
  • Raise the burner late in the roast: the rate of rise flips upward and the roast can run away (exothermic phase).
  • Use "Big charge (3 kg)" and see the drum gas drop deeper when the beans go in.
  • After "Drop beans", the roast continues slightly while the beans cool in the tray (carry-over).
Loading model...
Loading Blender model...
Bean and drum gas temperature
Rate of rise (ROR)
Drying and roast degree
Made with 🟠 Blender · Three.js