Removing a Stuck Shower Plate from the Gaggia Classic

Shower Plate Removal

My shower plate had become badly clogged, with two of the holes pretty much completely blocked. When I tried to remove it, I found it was really badly stuck… I tried soaking in descaling solution, tapping it with a soft faced hammer, levering it from the side with wood (mindful of damaging the shower plate)…. but it wouldn’t budge.

Then I stumbled on a tip in a forum: simply insert a longer screw in the central hole, and tighten this until it pulls the shower plate free! So, I used an M5x20mm socket head cap screw (pictured above) and, with a few turns of an allen key, the plate popped straight off.

I tried cleaning and descaling the shower plate, but it was pretty badly stained. Having neglected my machine so badly, I felt slightly ashamed and decided it deserved an upgrade with a shiny new brass shower plate…

Brass Gaggia Shower Plate

Much better!

Gaggia Classic Boiler: step response, lag and temperature drop rate

Partly for my own notes, here are the results of some simple experiments with the Gaggia Classic boiler, to better understand its behaviour. Prior to these tests, the machine started out at ambient temperature of around 21°C. The temperature sensor is the TSIC 306 mounted in the same position as the original brew thermostat. There was no portafilter fitted. The tests were carried out on 240V AC mains in the UK, and this is the original Gaggia Classic with an Aluminium boiler.

This first graph shows the temperature (blue line) in °C versus time in seconds for a step input of heat at full power for 4s. The red line shows the timing of the heat pulse. Note the lag of about 4s before any measurable change in temperature after the element is switched on. In this example, the starting temperature was 21.7°C, the peak temperature was 29.8°C and the temperature rise was 8.1°C.

2016-05-11_gaggia_4s_step

This second graph shows a step input of heat at full power for 8s. Again, there is a lag of about 3s before the temperature changes. Here the starting temperature was 23.2°C, the peak temperature 39.1°C and the temperature rise was 15.9°C. The original data can be downloaded as a CSV file.

2016-05-11_gaggia_8s_step

Here’s a longer sequence, showing the first 35 seconds of the boiler heating up from “cold” after the heating elements are first switched on. The heating elements were on for the full duration of the graph below. Again, it takes 4 seconds before the first change in measured temperature. After 12 seconds, the temperature rise becomes almost linear, with a rate of increase of about 1.83°C/s (straight line fit to a linear subset of the data in Excel). The original data can be downloaded as a CSV file.

2016-05-11_gaggia_temperature_rise

For the final test, the machine started at about 26.9°C and was driven up to 93°C under PID control then allowed to naturally cool down, to see how fast the temperature drops. Again, the data can be downloaded as a CSV file.

2016-05-11_gaggia_temperature_drop

The initial temperature drop from 92.9°C to 90°C takes 29.25s, which is about 1°C every 10 seconds (0.099°C/s), within the small region between 90°C and 93°C where our temperature controller operates.

Measuring Ulka EP5 Pump Inductance

Having previously tried to estimate the pump inductance of the Ulka EP5 Pump, and without really being certain of the accuracy, I decided to try and actually measure it. Unfortunately, this is made difficult by the series diode built into the EP5 pump. Although I had a spare pump, I didn’t want to completely destroy it by opening it up, so I decided to try and reach the terminal by performing “minimally invasive surgery” on the pump…

To start with, shining a torch through the plastic pump body reveals the location of the metal tab terminal on the solenoid, and the series diode:2016-05-04_ulka_exam1

Having done this, a Sharpie pen was used to mark a point above the metal tab, which was approximately where the “U” is in the ULKA logo as shown by the small black dot below:

2016-05-04_ulka_exam2

Then a pin vice was used to carefully and slowly drill a 1mm hole until it reached the surface of the metal tab, while taking care not to drill too far:

2016-05-04_ulka_exam3

Having done this, we can now directly access both terminals of the solenoid and completely exclude the diode from our measurements. Using a low cost LCR component tester (fish8840 Taobao) it is possible to measure the inductance and series resistance as shown below. Successive readings showed 847.8mH, 856mH and 859.3mH with an average of about 854mH. The series resistance was about 165Ω as measured previously.2016-05-04_ulka_coil_LR

