DIY PID - Koffie Project

Need help with equipment usage or want to share your latest discovery?
mwood77
Posts: 4
Joined: 2 years ago

#1: Post by mwood77 »

Hi all,

I've been working on an open source PID controller for espresso machines - "Koffie."

What I've got so far is a solid, easy to use, and affordable PID ($60 USD in parts) that's generic enough to install into most espresso machines. However, I'd like to continue building on this and make it a great fully-featured device. So I'd like help from all of you, in steering what direction we take!

What it does so far:
  • Automatic pressure regulation (PWM and solid state relay)
  • Measures and displays group head temperature
  • 2 memory modes for high pressure (milk) and low pressure (espresso)
  • Manual mode, where you may set the pressure to any value within the safety limits of the device
  • Programming modes, which allow you to save/overwrite custom values into the high/low pressure modes
  • Customisable measurement units: Bar & Celsius, PSI & Fahrenheit, Bar and Kelvin
  • Fault handling/automatic kill switch for bad pressure sensors (to prevent run-aways)
  • Programmed hard limit of 1.4Bar as your maximum pressure
  • The project is fully documented, including design docs, circuit diagrams, the code, and installation instructions, should you wish to build your own.
Now, I've had some interesting feature requests sent to me since I debuted it last week, and I'd like to get some feedback on these; I want to know what are worth pursuing and what you, the users, would like.

Please remember that these ideas must be generic - it should be applicable to almost any espresso machine.

