Big ugly no longer big (still ugly) – RGB LED head for color printing revision

As soon as something sort of works, I generally leave it as is and use it as is. Until the shortcomings become annoying enough to actually do something about it. Which is the story of my color enlarger project in a nutshell. A story that hadn’t see much development lately – after all, it sort of worked, right? Well, the annoyance got the better of me, so I did another iteration.

The good news is that the rework (1) has been only partial and (2) was not because there’s some fundamental problem with using LEDs for a color enlarger. If there is, I’m blissfully unaware of it!

There were a couple of relatively minor reasons why I decided to get the soldering hot plate from storage again and do some major revisions on Big Ugly. In no particular order:

(1) Having a 350W (or so) LED head in a small package sounds neat, but it also creates a bit of a heat dissipation issue. To be frank, I just stuck a smallish heatsink and two fans onto it and called it good. Well, a little more effort would have been nice. Occasionally, a LED would burn out, which would of course result in uneven illumination and necessitated taking the head apart and replacing the defective LED. Resoldering SMD LEDs on a heat-conductive PCB is a bit of a chore, so that trick got old, fast.

(2) Having 350W of LED power in an enlarger that mostly makes smallish prints is way overkill. Heck, I even ended up programming a virtual ND filter functionality into the thing to tame it a bit! Granted, all that light was nice for focusing and composing the baseboard image, but not strictly necessary.

(3) “Big ugly” was called that for a good reason. The thing was big. And ugly.

Big Ugly. Lots going on here. Two fans at the top, heatsink underneath that and invisible below is the actual SMD LED light source. Flat cables to a kind of router board, and from there more flat cables to the four identical LED driver boards. A power distribution module with some buffer capacitors, and an auxiliary PCB (nearly hidden out of view on the bottom right) with a small microcontroller to control the fans and communicate with the power supply. No, it doesn’t have to be this complicated.

I could have just revised the heat dissipation system and built a prettier case about Big Ugly. But it would have remained big, and no. (4) is that Big Ugly in fact stuck so far out of my Durst 138’s head that it bumped into the ceiling if I raised the head all the way up. And it was a little heavy for the counterweight/spring loaded adjustment mechanism, as well.

So I decided to do another iteration, but leave a couple of things alone. The power supply is pretty much fine. Don’t touch it. The controller is complex, but I still like its flexibility, and there’s really no need to redo any of it. Don’t touch that, either. Hence, I only focused on the business end: the part where light comes out.

To prevent premature LED failure, I decided to run the LEDs far below their dissipation limit. I’m still using the same LEDs as for the previous version; I’ve got loads of them and I could in fact recycle some from a prototype that I totally forgot I had. These are rated for a current of 700mA, but I’m running them at something like 500mA.

More importantly, I drastically reduced the number of LEDs. Less LEDs = less power = less heat to get rid of. I still had the computer heatsink and fan lying around that I used in the first prototype LED light source. It’s in fact the heatsink from one of my old computers I must have used when I was attending university. I doubt they’re made like this anymore; a few hundred grams of solid copper (!) and a high-RPM fan blowing through an aluminum matrix.

The heatsink and fan assembly I used for the first LED head – waste not, want not, eh! Old photo; the COB LED was already removed long ago.

I took some measurements and figured I could realistically fit around 96 LEDs on there, but after some deliberation on mostly power ratio and color distribution across the surface, I settled on 88 LEDs. 44 red ones, 24 green ones and 20 blue ones. Total output power roughly 100W, so well within the limits of what this cooling contraption should be able to manage.

3D render of the new light source with 88 LEDs. The red boxes are actually flat cable connectors. DesignSpark’s 3D rendering abilities are rather crude.

The nice thing about this is of course that it also fits inside the Durst 138 head, which is actually quite spacious. In fact, I m0unted the old COB light source on the original the bulb socket, and decided to do the same thing this time round. Since there’s ample space, I figured I should tuck the LED drivers in there as well so the whole thing is hidden and the enlarger basically works as it was originally designed to do – with its 45 degree reflection mirror, condenser stack etc.

The light source as built. The LEDs look a little dirty because they’re recycled from an earlier prototype. Also, the white solder mask isn’t ideal and some of the copper color shines through, making it look a little worse than it technically is. It is an aluminium core PCB measuring 10x7cm, so it’s quite compact. Since this is a single-side PCB, 0 Ohm resistors are used as jumpers to route the channels in the desired way.