As both sides of the diode are now accessible, we can also check the diode forward voltage as shown below. This shows Vf=706mV and C=40pF:

2016-05-04_ulka_diode_VFCWhen finished, the hole will be filled with epoxy to seal it back up again and make it safe.

Conclusions

The inductance was measured as 854mH and the series resistance was 165Ω. The diode forward voltage is 706mV. These tests are carried out at a low voltage, and without any hydraulic load on the pump. It is possible that the solenoid plunger position may also affect the measurements. Note that the measured inductance is significantly different to the previous estimate.

Vectrex Buzz Fix… Enjoy the Silence

One of the famous features of the Vectrex is the annoying buzz from the speakers. After a while, it was just too irritating and I decided to try and fix it. Some purists say that the buzz is an authentic part of the Vectrex experience, but I’m sure the engineers who designed it didn’t intend it to buzz 🙂

Unfortunately, the LM386-3 audio amplifier (pictured below) is mounted on the power board, right next to the wires which drive the CRT yoke magnets. The amplifier is fed by a poorly screened audio cable which runs to the logic board. The screened cable is only connected to ground at one end (the power board). Consequently, it picks up a lot of interference…

vectrex_power_board_removal3

The usual fix is to install some better quality screened cable, and disconnect one of the ground leads (the theory being that this eliminates a ground loop). However, the new cable may not completely eliminate the noise, because it doesn’t address the issue of the amplifier being located on the power board, and I didn’t like the idea of disconnecting ground. Another approach is to add a pre-amplifier to boost the level before it reaches the LM386.

I decided to try a different approach, by installing another power amplifier, well away from the power board and magnets. Originally, I planned to buy an LM386 chip and assemble an amplifier on strip-board. However, I then discovered you can buy a ready made module built around the LM386 for about the same price as the components:

lm386_module

These modules cost about £0.99 on eBay, and are widely available. I couldn’t find a schematic, so reverse engineered it (below):lm386_circuit

For comparison, here’s the original amplifier schematic for the Vectrex:

vectrex_audio_amp

The main difference is that the Vectrex has pin (1) on the LM386 not connected, which sets the gain to 20. However, the new LM386 module has a gain of 200, due to the capacitor C1 bridging pin 1 and 8 on the module. With this much gain, we might still get the buzz, and we could also get clipping/distortion.

Fortunately, this is easy to fix by removing R1 from the module (actually R1 is a 0 ohm link, perhaps provided for this purpose). This disconnects the capacitor between pin 1 and 8 of the LM386, reducing the gain to 20, the same as the Vectrex.

The module has two screw terminals for the output, so a couple of short wires in these allow the existing speaker connector to push fit:

lm386_module_pins

Next, I removed the Logic Board and replaced the audio cable with a higher quality foil screened cable, soldering it to the ground and wiper of the Vectrex volume potentiometer, on the component side of the Logic Board:

vectrex_new_audio_cable

Although the original Vectrex LM386 is powered from the +9V rail, I decided to power the new amplifier module from the +5V rail on the Logic Board, to avoid having to run a +9V power line from the Power Board. To do this, I ran a twisted pair of red/black wires from the +5V and GND rails nearby the AY3-8192.

The audio cable, 5V and GND are installed in a 0.1″ crimp housing to fit the 4-pin head on the module. The finished assembly is shown being tested outside the Vectrex below, before it was finally installed inside the machine:

vectrex_audio_module

To mount the board, I used a self-adhesive cable tie base just inside the cabinet above the speaker. The module is cable-tied to this base.

The end result is a massive improvement, completely eliminating the buzz!

Here’s a photo of the final installation:

As shown above, the 5V power comes from a supply junction between the AY-3-8912 and the 6522, and the GND comes from a ground plane via near the top right of the 6522.

I recently stumbled on this nice video (in German) where someone has tried this same modification:

Vectrex Repair (Black Screen / No Vector)

I’ve wanted a Vectrex Console for quite a while, and finally acquired a broken Vectrex for a reasonable price on eBay (where else) with the idea of repairing it…

It didn’t begin well when the courier who delivered the package left it hidden behind a car… overnight… in the rain:

hermes1

