PCB Design for Es(pi)resso IGBT Driver Board

In the process of updating the IGBT driver in my coffee machine with the new design using the TC426, I decided to replace the strip-board with dedicated PCBs. I’ve separated out the high voltage section which interfaces to the pump IGBT, making a standalone board (which could potentially be useful for other projects).

Here’s the circuit diagram for this new board, which I’m calling the “IGBT driver” board (imaginative name, eh?):


Since I had one driver spare in the TC426, I decided to expose this by adding another opto-isolator. So there are two opto-isolated IGBT drivers available (initially, I only need one of these to drive the pump).

There’s a 4-pin connector JP4 which takes two 3V3 logic inputs IGBT1_IN and IGBT2_IN. When driven high, these will enable IGBT1 and IGBT2 respectively (driving the IGBT Gate high). This connector also has an open-collector output PWR_SENSE_OC which will be pulled low when the mains power is on. This can be used by the controller to safely detect when the pump driver is powered on.

The mains power input is by screw terminals on JP1. In my machine, this is connected to the front panel pump switch. This powers up the AC-DC converter, and provides the non-isolated 5V rail (referenced to Neutral) used for the IGBTs. The IGBTs are not fitted to the board, as they need high current wiring, and potentially heat-sinks also, so this design gives more flexibility with installation. There are two headers JP2 and JP3 which provide Gate connections for the IGBTs. In my setup, the IGBT Emitter is connected to Neutral through the wiring loom.

For the PCB design, I opted for through hole rather than SMD for ease of assembly. It’s crammed onto a 60x50mm board, to save space, and reduce manufacture costs. The PCB was manually routed in Eagle:


The low voltage section on the right has a small copper plane, but the rest of the board is naked tracks (having big filled areas at mains Neutral seems undesirable…) There are slots under the opto-couplers OC1, OC2 and OC3 for isolation purposes. Hopefully these will manufacture OK as this is a bit of an unknown for me!

Here’s a rendering of the board, created using GRBV:


I’ve just sent this off to ragworm.eu for manufacture, and I’m now waiting to see how that turns out!