In the previous version, I used four individual driver boards with six channels each. The LED power supply is 48V in order to keep the current (and wiring) manageable, so there are several strings of LEDs for each color. The reason for the many individual drivers was that if one channel would fail in some way, the damage would at least be isolated to that channel. Sure enough, this works, but it takes up a lot of space.

So in the current version, I combined everything in a single board and only four channels: two channels for red, and a channel each for all green and all blue LEDs. There are in fact four arrays of red LEDs with 11 LEDs in series, each, two arrays of green (12 LEDs each) and two green (10 LEDs each). This means that each driver channel powers two strings of LEDs. Each diver channel is configured for 1000mA, which should even out at 500mA per string of LEDs.

Schematic representation of a single channel powering two parallel strings of LEDs.

This introduces a risk in that if a single LED fails, the total current of 1A will run through the remaining channel. Doubtlessly, this will blow up one or two LEDs in that remaining channel within seconds. Too bad, but if I have to deal with replacing a single LED, the additional work of having to replace a couple more is actually pretty limited. So I accept this risk in exchange for a smaller package. (Let’s see how that pans out!)

The light source of Big Ugly had a pair of DS18B20 digital temperature sensors onboard. I included these mainly so that I could do things such as run a temperature-controlled fan, and shut down the power to the head if it would overheat. The power supply unit actually reads out these temperature sensors and can autonomously shut down the power if things get too hot. Additionally, the controller can read out this temperature information from the power supply so it can be displayed.

That all sounds fancy and nice, but in practice, it’s actually not all that useful. I included this functionality mostly to prevent any problems since I (correctly) foresaw that replacing LEDs on the light source would be time-consuming. However, monitoring temperature turned out to be informative, but it would not necessarily prevent problems since it’s impossible to accurately measure or even estimate the actual LED die temperature for each individual LED. Hence, there would be conditions under which the overall light source temperature would be acceptable (e.g. 60C or so), but some individual LEDs would still burn out.

So in this newer version, I took a simpler route. I still included a temperature sensor in the head, but this time, it’s a single 0805 SMD thermistor. This is read out with an opamp that is configured as a comparator, so the only distinction it makes is between “OK” and “too hot”. If “too hot”, the cooling fan is switched on. As a precaution, I also have the cooling fan run if any PWM signal is being applied, and there’s a delay of about 30 seconds for the fan to turn off to prevent it from cycling rapidly between on and off. This all happens autonomously between the light source and the driver board, and overall it’s much simpler than the previous version. It also doesn’t require a microcontroller or communications (other than the controlling PWM signal for the light source) between the light source and the power supply or control unit.

Driver board, as built. Not shown are a couple of bug fixes I did afterwards; there are usually a couple of engineering errors in the first version, and since these are one-offs, I always just fix them on the actual board as built. These PCB’s don’t look half as nice as commercially made ones, but in return I get the quick turnaround time and satisfaction of making them entirely at home.

Above is the driver board as built. On the left, incoming 12V (for logic and fans) and 48V power and PWM. At the bottom, three connectors for 12V fans. On the right, the connectors for the light source; a 2-pin connector for the temperature sensor and the connector for the four LED channels. The four LED drivers occupy the right half of the board; the inductors and switching MOSFETs are especially recognizable. The control logic, which consists of inversion of the inverted incoming PWM signal and the fan switching control is in the center left area.

PCB design for the 4-channel driver board. This is one of the very few times I’ve used 74-series logic on a design, in this case a 7414 hex Schmitt trigger inverter.

The board measures 10x6cm and handles the ca. 100W RMS power for the head while nothing heats up, which is possible due to the high efficiency of the buck-mode LED drivers. This means the driver can be thrown into the Durst 138 head without special measures for cooling etc. Combined with the actual light source, the dissipation is still at a similar level as what this enlarger was equipped to handle without active cooling.

New light source and driver board (bottom right) inside the Durst 138 head. The light source sits on the original bulb socket, which allows the positioning controls of the Durst to be used.
Another view, more clearly showing the driver board, which simply sits at the bottom of the head.

One aspect that remains a bit experimental is the issue of coverage, and this is also where my lack of knowledge of optics concerns me a little. The 138 is a condensor enlarger. When I got it, it had a standard frosted bulb installed in the socket. I’m actually not sure if I ever tried it that way, because I got an Ilford 500 head at the same time.