It was sitting in a puddle, and got a fairly good soaking. Here’s the Vectrex emerging from the box:

hermes3

Fortunately, after drying it out carefully, it didn’t look like it had sustained any serious damage, so I set about trying to repair the fault.

Exactly as described by the seller, when it was powered on, the game sounds were playing, but the screen was completely black, not even a white dot visible on maximum brightness.

Looking at the troubleshooting guide, the first suggestion for “No Vector” is to “check for +/-5 VDC and -13 VDC at connector J204. Left to Right -5, GND, +5, -13”. When I checked J204 on the Logic Board, the -13V DC rail was missing (just measured about 0.67V which looks like a diode voltage drop). I checked the other end of the -13V wire on P204 on the Power Board, with the same result. This confirmed the wires and connectors were OK, and it was a problem on the Power Board.

From the service manual, here’s a diagram of the -13V power supply circuit on the Power Board:

vectrex-13v-repair1

The two lines at bottom right are the incoming power supply which is about 9~10V AC. The Diodes D106 & D107 and the Capacitors form a voltage doubler, boosting this to 18~20V, which is then regulated by a 13V Zener DZ102.

I switched off power and tested D106 and D107 in circuit with a DMM, and it looked as though D107 was short-circuit. The resistor R106 looked fine. Since there were only a few components, and the 34 year old (!) Electrolytic capacitors were probably not in the best shape, I decided to replace the whole -13V regulator circuit.

The -13V rail is only used by IC301 (the MC-1408P8 DAC) and the circuit diagram even states “TO IC301 PIN3 ONLY” next to the -13V line so, after a quick visual check of the Logic Board and connectors, I couldn’t see any obvious signs of a short on the -13V rail which might cause it to fail again. It’s always worth checking before replacing parts though!

To do this repair, the whole Power Board needs to be removed, which involves removing 5 connectors, removing the HV lead (CAUTION: ensure it is discharged first) and desoldering 2 ground leads, 3 power leads and 4 leads connecting the CRT deflection yoke. The board is secured with two small cross-head self tapping screws.

Here’s a close up of the components to be replaced (C120, C121, C122, D106, D107 and DZ102):

vectrex-13v-repair2

This picture highlights them more clearly:

vectrex-13v-repair3

After removing the components, the most difficult part of the repair was clearing solder from some of the holes connected to the ground plane…

Once the original components were removed, I was able to test them out of circuit and found the following:

  • D106 was OK
  • D107 had failed Short Circuit
  • DZ102 was OK and measured 13.2V
  • C120 measured 44.1uF, 2.1Ω ESR, Vloss 4%
  • C121 measured 49.9uF, 0.65Ω ESR, Vloss 3%
  • C122 measured 234uF, 0.13Ω ESR, Vloss 1.3%

Presumably with D107 short circuit, this may have also damaged C120 by putting AC directly across the polarised electrolytic. In any case, I decided to replace them all with new parts.

For the Zener diode, I used a 1N5243BTR (0.5W, 13V. DO-204AH). The diodes D106 and D107 were replaced with 1N4148 as used originally, and C120, C121, C122 replaced with equivalents.

After refitting all the connectors and soldering all the cables back in place, I left the connector at J204 disconnected from the Logic Board and tried measuring the -13V rail with the DMM probes touching the connector contacts. Initially, it wasn’t looking good as the -5V and +5V rails were present, but -13V wasn’t…. anyway, I decided to plug it into J204 and power on again…. and happily the Vectrex sprung back into life again! Perhaps the DMM probes were just not making a good contact with the connector?

Here’s the first power up after the repair:

For a machine that’s over 30 years old, I was astonished how beautiful and sharp the vectors looked – the display is amazing! (the video above does not do it justice). I’m very excited to finally have a Vectrex to tinker with… now I just need some more games and overlays!

The console has the famous “Vectrex buzz” from the speakers, and I think the next project will be to try and fix that…

Estimating Ulka EP5 Pump Inductance

As part of my work to modulate the Ulka EP5 pump pressure in my Espresso machine, I decided to try and simulate the pump in SPICE. This would necessarily be a very simplified model, but might be useful nonetheless to understand the behaviour of snubber circuits for the pump PWM controller. To create the model, I needed an estimate of the pump inductance.

