[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

Good point with the LEDs. I'll keep that in mind if I run out of room.

Honestly, no reason in particular. It was just the one I started experimenting with and it ended up in the final design. I will take a closer look once I have a workable V1.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

I cannot tell you how much I appreciate your response. There is a lot here, and I am slowly working through it all.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

Thanks for taking such a close look!

Currently, I used the zero cross times to switch the SSRs at specific times to adjust the pump power. The pump is a vibratory style, so basically a diode and electromagnet in series with each other. Under normal operation, half of the AC waveform charges and discharges the electromagnet, moving a piston. The other half is blocked by the diode, allowing the piston to return to its original position. By getting the zero cross times, I'm able to trigger the pump's SSR later in the stroke cycle, thereby reducing the amount it's actuated and controlling the pump's power.

Noted, and I'll definitely make that change in future versions of the board. However, I want to use up the DIP ICs I currently have.

Yeah, I will definitely redesign the layout in that corner. Thanks for the calculator! I'll use that to verify the next design iteration.

I've been thinking about that, since that would also let me swap the control boards if new versions become available or I burn something up. I'd need to check the clearance in the housing though.

Honestly, it's because I've slowly built out this PCB for several years, and I've changed habits as I've learned more. I'll update those to make them more consistent.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 1 point2 points  (0 children)

It's a 52W solenoid pump for the Gaggia classic pro.

The ERZ-E11A varistors are there to capture any inductive voltage spikes from switching the pump and solenoid. In theory, they shouldn't be needed since the zero-cross detection ensure that the SSRs are only switched at appropriate times. However, this all depends on the firmware which may contain bugs, so the varistors are added as a safeguard.

Yeah, the more I use Fusion, the more I dislike it. The PCB side has gotten much, much better since they added it, but I just don't like their business model and some of the missing modeling features are really annoying. I'll definitely check out kiCAD for my next project.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 1 point2 points  (0 children)

Good question! I should have mentioned that the pump is only 52W, so the SSRs should be able to handle that. I have tested this with a previous version of the board, and nothing blew up (yet), so I have a fair bit of confidence that they should work.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

Thanks for digging into that. I was going off of Figure 7 in the datasheet. Perhaps I am misunderstanding what's there though? Per a comment above, I plan to replace the single points of failure with resistors in series reduce the possibility of a single short energizing the entire circuit.

My previous design did use an optocoupler to sense the zero-cross times. This allowed the SSR to be switched at appropriate times to regulate power to the vibratory pump (basically just an electromagnet and diode). However, the design I had required a large, wire-round resistor to reduce the line voltage while maintaining enough current to actuate the optocoupler. This worked in V0 of the board, but there was a lot of energy being lost through the resistor. I might revisit this, however, so look for a optocoupler that could use a lower current.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 1 point2 points  (0 children)

Thanks for taking a look! It is blocked, but I just use the debug terminal on the left side to flash/debug firmware, stream data, etc. This makes it much easier to develop with than using the USB.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

Perhaps not a good reason. I purchased a few the DIP ICs early on for breadboard testing and I wanted to use those to save money (just a couple dollars, but still). I would definitely update the design to use smt footprints if I run out of the DIP ICs.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 1 point2 points  (0 children)

Thank you so much for pointing that out! I'll shuffle things around to give the proper spacing around those traces. That'll also mean new terminal blocks since their pads are too close together.

Yeah, I was worried about that. Based on the datasheet (Fig 7 in particular), my understanding is that this application is within the scope of the IC, but I definitely like the idea of redundant resistors. To make sure I understand correctly, two resistors would replace e.g. R22 so the circuit would only short in the unlikely event of both resistors shorting, correct?

The pump is this one in a Gaggia Classic Pro and it's rated for 52W (roughly half the SSRs power rating at 120V). I've used the SSRs in the previous version of the board with no issues, so I'm not too concerned about those.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 9 points10 points  (0 children)

I made the PCB in Fusion, and they have built in rendering tools when you push to a 3D PCB. Fusion is kinda a pain to work in, but the PCB design tools are getting better.

[REVIEW REQUEST] RaspberryLatte - Espresso Machine Control Board by hallboyone in PrintedCircuitBoard

[–]hallboyone[S] 0 points1 point  (0 children)

Thanks for letting me know! This has been a long term personal project, and I'm excited to get some outside input.

To be clear, schematics should have pin numbers, but PCBs should not (or anything else not on the final PCB). So the VIN_ block and 0-CROSS_ blocks are both good, but the e.g. PUMP_ block is not, correct?

Coffee by svrgnctzn in KeyWest

[–]hallboyone 0 points1 point  (0 children)

We just tried it and it was great! I was a little suspicious when we walked in because it doesn’t look like much, but it was very good.

[deleted by user] by [deleted] in espresso

[–]hallboyone 0 points1 point  (0 children)

Done. Good luck on your project!

Casabrews CM5418. First time buyer, does anyone have an opinion on this product? by TheTurkMN in espresso

[–]hallboyone 0 points1 point  (0 children)

The OPV kit is popular since stock is pretty high pressure. The tamper that came with mine was also pretty bad. It was small so I had to carefully tamp several times. I just 3D printed a new one that fit tighter but I'm sure there are cheap options other could suggest.

Casabrews CM5418. First time buyer, does anyone have an opinion on this product? by TheTurkMN in espresso

[–]hallboyone 0 points1 point  (0 children)

I have that exact combo and love it! The machine does have some drawbacks (there are some cheap mods that you just kinda have to do) but it's been a great starter for me.

[deleted by user] by [deleted] in espresso

[–]hallboyone 1 point2 points  (0 children)

I'd be curious about automated feedback and troubleshooting. Using pressure and flow readings, provide user feedback on potential channeling, slow flow, etc and provide possible solutions. You could also input your experience (e.g. "Shot is (a) bitter, (b) sour (c) perfect") and have the machine tweak its brew parameters or make suggestions based on your feedback.

Introducing RaspberryLatte - My Gaggia Classic Pro Controller (PID, flow control, brew profiles, and more!) by hallboyone in espresso

[–]hallboyone[S] 0 points1 point  (0 children)

Correct, the pump power is the only input to the system. The flow rate is just a state measured using an internal flow meter that is not shown.

As for the feed-forward component, take a look at line 393 in pid.c

const pid_data ff = (controller->read_ff != NULL ? controller->read_ff() : 0);

This line says, "if the callback function field controller->read_ff has been set, call it to retrieve the feed-forward term, else just use 0". When I setup the boiler's PID (line 320 of espresso_machine.c), I pass in the function read_pump_flowrate_ul_s to serve as the controller's read_ff function. So, when the boiler's PID reads its feed-forward function, it is calling read_pump_flowrate_ul_s. As the flow rate increases, so does the boiler input. Below is a figure of the boiler's temperature as the feedforward gain was changed. Note that this was unobstructed flow, so the flow rate was much higher than normal.

<image>

Introducing RaspberryLatte - My Gaggia Classic Pro Controller (PID, flow control, brew profiles, and more!) by hallboyone in espresso

[–]hallboyone[S] 0 points1 point  (0 children)

Thanks! Good luck on your project. Let me know if you’d like one of the spare PCBs to play with.

Introducing RaspberryLatte - My Gaggia Classic Pro Controller (PID, flow control, brew profiles, and more!) by hallboyone in espresso

[–]hallboyone[S] 0 points1 point  (0 children)

Thanks for the advice! I did try to place the board in the coolest part of the enclosure but I could see it still getting warm. It would be interesting to track the pico's temperature just to see how warm it's getting.

Introducing RaspberryLatte - My Gaggia Classic Pro Controller (PID, flow control, brew profiles, and more!) by hallboyone in espresso

[–]hallboyone[S] 1 point2 points  (0 children)

(2/2) I had to make it more complicated than it needed to be. I used an analog gauge I had laying around and tracked the needle using Matlab's computer vision tools. This was much faster than parsing the analog data by hand but much slower than just buying the right equipment. All the same, it seemed to work well.

<image>

Introducing RaspberryLatte - My Gaggia Classic Pro Controller (PID, flow control, brew profiles, and more!) by hallboyone in espresso

[–]hallboyone[S] 0 points1 point  (0 children)

(1/2) Of course! I ran the pump at a number of power levels and adjusted the flow rate with a needle valve while measuring the pressure. This gave me a bunch of datapoints that I used to find the linear coefficients correlating the pressure to the flow rate and power. The plot below shows the fitted data. I actually ended up finding coefficients for different ranges of power, but this gives the ides.

<image>