16 thoughts on “PCB Design for Es(pi)resso IGBT Driver Board”

  1. Hi James,

    Thanks for sharing the details of your project! I’m trying to reproduce your circuit, except I left out the BREW_IN and SPARE_OUT optocouplers. PWM seems to be working on Arduino (running on a frequency of 960hz), but I’m experiencing a strange problem.

    While I am able to modulate the pump, when I hook up a pressure gauge, I’m getting less pressure with this circuit than if I directly hooked the pump up to AC, even if I have it set to run at 100% duty cycle (or set it to output on high constantly). For example, if I adjust (restrict) flow such that I get a 9 bars powering the pump directly from AC, when I then hook it up using the circuit (running at 100% duty cycle), I get a 6 bar gauge reading.

    Do you know what can account for this loss of pump power? Could it have anything to do with the fact that I’ve left the ferrite bead before the DC power supply, and the 100R capacitor and 0.1uF resistor parallel to the pump out of my circuit? I have a very surface level understanding of electronics, and I understand I’m out of my depth.

    Thanks for any help you can provide!


    1. Hi Ryan
      I can think of a few possible explanations, but would really need to study a circuit diagram to be 100% sure. If you aren’t getting full power, that suggests either some series resistance (e.g. IGBT not fully switched on) or not operating at full duty cycle (e.g. something in circuit causing the output to chop). Are you using the exact same components, or something similar? i.e. is the IGBT the same, and is the power supply module the same as mine?
      One area where things could go wrong is if a different power supply is used, which doesn’t like having the output GND tied common to Neutral (could cause the output voltage to oscillate or be out of spec.)
      The other option is to use test equipment (oscilloscope) – but this needs to be done with very great care because of the mains voltages, and because the scope will be grounded to Earth.
      I can certainly try and help – it might be easier to discuss further by e-mail, so I’ll drop you a line.

      1. Hi James,

        Thanks for taking the time to help me with this! I don’t mind discussing it here in case others in the future run into similar problems, but e-mail will work just as well and I can post the solution here afterwards.

        This is the power supply I’m using: http://www.mouser.com/ProductDetail/RECOM-Power/RAC03-05SC-277-W/?qs=OiRKSorgMjO0dVbwGYUx5w%3D%3D. Your suggestion that the power supply could be causing problems is certainly plausible, as the exact one wasn’t available and I wasn’t really sure what to look for in a replacement.

        Aside from that, I’m using the same components (IGBT, driver, optocoupler), and I’ve drawn up the circuit diagram here: http://i.imgur.com/GvhYRZR.png. I should also mention that I’m using the 120V version of the Ulka pump, running at 120V 60Hz and 52W.

        I’ve grounded the spare input on the TC426 because the datasheet appears to tell me to, although I originally left it unsoldered and it didn’t really make a difference either way.

        I measured the resistance between the collector and emitter while the IGBT is switched on, and I get a reading of around 600 ohms on my multimeter. I’m not entirely sure if that’s relevant (whether that’s just due to the lower voltage of the multimeter).

        Grateful for the help!


        1. Hi Ryan
          Your circuit diagram looks OK to me. The obvious differences between our circuits are the power supply AC/DC module, and the mains voltage/frequency (I’m on 240V 50Hz).
          The AC/DC module you have selected looks OK. I’ve used Recom DC/DC converters before, and they seem very reliable. I did notice that the block diagram of the two AC/DC converters is a little different in terms of the isolation. For example, in the Recom converter, there is feedback from the final output (see page A-57):
          However, in the Vigortronix AC/DC converter, it looks completely isolated:
          This is just an observation, and may not be an issue. The only way to be 100% sure it is working is to use test equipment to examine the output voltage.
          Regarding the IGBT, I’m not sure the resistance measurement is workable, but measuring voltage drop (VCE) under load would be informative. However, if that’s the issue I should be seeing the same on my setup (as the circuit is pretty similar).
          I’ll give this some more thought….

        2. Hi Ryan
          I’ve got a theory that this may be due to the flyback diode impeding the return cycle of the solenoid (i.e. may be nothing to do with the IGBT). Possibly a different snubber circuit might improve performance. I’ve not fully thought this through yet, but I’m looking into it further.

          1. Hi James,

            That’s intriguing, but for your reference, I had a look at jonr’s schematic (http://coffeegeek.com/images/66103/espresso-IGBT.png) and it looks like even his basic design (running on 120V) incorporates a flyback diode, and it seems that many people have replicated the design with success. I’m going to do a bit more digging and reading up on threads discussing his circuit to see if there are any more clues.

            Seems like we’re able to eliminate the microcontroller, optocoupler, driver, pump, and diodes as causes, which leaves the power supply, IGBT, and user error.

            I pointed out earlier that I had omitted the 100ohm resistor and the 0.1uF cap that runs parallel to the pump, or the ferrite bead before the power supply on your original schematic – do you think that has any relevance?

            Thanks again for taking the time to help me with this!

          2. As a followup, do you think it would be worthwhile for me to try jonr’s circuit with the IGBT you’ve chosen? It may provide some clues and help further isolate the issue.

            I don’t have an isolation transformer, but jonr seems to suggest that I should be okay as long I have hot/neutral correct.

  2. Hi Ryan
    My theory is that the flyback diode might be slowing down the recovery/return of the solenoid, by allowing the back EMF current to flow back through the diode and dissipated through the solenoid coil. It is just a theory though! The way to test this would be to simply replace the IGBT with a wire link, so that only the series diodes and flyback diode remain. If the power loss is still there, then it must surely be due to the flyback diode, and would eliminate the IGBT as the cause. Then we could look at possible solutions (TVS, Zener, series resistor in flyback).
    I started trying to simulate in SPICE, but it seems kind of complicated to simulate a solenoid. It would be easier to test in practice over the weekend I think 😉
    I’ve actually got a spare EP5 pump, so might try standalone without opening the machine this time.
    To answer your question on the RC snubber, I don’t think it would affect this, because the current flow is circulating in a loop through the solenoid and flyback diode. If memory serves, the RC snubber was added to deal with spikes when the manual pump switch was flicked (which sometimes caused bit errors on the temperature 1-wire bus).

  3. I’ll try out the diodes without the IGBT per your suggestion, since I had been planning on desoldering everything anyway. I can probably test it out today, but in any case I’ll report back with the results as soon as I have them.

    1. For the benefit of any other readers, further testing seems to confirm that the issue Ryan has seen is caused by the 1N4007 flyback diode. We are now investigating an alternative snubber design to try and fix this… to be continued!

      1. Forgot to update this: we found that adding a series resistor in line with the 1N4007 fixes this issue (using a 220R 11W worked for me). The resistor gets pretty hot as you would expect. So this confirms that it’s due to the flyback diode.

  4. Hi James!
    What is the reason for using flyback diode? I have started my investigations with ordinary triac driven by optotriac connected to Arduino and everything works quite good – except unstable behaviour of the pump at low driving values.

    1. Hi Piotr
      The flyback diode is needed to snub the back EMF because I’m switching the pump on and off during the AC mains cycle.
      With a Triac, you don’t need one because, once you’ve triggered the Triac, it will stay switched on until the zero cross point (where the mains cycle crosses zero volts).
      So, with the Triac you can switch the pump on for a fraction of a whole cycle (you can choose when it switches on, but not when it switches off).
      With an IGBT and flyback diode, you can switch the pump on and off for any duration, at any point during the cycle. However, the downside is that it’s more complex to implement.
      Does that make sense?

  5. Hi James,
    Thanks for a clarificatiion. It makes perfectly sense – the only problem with snubber diode is the lag of current after changing supply voltage polarity. You can decrease lag placing resistor serially to snubber diode, but according to my calculations dissipayed power is more than 10W. Also if you use transil instead of resistor power dissipation is rather high.
    Therefore I’m asking if somebody has alternative solution with short current lag as I’m afraid about current lag influence on pump performance.

    Thyristor circuit works perfect except that pump on low settings works rather unpredictable – going from bottom pump doesn’t work until up to about 30% and then it starts to work making rather high flow. If you start decreasing setting then flow decreases till almost zero.

  6. Hi James

    Very interesting blog and a lot of good info!

    I am curious, did you do any simulations or measure the current through the pump?

    Some thing about the driving an inductance in series with a diode with a IGBT was bugging me. So I did some initial simulations(in ltspice with your pump parameters. Pump as inductance and series resistor).
    Driven directly: In the positive ½period, the current builds up(as expected). As the current can’t change instantly, the voltage reverse over the inductance and the current drops. Putting some of the energy back into the power grid. @13ms the current has dropped to zero.

    Running with PWM @99% duty cycle: The current builds up as if it was driven directly. At the negative ½period the only way the inductor can dissipate the energy is in the series resistance of the pump. Also the current decayes so slowly it never reaches zero. For 99% the residual current is ~140mA. For 55%PWM it is 80mA.
    This explains the issues Ryan sees. Both the residual current and the slow decay may result in pump performance issues.
    Also at 99% you increase the loss in the pump with 20-30%
    Adding the 220R resistor increases the current decay rate just enough to reach zero. Also you shift some of the losses from the pump to the 220R resistor.
    So to drive it more as intended, we need more transistors 🙁 Perhaps even a full H brigde and full wave rectifier + DC cap.

    1. Hi Lasse
      This is very interesting, thanks for the input. I didn’t take this much further myself, as I use the machine every day for my morning coffee 😉 I was planning to do some more real world experiments “in the garage” using a spare pump that I have. As you suggest, for a really perfect controller, I think much more work is needed on the design.

Leave a Reply

Your email address will not be published. Required fields are marked *