Previous attempts

I could only find one previous reference to the pump inductance online. It’s not clear which Ulka pump was used, but it looks like an E5 type (EP5 or EX5) and a circuit diagram refers to 41W rating (consistent with the 120V 60Hz EP5). They took the approach of measuring the current drawn by the pump at 0.57A and, assuming a line voltage of 120V, calculated the reactance as follows:

XL = V/I = 120V / 0.57A (AC) = 211

With the formula XL = 2πfL = 2π * 60Hz = 377L, the inductance L was estimated as follows (for a 120V 60Hz pump):

L = 211 / 377L = 0.56H = 560mH

However, XL = VPEAK/IPEAK and the above voltage current values may be average or RMS values rather than peak values. For 120V AC mains the peak voltage would be VPEAK =12√2 = 170V. Similarly, when measuring AC current, some multimeters only give accurate results for a sinusoidal AC waveform, and may not be accurate for AC chopped by the series diode in the Ulka pump. This doesn’t necessarily mean the result is wrong of course, just difficult to be certain.

Manufacturer data on the pump

The manufacturer data states that:

  • Ulka EP5 240V~50Hz is rated at 48W
  • Ulka EP5 120V~60Hz is rated at 41W

Estimating pump electrical properties

There’s an integrated series diode in the pump, but the type is not indicated. However, based on similar Ulka pump models described in Ulka/CEMA specifications, the diode is assumed to be 1N4007 which according to manufacturer datasheets have a typical forward voltage VF = 1.0V when IF = 1.0A (noting that there are some small variations in the specifications for 1N4007 between manufacturers).

Attempting to measure the pump coil resistance directly with a resistance meter could give misleading results, due to the internal diode. To overcome this, a known DC voltage and current can be used to estimate the resistance.

With a ~12V DC power supply connected across the Ulka EP5 240V~50Hz pump, the measured voltage was 12.33V and the measured current was 70.1mA. At this relatively low current, it is likely that the diode forward voltage will be less than 1.0V. To estimate the diode VF, an individual 1N4007 diode was connected in series with a 220R resistor and ~12V power supply, giving IF = 51.9mA and VF = 0.775mV.

Assuming that VF = 775mV at IF = 70.1mA, the actual voltage across the coil will be reduced to (12.33 – 0.775) = 11.56V and therefore a first estimate of the pump coil resistance is as follows:

R = 11.56 / 70.1×10-3 = 165Ω

To calculate the inductance, the manufacturer voltage and power ratings are used to estimate the reactance as follows:

Although the Ulka EP5 240V~50Hz model is rated 48W, the internal diode means that the pump is only active for half the cycle. Considering the coil without the series diode, we therefore assume that the AC power consumption would be 96W and use this figure to calculate the AC current:

P=VI therefore I=P/V

IRMS = PRMS/VRMS = 96/240 = 0.4A

Note that the mains line voltage and current will of course vary in practice due to local mains supply quality.

The peak voltage and current are then estimated as follows:

VPEAK   = VRMS√2 = 24√2 = 339V

IPEAK      = IRMS√2 = 0.4√2 = 0.57A

The inductive reactance for an inductor energised by a sine wave is calculated as follows:

XL = VPEAK/IPEAK =  339 / 0.57 = 599.27

The inductance can be calculated based on the reactance and frequency as follows:

L = XL / 2πf

Where f is the mains line frequency 50Hz:

L = 599.27 / (2π × 50)  = 599.27 / 314.159 = 1.91H

However, on closer inspection, I noticed that the exact pump model I tested is labelled 230V~50Hz on the side. Repeating these calculations with 230V, the following results are obtained:

IRMS = 96/230 = 0.42A

VPEAK = VRMS√2 = 23√2 = 325V

IPEAK  = IRMS√2 = 0.4√2 = 0.59A

XL = VPEAK/IPEAK = 325 / 0.59 = 550.59

L = 550.59 / 314.159 = 1.75H

So this estimate puts the pump inductance for the 230V~50Hz EP5 pump at somewhere between 1.75H and 1.91H and the resistance at 165Ω.

Simulating the pump in SPICE