The problem is that a LED array is of course a bigger surface than a smaller bulb, with its characteristic hot spot. The condensor system isn’t designed for this, so it takes some experimentation to get even coverage. It seems to work OK in the setup as shown, with a few notable parameters. The light source is positioned away as possible from the aperture on the right. In the aperture, a frosted piece of acrylic is placed by means of a diffusor. I used an earlier version of a LED light source in the same way and it seemed to work OK, but I didn’t do much 4×5 in color back then. I found it’s also necessary to do something along the lines of light mixing; this is what the glass plate between the light source and the aperture is for.

This part of the setup is still a bit experimental; I’ve been making prints this way and everything seems to be satisfactory; I get sufficiently even coverage up to 4×5″ and the distribution of color seems to be perfectly even as well. Mechanically, I’m not too happy with the glass diffusor in the middle; I’m planning to make a light duct that sits between the light source and the aperture (with its acrylic diffusor) and a smaller frosted glass mixing filter in the center. It’ll effectively be the same as it is now, but mechanically more sound.

If, of course, I ever get to it. Because like last time, there’s a good chance that I’ll just keep using the setup as is until I bump my head once more…For now, everything seems to work, which is evidenced by the fact that some of my recent blogs (on the colors of Vision3 and printing some expired film) already featured prints made with this new light source.

More importantly, my Durst enlarger now looks like its original self again, without some massively f_ugly MDF contraption on top! Also, the light source runs *a lot* cooler than the old version. Yes, I’ve lost about two stops of light in the process, but the benefits so far are worth it.

2 thoughts on “Big ugly no longer big (still ugly) – RGB LED head for color printing revision”

  1. Respect for your fine work.
    For a while now I try to follow your blog and your posts at photrio.
    After a long hiatus in hobby and soon beginning retirement I would like to reanimate my old darkroom. I hosts a Durst M605 enlarge with BW condensor head for 6×6. As I liked the idea of a led light source I searched for a viable solution So far yours seems the best for me. As I am also doing some soldering projects for hobby too I would try to “adapt” your solution for my M605. Would it be possible to get files for the pcb’s (LED and driver) and maybe information on the the controlling electronics?
    Best Regards

    1. Hi Branko, thanks for your kind comments!
      I’ve thought about converting the ‘smaller’ Dursts to LED and evidently, it should be possible. I’m also in principle not against sharing my PCB designs etc, but in all honesty, I can’t recommend to copy/build them as-is. I design and make these as one-offs and they always have some minor aspects that make them unsuitable for mass production. They are not ‘ripe’, market-ready designs, although they do work, usually after a small manual bug-fix or two.

      So instead, I’d recommend an alternative approach using off-the-shelf components. Having searched briefly, I find this LED driver board that’s equivalent to what I made: (you will need one for each channel and choose the current to match your light source). For the controller, you can use whatever you fancy in terms of microcontroller or single-board-computer (SBC) technology. I use an ESP32-based solution; you’ll find plenty experimenter boards (usually ‘Arduino ready’) with this microcontroller. I can recommend these as they are relatively easy to program, widely used (lots of troubleshooting knowledge) and they have good PWM/led driving ability. If you prefer coding in something like Python instead of C++, you could also use something like a Raspberry PI SBC. It’ll work just as well.

      The main challenge will be the light source. The ones I use, will be no good for an M605 – they simply wouldn’t fit. So you’d have to make/obtain something smaller than that. Unfortunately, I have no M605 at hand here so I can’t work out how you’d proceed with this. I have had a very brief look at the conceptually similar M305, and I think I would opt for something that mounts underneath the head in the same position as the bulb for B&W that uses the condensor setup. The major hurdle will be to make something that provides even coverage of the film area. This will be highly specific to the geometry and size of the head, so again, what works for my in my 138 will never work in an M605 etc.

      I’m still playing with the thought to layout a couple of versions of the LED head in various dimensions so that people can use them as a starting point for their own build. However, I’d have to borrow/steal a couple of commonly used enlargers to work out what dimensions would make sense, and I simply haven’t gotten round to that yet. Maybe, one day….

      Feel free to reach out at any time for further details/thoughts! You’ve now posted as a comment, but also feel free to use the contact page to send me a message directly; people do this often and I welcome the genuinely interested emails!

Leave a Reply

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