Proposed Ideas:
  • Integrate another temperature sensor. This could be an infrared sensor or thermocouple used to measure the boiler temperature, for example.
  • Reduce external wiring; make the control unit communicate wirelessly with the espresso machine and its sensors (I'm staying away from creating an app for your phone/tablet, as this introduces way more complexity than a standalone device).
  • Redesign the control unit's enclosure for a bigger, colour LCD screen. Perhaps this could be fully 3D printed? If migrating to a larger LCD, would you prefer touch controls over physical controls?
  • Design and integrate a scale/timer system, which can install into your existing drip-tray.
  • Design and integrate a pressure profiling system (this would be dependant on a number of things being implemented first; board upgrade, screen upgrade, etc).
  • ....or perhaps something else I haven't thought of!
Thanks for your time, and I look forward to discussing it!

Project flies and documentation on GitHub: A sloppy video showing the PID in operation (it has since had some UI changes), but operationally it's the same Since you've made it this far, here's a bonus album of my Europiccola's restoration

BeesKnees
Posts: 33
Joined: 2 years ago

#2: Post by BeesKnees »

Congrats on all the work! Cool project.

mwood77 (original poster)
Posts: 4
Joined: 2 years ago

#3: Post by mwood77 (original poster) »

Thanks! I'm hoping this will be a nice affordable project for others to use. Especially when we get even more features pushed into it.

BeesKnees
Posts: 33
Joined: 2 years ago

#4: Post by BeesKnees »

I am sure there will be folks that want a large screen and others that want a classic plain look. There is no way to please them all.

IMO if someone can d/l your code, they can configure it to do what they want. I would build less user interface and more of a shot api where the duration, shot timer, etc can all be toggled in the code. I'd rather have 3-5 good profiles tied to switches than the ability to tweak them to infinity on large screen.

Since you already have gone A-Z for creating a new base, why not make a base that has all those things crammed into it? (i bet you could sell some)

I don't know if it would help or hurt a shot, but I kinda like the idea of bypassing the ssr/pid during a shot. Either upping the heat or killing the ssr. The arduino pid lib can do this if you run 2 instances and switch back and forth.

Again, great job! I am just working on an arduino weighing scale and hope to connect that project to one that has espresso machine control. It would be neat to use your code.

Cheers!

ira
Team HB
Posts: 5535
Joined: 16 years ago

#5: Post by ira »

When I read your description it sounds like a product for a Silvia. I would if I were designing it make sure it will also work for a HX and a dual boiler E61. That will slightly increase the complexity, but dramatically increase the possible number of users. Unless I missed something and it can do that already. If you're designing the PCB the Arduino plugs into, that adding all that extra stuff is trivial and once the boards are made you can mount the parts for those features or leave them off. Looking at github I see there is no second board. I think if you want this to be successful you need to make an interconnect board or your average user will be scared away.

Ira

Pflunz
Posts: 141
Joined: 4 years ago

#6: Post by Pflunz »

Hi, what is the advantage of your controller compared to other free solutions (like http://projectcaffe.bplaced.net/downloads.html or https://clevercoffee.de/anleitung/ )?
(Note that I am perfectly fine with "I just wanted to do it")

mwood77 (original poster)
Posts: 4
Joined: 2 years ago

#7: Post by mwood77 (original poster) »

Thanks all for the feedback!
BeesKnees wrote:I am sure there will be folks that want a large screen and others that want a classic plain look. There is no way to please them all.

IMO if someone can d/l your code, they can configure it to do what they want. I would build less user interface and more of a shot api where the duration, shot timer, etc can all be toggled in the code. I'd rather have 3-5 good profiles tied to switches than the ability to tweak them to infinity on large screen.

Since you already have gone A-Z for creating a new base, why not make a base that has all those things crammed into it? (i bet you could sell some)

I don't know if it would help or hurt a shot, but I kinda like the idea of bypassing the ssr/pid during a shot. Either upping the heat or killing the ssr. The arduino pid lib can do this if you run 2 instances and switch back and forth.

Again, great job! I am just working on an arduino weighing scale and hope to connect that project to one that has espresso machine control. It would be neat to use your code.

Cheers!
Circumventing the PID is an interesting idea, and I'll definitely add it into the list for consideration. The scale/timer solution is something I'd also like to integrate, as I really don't want to place another on-top of the drip tray.
ira wrote: When I read your description it sounds like a product for a Silvia. I would if I were designing it make sure it will also work for a HX and a dual boiler E61. That will slightly increase the complexity, but dramatically increase the possible number of users. Unless I missed something and it can do that already. If you're designing the PCB the Arduino plugs into, that adding all that extra stuff is trivial and once the boards are made you can mount the parts for those features or leave them off. Looking at github I see there is no second board. I think if you want this to be successful you need to make an interconnect board or your average user will be scared away.

Ira
Hmm, you think including a PCB design would be a good idea? I thought it would make the project more intimidating. I included an optional break-out board (€1.49) in the purchase list to lessen some of the soldering.

I hadn't considered dual boiler or heat exchanger machines actually, so thanks for pointing this out! I think it wouldn't be too bad to include this in, but the biggest hurdle is the Nano's memory limitation. I've ordered some ESP32s and have a few Picos around the house, so I'll begin refactoring for a more powerful board.
Pflunz wrote: Hi, what is the advantage of your controller compared to other free solutions (like http://projectcaffe.bplaced.net/downloads.html or https://clevercoffee.de/anleitung/ )?
(Note that I am perfectly fine with "I just wanted to do it")
I had no ideas those existed, but they look excellent! I was aware of the Gagguino project, which is the direction I'd like to take mine down: https://github.com/Zer0-bit/gaggiuino

My main driver for this project was to remove the power switching I had to do on my own Europiccola, as it's too old to have a p-stat. I wanted a simple solution, and figured this would be fun introduction to microcontrollers. Also there were a couple youtube videos of DYI PIDs installed on Europiccolas, but the code wasn't available for most of those projects (or was way out of date).

nisb
Posts: 54
Joined: 5 years ago

#8: Post by nisb »

Fun project!

I'd consider
  • Using something like Blynk instead of a display/rotary encoder. It's much easier/faster to code and with higher usability afforded by the bigger screen of your phone. You can couple it with a small display if there are things you'd like to check frequently without pulling out your phone. You would need WiFi or Bluetooth - maybe using an ESP32 instead of the Nano
  • If adding temp sensors, use thermistors instead of thermocouples. They only require a resistor and a filtering cap, unlike thermocouples which require a special differential OpAmp. Alternatives would be ICs like the DS18B20 or the tmp36

ira
Team HB
Posts: 5535
Joined: 16 years ago

#9: Post by ira »

Bumps the cost up a bit, but these are Arduino compatible and will not have memory issues, either RAM or EPROM.

https://www.pjrc.com/teensy

1/2 or 2/3 of the way down the page you can see a teensy mounted on a board which would probably work for your needs:

http://roasterthing.com/FrankenBehmor

That's an earlier version, the current version has 3 thermocouples, 5 SSD outputs and 2 mechanical relays. All that's optional, you only need to install the parts you need.

Ira

ira
Team HB
Posts: 5535
Joined: 16 years ago

#10: Post by ira »

And I left out Bluetooth if you want to connect it to an App or Computer.

Ira

Post Reply