Running an LTSpice model with a 240V, 50Hz AC supply in circuit with a 1N4007 diode and an inductor modelled with L=1.75H, R=165Ω gives the following results:

Iavg=0.34A, Irms=0.46A, Vrms=240V, Pavg=35.67W

This doesn’t look too far off, however it is obviously lower than the rated power of 48W indicated by the manufacturer. Adjusting the LTSpice model inductance to L=1.37H gives results closer to the manufacturer ratings:

Iavg=0.39A, Irms=0.54A, Vrms=240V, Pavg=47.93W

Measuring the pump inductance

More recently, another attempt was made to directly measure the inductance. This was achieved by drilling a small 1mm hole in the pump to access the coil terminal before the series diode. The measured inductance and resistance was L=854mH and R=165Ω. The series diode forward voltage was measured as 706mV.

Conclusions

Modelling the pump as a simple inductor is obviously a gross simplification, as the pump is a spring loaded solenoid, whose inductance will vary as the internal plunger vibrates. Also, the hydraulic pressure in circuit is not considered. Finally, with high frequency PWM switching, the parameters estimated at 50Hz / 60Hz frequency may not be correct.

Nevertheless, the inductance values above when used in SPICE provide a first approximation which may be useful to estimate how the system will behave in practice, and do seem to give behaviour very similar to the real system.

If anyone has any corrections, comments, improvements or information to add, drop me a line in the comments below.

Mmm… Roasting Coffee

I had a really fascinating visit to The Blending Room, a coffee roaster based in Hull. The owner James is clearly very passionate about coffee and completely committed to perfecting his roasting technique and recipes. I could easily have spent the whole day asking questions and chatting about coffee with him! It’s really great to see these small producers offering such a diversity of great quality coffee, and to see people who care so much about their craft.

Coffee Beans

Mmm… now I feel like a coffee, but it’s kind of late in the evening.

Disaster! …but a salutory lesson

I made a schoolboy error last night when measuring current through the Ulka pump on my modified Gaggia Classic, which resulted in a very loud explosion of the SSR (pictured below).

Destroyed SSR
Oh no, all the magic smoke has escaped…

The machine was working perfectly well, but I just wanted to take a few measurements…. which ended badly due to a very simple mistake. I thought this would be an interesting example to share, to demonstrate the risks involved in this kind of experimentation!

The intention was to measure the AC current through the pump when using the IGBT versus the current with a direct connection. First of all, I started by putting my multimeter on the AC current range in series with the IGBT (between the IGBT collector and the pump). That went without incident.

The next step was to measure the current without the IGBT, and here’s where I made the error. I disconnected the IGBT collector lead from the pump, inserted the meter between the pump and Neutral, and powered on. There was a tremendous BANG like a gunshot, a cloud of smoke rose from the machine, and all the lights went out. Oops.

I didn’t immediately spot the problem, until I examined the circuit diagram, at which point it became obvious (see below). When I disconnected the wiring, I had accidentally removed the series diode D7 which prevents AC flowing back through diode D6. Placing the meter across points (A) and (B) and setting on the AC 10A current range created an effective short-circuit from the anode of D6 to Neutral:

Destroying an SSR

This allowed AC to flow from Neutral, through D6 and through the SSR K3 directly back to Live with no load in the circuit, as shown by the bold red line above. The poor, unsuspecting SSR (rated 8A) and diode D6 wouldn’t know what hit them! They both died a quick death, before the 13A fuse in the plug blew. The SSR blew with a loud explosion and a cloud of smoke. The diode failed silently, but went short-circuit.

After this, I was pretty annoyed with myself for not double-checking the circuit diagram before powering on. Concerned about the possibility of toxic chemicals from the burnt SSR, I also had to strip and clean the machine, which wasn’t a whole lot of fun. On the positive side, I did have a spare SSR, diode and fuse, so I was able to fix it that same evening, and the machine is working again now!

Next time, I will check my wiring much more carefully before powering on…

Calibrating the Pressure Sensor to match the Pressure Gauge on my Espresso machine

