Dual Boiler Espresso Machine controlled by arduino

Hi,

I don't have an arduino yet, which would probably be a good starting point.

I'm trying to build a dual boiler espresso machine. I want to be able to input temperature readings from both boilers, I want to be able to set the desired temperature and have the arduino hold the temperature at the desired set point. Now I have looked at the pages over at the coffee tronics. My only upset was there didn't seam to be anyone trying to control the heating element using PWM. Okay they were using it to turn a relay on and off, but what I want is to control a Transistor (Most likely an 8-10A Mosfet) with a PWM thats constantly going. That the Power out of the Heating Element is proportional to its Max power(if completely turn on) multiplied by the fraction that the PWM wave form is at state 1.

I could just go and end up using a 555 timer for the PWM, I know it has limitations and thats why I would really like to be able to set the temperature on the machine using arduino.

Then again I have very limited programming experience. I'm great at terminal and managing PCs, but I have never written a program.

I know most people would say start with a simple project and then try more difficult things, but they unfortunately don't have any use to me.

Heres my plan of taking things in baby steps of simple programs

Run the program that outputs hello world onto a LCD

Make a program that reads temperature from an input and displays it on to an LCD

Make a program that Outputs a PWM signal at 50Hz controlled by Tactile input switches that change the PWM by 1% up or down.

Attach the device to the boiler using both the thermometer program and the PWM program both being displayed onto the LCD, record the values of temperature at each 1% PWM increment. Into a spreadsheet(this may take sometime).

Make a lookup table and have the temperature you input on screen to set the boiler temperature, correspond to the appropriate % PWM. Edit the program to use full PWM and then to switch to the approproaite set temperature PWM once within 2C of the temperature.

Make a program that contains two controllers one for each boiler. Make a lookup table of temperature to the pressure of the boiler for the Steaming boiler. (not required for the brewing boiler.

That should be my program done. I can now set the temp of the brewing boiler and the pressure of the steaming boiler.

I would also like to control the pump, but thats not a necessity yet.

Thanks hope I didn't ramble on too much, my question is probably in the wrong board, but I didn't know where to put it sorry in advance.

I think the control algorithm you are trying to describe is PID control. There is a user contributed library available for this kind of control. However applying it correctly and proper tuning of the control variables is not a simple beginners type project.

http://www.arduino.cc/playground/Code/PIDLibrary

I know most people would say start with a simple project and then try more difficult things, but they unfortunately don't have any use to me.

Yes, I can understand that, but at the same time if you get bogged down with all the new hardware and new software tasks that have to be mastered to make your project work you might very well give up in frustration. Learning simple tasks through simple projects is a path to gain experience in a positive manner that will generally lead to better results in mega projects later. But good luck with whatever path you take.

Lefty

Thanks for the reply, Yeah I read the page and that is what I want. Mine is different from the majority of peoples PIDs when concerning espresso machines. Mine needs to be able to output a constant 50Hz ( it could be anything, but at 50HZ it will match the frequency of mains, such that it will keep the electrical characteristics of the heating element the same).

I think I'm going to build some 555 timers and control it via that for now, some made thermometers which will be fine.

And in spare time (the whole summer holiday before uni) I will go ahead and try to program the arduino. I wouldn't mind using the already made library, but I need to like you said experiment with smaller simpler code, that covers the whole range of functions, such that I can understand it. I will then build the program from nothing and progress in the list I stated before, that way I will gain lots of experience and I will also understand it myself.

There probably isn't anyone trying to control heating using PWM because its extra complication that isn't needed. Water has sufficient thermal capacity so that it can be controlled to within 2 degrees just by turning the full power to the element on and off under temperature control. It won't even cycle quickly unless it has a tiny amount of water in the boiler and its a very powerful element.

I would think that an expresso machine would use mains electricity (AC in practically every place on earth) which means a semiconductor switch has to conduct both ways and a mosfet wouldn't be suitable, for AC it needs a Triac output. The easy way for AC is to use a SSR of suitable rating and just hook the low voltage side to ground and a digital output. PWM is complete overkill for water heating IMO.

Hi,

Here is what I'm doing.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1274831063

Single boiler but same idea. Again, why use PWM? Just switching the heater on and off with a solid state relay will be fine. I'm just about to start writing the software for mine and I'll be using the PID library. I'll of course be happy to share my code.

How are you planning to read the temp?

Cheers,
Rhys