Some time ago I fitted both a mechanical pressure gauge (shown in the photo below) and an analogue pressure sensor (Danfoss AKS 32R) to my Gaggia Classic. The analogue sensor is connected via an ADC board to a Raspberry Pi, which displays the output on an LCD display. Calibration is needed to make the sensor reading match the gauge exactly.

Pressure Gauge

When I first installed the sensor, I used an approximate calibration as shown in the pseudo-code below:

minVoltage = 0.5V
maxVoltage = 4.5V
maxPressure = 20.6842719 bar (300 psi)
voltage = pressure sensor voltage (measured by ADC)

voltageRange = maxVoltage - minVoltage
bar = maxPressure * (voltage - minVoltage) / voltageRange

Although this was only based on the sensor specifications, it actually gave surprisingly good results. There was only about 0.5 bar difference between the gauge and the pressure sensor (the sensor always read slightly higher than the gauge). Nevertheless, I decided to calibrate the sensor against the gauge (on the assumption that the gauge was more likely to be correct). Absolute accuracy isn’t really critical, but I wanted them both to show the same values.

To calibrate the sensor, I took about 20 simultaneous measurements for the gauge and the sensor and plotted them in Excel as an X-Y chart. This isn’t as easy as it sounds, because the readings need to be taken when the pressure is fairly stable. After running the pump, it takes a while for the pressure to slowly reach equilibrium, and that’s when you need to very quickly take a note of both values! It’s also difficult to read figures very accurately off the gauge.

These measurements gave a reassuringly good straight line fit (below), which suggests that both the gauge and sensor have good linearity. Using Excel, I then added a trend line to the chart and read off the scale and offset values directly (Excel has an option to display the equation), as shown below.

sensor_vs_gauge

To correct the pressure sensor reading, the value is scaled by the reciprocal of 0.9385 and the offset 0.829 is subtracted. These parameters are stored in a configuration file, so they can be easily changed if required.

This simple calibration process worked out really well and means that the pressure sensor readings displayed on the LCD (and stored in the log files) now match the mechanical gauge exactly!

Making a Portafilter Wall Mount

I always seem to have Portafilters lying around on the kitchen worktop, partly because I have a couple of them (the original Gaggia filter, and a naked PF), and partly because I tend to leave them off the machine after cleaning. Some kind of wall mount seemed like the solution, but I did a quick search and didn’t find anything suitable, so decided to have a go at making one.

Wood seemed like a natural choice, to avoid damaging the Portafilter, and being easy to work with. I started with some 45x45mm scrap soft wood, and routed out two 70mm diameter holes (I made a temporary MDF jig for the router to cut this radius). Then I routed slots for the Portafilter handles (about 19mm for the standard PF, and 16mm for the naked PF) as shown below:

Portafilter Wall Mount

The next stage was to chisel out some slots to accommodate the “ears” on the Portafilters. This was pretty easy for the naked PF, but it took a bit more work to shape it to suit the original Gaggia PF, mainly due to the big flared handle on the PF. I put a 45 degree chamfer on the lower front edge of the block, to make it easy to insert/remove the Gaggia PF.

Having finished the wood work, I sanded it smooth and treated it. After searching for a suitable “food safe” coating, I settled on pure Tung Oil. I didn’t thin the first coat (to avoid mixing in any toxic thinners/solvents!) and it worked out fine. I applied three coats at 24 hour intervals, sanding lightly between coats. Each coat was applied with a brush, left for 20~30 minutes, then the surface was wiped clean with a rag.

Portafilter Wall Mount

Here’s a view after the final coat. It seems to give a nice smooth finish, and is apparently resistant to water, alcohol etc. Time will tell how well it lasts in daily use!

Portafilter Wall Mount

Here’s a top view showing the recesses needed to accept the “ears” on the Portafilters. The left side is for the original Gaggia PF, which needs a very large area removed to allow it to be lifted in/out easily. The right side is for the naked PF and needs a much smaller recess:

Portafilter Wall Mount

Here’s a view of the two Portafilters slotted into the wall mount bracket. Now I just need to drill a couple of holes and mount it! I’m planning to leave this for a week or so to cure properly before using it in earnest.

Portafilter Wall Mount

Here’s a final update, showing it mounted on the wall with a couple of 8×2½” screws:

Portafilter Wall Mount